\begin{diagram}{extended record type}{extendedrecordtype} \begin{mysyntdiag} \begin{stack}\\ \lit*{packed} \end{stack} \lit*{record} \begin{rep}[b] \synt{component\ list} \\ \end{rep} \lit*{end} \end{mysyntdiag} \begin{mysyntdiag} \synt{component\ list} \begin{stack} \\ \synt{record\ visibility\ specifier} \end{stack} \begin{stack}\\ \begin{rep}[b] \synt{field\ definition} \\ \end{rep} \end{stack} \begin{stack}\\ \begin{rep}[b] \synt{record\ method\ definition} \\ \end{rep} \end{stack} \begin{stack}\\ \begin{rep}[b] \synt{property\ definition} \\ \end{rep} \end{stack} \synt{variant\ part} \end{mysyntdiag} \begin{mysyntdiag} \synt{field\ definition} \synt{identifier\ list} \lit*: \synt{type} \lit*; \end{mysyntdiag} \begin{mysyntdiag} \synt{record\ visibility\ specifier} \begin{stack} \begin{stack}\\ \lit*{strict} \end{stack} \lit*{private} \\ \lit*{protected} \\ \lit*{public} \end{stack} \end{mysyntdiag} \begin{mysyntdiag} \synt{record\ method\ definition} \begin{stack} \synt{function\ header} \\ \synt{procedure\ header} \end{stack} \lit*; \begin{stack}\\ \synt{call\ modifiers} \lit*; \end{stack} \end{mysyntdiag} \end{diagram}