# Simple class A {ClassA a;} ==> Specification( ClassDeclaration( class Whitespace Identifier Whitespace OpenBrace ClassDefinition( Identifier Whitespace Identifier Semicolon ) CloseBrace ) ) # Legacy and one parameter value class A {legacy ClassB b(3);} ==> Specification( ClassDeclaration( class Whitespace Identifier Whitespace OpenBrace ClassDefinition( legacy Whitespace Identifier Whitespace Identifier ParameterValueList( OpenParenthesis UnaryExpression( IntegerLiteral ) CloseParenthesis ) Semicolon ) CloseBrace ) ) # Multiple parameter values class A {ClassC c(i, 3);} ==> Specification( ClassDeclaration( class Whitespace Identifier Whitespace OpenBrace ClassDefinition( Identifier Whitespace Identifier ParameterValueList( OpenParenthesis UnaryExpression( Identifier ) Comma Whitespace UnaryExpression( IntegerLiteral ) CloseParenthesis ) Semicolon ) CloseBrace ) )