PsiJetFileStubImpl[package=]
  PACKAGE_DIRECTIVE
  IMPORT_LIST
  CLASS[classId=/Vertex, fqName=Vertex, isClsStubCompiledToJvmDefaultImplementation=false, isEnumEntry=false, isInterface=false, isLocal=false, isTopLevel=true, name=Vertex, superNames=[]]
    TYPE_PARAMETER_LIST
      TYPE_PARAMETER[fqName=null, isInVariance=false, isOutVariance=false, name=V]
    PRIMARY_CONSTRUCTOR[fqName=null, hasBody=false, hasNoExpressionBody=true, isDelegatedCallToThis=false, isExplicitDelegationCall=false, isExtension=false, isTopLevel=false, mayHaveContract=false, name=Vertex]
      VALUE_PARAMETER_LIST
        VALUE_PARAMETER[fqName=Vertex.data, hasDefaultValue=false, hasValOrVar=true, isMutable=false, name=data]
          TYPE_REFERENCE
            USER_TYPE
              REFERENCE_EXPRESSION[referencedName=V]
  CLASS[classId=/Edge, fqName=Edge, isClsStubCompiledToJvmDefaultImplementation=false, isEnumEntry=false, isInterface=false, isLocal=false, isTopLevel=true, name=Edge, superNames=[]]
    TYPE_PARAMETER_LIST
      TYPE_PARAMETER[fqName=null, isInVariance=false, isOutVariance=false, name=V]
      TYPE_PARAMETER[fqName=null, isInVariance=false, isOutVariance=false, name=E]
    PRIMARY_CONSTRUCTOR[fqName=null, hasBody=false, hasNoExpressionBody=true, isDelegatedCallToThis=false, isExplicitDelegationCall=false, isExtension=false, isTopLevel=false, mayHaveContract=false, name=Edge]
      VALUE_PARAMETER_LIST
        VALUE_PARAMETER[fqName=Edge.from, hasDefaultValue=false, hasValOrVar=true, isMutable=false, name=from]
          TYPE_REFERENCE
            USER_TYPE
              REFERENCE_EXPRESSION[referencedName=V]
        VALUE_PARAMETER[fqName=Edge.data, hasDefaultValue=false, hasValOrVar=true, isMutable=false, name=data]
          TYPE_REFERENCE
            USER_TYPE
              REFERENCE_EXPRESSION[referencedName=E]
        VALUE_PARAMETER[fqName=Edge.to, hasDefaultValue=false, hasValOrVar=true, isMutable=false, name=to]
          TYPE_REFERENCE
            USER_TYPE
              REFERENCE_EXPRESSION[referencedName=V]
  CLASS[classId=/Graph, fqName=Graph, isClsStubCompiledToJvmDefaultImplementation=false, isEnumEntry=false, isInterface=false, isLocal=false, isTopLevel=true, name=Graph, superNames=[]]
    TYPE_PARAMETER_LIST
      TYPE_PARAMETER[fqName=null, isInVariance=false, isOutVariance=false, name=V]
      TYPE_PARAMETER[fqName=null, isInVariance=false, isOutVariance=false, name=E]
    CLASS_BODY
      PROPERTY[fqName=Graph.mutableEdges, hasBackingField=null, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReturnTypeRef=false, isExtension=false, isTopLevel=false, isVar=false, name=mutableEdges]
        MODIFIER_LIST[private]
      PROPERTY[fqName=Graph.mutableVertices, hasBackingField=null, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReturnTypeRef=false, isExtension=false, isTopLevel=false, isVar=false, name=mutableVertices]
        MODIFIER_LIST[private]
      PROPERTY[fqName=Graph.edges, hasBackingField=null, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=edges]
        TYPE_REFERENCE
          USER_TYPE
            REFERENCE_EXPRESSION[referencedName=IList]
            TYPE_ARGUMENT_LIST
              TYPE_PROJECTION[projectionKind=NONE]
                TYPE_REFERENCE
                  USER_TYPE
                    REFERENCE_EXPRESSION[referencedName=Edge]
                    TYPE_ARGUMENT_LIST
                      TYPE_PROJECTION[projectionKind=NONE]
                        TYPE_REFERENCE
                          USER_TYPE
                            REFERENCE_EXPRESSION[referencedName=V]
                      TYPE_PROJECTION[projectionKind=NONE]
                        TYPE_REFERENCE
                          USER_TYPE
                            REFERENCE_EXPRESSION[referencedName=E]
        REFERENCE_EXPRESSION[referencedName=mutableEdges]
      PROPERTY[fqName=Graph.vertices, hasBackingField=null, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReturnTypeRef=true, isExtension=false, isTopLevel=false, isVar=false, name=vertices]
        TYPE_REFERENCE
          USER_TYPE
            REFERENCE_EXPRESSION[referencedName=ISet]
            TYPE_ARGUMENT_LIST
              TYPE_PROJECTION[projectionKind=NONE]
                TYPE_REFERENCE
                  USER_TYPE
                    REFERENCE_EXPRESSION[referencedName=Edge]
                    TYPE_ARGUMENT_LIST
                      TYPE_PROJECTION[projectionKind=NONE]
                        TYPE_REFERENCE
                          USER_TYPE
                            REFERENCE_EXPRESSION[referencedName=V]
                      TYPE_PROJECTION[projectionKind=NONE]
                        TYPE_REFERENCE
                          USER_TYPE
                            REFERENCE_EXPRESSION[referencedName=E]
        REFERENCE_EXPRESSION[referencedName=mutableVertices]
      FUN[fqName=Graph.addEdge, hasBody=true, hasNoExpressionBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=false, isTopLevel=false, mayHaveContract=false, name=addEdge]
        VALUE_PARAMETER_LIST
          VALUE_PARAMETER[fqName=null, hasDefaultValue=false, hasValOrVar=false, isMutable=false, name=from]
            TYPE_REFERENCE
              USER_TYPE
                REFERENCE_EXPRESSION[referencedName=V]
          VALUE_PARAMETER[fqName=null, hasDefaultValue=false, hasValOrVar=false, isMutable=false, name=data]
            TYPE_REFERENCE
              USER_TYPE
                REFERENCE_EXPRESSION[referencedName=E]
          VALUE_PARAMETER[fqName=null, hasDefaultValue=false, hasValOrVar=false, isMutable=false, name=to]
            TYPE_REFERENCE
              USER_TYPE
                REFERENCE_EXPRESSION[referencedName=V]
      FUN[fqName=Graph.addVertex, hasBody=true, hasNoExpressionBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=false, isTopLevel=false, mayHaveContract=false, name=addVertex]
        VALUE_PARAMETER_LIST
          VALUE_PARAMETER[fqName=null, hasDefaultValue=false, hasValOrVar=false, isMutable=false, name=v]
            TYPE_REFERENCE
              USER_TYPE
                REFERENCE_EXPRESSION[referencedName=V]
      FUN[fqName=Graph.neighbours, hasBody=true, hasNoExpressionBody=false, hasTypeParameterListBeforeFunctionName=false, isExtension=false, isTopLevel=false, mayHaveContract=false, name=neighbours]
        VALUE_PARAMETER_LIST
          VALUE_PARAMETER[fqName=null, hasDefaultValue=false, hasValOrVar=false, isMutable=false, name=v]
            TYPE_REFERENCE
              USER_TYPE
                REFERENCE_EXPRESSION[referencedName=Vertex]
                TYPE_ARGUMENT_LIST
                  TYPE_PROJECTION[projectionKind=NONE]
                    TYPE_REFERENCE
                      USER_TYPE
                        REFERENCE_EXPRESSION[referencedName=V]
      FUN[fqName=Graph.dfs, hasBody=true, hasNoExpressionBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=false, isTopLevel=false, mayHaveContract=false, name=dfs]
        VALUE_PARAMETER_LIST
          VALUE_PARAMETER[fqName=null, hasDefaultValue=false, hasValOrVar=false, isMutable=false, name=handler]
            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=V]
                TYPE_REFERENCE
                  USER_TYPE
                    REFERENCE_EXPRESSION[referencedName=Unit]
        FUN[fqName=null, hasBody=true, hasNoExpressionBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=false, isTopLevel=false, mayHaveContract=false, name=dfs]
          VALUE_PARAMETER_LIST
            VALUE_PARAMETER[fqName=null, hasDefaultValue=false, hasValOrVar=false, isMutable=false, name=current]
              TYPE_REFERENCE
                USER_TYPE
                  REFERENCE_EXPRESSION[referencedName=Vertex]
                  TYPE_ARGUMENT_LIST
                    TYPE_PROJECTION[projectionKind=NONE]
                      TYPE_REFERENCE
                        USER_TYPE
                          REFERENCE_EXPRESSION[referencedName=V]
            VALUE_PARAMETER[fqName=null, hasDefaultValue=false, hasValOrVar=false, isMutable=false, name=visited]
              TYPE_REFERENCE
                USER_TYPE
                  REFERENCE_EXPRESSION[referencedName=ISet]
                  TYPE_ARGUMENT_LIST
                    TYPE_PROJECTION[projectionKind=NONE]
                      TYPE_REFERENCE
                        USER_TYPE
                          REFERENCE_EXPRESSION[referencedName=Vertex]
                          TYPE_ARGUMENT_LIST
                            TYPE_PROJECTION[projectionKind=NONE]
                              TYPE_REFERENCE
                                USER_TYPE
                                  REFERENCE_EXPRESSION[referencedName=V]
            VALUE_PARAMETER[fqName=null, hasDefaultValue=false, hasValOrVar=false, isMutable=false, name=handler]
              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=V]
                  TYPE_REFERENCE
                    USER_TYPE
                      REFERENCE_EXPRESSION[referencedName=Unit]
      FUN[fqName=Graph.traverse, hasBody=true, hasNoExpressionBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=false, isTopLevel=false, mayHaveContract=false, name=traverse]
        MODIFIER_LIST[public]
        VALUE_PARAMETER_LIST
          VALUE_PARAMETER[fqName=null, hasDefaultValue=false, hasValOrVar=false, isMutable=false, name=pending]
            TYPE_REFERENCE
              USER_TYPE
                REFERENCE_EXPRESSION[referencedName=IPushPop]
                TYPE_ARGUMENT_LIST
                  TYPE_PROJECTION[projectionKind=NONE]
                    TYPE_REFERENCE
                      USER_TYPE
                        REFERENCE_EXPRESSION[referencedName=Vertex]
                        TYPE_ARGUMENT_LIST
                          TYPE_PROJECTION[projectionKind=NONE]
                            TYPE_REFERENCE
                              USER_TYPE
                                REFERENCE_EXPRESSION[referencedName=V]
          VALUE_PARAMETER[fqName=null, hasDefaultValue=false, hasValOrVar=false, isMutable=false, name=visited]
            TYPE_REFERENCE
              USER_TYPE
                REFERENCE_EXPRESSION[referencedName=ISet]
                TYPE_ARGUMENT_LIST
                  TYPE_PROJECTION[projectionKind=NONE]
                    TYPE_REFERENCE
                      USER_TYPE
                        REFERENCE_EXPRESSION[referencedName=Vertex]
                        TYPE_ARGUMENT_LIST
                          TYPE_PROJECTION[projectionKind=NONE]
                            TYPE_REFERENCE
                              USER_TYPE
                                REFERENCE_EXPRESSION[referencedName=V]
          VALUE_PARAMETER[fqName=null, hasDefaultValue=false, hasValOrVar=false, isMutable=false, name=handler]
            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=V]
                TYPE_REFERENCE
                  USER_TYPE
                    REFERENCE_EXPRESSION[referencedName=Unit]
