\begin{diagram}{Protocol type}{protocoltype} \begin{mysyntdiag} \lit*{objcprotocol} \begin{stack}\\ \lit*{external} \begin{stack}\\ \lit*{name} \synt{string\ constant} \end{stack} \end{stack} \begin{stack}\\ heritage \end{stack} \begin{stack} \synt{protocol\ method\ list} \end{stack} \lit*{end} \end{mysyntdiag} \begin{mysyntdiag} \synt{heritage} \lit*( \begin{rep}[b] \synt{protocol\ type\ identifier} \\ \lit{,} \end{rep} \lit* ) \end{mysyntdiag} \begin{mysyntdiag} \synt{protocol\ method\ list} \begin{rep}[b] \begin{stack}\\ \lit*{required}\\ \lit*{optional} \end{stack} \begin{stack} \synt{method\ definition} % \\ % \synt{property\ definition} \end{stack} \\ \end{rep} \end{mysyntdiag} \end{diagram}