+- CompilationUnit[@PackageName = ""]
   +- ClassDeclaration[@Abstract = false, @Annotation = false, @Anonymous = false, @BinaryName = "Superclass", @CanonicalName = "Superclass", @EffectiveVisibility = Visibility.V_PACKAGE, @Enum = false, @Final = false, @Interface = false, @Local = false, @Nested = false, @PackageName = "", @Record = false, @RegularClass = true, @RegularInterface = false, @SimpleName = "Superclass", @Static = false, @TopLevel = true, @UnnamedToplevelClass = false, @Visibility = Visibility.V_PACKAGE]
   |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |  +- ClassBody[@Empty = false, @Size = 3]
   |     +- ConstructorDeclaration[@Abstract = false, @Arity = 0, @EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @Image = "Superclass", @Name = "Superclass", @Static = false, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @containsComment = false]
   |     |  +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC), @ExplicitModifiers = (JModifier.PUBLIC)]
   |     |  +- FormalParameters[@Empty = true, @Size = 0]
   |     |  +- Block[@Empty = true, @Size = 0, @containsComment = false]
   |     +- ConstructorDeclaration[@Abstract = false, @Arity = 1, @EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @Image = "Superclass", @Name = "Superclass", @Static = false, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @containsComment = false]
   |     |  +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC), @ExplicitModifiers = (JModifier.PUBLIC)]
   |     |  +- TypeParameters[@Empty = false, @Size = 1]
   |     |  |  +- TypeParameter[@Image = "V", @Name = "V", @TypeBound = false]
   |     |  +- FormalParameters[@Empty = false, @Size = 1]
   |     |  |  +- FormalParameter[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @Varargs = false, @Visibility = Visibility.V_LOCAL]
   |     |  |     +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Class"]
   |     |  |     |  +- TypeArguments[@Diamond = false, @Empty = false, @Size = 1]
   |     |  |     |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "V"]
   |     |  |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = false, @LocalVariable = false, @Name = "clazz", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |  +- Block[@Empty = true, @Size = 0, @containsComment = false]
   |     +- MethodDeclaration[@Abstract = false, @Arity = 1, @EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @Name = "doStuff", @Overridden = false, @Static = false, @Varargs = false, @Visibility = Visibility.V_PACKAGE, @Void = false]
   |        +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |        +- TypeParameters[@Empty = false, @Size = 1]
   |        |  +- TypeParameter[@Image = "T", @Name = "T", @TypeBound = false]
   |        +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "T"]
   |        +- FormalParameters[@Empty = false, @Size = 1]
   |        |  +- FormalParameter[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @Varargs = false, @Visibility = Visibility.V_LOCAL]
   |        |     +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |        |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "T"]
   |        |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = false, @LocalVariable = false, @Name = "s", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |        +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |           +- ReturnStatement[]
   |              +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "s", @Name = "s", @ParenthesisDepth = 0, @Parenthesized = false]
   +- ClassDeclaration[@Abstract = false, @Annotation = false, @Anonymous = false, @BinaryName = "Outer", @CanonicalName = "Outer", @EffectiveVisibility = Visibility.V_PACKAGE, @Enum = false, @Final = false, @Interface = false, @Local = false, @Nested = false, @PackageName = "", @Record = false, @RegularClass = true, @RegularInterface = false, @SimpleName = "Outer", @Static = false, @TopLevel = true, @UnnamedToplevelClass = false, @Visibility = Visibility.V_PACKAGE]
   |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |  +- ClassBody[@Empty = false, @Size = 2]
   |     +- ConstructorDeclaration[@Abstract = false, @Arity = 0, @EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @Image = "Outer", @Name = "Outer", @Static = false, @Varargs = false, @Visibility = Visibility.V_PACKAGE, @containsComment = false]
   |     |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |  +- FormalParameters[@Empty = true, @Size = 0]
   |     |  +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |     |     +- ExpressionStatement[]
   |     |        +- MethodCall[@CompileTimeConstant = false, @Image = "println", @MethodName = "println", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |           +- FieldAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "out", @Name = "out", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |           |  +- TypeExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |           |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "System"]
   |     |           +- ArgumentList[@Empty = false, @Size = 1]
   |     |              +- StringLiteral[@CompileTimeConstant = true, @ConstValue = "Outer constructor", @Empty = false, @Image = "\"Outer constructor\"", @Length = 17, @LiteralText = "\"Outer constructor\"", @ParenthesisDepth = 0, @Parenthesized = false, @TextBlock = false]
   |     +- ClassDeclaration[@Abstract = false, @Annotation = false, @Anonymous = false, @BinaryName = "Outer$Inner", @CanonicalName = "Outer.Inner", @EffectiveVisibility = Visibility.V_PACKAGE, @Enum = false, @Final = false, @Interface = false, @Local = false, @Nested = true, @PackageName = "", @Record = false, @RegularClass = true, @RegularInterface = false, @SimpleName = "Inner", @Static = false, @TopLevel = false, @UnnamedToplevelClass = false, @Visibility = Visibility.V_PACKAGE]
   |        +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |        +- ClassBody[@Empty = false, @Size = 1]
   |           +- ConstructorDeclaration[@Abstract = false, @Arity = 0, @EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @Image = "Inner", @Name = "Inner", @Static = false, @Varargs = false, @Visibility = Visibility.V_PACKAGE, @containsComment = false]
   |              +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |              +- FormalParameters[@Empty = true, @Size = 0]
   |              +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |                 +- ExpressionStatement[]
   |                    +- MethodCall[@CompileTimeConstant = false, @Image = "println", @MethodName = "println", @ParenthesisDepth = 0, @Parenthesized = false]
   |                       +- FieldAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "out", @Name = "out", @ParenthesisDepth = 0, @Parenthesized = false]
   |                       |  +- TypeExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |                       |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "System"]
   |                       +- ArgumentList[@Empty = false, @Size = 1]
   |                          +- StringLiteral[@CompileTimeConstant = true, @ConstValue = "Inner constructor", @Empty = false, @Image = "\"Inner constructor\"", @Length = 17, @LiteralText = "\"Inner constructor\"", @ParenthesisDepth = 0, @Parenthesized = false, @TextBlock = false]
   +- ClassDeclaration[@Abstract = false, @Annotation = false, @Anonymous = false, @BinaryName = "Child", @CanonicalName = "Child", @EffectiveVisibility = Visibility.V_PACKAGE, @Enum = false, @Final = false, @Interface = false, @Local = false, @Nested = false, @PackageName = "", @Record = false, @RegularClass = true, @RegularInterface = false, @SimpleName = "Child", @Static = false, @TopLevel = true, @UnnamedToplevelClass = false, @Visibility = Visibility.V_PACKAGE]
   |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |  +- ExtendsList[@Empty = false, @Size = 1]
   |  |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Inner"]
   |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Outer"]
   |  +- ClassBody[@Empty = false, @Size = 1]
   |     +- ConstructorDeclaration[@Abstract = false, @Arity = 1, @EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @Image = "Child", @Name = "Child", @Static = false, @Varargs = false, @Visibility = Visibility.V_PACKAGE, @containsComment = false]
   |        +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |        +- FormalParameters[@Empty = false, @Size = 1]
   |        |  +- FormalParameter[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @Varargs = false, @Visibility = Visibility.V_LOCAL]
   |        |     +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |        |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Outer"]
   |        |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = false, @LocalVariable = false, @Name = "o", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |        +- Block[@Empty = false, @Size = 2, @containsComment = false]
   |           +- ExplicitConstructorInvocation[@ArgumentCount = 0, @MethodName = "new", @Qualified = true, @Super = true, @This = false]
   |           |  +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "o", @Name = "o", @ParenthesisDepth = 0, @Parenthesized = false]
   |           |  +- ArgumentList[@Empty = true, @Size = 0]
   |           +- ExpressionStatement[]
   |              +- MethodCall[@CompileTimeConstant = false, @Image = "println", @MethodName = "println", @ParenthesisDepth = 0, @Parenthesized = false]
   |                 +- FieldAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "out", @Name = "out", @ParenthesisDepth = 0, @Parenthesized = false]
   |                 |  +- TypeExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |                 |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "System"]
   |                 +- ArgumentList[@Empty = false, @Size = 1]
   |                    +- StringLiteral[@CompileTimeConstant = true, @ConstValue = "Child constructor", @Empty = false, @Image = "\"Child constructor\"", @Length = 17, @LiteralText = "\"Child constructor\"", @ParenthesisDepth = 0, @Parenthesized = false, @TextBlock = false]
   +- ClassDeclaration[@Abstract = false, @Annotation = false, @Anonymous = false, @BinaryName = "ParserCornerCases", @CanonicalName = "ParserCornerCases", @EffectiveVisibility = Visibility.V_PUBLIC, @Enum = false, @Final = false, @Interface = false, @Local = false, @Nested = false, @PackageName = "", @Record = false, @RegularClass = true, @RegularInterface = false, @SimpleName = "ParserCornerCases", @Static = false, @TopLevel = true, @UnnamedToplevelClass = false, @Visibility = Visibility.V_PUBLIC]
   |  +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC), @ExplicitModifiers = (JModifier.PUBLIC)]
   |  +- ExtendsList[@Empty = false, @Size = 1]
   |  |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Superclass"]
   |  +- ClassBody[@Empty = false, @Size = 8]
   |     +- ConstructorDeclaration[@Abstract = false, @Arity = 0, @EffectiveVisibility = Visibility.V_PUBLIC, @Final = false, @Image = "ParserCornerCases", @Name = "ParserCornerCases", @Static = false, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @containsComment = false]
   |     |  +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC), @ExplicitModifiers = (JModifier.PUBLIC)]
   |     |  +- FormalParameters[@Empty = true, @Size = 0]
   |     |  +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |     |     +- ExplicitConstructorInvocation[@ArgumentCount = 0, @MethodName = "new", @Qualified = false, @Super = true, @This = false]
   |     |        +- ArgumentList[@Empty = true, @Size = 0]
   |     +- ConstructorDeclaration[@Abstract = false, @Arity = 1, @EffectiveVisibility = Visibility.V_PUBLIC, @Final = false, @Image = "ParserCornerCases", @Name = "ParserCornerCases", @Static = false, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @containsComment = false]
   |     |  +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC), @ExplicitModifiers = (JModifier.PUBLIC)]
   |     |  +- FormalParameters[@Empty = false, @Size = 1]
   |     |  |  +- FormalParameter[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @Varargs = false, @Visibility = Visibility.V_LOCAL]
   |     |  |     +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |  |     +- PrimitiveType[@Kind = PrimitiveTypeKind.INT]
   |     |  |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = false, @LocalVariable = false, @Name = "a", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |  +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |     |     +- ExplicitConstructorInvocation[@ArgumentCount = 2, @MethodName = "new", @Qualified = false, @Super = false, @This = true]
   |     |        +- TypeArguments[@Diamond = false, @Empty = false, @Size = 1]
   |     |        |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Integer"]
   |     |        +- ArgumentList[@Empty = false, @Size = 2]
   |     |           +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "a", @Name = "a", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |           +- NumericLiteral[@Base = 10, @CompileTimeConstant = true, @DoubleLiteral = false, @FloatLiteral = false, @Image = "2", @IntLiteral = true, @Integral = true, @LiteralText = "2", @LongLiteral = false, @ParenthesisDepth = 0, @Parenthesized = false, @ValueAsDouble = 2.0, @ValueAsFloat = 2.0, @ValueAsInt = 2, @ValueAsLong = 2]
   |     +- ConstructorDeclaration[@Abstract = false, @Arity = 2, @EffectiveVisibility = Visibility.V_PUBLIC, @Final = false, @Image = "ParserCornerCases", @Name = "ParserCornerCases", @Static = false, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @containsComment = false]
   |     |  +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC), @ExplicitModifiers = (JModifier.PUBLIC)]
   |     |  +- TypeParameters[@Empty = false, @Size = 1]
   |     |  |  +- TypeParameter[@Image = "W", @Name = "W", @TypeBound = false]
   |     |  +- FormalParameters[@Empty = false, @Size = 2]
   |     |  |  +- FormalParameter[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @Varargs = false, @Visibility = Visibility.V_LOCAL]
   |     |  |  |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |  |  |  +- PrimitiveType[@Kind = PrimitiveTypeKind.INT]
   |     |  |  |  +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = false, @LocalVariable = false, @Name = "a", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |  |  +- FormalParameter[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @Varargs = false, @Visibility = Visibility.V_LOCAL]
   |     |  |     +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |  |     +- PrimitiveType[@Kind = PrimitiveTypeKind.INT]
   |     |  |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = false, @LocalVariable = false, @Name = "b", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |  +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |     |     +- ExplicitConstructorInvocation[@ArgumentCount = 1, @MethodName = "new", @Qualified = false, @Super = true, @This = false]
   |     |        +- TypeArguments[@Diamond = false, @Empty = false, @Size = 1]
   |     |        |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "String"]
   |     |        +- ArgumentList[@Empty = false, @Size = 1]
   |     |           +- ClassLiteral[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |              +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "String"]
   |     +- ConstructorDeclaration[@Abstract = false, @Arity = 1, @EffectiveVisibility = Visibility.V_PUBLIC, @Final = false, @Image = "ParserCornerCases", @Name = "ParserCornerCases", @Static = false, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @containsComment = false]
   |     |  +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC), @ExplicitModifiers = (JModifier.PUBLIC)]
   |     |  +- FormalParameters[@Empty = false, @Size = 1]
   |     |  |  +- FormalParameter[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @Varargs = false, @Visibility = Visibility.V_LOCAL]
   |     |  |     +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "String"]
   |     |  |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = false, @LocalVariable = false, @Name = "title", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |  +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |     |     +- ExplicitConstructorInvocation[@ArgumentCount = 0, @MethodName = "new", @Qualified = false, @Super = false, @This = true]
   |     |        +- ArgumentList[@Empty = true, @Size = 0]
   |     +- MethodDeclaration[@Abstract = false, @Arity = 0, @EffectiveVisibility = Visibility.V_PUBLIC, @Final = false, @Name = "testGeneric", @Overridden = false, @Static = false, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @Void = true]
   |     |  +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC, JModifier.STRICTFP), @ExplicitModifiers = (JModifier.PUBLIC, JModifier.STRICTFP)]
   |     |  +- VoidType[]
   |     |  +- FormalParameters[@Empty = true, @Size = 0]
   |     |  +- Block[@Empty = false, @Size = 2, @containsComment = false]
   |     |     +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
   |     |     |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "String"]
   |     |     |  +- VariableDeclarator[@Initializer = true, @Name = "o"]
   |     |     |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = true, @Name = "o", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |     |     +- MethodCall[@CompileTimeConstant = false, @Image = "doStuff", @MethodName = "doStuff", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |        +- SuperExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |        +- TypeArguments[@Diamond = false, @Empty = false, @Size = 1]
   |     |     |        |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "String"]
   |     |     |        +- ArgumentList[@Empty = false, @Size = 1]
   |     |     |           +- StringLiteral[@CompileTimeConstant = true, @ConstValue = "foo", @Empty = false, @Image = "\"foo\"", @Length = 3, @LiteralText = "\"foo\"", @ParenthesisDepth = 0, @Parenthesized = false, @TextBlock = false]
   |     |     +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
   |     |        +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |        +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "String"]
   |     |        +- VariableDeclarator[@Initializer = true, @Name = "v"]
   |     |           +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = true, @Name = "v", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |           +- MethodCall[@CompileTimeConstant = false, @Image = "thisGeneric", @MethodName = "thisGeneric", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |              +- ThisExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |              +- TypeArguments[@Diamond = false, @Empty = false, @Size = 1]
   |     |              |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "String"]
   |     |              +- ArgumentList[@Empty = false, @Size = 1]
   |     |                 +- StringLiteral[@CompileTimeConstant = true, @ConstValue = "bar", @Empty = false, @Image = "\"bar\"", @Length = 3, @LiteralText = "\"bar\"", @ParenthesisDepth = 0, @Parenthesized = false, @TextBlock = false]
   |     +- MethodDeclaration[@Abstract = false, @Arity = 1, @EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @Name = "thisGeneric", @Overridden = false, @Static = false, @Varargs = false, @Visibility = Visibility.V_PACKAGE, @Void = false]
   |     |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |  +- TypeParameters[@Empty = false, @Size = 1]
   |     |  |  +- TypeParameter[@Image = "X", @Name = "X", @TypeBound = false]
   |     |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "X"]
   |     |  +- FormalParameters[@Empty = false, @Size = 1]
   |     |  |  +- FormalParameter[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @Varargs = false, @Visibility = Visibility.V_LOCAL]
   |     |  |     +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "X"]
   |     |  |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = false, @LocalVariable = false, @Name = "x", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |  +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |     |     +- ReturnStatement[]
   |     |        +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "x", @Name = "x", @ParenthesisDepth = 0, @Parenthesized = false]
   |     +- MethodDeclaration[@Abstract = false, @Arity = 0, @EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @Name = "getByteArrayClass", @Overridden = false, @Static = false, @Varargs = false, @Visibility = Visibility.V_PACKAGE, @Void = false]
   |     |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Class"]
   |     |  +- FormalParameters[@Empty = true, @Size = 0]
   |     |  +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |     |     +- ReturnStatement[]
   |     |        +- ClassLiteral[@CompileTimeConstant = false, @ParenthesisDepth = 1, @Parenthesized = true]
   |     |           +- ArrayType[@ArrayDepth = 1]
   |     |              +- PrimitiveType[@Kind = PrimitiveTypeKind.BYTE]
   |     |              +- ArrayDimensions[@Empty = false, @Size = 1]
   |     |                 +- ArrayTypeDim[@Varargs = false]
   |     +- MethodDeclaration[@Abstract = false, @Arity = 0, @EffectiveVisibility = Visibility.V_PUBLIC, @Final = false, @Name = "bitwiseOperator", @Overridden = false, @Static = false, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @Void = true]
   |        +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC), @ExplicitModifiers = (JModifier.PUBLIC)]
   |        +- VoidType[]
   |        +- FormalParameters[@Empty = true, @Size = 0]
   |        +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |           +- IfStatement[@Else = false]
   |              +- InfixExpression[@CompileTimeConstant = false, @Operator = BinaryOp.NE, @ParenthesisDepth = 0, @Parenthesized = false]
   |              |  +- InfixExpression[@CompileTimeConstant = false, @Operator = BinaryOp.AND, @ParenthesisDepth = 1, @Parenthesized = true]
   |              |  |  +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "modifiers", @Name = "modifiers", @ParenthesisDepth = 0, @Parenthesized = false]
   |              |  |  +- FieldAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "SHIFT_DOWN_MASK", @Name = "SHIFT_DOWN_MASK", @ParenthesisDepth = 0, @Parenthesized = false]
   |              |  |     +- AmbiguousName[@CompileTimeConstant = false, @Image = "InputEvent", @Name = "InputEvent", @ParenthesisDepth = 0, @Parenthesized = false]
   |              |  +- NumericLiteral[@Base = 10, @CompileTimeConstant = true, @DoubleLiteral = false, @FloatLiteral = false, @Image = "0", @IntLiteral = true, @Integral = true, @LiteralText = "0", @LongLiteral = false, @ParenthesisDepth = 0, @Parenthesized = false, @ValueAsDouble = 0.0, @ValueAsFloat = 0.0, @ValueAsInt = 0, @ValueAsLong = 0]
   |              +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |                 +- ExpressionStatement[]
   |                    +- MethodCall[@CompileTimeConstant = false, @Image = "append", @MethodName = "append", @ParenthesisDepth = 0, @Parenthesized = false]
   |                       +- AmbiguousName[@CompileTimeConstant = false, @Image = "buf", @Name = "buf", @ParenthesisDepth = 0, @Parenthesized = false]
   |                       +- ArgumentList[@Empty = false, @Size = 1]
   |                          +- StringLiteral[@CompileTimeConstant = true, @ConstValue = "shift ", @Empty = false, @Image = "\"shift \"", @Length = 6, @LiteralText = "\"shift \"", @ParenthesisDepth = 0, @Parenthesized = false, @TextBlock = false]
   +- ClassDeclaration[@Abstract = false, @Annotation = false, @Anonymous = false, @BinaryName = "PmdTestParent", @CanonicalName = "PmdTestParent", @EffectiveVisibility = Visibility.V_PACKAGE, @Enum = false, @Final = false, @Interface = false, @Local = false, @Nested = false, @PackageName = "", @Record = false, @RegularClass = true, @RegularInterface = false, @SimpleName = "PmdTestParent", @Static = false, @TopLevel = true, @UnnamedToplevelClass = false, @Visibility = Visibility.V_PACKAGE]
   |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |  +- ClassBody[@Empty = false, @Size = 1]
   |     +- ConstructorDeclaration[@Abstract = false, @Arity = 1, @EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @Image = "PmdTestParent", @Name = "PmdTestParent", @Static = false, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @containsComment = false]
   |        +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC), @ExplicitModifiers = (JModifier.PUBLIC)]
   |        +- FormalParameters[@Empty = false, @Size = 1]
   |        |  +- FormalParameter[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @Varargs = false, @Visibility = Visibility.V_LOCAL]
   |        |     +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |        |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Object"]
   |        |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = false, @LocalVariable = false, @Name = "obj", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |        +- Block[@Empty = true, @Size = 0, @containsComment = false]
   +- ClassDeclaration[@Abstract = false, @Annotation = false, @Anonymous = false, @BinaryName = "PmdTestChild", @CanonicalName = "PmdTestChild", @EffectiveVisibility = Visibility.V_PACKAGE, @Enum = false, @Final = false, @Interface = false, @Local = false, @Nested = false, @PackageName = "", @Record = false, @RegularClass = true, @RegularInterface = false, @SimpleName = "PmdTestChild", @Static = false, @TopLevel = true, @UnnamedToplevelClass = false, @Visibility = Visibility.V_PACKAGE]
   |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |  +- ExtendsList[@Empty = false, @Size = 1]
   |  |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "PmdTestParent"]
   |  +- ClassBody[@Empty = false, @Size = 1]
   |     +- ConstructorDeclaration[@Abstract = false, @Arity = 0, @EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @Image = "PmdTestChild", @Name = "PmdTestChild", @Static = false, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @containsComment = false]
   |        +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC), @ExplicitModifiers = (JModifier.PUBLIC)]
   |        +- FormalParameters[@Empty = true, @Size = 0]
   |        +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |           +- ExplicitConstructorInvocation[@ArgumentCount = 1, @MethodName = "new", @Qualified = false, @Super = true, @This = false]
   |              +- ArgumentList[@Empty = false, @Size = 1]
   |                 +- ConstructorCall[@AnonymousClass = true, @CompileTimeConstant = false, @DiamondTypeArgs = false, @MethodName = "new", @ParenthesisDepth = 0, @Parenthesized = false, @QualifiedInstanceCreation = false]
   |                    +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Object"]
   |                    +- ArgumentList[@Empty = true, @Size = 0]
   |                    +- AnonymousClassDeclaration[@Abstract = false, @Annotation = false, @Anonymous = true, @BinaryName = "PmdTestChild$1", @CanonicalName = null, @EffectiveVisibility = Visibility.V_ANONYMOUS, @Enum = false, @Final = false, @Interface = false, @Local = false, @Nested = false, @PackageName = "", @Record = false, @RegularClass = false, @RegularInterface = false, @SimpleName = "", @Static = false, @TopLevel = false, @UnnamedToplevelClass = false, @Visibility = Visibility.V_ANONYMOUS]
   |                       +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |                       +- ClassBody[@Empty = false, @Size = 1]
   |                          +- MethodDeclaration[@Abstract = false, @Arity = 0, @EffectiveVisibility = Visibility.V_ANONYMOUS, @Final = false, @Name = "create", @Overridden = false, @Static = false, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @Void = false]
   |                             +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC), @ExplicitModifiers = (JModifier.PUBLIC)]
   |                             +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Object"]
   |                             +- FormalParameters[@Empty = true, @Size = 0]
   |                             +- Block[@Empty = false, @Size = 3, @containsComment = false]
   |                                +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
   |                                |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |                                |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Object"]
   |                                |  +- VariableDeclarator[@Initializer = true, @Name = "memoryMonitor"]
   |                                |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = true, @Name = "memoryMonitor", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |                                |     +- NullLiteral[@CompileTimeConstant = false, @LiteralText = "null", @ParenthesisDepth = 0, @Parenthesized = false]
   |                                +- IfStatement[@Else = false]
   |                                |  +- InfixExpression[@CompileTimeConstant = false, @Operator = BinaryOp.EQ, @ParenthesisDepth = 0, @Parenthesized = false]
   |                                |  |  +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "memoryMonitor", @Name = "memoryMonitor", @ParenthesisDepth = 0, @Parenthesized = false]
   |                                |  |  +- NullLiteral[@CompileTimeConstant = false, @LiteralText = "null", @ParenthesisDepth = 0, @Parenthesized = false]
   |                                |  +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |                                |     +- ExpressionStatement[]
   |                                |        +- AssignmentExpression[@CompileTimeConstant = false, @Compound = false, @Operator = AssignmentOp.ASSIGN, @ParenthesisDepth = 0, @Parenthesized = false]
   |                                |           +- VariableAccess[@AccessType = AccessType.WRITE, @CompileTimeConstant = false, @Image = "memoryMonitor", @Name = "memoryMonitor", @ParenthesisDepth = 0, @Parenthesized = false]
   |                                |           +- ConstructorCall[@AnonymousClass = false, @CompileTimeConstant = false, @DiamondTypeArgs = false, @MethodName = "new", @ParenthesisDepth = 0, @Parenthesized = false, @QualifiedInstanceCreation = false]
   |                                |              +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Object"]
   |                                |              +- ArgumentList[@Empty = true, @Size = 0]
   |                                +- ReturnStatement[]
   |                                   +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "memoryMonitor", @Name = "memoryMonitor", @ParenthesisDepth = 0, @Parenthesized = false]
   +- ClassDeclaration[@Abstract = false, @Annotation = false, @Anonymous = false, @BinaryName = "SimpleBean", @CanonicalName = "SimpleBean", @EffectiveVisibility = Visibility.V_PACKAGE, @Enum = false, @Final = false, @Interface = false, @Local = false, @Nested = false, @PackageName = "", @Record = false, @RegularClass = true, @RegularInterface = false, @SimpleName = "SimpleBean", @Static = false, @TopLevel = true, @UnnamedToplevelClass = false, @Visibility = Visibility.V_PACKAGE]
   |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |  +- ClassBody[@Empty = false, @Size = 1]
   |     +- FieldDeclaration[@EffectiveVisibility = Visibility.V_PACKAGE, @Static = false, @Visibility = Visibility.V_PACKAGE]
   |        +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |        +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "String"]
   |        +- VariableDeclarator[@Initializer = false, @Name = "name"]
   |           +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_PACKAGE, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = true, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = false, @Name = "name", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_PACKAGE]
   +- ClassDeclaration[@Abstract = false, @Annotation = false, @Anonymous = false, @BinaryName = "SimpleBeanUser", @CanonicalName = "SimpleBeanUser", @EffectiveVisibility = Visibility.V_PACKAGE, @Enum = false, @Final = false, @Interface = false, @Local = false, @Nested = false, @PackageName = "", @Record = false, @RegularClass = true, @RegularInterface = false, @SimpleName = "SimpleBeanUser", @Static = false, @TopLevel = true, @UnnamedToplevelClass = false, @Visibility = Visibility.V_PACKAGE]
   |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |  +- ClassBody[@Empty = false, @Size = 2]
   |     +- ConstructorDeclaration[@Abstract = false, @Arity = 1, @EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @Image = "SimpleBeanUser", @Name = "SimpleBeanUser", @Static = false, @Varargs = false, @Visibility = Visibility.V_PACKAGE, @containsComment = false]
   |     |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |  +- FormalParameters[@Empty = false, @Size = 1]
   |     |  |  +- FormalParameter[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @Varargs = false, @Visibility = Visibility.V_LOCAL]
   |     |  |     +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "SimpleBean"]
   |     |  |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = false, @LocalVariable = false, @Name = "o", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |  +- Block[@Empty = true, @Size = 0, @containsComment = false]
   |     +- ConstructorDeclaration[@Abstract = false, @Arity = 0, @EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @Image = "SimpleBeanUser", @Name = "SimpleBeanUser", @Static = false, @Varargs = false, @Visibility = Visibility.V_PACKAGE, @containsComment = false]
   |        +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |        +- FormalParameters[@Empty = true, @Size = 0]
   |        +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |           +- ExplicitConstructorInvocation[@ArgumentCount = 1, @MethodName = "new", @Qualified = false, @Super = false, @This = true]
   |              +- ArgumentList[@Empty = false, @Size = 1]
   |                 +- ConstructorCall[@AnonymousClass = true, @CompileTimeConstant = false, @DiamondTypeArgs = false, @MethodName = "new", @ParenthesisDepth = 0, @Parenthesized = false, @QualifiedInstanceCreation = false]
   |                    +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "SimpleBean"]
   |                    +- ArgumentList[@Empty = true, @Size = 0]
   |                    +- AnonymousClassDeclaration[@Abstract = false, @Annotation = false, @Anonymous = true, @BinaryName = "SimpleBeanUser$1", @CanonicalName = null, @EffectiveVisibility = Visibility.V_ANONYMOUS, @Enum = false, @Final = false, @Interface = false, @Local = false, @Nested = false, @PackageName = "", @Record = false, @RegularClass = false, @RegularInterface = false, @SimpleName = "", @Static = false, @TopLevel = false, @UnnamedToplevelClass = false, @Visibility = Visibility.V_ANONYMOUS]
   |                       +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |                       +- ClassBody[@Empty = false, @Size = 1]
   |                          +- Initializer[@Static = false]
   |                             +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |                                +- ExpressionStatement[]
   |                                   +- AssignmentExpression[@CompileTimeConstant = false, @Compound = false, @Operator = AssignmentOp.ASSIGN, @ParenthesisDepth = 0, @Parenthesized = false]
   |                                      +- VariableAccess[@AccessType = AccessType.WRITE, @CompileTimeConstant = false, @Image = "name", @Name = "name", @ParenthesisDepth = 0, @Parenthesized = false]
   |                                      +- StringLiteral[@CompileTimeConstant = true, @ConstValue = "test", @Empty = false, @Image = "\"test\"", @Length = 4, @LiteralText = "\"test\"", @ParenthesisDepth = 0, @Parenthesized = false, @TextBlock = false]
   +- ClassDeclaration[@Abstract = false, @Annotation = false, @Anonymous = false, @BinaryName = "SimpleBeanUser2", @CanonicalName = "SimpleBeanUser2", @EffectiveVisibility = Visibility.V_PACKAGE, @Enum = false, @Final = false, @Interface = false, @Local = false, @Nested = false, @PackageName = "", @Record = false, @RegularClass = true, @RegularInterface = false, @SimpleName = "SimpleBeanUser2", @Static = false, @TopLevel = true, @UnnamedToplevelClass = false, @Visibility = Visibility.V_PACKAGE]
   |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |  +- ExtendsList[@Empty = false, @Size = 1]
   |  |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "SimpleBeanUser"]
   |  +- ClassBody[@Empty = false, @Size = 1]
   |     +- ConstructorDeclaration[@Abstract = false, @Arity = 0, @EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @Image = "SimpleBeanUser2", @Name = "SimpleBeanUser2", @Static = false, @Varargs = false, @Visibility = Visibility.V_PACKAGE, @containsComment = false]
   |        +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |        +- FormalParameters[@Empty = true, @Size = 0]
   |        +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |           +- ExplicitConstructorInvocation[@ArgumentCount = 1, @MethodName = "new", @Qualified = false, @Super = true, @This = false]
   |              +- ArgumentList[@Empty = false, @Size = 1]
   |                 +- ConstructorCall[@AnonymousClass = true, @CompileTimeConstant = false, @DiamondTypeArgs = false, @MethodName = "new", @ParenthesisDepth = 0, @Parenthesized = false, @QualifiedInstanceCreation = false]
   |                    +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "SimpleBean"]
   |                    +- ArgumentList[@Empty = true, @Size = 0]
   |                    +- AnonymousClassDeclaration[@Abstract = false, @Annotation = false, @Anonymous = true, @BinaryName = "SimpleBeanUser2$1", @CanonicalName = null, @EffectiveVisibility = Visibility.V_ANONYMOUS, @Enum = false, @Final = false, @Interface = false, @Local = false, @Nested = false, @PackageName = "", @Record = false, @RegularClass = false, @RegularInterface = false, @SimpleName = "", @Static = false, @TopLevel = false, @UnnamedToplevelClass = false, @Visibility = Visibility.V_ANONYMOUS]
   |                       +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |                       +- ClassBody[@Empty = false, @Size = 1]
   |                          +- Initializer[@Static = false]
   |                             +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |                                +- ExpressionStatement[]
   |                                   +- AssignmentExpression[@CompileTimeConstant = false, @Compound = false, @Operator = AssignmentOp.ASSIGN, @ParenthesisDepth = 0, @Parenthesized = false]
   |                                      +- VariableAccess[@AccessType = AccessType.WRITE, @CompileTimeConstant = false, @Image = "name", @Name = "name", @ParenthesisDepth = 0, @Parenthesized = false]
   |                                      +- StringLiteral[@CompileTimeConstant = true, @ConstValue = "test2", @Empty = false, @Image = "\"test2\"", @Length = 5, @LiteralText = "\"test2\"", @ParenthesisDepth = 0, @Parenthesized = false, @TextBlock = false]
   +- ClassDeclaration[@Abstract = false, @Annotation = false, @Anonymous = false, @BinaryName = "TestParseAnnototation", @CanonicalName = "TestParseAnnototation", @EffectiveVisibility = Visibility.V_PACKAGE, @Enum = false, @Final = false, @Interface = false, @Local = false, @Nested = false, @PackageName = "", @Record = false, @RegularClass = true, @RegularInterface = false, @SimpleName = "TestParseAnnototation", @Static = false, @TopLevel = true, @UnnamedToplevelClass = false, @Visibility = Visibility.V_PACKAGE]
   |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |  +- ClassBody[@Empty = false, @Size = 1]
   |     +- MethodDeclaration[@Abstract = false, @Arity = 0, @EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @Name = "parse", @Overridden = false, @Static = false, @Varargs = false, @Visibility = Visibility.V_PACKAGE, @Void = true]
   |        +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |        +- VoidType[]
   |        +- FormalParameters[@Empty = true, @Size = 0]
   |        +- Block[@Empty = false, @Size = 4, @containsComment = false]
   |           +- ForStatement[]
   |           |  +- ForInit[]
   |           |  |  +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
   |           |  |     +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |           |  |     |  +- Annotation[@SimpleName = "SuppressWarnings"]
   |           |  |     |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "SuppressWarnings"]
   |           |  |     |     +- AnnotationMemberList[@Empty = false, @Size = 1]
   |           |  |     |        +- MemberValuePair[@Image = "value", @Name = "value", @Shorthand = true]
   |           |  |     |           +- StringLiteral[@CompileTimeConstant = true, @ConstValue = "unchecked", @Empty = false, @Image = "\"unchecked\"", @Length = 9, @LiteralText = "\"unchecked\"", @ParenthesisDepth = 0, @Parenthesized = false, @TextBlock = false]
   |           |  |     +- PrimitiveType[@Kind = PrimitiveTypeKind.INT]
   |           |  |     +- VariableDeclarator[@Initializer = true, @Name = "i"]
   |           |  |        +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = true, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = true, @Name = "i", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |           |  |        +- NumericLiteral[@Base = 10, @CompileTimeConstant = true, @DoubleLiteral = false, @FloatLiteral = false, @Image = "0", @IntLiteral = true, @Integral = true, @LiteralText = "0", @LongLiteral = false, @ParenthesisDepth = 0, @Parenthesized = false, @ValueAsDouble = 0.0, @ValueAsFloat = 0.0, @ValueAsInt = 0, @ValueAsLong = 0]
   |           |  +- InfixExpression[@CompileTimeConstant = false, @Operator = BinaryOp.LT, @ParenthesisDepth = 0, @Parenthesized = false]
   |           |  |  +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "i", @Name = "i", @ParenthesisDepth = 0, @Parenthesized = false]
   |           |  |  +- NumericLiteral[@Base = 10, @CompileTimeConstant = true, @DoubleLiteral = false, @FloatLiteral = false, @Image = "10", @IntLiteral = true, @Integral = true, @LiteralText = "10", @LongLiteral = false, @ParenthesisDepth = 0, @Parenthesized = false, @ValueAsDouble = 10.0, @ValueAsFloat = 10.0, @ValueAsInt = 10, @ValueAsLong = 10]
   |           |  +- ForUpdate[]
   |           |  |  +- StatementExpressionList[@Empty = false, @Size = 1]
   |           |  |     +- UnaryExpression[@CompileTimeConstant = false, @Operator = UnaryOp.POST_INCREMENT, @ParenthesisDepth = 0, @Parenthesized = false]
   |           |  |        +- VariableAccess[@AccessType = AccessType.WRITE, @CompileTimeConstant = false, @Image = "i", @Name = "i", @ParenthesisDepth = 0, @Parenthesized = false]
   |           |  +- Block[@Empty = true, @Size = 0, @containsComment = false]
   |           +- ForStatement[]
   |           |  +- ForInit[]
   |           |  |  +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
   |           |  |     +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |           |  |     |  +- Annotation[@SimpleName = "SuppressWarnings"]
   |           |  |     |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "SuppressWarnings"]
   |           |  |     |     +- AnnotationMemberList[@Empty = false, @Size = 1]
   |           |  |     |        +- MemberValuePair[@Image = "value", @Name = "value", @Shorthand = true]
   |           |  |     |           +- StringLiteral[@CompileTimeConstant = true, @ConstValue = "unchecked", @Empty = false, @Image = "\"unchecked\"", @Length = 9, @LiteralText = "\"unchecked\"", @ParenthesisDepth = 0, @Parenthesized = false, @TextBlock = false]
   |           |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Iterator"]
   |           |  |     +- VariableDeclarator[@Initializer = true, @Name = "it"]
   |           |  |        +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = true, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = true, @Name = "it", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |           |  |        +- MethodCall[@CompileTimeConstant = false, @Image = "iterator", @MethodName = "iterator", @ParenthesisDepth = 0, @Parenthesized = false]
   |           |  |           +- MethodCall[@CompileTimeConstant = false, @Image = "values", @MethodName = "values", @ParenthesisDepth = 0, @Parenthesized = false]
   |           |  |           |  +- AmbiguousName[@CompileTimeConstant = false, @Image = "Fachabteilung", @Name = "Fachabteilung", @ParenthesisDepth = 0, @Parenthesized = false]
   |           |  |           |  +- ArgumentList[@Empty = true, @Size = 0]
   |           |  |           +- ArgumentList[@Empty = true, @Size = 0]
   |           |  +- MethodCall[@CompileTimeConstant = false, @Image = "hasNext", @MethodName = "hasNext", @ParenthesisDepth = 0, @Parenthesized = false]
   |           |  |  +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "it", @Name = "it", @ParenthesisDepth = 0, @Parenthesized = false]
   |           |  |  +- ArgumentList[@Empty = true, @Size = 0]
   |           |  +- Block[@Empty = true, @Size = 0, @containsComment = false]
   |           +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
   |           |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |           |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "List"]
   |           |  |  +- TypeArguments[@Diamond = false, @Empty = false, @Size = 1]
   |           |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "String"]
   |           |  +- VariableDeclarator[@Initializer = true, @Name = "l"]
   |           |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = true, @Name = "l", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |           |     +- ConstructorCall[@AnonymousClass = false, @CompileTimeConstant = false, @DiamondTypeArgs = false, @MethodName = "new", @ParenthesisDepth = 0, @Parenthesized = false, @QualifiedInstanceCreation = false]
   |           |        +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "ArrayList"]
   |           |        |  +- TypeArguments[@Diamond = false, @Empty = false, @Size = 1]
   |           |        |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "String"]
   |           |        +- ArgumentList[@Empty = true, @Size = 0]
   |           +- ForeachStatement[]
   |              +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
   |              |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |              |  |  +- Annotation[@SimpleName = "SuppressWarnings"]
   |              |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "SuppressWarnings"]
   |              |  |     +- AnnotationMemberList[@Empty = false, @Size = 1]
   |              |  |        +- MemberValuePair[@Image = "value", @Name = "value", @Shorthand = true]
   |              |  |           +- StringLiteral[@CompileTimeConstant = true, @ConstValue = "unchecked", @Empty = false, @Image = "\"unchecked\"", @Length = 9, @LiteralText = "\"unchecked\"", @ParenthesisDepth = 0, @Parenthesized = false, @TextBlock = false]
   |              |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "String"]
   |              |  +- VariableDeclarator[@Initializer = false, @Name = "s"]
   |              |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = true, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = false, @Name = "s", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |              +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "l", @Name = "l", @ParenthesisDepth = 0, @Parenthesized = false]
   |              +- Block[@Empty = true, @Size = 0, @containsComment = false]
   +- ClassDeclaration[@Abstract = false, @Annotation = false, @Anonymous = false, @BinaryName = "FooBlock", @CanonicalName = "FooBlock", @EffectiveVisibility = Visibility.V_PACKAGE, @Enum = false, @Final = false, @Interface = false, @Local = false, @Nested = false, @PackageName = "", @Record = false, @RegularClass = true, @RegularInterface = false, @SimpleName = "FooBlock", @Static = false, @TopLevel = true, @UnnamedToplevelClass = false, @Visibility = Visibility.V_PACKAGE]
   |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |  +- ClassBody[@Empty = true, @Size = 0]
   +- ClassDeclaration[@Abstract = false, @Annotation = false, @Anonymous = false, @BinaryName = "MyFoo", @CanonicalName = "MyFoo", @EffectiveVisibility = Visibility.V_PACKAGE, @Enum = false, @Final = false, @Interface = false, @Local = false, @Nested = false, @PackageName = "", @Record = false, @RegularClass = true, @RegularInterface = false, @SimpleName = "MyFoo", @Static = false, @TopLevel = true, @UnnamedToplevelClass = false, @Visibility = Visibility.V_PACKAGE]
   |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |  +- ClassBody[@Empty = false, @Size = 1]
   |     +- ConstructorDeclaration[@Abstract = false, @Arity = 1, @EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @Image = "MyFoo", @Name = "MyFoo", @Static = false, @Varargs = false, @Visibility = Visibility.V_PACKAGE, @containsComment = false]
   |        +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |        +- FormalParameters[@Empty = false, @Size = 1]
   |        |  +- FormalParameter[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @Varargs = false, @Visibility = Visibility.V_LOCAL]
   |        |     +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |        |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "FooBlock"]
   |        |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = false, @LocalVariable = false, @Name = "b", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |        +- Block[@Empty = true, @Size = 0, @containsComment = false]
   +- ClassDeclaration[@Abstract = false, @Annotation = false, @Anonymous = false, @BinaryName = "Foo", @CanonicalName = "Foo", @EffectiveVisibility = Visibility.V_PACKAGE, @Enum = false, @Final = false, @Interface = false, @Local = false, @Nested = false, @PackageName = "", @Record = false, @RegularClass = true, @RegularInterface = false, @SimpleName = "Foo", @Static = false, @TopLevel = true, @UnnamedToplevelClass = false, @Visibility = Visibility.V_PACKAGE]
   |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |  +- ExtendsList[@Empty = false, @Size = 1]
   |  |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "MyFoo"]
   |  +- ClassBody[@Empty = false, @Size = 1]
   |     +- ConstructorDeclaration[@Abstract = false, @Arity = 0, @EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @Image = "Foo", @Name = "Foo", @Static = false, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @containsComment = false]
   |        +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC), @ExplicitModifiers = (JModifier.PUBLIC)]
   |        +- FormalParameters[@Empty = true, @Size = 0]
   |        +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |           +- ExplicitConstructorInvocation[@ArgumentCount = 1, @MethodName = "new", @Qualified = false, @Super = true, @This = false]
   |              +- ArgumentList[@Empty = false, @Size = 1]
   |                 +- ConstructorCall[@AnonymousClass = true, @CompileTimeConstant = false, @DiamondTypeArgs = false, @MethodName = "new", @ParenthesisDepth = 0, @Parenthesized = false, @QualifiedInstanceCreation = false]
   |                    +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "FooBlock"]
   |                    +- ArgumentList[@Empty = true, @Size = 0]
   |                    +- AnonymousClassDeclaration[@Abstract = false, @Annotation = false, @Anonymous = true, @BinaryName = "Foo$1", @CanonicalName = null, @EffectiveVisibility = Visibility.V_ANONYMOUS, @Enum = false, @Final = false, @Interface = false, @Local = false, @Nested = false, @PackageName = "", @Record = false, @RegularClass = false, @RegularInterface = false, @SimpleName = "", @Static = false, @TopLevel = false, @UnnamedToplevelClass = false, @Visibility = Visibility.V_ANONYMOUS]
   |                       +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |                       +- ClassBody[@Empty = false, @Size = 1]
   |                          +- MethodDeclaration[@Abstract = false, @Arity = 1, @EffectiveVisibility = Visibility.V_ANONYMOUS, @Final = false, @Name = "valueOf", @Overridden = false, @Static = false, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @Void = false]
   |                             +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC), @ExplicitModifiers = (JModifier.PUBLIC)]
   |                             +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Object"]
   |                             +- FormalParameters[@Empty = false, @Size = 1]
   |                             |  +- FormalParameter[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @Varargs = false, @Visibility = Visibility.V_LOCAL]
   |                             |     +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |                             |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Object"]
   |                             |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = false, @LocalVariable = false, @Name = "object", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |                             +- Block[@Empty = false, @Size = 2, @containsComment = false]
   |                                +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
   |                                |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |                                |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "String"]
   |                                |  +- VariableDeclarator[@Initializer = true, @Name = "fish"]
   |                                |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = true, @Name = "fish", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |                                |     +- StringLiteral[@CompileTimeConstant = true, @ConstValue = "salmon", @Empty = false, @Image = "\"salmon\"", @Length = 6, @LiteralText = "\"salmon\"", @ParenthesisDepth = 0, @Parenthesized = false, @TextBlock = false]
   |                                +- ReturnStatement[]
   |                                   +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "fish", @Name = "fish", @ParenthesisDepth = 0, @Parenthesized = false]
   +- ClassDeclaration[@Abstract = false, @Annotation = false, @Anonymous = false, @BinaryName = "SuperTest", @CanonicalName = "SuperTest", @EffectiveVisibility = Visibility.V_PACKAGE, @Enum = false, @Final = false, @Interface = false, @Local = false, @Nested = false, @PackageName = "", @Record = false, @RegularClass = true, @RegularInterface = false, @SimpleName = "SuperTest", @Static = false, @TopLevel = true, @UnnamedToplevelClass = false, @Visibility = Visibility.V_PACKAGE]
   |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |  +- ClassBody[@Empty = false, @Size = 1]
   |     +- MethodDeclaration[@Abstract = false, @Arity = 0, @EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @Name = "iterator", @Overridden = false, @Static = false, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @Void = false]
   |        +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC), @ExplicitModifiers = (JModifier.PUBLIC)]
   |        +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Iterator"]
   |        |  +- TypeArguments[@Diamond = false, @Empty = false, @Size = 1]
   |        |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "E"]
   |        +- FormalParameters[@Empty = true, @Size = 0]
   |        +- Block[@Empty = false, @Size = 2, @containsComment = false]
   |           +- IfStatement[@Else = false]
   |           |  +- MethodCall[@CompileTimeConstant = false, @Image = "contains", @MethodName = "contains", @ParenthesisDepth = 0, @Parenthesized = false]
   |           |  |  +- FieldAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "mods", @Name = "mods", @ParenthesisDepth = 0, @Parenthesized = false]
   |           |  |  |  +- ThisExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |           |  |  +- ArgumentList[@Empty = false, @Size = 1]
   |           |  |     +- FieldAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "Iterator", @Name = "Iterator", @ParenthesisDepth = 0, @Parenthesized = false]
   |           |  |        +- AmbiguousName[@CompileTimeConstant = false, @Image = "Modification", @Name = "Modification", @ParenthesisDepth = 0, @Parenthesized = false]
   |           |  +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |           |     +- ReturnStatement[]
   |           |        +- ConstructorCall[@AnonymousClass = true, @CompileTimeConstant = false, @DiamondTypeArgs = false, @MethodName = "new", @ParenthesisDepth = 0, @Parenthesized = false, @QualifiedInstanceCreation = false]
   |           |           +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Iterator"]
   |           |           |  +- TypeArguments[@Diamond = false, @Empty = false, @Size = 1]
   |           |           |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "E"]
   |           |           +- ArgumentList[@Empty = true, @Size = 0]
   |           |           +- AnonymousClassDeclaration[@Abstract = false, @Annotation = false, @Anonymous = true, @BinaryName = "SuperTest$1", @CanonicalName = null, @EffectiveVisibility = Visibility.V_ANONYMOUS, @Enum = false, @Final = false, @Interface = false, @Local = false, @Nested = false, @PackageName = "", @Record = false, @RegularClass = false, @RegularInterface = false, @SimpleName = "", @Static = false, @TopLevel = false, @UnnamedToplevelClass = false, @Visibility = Visibility.V_ANONYMOUS]
   |           |              +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |           |              +- ClassBody[@Empty = false, @Size = 4]
   |           |                 +- FieldDeclaration[@EffectiveVisibility = Visibility.V_ANONYMOUS, @Static = false, @Visibility = Visibility.V_PACKAGE]
   |           |                 |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |           |                 |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Iterator"]
   |           |                 |  |  +- TypeArguments[@Diamond = false, @Empty = false, @Size = 1]
   |           |                 |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "E"]
   |           |                 |  +- VariableDeclarator[@Initializer = true, @Name = "wrapped"]
   |           |                 |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_ANONYMOUS, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = true, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = false, @Name = "wrapped", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_PACKAGE]
   |           |                 |     +- MethodCall[@CompileTimeConstant = false, @Image = "iterator", @MethodName = "iterator", @ParenthesisDepth = 0, @Parenthesized = false]
   |           |                 |        +- SuperExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |           |                 |        |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "ImmutableSet"]
   |           |                 |        +- ArgumentList[@Empty = true, @Size = 0]
   |           |                 +- MethodDeclaration[@Abstract = false, @Arity = 0, @EffectiveVisibility = Visibility.V_ANONYMOUS, @Final = false, @Name = "hasNext", @Overridden = false, @Static = false, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @Void = false]
   |           |                 |  +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC), @ExplicitModifiers = (JModifier.PUBLIC)]
   |           |                 |  +- PrimitiveType[@Kind = PrimitiveTypeKind.BOOLEAN]
   |           |                 |  +- FormalParameters[@Empty = true, @Size = 0]
   |           |                 |  +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |           |                 |     +- ReturnStatement[]
   |           |                 |        +- MethodCall[@CompileTimeConstant = false, @Image = "hasNext", @MethodName = "hasNext", @ParenthesisDepth = 0, @Parenthesized = false]
   |           |                 |           +- FieldAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "wrapped", @Name = "wrapped", @ParenthesisDepth = 0, @Parenthesized = false]
   |           |                 |           |  +- ThisExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |           |                 |           +- ArgumentList[@Empty = true, @Size = 0]
   |           |                 +- MethodDeclaration[@Abstract = false, @Arity = 0, @EffectiveVisibility = Visibility.V_ANONYMOUS, @Final = false, @Name = "next", @Overridden = false, @Static = false, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @Void = false]
   |           |                 |  +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC), @ExplicitModifiers = (JModifier.PUBLIC)]
   |           |                 |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "E"]
   |           |                 |  +- FormalParameters[@Empty = true, @Size = 0]
   |           |                 |  +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |           |                 |     +- ReturnStatement[]
   |           |                 |        +- MethodCall[@CompileTimeConstant = false, @Image = "next", @MethodName = "next", @ParenthesisDepth = 0, @Parenthesized = false]
   |           |                 |           +- FieldAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "wrapped", @Name = "wrapped", @ParenthesisDepth = 0, @Parenthesized = false]
   |           |                 |           |  +- ThisExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |           |                 |           +- ArgumentList[@Empty = true, @Size = 0]
   |           |                 +- MethodDeclaration[@Abstract = false, @Arity = 0, @EffectiveVisibility = Visibility.V_ANONYMOUS, @Final = false, @Name = "remove", @Overridden = false, @Static = false, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @Void = true]
   |           |                    +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC), @ExplicitModifiers = (JModifier.PUBLIC)]
   |           |                    +- VoidType[]
   |           |                    +- FormalParameters[@Empty = true, @Size = 0]
   |           |                    +- Block[@Empty = false, @Size = 2, @containsComment = false]
   |           |                       +- IfStatement[@Else = false]
   |           |                       |  +- MethodCall[@CompileTimeConstant = false, @Image = "contains", @MethodName = "contains", @ParenthesisDepth = 0, @Parenthesized = false]
   |           |                       |  |  +- FieldAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "mods", @Name = "mods", @ParenthesisDepth = 0, @Parenthesized = false]
   |           |                       |  |  |  +- ThisExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |           |                       |  |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "ImmutableSet"]
   |           |                       |  |  +- ArgumentList[@Empty = false, @Size = 1]
   |           |                       |  |     +- FieldAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "RemoveIter", @Name = "RemoveIter", @ParenthesisDepth = 0, @Parenthesized = false]
   |           |                       |  |        +- AmbiguousName[@CompileTimeConstant = false, @Image = "Modification", @Name = "Modification", @ParenthesisDepth = 0, @Parenthesized = false]
   |           |                       |  +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |           |                       |     +- ExpressionStatement[]
   |           |                       |        +- MethodCall[@CompileTimeConstant = false, @Image = "remove", @MethodName = "remove", @ParenthesisDepth = 0, @Parenthesized = false]
   |           |                       |           +- FieldAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "wrapped", @Name = "wrapped", @ParenthesisDepth = 0, @Parenthesized = false]
   |           |                       |           |  +- ThisExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |           |                       |           +- ArgumentList[@Empty = true, @Size = 0]
   |           |                       +- ThrowStatement[]
   |           |                          +- ConstructorCall[@AnonymousClass = false, @CompileTimeConstant = false, @DiamondTypeArgs = false, @MethodName = "new", @ParenthesisDepth = 0, @Parenthesized = false, @QualifiedInstanceCreation = false]
   |           |                             +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "UnsupportedOperationException"]
   |           |                             +- ArgumentList[@Empty = true, @Size = 0]
   |           +- ThrowStatement[]
   |              +- ConstructorCall[@AnonymousClass = false, @CompileTimeConstant = false, @DiamondTypeArgs = false, @MethodName = "new", @ParenthesisDepth = 0, @Parenthesized = false, @QualifiedInstanceCreation = false]
   |                 +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "UnsupportedOperationException"]
   |                 +- ArgumentList[@Empty = true, @Size = 0]
   +- ClassDeclaration[@Abstract = false, @Annotation = false, @Anonymous = false, @BinaryName = "ClazzPropertyOfPrimitiveTypes", @CanonicalName = "ClazzPropertyOfPrimitiveTypes", @EffectiveVisibility = Visibility.V_PACKAGE, @Enum = false, @Final = false, @Interface = false, @Local = false, @Nested = false, @PackageName = "", @Record = false, @RegularClass = true, @RegularInterface = false, @SimpleName = "ClazzPropertyOfPrimitiveTypes", @Static = false, @TopLevel = true, @UnnamedToplevelClass = false, @Visibility = Visibility.V_PACKAGE]
      +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
      +- ClassBody[@Empty = false, @Size = 1]
         +- MethodDeclaration[@Abstract = false, @Arity = 0, @EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @Name = "test", @Overridden = false, @Static = false, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @Void = true]
            +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC), @ExplicitModifiers = (JModifier.PUBLIC)]
            +- VoidType[]
            +- FormalParameters[@Empty = true, @Size = 0]
            +- Block[@Empty = false, @Size = 11, @containsComment = false]
               +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
               |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
               |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Class"]
               |  |  +- TypeArguments[@Diamond = false, @Empty = false, @Size = 1]
               |  |     +- WildcardType[@LowerBound = false, @UpperBound = true]
               |  +- VariableDeclarator[@Initializer = true, @Name = "c"]
               |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = true, @Name = "c", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
               |     +- ClassLiteral[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
               |        +- PrimitiveType[@Kind = PrimitiveTypeKind.INT]
               +- ExpressionStatement[]
               |  +- AssignmentExpression[@CompileTimeConstant = false, @Compound = false, @Operator = AssignmentOp.ASSIGN, @ParenthesisDepth = 0, @Parenthesized = false]
               |     +- VariableAccess[@AccessType = AccessType.WRITE, @CompileTimeConstant = false, @Image = "c", @Name = "c", @ParenthesisDepth = 0, @Parenthesized = false]
               |     +- ClassLiteral[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
               |        +- PrimitiveType[@Kind = PrimitiveTypeKind.SHORT]
               +- ExpressionStatement[]
               |  +- AssignmentExpression[@CompileTimeConstant = false, @Compound = false, @Operator = AssignmentOp.ASSIGN, @ParenthesisDepth = 0, @Parenthesized = false]
               |     +- VariableAccess[@AccessType = AccessType.WRITE, @CompileTimeConstant = false, @Image = "c", @Name = "c", @ParenthesisDepth = 0, @Parenthesized = false]
               |     +- ClassLiteral[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
               |        +- PrimitiveType[@Kind = PrimitiveTypeKind.LONG]
               +- ExpressionStatement[]
               |  +- AssignmentExpression[@CompileTimeConstant = false, @Compound = false, @Operator = AssignmentOp.ASSIGN, @ParenthesisDepth = 0, @Parenthesized = false]
               |     +- VariableAccess[@AccessType = AccessType.WRITE, @CompileTimeConstant = false, @Image = "c", @Name = "c", @ParenthesisDepth = 0, @Parenthesized = false]
               |     +- ClassLiteral[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
               |        +- PrimitiveType[@Kind = PrimitiveTypeKind.FLOAT]
               +- ExpressionStatement[]
               |  +- AssignmentExpression[@CompileTimeConstant = false, @Compound = false, @Operator = AssignmentOp.ASSIGN, @ParenthesisDepth = 0, @Parenthesized = false]
               |     +- VariableAccess[@AccessType = AccessType.WRITE, @CompileTimeConstant = false, @Image = "c", @Name = "c", @ParenthesisDepth = 0, @Parenthesized = false]
               |     +- ClassLiteral[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
               |        +- PrimitiveType[@Kind = PrimitiveTypeKind.DOUBLE]
               +- ExpressionStatement[]
               |  +- AssignmentExpression[@CompileTimeConstant = false, @Compound = false, @Operator = AssignmentOp.ASSIGN, @ParenthesisDepth = 0, @Parenthesized = false]
               |     +- VariableAccess[@AccessType = AccessType.WRITE, @CompileTimeConstant = false, @Image = "c", @Name = "c", @ParenthesisDepth = 0, @Parenthesized = false]
               |     +- ClassLiteral[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
               |        +- PrimitiveType[@Kind = PrimitiveTypeKind.CHAR]
               +- ExpressionStatement[]
               |  +- AssignmentExpression[@CompileTimeConstant = false, @Compound = false, @Operator = AssignmentOp.ASSIGN, @ParenthesisDepth = 0, @Parenthesized = false]
               |     +- VariableAccess[@AccessType = AccessType.WRITE, @CompileTimeConstant = false, @Image = "c", @Name = "c", @ParenthesisDepth = 0, @Parenthesized = false]
               |     +- ClassLiteral[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
               |        +- PrimitiveType[@Kind = PrimitiveTypeKind.BYTE]
               +- ExpressionStatement[]
               |  +- AssignmentExpression[@CompileTimeConstant = false, @Compound = false, @Operator = AssignmentOp.ASSIGN, @ParenthesisDepth = 0, @Parenthesized = false]
               |     +- VariableAccess[@AccessType = AccessType.WRITE, @CompileTimeConstant = false, @Image = "c", @Name = "c", @ParenthesisDepth = 0, @Parenthesized = false]
               |     +- ClassLiteral[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
               |        +- VoidType[]
               +- IfStatement[@Else = false]
               |  +- InfixExpression[@CompileTimeConstant = false, @Operator = BinaryOp.CONDITIONAL_OR, @ParenthesisDepth = 0, @Parenthesized = false]
               |  |  +- InfixExpression[@CompileTimeConstant = false, @Operator = BinaryOp.CONDITIONAL_OR, @ParenthesisDepth = 0, @Parenthesized = false]
               |  |  |  +- InfixExpression[@CompileTimeConstant = false, @Operator = BinaryOp.CONDITIONAL_OR, @ParenthesisDepth = 0, @Parenthesized = false]
               |  |  |  |  +- InfixExpression[@CompileTimeConstant = false, @Operator = BinaryOp.CONDITIONAL_OR, @ParenthesisDepth = 0, @Parenthesized = false]
               |  |  |  |  |  +- InfixExpression[@CompileTimeConstant = false, @Operator = BinaryOp.CONDITIONAL_OR, @ParenthesisDepth = 0, @Parenthesized = false]
               |  |  |  |  |  |  +- InfixExpression[@CompileTimeConstant = false, @Operator = BinaryOp.CONDITIONAL_OR, @ParenthesisDepth = 0, @Parenthesized = false]
               |  |  |  |  |  |  |  +- InfixExpression[@CompileTimeConstant = false, @Operator = BinaryOp.EQ, @ParenthesisDepth = 0, @Parenthesized = false]
               |  |  |  |  |  |  |  |  +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "c", @Name = "c", @ParenthesisDepth = 0, @Parenthesized = false]
               |  |  |  |  |  |  |  |  +- ClassLiteral[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
               |  |  |  |  |  |  |  |     +- PrimitiveType[@Kind = PrimitiveTypeKind.INT]
               |  |  |  |  |  |  |  +- InfixExpression[@CompileTimeConstant = false, @Operator = BinaryOp.EQ, @ParenthesisDepth = 0, @Parenthesized = false]
               |  |  |  |  |  |  |     +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "c", @Name = "c", @ParenthesisDepth = 0, @Parenthesized = false]
               |  |  |  |  |  |  |     +- ClassLiteral[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
               |  |  |  |  |  |  |        +- PrimitiveType[@Kind = PrimitiveTypeKind.SHORT]
               |  |  |  |  |  |  +- InfixExpression[@CompileTimeConstant = false, @Operator = BinaryOp.EQ, @ParenthesisDepth = 0, @Parenthesized = false]
               |  |  |  |  |  |     +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "c", @Name = "c", @ParenthesisDepth = 0, @Parenthesized = false]
               |  |  |  |  |  |     +- ClassLiteral[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
               |  |  |  |  |  |        +- PrimitiveType[@Kind = PrimitiveTypeKind.LONG]
               |  |  |  |  |  +- InfixExpression[@CompileTimeConstant = false, @Operator = BinaryOp.EQ, @ParenthesisDepth = 0, @Parenthesized = false]
               |  |  |  |  |     +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "c", @Name = "c", @ParenthesisDepth = 0, @Parenthesized = false]
               |  |  |  |  |     +- ClassLiteral[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
               |  |  |  |  |        +- PrimitiveType[@Kind = PrimitiveTypeKind.DOUBLE]
               |  |  |  |  +- InfixExpression[@CompileTimeConstant = false, @Operator = BinaryOp.EQ, @ParenthesisDepth = 0, @Parenthesized = false]
               |  |  |  |     +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "c", @Name = "c", @ParenthesisDepth = 0, @Parenthesized = false]
               |  |  |  |     +- ClassLiteral[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
               |  |  |  |        +- PrimitiveType[@Kind = PrimitiveTypeKind.CHAR]
               |  |  |  +- InfixExpression[@CompileTimeConstant = false, @Operator = BinaryOp.EQ, @ParenthesisDepth = 0, @Parenthesized = false]
               |  |  |     +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "c", @Name = "c", @ParenthesisDepth = 0, @Parenthesized = false]
               |  |  |     +- ClassLiteral[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
               |  |  |        +- PrimitiveType[@Kind = PrimitiveTypeKind.BYTE]
               |  |  +- InfixExpression[@CompileTimeConstant = false, @Operator = BinaryOp.EQ, @ParenthesisDepth = 0, @Parenthesized = false]
               |  |     +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "c", @Name = "c", @ParenthesisDepth = 0, @Parenthesized = false]
               |  |     +- ClassLiteral[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
               |  |        +- VoidType[]
               |  +- Block[@Empty = true, @Size = 0, @containsComment = false]
               +- IfStatement[@Else = false]
               |  +- MethodCall[@CompileTimeConstant = false, @Image = "equals", @MethodName = "equals", @ParenthesisDepth = 0, @Parenthesized = false]
               |  |  +- StringLiteral[@CompileTimeConstant = true, @ConstValue = "a", @Empty = false, @Image = "\"a\"", @Length = 1, @LiteralText = "\"a\"", @ParenthesisDepth = 0, @Parenthesized = false, @TextBlock = false]
               |  |  +- ArgumentList[@Empty = false, @Size = 1]
               |  |     +- MethodCall[@CompileTimeConstant = false, @Image = "getName", @MethodName = "getName", @ParenthesisDepth = 0, @Parenthesized = false]
               |  |        +- ClassLiteral[@CompileTimeConstant = false, @ParenthesisDepth = 1, @Parenthesized = true]
               |  |        |  +- PrimitiveType[@Kind = PrimitiveTypeKind.INT]
               |  |        +- ArgumentList[@Empty = true, @Size = 0]
               |  +- Block[@Empty = true, @Size = 0, @containsComment = false]
               +- IfStatement[@Else = false]
                  +- InfixExpression[@CompileTimeConstant = false, @Operator = BinaryOp.CONDITIONAL_OR, @ParenthesisDepth = 0, @Parenthesized = false]
                  |  +- MethodCall[@CompileTimeConstant = false, @Image = "equals", @MethodName = "equals", @ParenthesisDepth = 1, @Parenthesized = true]
                  |  |  +- ClassLiteral[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
                  |  |  |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Integer"]
                  |  |  +- ArgumentList[@Empty = false, @Size = 1]
                  |  |     +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "clazz", @Name = "clazz", @ParenthesisDepth = 0, @Parenthesized = false]
                  |  +- MethodCall[@CompileTimeConstant = false, @Image = "equals", @MethodName = "equals", @ParenthesisDepth = 1, @Parenthesized = true]
                  |     +- ClassLiteral[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
                  |     |  +- PrimitiveType[@Kind = PrimitiveTypeKind.INT]
                  |     +- ArgumentList[@Empty = false, @Size = 1]
                  |        +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "clazz", @Name = "clazz", @ParenthesisDepth = 0, @Parenthesized = false]
                  +- Block[@Empty = true, @Size = 0, @containsComment = false]
