\begin{algorithm}
\caption{Call-Resolution-Of-CHA}
\begin{algorithmic}
\INPUT Call site $cs$.
\OUTPUT Possible target methods of $cs$ resolved by CHA.
\PROCEDURE{Resolve}{$cs$}
\STATE $T := \{\}$
\STATE $m :=$ method signature at $cs$
\IF{$cs$ is a static call}
\STATE $T = \{m\}$
\ENDIF
\IF{$cs$ is a special call}
\STATE $c^{m} =$ class type of $m$
\STATE $T = \{$ \CALL{Dispatch}{$c^m, m$} $\}$
\ENDIF
\IF{$cs$ is a virtual call}
\STATE $c :=$ declared type of receiver variable at $cs$
\FOR{\textbf{each} $c'$ that is a subclass of $c$ or $c$ itself}
\STATE add \CALL{Dispatch}{$c', m$} to $T$
\ENDFOR
\ENDIF
\RETURN $T$
\ENDPROCEDURE
\end{algorithmic}
\end{algorithm}