A.class:
  PsiJetFileStubImpl[package=foo.TopLevelMembers]
    PACKAGE_DIRECTIVE
      DOT_QUALIFIED_EXPRESSION
        REFERENCE_EXPRESSION[referencedName=foo]
        REFERENCE_EXPRESSION[referencedName=TopLevelMembers]
    IMPORT_LIST
    CLASS[classId=foo/TopLevelMembers/A, fqName=foo.TopLevelMembers.A, isClsStubCompiledToJvmDefaultImplementation=false, isEnumEntry=false, isInterface=false, isLocal=false, isTopLevel=true, name=A, superNames=[Annotation]]
      MODIFIER_LIST[public final annotation]
        ANNOTATION_ENTRY[hasValueArguments=false, shortName=Target]
          CONSTRUCTOR_CALLEE
            TYPE_REFERENCE
              USER_TYPE
                USER_TYPE
                  USER_TYPE
                    REFERENCE_EXPRESSION[referencedName=kotlin]
                  REFERENCE_EXPRESSION[referencedName=annotation]
                REFERENCE_EXPRESSION[referencedName=Target]
      PRIMARY_CONSTRUCTOR[fqName=null, hasBody=false, hasNoExpressionBody=true, isDelegatedCallToThis=false, isExplicitDelegationCall=false, isExtension=false, isTopLevel=false, mayHaveContract=false, name=A]
        MODIFIER_LIST[public]
        VALUE_PARAMETER_LIST
      SUPER_TYPE_LIST
        SUPER_TYPE_ENTRY
          TYPE_REFERENCE
            USER_TYPE
              USER_TYPE
                REFERENCE_EXPRESSION[referencedName=kotlin]
              REFERENCE_EXPRESSION[referencedName=Annotation]
      CLASS_BODY


D.class:
  PsiJetFileStubImpl[package=foo.TopLevelMembers]
    PACKAGE_DIRECTIVE
      DOT_QUALIFIED_EXPRESSION
        REFERENCE_EXPRESSION[referencedName=foo]
        REFERENCE_EXPRESSION[referencedName=TopLevelMembers]
    IMPORT_LIST
    CLASS[classId=foo/TopLevelMembers/D, fqName=foo.TopLevelMembers.D, isClsStubCompiledToJvmDefaultImplementation=false, isEnumEntry=false, isInterface=false, isLocal=false, isTopLevel=true, name=D, superNames=[]]
      MODIFIER_LIST[public final]
      PRIMARY_CONSTRUCTOR[fqName=null, hasBody=false, hasNoExpressionBody=true, isDelegatedCallToThis=false, isExplicitDelegationCall=false, isExtension=false, isTopLevel=false, mayHaveContract=false, name=D]
        MODIFIER_LIST[public]
        VALUE_PARAMETER_LIST
      CLASS_BODY


Nothing.class:
  PsiJetFileStubImpl[package=foo.TopLevelMembers]
    PACKAGE_DIRECTIVE
      DOT_QUALIFIED_EXPRESSION
        REFERENCE_EXPRESSION[referencedName=foo]
        REFERENCE_EXPRESSION[referencedName=TopLevelMembers]
    IMPORT_LIST
    CLASS[classId=foo/TopLevelMembers/Nothing, fqName=foo.TopLevelMembers.Nothing, isClsStubCompiledToJvmDefaultImplementation=false, isEnumEntry=false, isInterface=false, isLocal=false, isTopLevel=true, name=Nothing, superNames=[]]
      MODIFIER_LIST[public final]
      PRIMARY_CONSTRUCTOR[fqName=null, hasBody=false, hasNoExpressionBody=true, isDelegatedCallToThis=false, isExplicitDelegationCall=false, isExtension=false, isTopLevel=false, mayHaveContract=false, name=Nothing]
        MODIFIER_LIST[public]
        VALUE_PARAMETER_LIST
      CLASS_BODY


TopLevelMembersKt.class:
  PsiJetFileStubImpl[package=foo.TopLevelMembers]
    PACKAGE_DIRECTIVE
      DOT_QUALIFIED_EXPRESSION
        REFERENCE_EXPRESSION[referencedName=foo]
        REFERENCE_EXPRESSION[referencedName=TopLevelMembers]
    IMPORT_LIST
    PROPERTY[fqName=foo.TopLevelMembers.immutable, hasBackingField=true, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReturnTypeRef=true, isExtension=false, isTopLevel=true, isVar=false, name=immutable]
      MODIFIER_LIST[public]
      TYPE_REFERENCE
        USER_TYPE
          USER_TYPE
            REFERENCE_EXPRESSION[referencedName=kotlin]
          REFERENCE_EXPRESSION[referencedName=Double]
    PROPERTY[fqName=foo.TopLevelMembers.mutable, hasBackingField=true, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReturnTypeRef=true, isExtension=false, isTopLevel=true, isVar=true, name=mutable]
      MODIFIER_LIST[public]
      TYPE_REFERENCE
        USER_TYPE
          USER_TYPE
            REFERENCE_EXPRESSION[referencedName=kotlin]
          REFERENCE_EXPRESSION[referencedName=Float]
    PROPERTY[fqName=foo.TopLevelMembers.ext, hasBackingField=false, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReturnTypeRef=true, isExtension=true, isTopLevel=true, isVar=false, name=ext]
      MODIFIER_LIST[public]
      TYPE_REFERENCE
        USER_TYPE
          USER_TYPE
            REFERENCE_EXPRESSION[referencedName=kotlin]
          REFERENCE_EXPRESSION[referencedName=String]
      TYPE_REFERENCE
        USER_TYPE
          USER_TYPE
            REFERENCE_EXPRESSION[referencedName=kotlin]
          REFERENCE_EXPRESSION[referencedName=String]
      PROPERTY_ACCESSOR[hasBody=true, hasNoExpressionBody=true, isGetter=true, mayHaveContract=false]
        MODIFIER_LIST[public final]
        VALUE_PARAMETER_LIST
    PROPERTY[fqName=foo.TopLevelMembers.certainlyNothing, hasBackingField=true, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReturnTypeRef=true, isExtension=false, isTopLevel=true, isVar=false, name=certainlyNothing]
      MODIFIER_LIST[private]
      TYPE_REFERENCE
        USER_TYPE
          USER_TYPE
            REFERENCE_EXPRESSION[referencedName=kotlin]
          REFERENCE_EXPRESSION[referencedName=Nothing]
    PROPERTY[fqName=foo.TopLevelMembers.Main, hasBackingField=false, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReturnTypeRef=true, isExtension=true, isTopLevel=true, isVar=false, name=Main]
      MODIFIER_LIST[public]
      TYPE_REFERENCE
        USER_TYPE
          USER_TYPE
            USER_TYPE
              REFERENCE_EXPRESSION[referencedName=foo]
            REFERENCE_EXPRESSION[referencedName=TopLevelMembers]
          REFERENCE_EXPRESSION[referencedName=D]
      TYPE_REFERENCE
        NULLABLE_TYPE
          USER_TYPE
            USER_TYPE
              USER_TYPE
                REFERENCE_EXPRESSION[referencedName=foo]
              REFERENCE_EXPRESSION[referencedName=TopLevelMembers]
            REFERENCE_EXPRESSION[referencedName=D]
      PROPERTY_ACCESSOR[hasBody=true, hasNoExpressionBody=true, isGetter=true, mayHaveContract=false]
        MODIFIER_LIST[public final]
        VALUE_PARAMETER_LIST
    PROPERTY[fqName=foo.TopLevelMembers.Main, hasBackingField=true, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReturnTypeRef=true, isExtension=false, isTopLevel=true, isVar=false, name=Main]
      MODIFIER_LIST[internal]
        ANNOTATION_ENTRY[hasValueArguments=false, shortName=A]
          ANNOTATION_TARGET[useSiteTarget=FIELD]
          CONSTRUCTOR_CALLEE
            TYPE_REFERENCE
              USER_TYPE
                USER_TYPE
                  USER_TYPE
                    REFERENCE_EXPRESSION[referencedName=foo]
                  REFERENCE_EXPRESSION[referencedName=TopLevelMembers]
                REFERENCE_EXPRESSION[referencedName=A]
      TYPE_REFERENCE
        NULLABLE_TYPE
          USER_TYPE
            USER_TYPE
              USER_TYPE
                REFERENCE_EXPRESSION[referencedName=foo]
              REFERENCE_EXPRESSION[referencedName=TopLevelMembers]
            REFERENCE_EXPRESSION[referencedName=D]
    FUN[fqName=foo.TopLevelMembers.funWithBlockBody, hasBody=true, hasNoExpressionBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=false, isTopLevel=true, mayHaveContract=false, name=funWithBlockBody]
      MODIFIER_LIST[public]
      VALUE_PARAMETER_LIST
      TYPE_REFERENCE
        USER_TYPE
          USER_TYPE
            REFERENCE_EXPRESSION[referencedName=kotlin]
          REFERENCE_EXPRESSION[referencedName=Unit]
    FUN[fqName=foo.TopLevelMembers.funWithExprBody, hasBody=true, hasNoExpressionBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=false, isTopLevel=true, mayHaveContract=false, name=funWithExprBody]
      MODIFIER_LIST[private]
      VALUE_PARAMETER_LIST
      TYPE_REFERENCE
        USER_TYPE
          USER_TYPE
            REFERENCE_EXPRESSION[referencedName=kotlin]
          REFERENCE_EXPRESSION[referencedName=Int]
    FUN[fqName=foo.TopLevelMembers.funWithParams, hasBody=true, hasNoExpressionBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=false, isTopLevel=true, mayHaveContract=false, name=funWithParams]
      MODIFIER_LIST[private]
      VALUE_PARAMETER_LIST
        VALUE_PARAMETER[fqName=null, hasDefaultValue=false, hasValOrVar=false, isMutable=false, name=c]
          TYPE_REFERENCE
            USER_TYPE
              USER_TYPE
                REFERENCE_EXPRESSION[referencedName=kotlin]
              REFERENCE_EXPRESSION[referencedName=Int]
      TYPE_REFERENCE
        USER_TYPE
          USER_TYPE
            REFERENCE_EXPRESSION[referencedName=kotlin]
          REFERENCE_EXPRESSION[referencedName=Unit]
    FUN[fqName=foo.TopLevelMembers.ext, hasBody=true, hasNoExpressionBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=true, isTopLevel=true, mayHaveContract=false, name=ext]
      MODIFIER_LIST[public]
      TYPE_REFERENCE
        USER_TYPE
          USER_TYPE
            REFERENCE_EXPRESSION[referencedName=kotlin]
          REFERENCE_EXPRESSION[referencedName=Int]
      VALUE_PARAMETER_LIST
        VALUE_PARAMETER[fqName=null, hasDefaultValue=true, hasValOrVar=false, isMutable=false, name=i]
          TYPE_REFERENCE
            USER_TYPE
              USER_TYPE
                REFERENCE_EXPRESSION[referencedName=kotlin]
              REFERENCE_EXPRESSION[referencedName=Int]
          REFERENCE_EXPRESSION[referencedName=COMPILED_CODE]
      TYPE_REFERENCE
        USER_TYPE
          USER_TYPE
            REFERENCE_EXPRESSION[referencedName=kotlin]
          REFERENCE_EXPRESSION[referencedName=Int]
    FUN[fqName=foo.TopLevelMembers.funWithVarargParam, hasBody=true, hasNoExpressionBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=false, isTopLevel=true, mayHaveContract=false, name=funWithVarargParam]
      MODIFIER_LIST[private]
      VALUE_PARAMETER_LIST
        VALUE_PARAMETER[fqName=null, hasDefaultValue=false, hasValOrVar=false, isMutable=false, name=c]
          TYPE_REFERENCE
            USER_TYPE
              USER_TYPE
                REFERENCE_EXPRESSION[referencedName=kotlin]
              REFERENCE_EXPRESSION[referencedName=Int]
        VALUE_PARAMETER[fqName=null, hasDefaultValue=false, hasValOrVar=false, isMutable=false, name=v]
          MODIFIER_LIST[vararg]
          TYPE_REFERENCE
            USER_TYPE
              USER_TYPE
                REFERENCE_EXPRESSION[referencedName=kotlin]
              REFERENCE_EXPRESSION[referencedName=Int]
      TYPE_REFERENCE
        USER_TYPE
          USER_TYPE
            REFERENCE_EXPRESSION[referencedName=kotlin]
          REFERENCE_EXPRESSION[referencedName=Unit]
    FUN[fqName=foo.TopLevelMembers.probablyNothing, hasBody=true, hasNoExpressionBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=false, isTopLevel=true, mayHaveContract=false, name=probablyNothing]
      MODIFIER_LIST[private]
      VALUE_PARAMETER_LIST
      TYPE_REFERENCE
        USER_TYPE
          USER_TYPE
            USER_TYPE
              REFERENCE_EXPRESSION[referencedName=foo]
            REFERENCE_EXPRESSION[referencedName=TopLevelMembers]
          REFERENCE_EXPRESSION[referencedName=Nothing]
    TYPEALIAS[classId=foo/TopLevelMembers/Alias, fqName=foo.TopLevelMembers.Alias, isTopLevel=true, name=Alias]
      MODIFIER_LIST[private]
      TYPE_PARAMETER_LIST
        TYPE_PARAMETER[fqName=null, isInVariance=false, isOutVariance=false, name=E]
      TYPE_REFERENCE
        FUNCTION_TYPE
          VALUE_PARAMETER_LIST
            VALUE_PARAMETER[fqName=null, hasDefaultValue=false, hasValOrVar=false, isMutable=false, name=null]
              TYPE_REFERENCE
                USER_TYPE
                  REFERENCE_EXPRESSION[referencedName=E]
          TYPE_REFERENCE
            USER_TYPE
              REFERENCE_EXPRESSION[referencedName=E]
