+- CompilationUnit[@PackageName = ""]
   +- AnnotationTypeDeclaration[@Abstract = true, @Annotation = true, @Anonymous = false, @BinaryName = "Foo", @CanonicalName = "Foo", @EffectiveVisibility = Visibility.V_PUBLIC, @Enum = false, @Final = false, @Interface = true, @Local = false, @Nested = false, @PackageName = "", @Record = false, @RegularClass = false, @RegularInterface = false, @SimpleName = "Foo", @Static = false, @TopLevel = true, @UnnamedToplevelClass = false, @Visibility = Visibility.V_PUBLIC]
      +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC, JModifier.ABSTRACT), @ExplicitModifiers = (JModifier.PUBLIC)]
      +- AnnotationTypeBody[@Empty = false, @Size = 1]
         +- FieldDeclaration[@EffectiveVisibility = Visibility.V_PUBLIC, @Static = true, @Visibility = Visibility.V_PUBLIC]
            +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC, JModifier.STATIC, JModifier.FINAL), @ExplicitModifiers = (JModifier.STATIC, JModifier.FINAL)]
            +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "ThreadLocal"]
            |  +- TypeArguments[@Diamond = false, @Empty = false, @Size = 1]
            |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Interner"]
            |        +- TypeArguments[@Diamond = false, @Empty = false, @Size = 1]
            |           +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Integer"]
            +- VariableDeclarator[@Initializer = true, @Name = "interner"]
               +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_PUBLIC, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = true, @Final = true, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = false, @Name = "interner", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = true, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_PUBLIC]
               +- MethodCall[@CompileTimeConstant = false, @Image = "withInitial", @MethodName = "withInitial", @ParenthesisDepth = 0, @Parenthesized = false]
                  +- TypeExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
                  |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "ThreadLocal"]
                  +- ArgumentList[@Empty = false, @Size = 1]
                     +- MethodReference[@CompileTimeConstant = false, @ConstructorReference = false, @MethodName = "newStrongInterner", @ParenthesisDepth = 0, @Parenthesized = false]
                        +- AmbiguousName[@CompileTimeConstant = false, @Image = "Interners", @Name = "Interners", @ParenthesisDepth = 0, @Parenthesized = false]
