\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}