JetFile: Graph.jet NAMESPACE CLASS PsiElement(class)('class') PsiWhiteSpace(' ') PsiElement(IDENTIFIER)('Vertex') TYPE_PARAMETER_LIST PsiElement(LT)('<') TYPE_PARAMETER PsiElement(IDENTIFIER)('V') PsiElement(GT)('>') PRIMARY_CONSTRUCTOR_PARAMETERS_LIST PsiElement(LPAR)('(') PRIMARY_CONSTRUCTOR_PARAMETER PsiElement(val)('val') PsiWhiteSpace(' ') PsiElement(IDENTIFIER)('data') PsiWhiteSpace(' ') PsiElement(COLON)(':') PsiWhiteSpace(' ') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('V') PsiElement(RPAR)(')') PsiWhiteSpace('\n\n') CLASS PsiElement(class)('class') PsiWhiteSpace(' ') PsiElement(IDENTIFIER)('Edge') TYPE_PARAMETER_LIST PsiElement(LT)('<') TYPE_PARAMETER PsiElement(IDENTIFIER)('V') PsiElement(COMMA)(',') PsiWhiteSpace(' ') TYPE_PARAMETER PsiElement(IDENTIFIER)('E') PsiElement(GT)('>') PRIMARY_CONSTRUCTOR_PARAMETERS_LIST PsiElement(LPAR)('(') PRIMARY_CONSTRUCTOR_PARAMETER PsiElement(val)('val') PsiWhiteSpace(' ') PsiElement(IDENTIFIER)('from') PsiWhiteSpace(' ') PsiElement(COLON)(':') PsiWhiteSpace(' ') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('V') PsiElement(COMMA)(',') PsiWhiteSpace(' ') PRIMARY_CONSTRUCTOR_PARAMETER PsiElement(val)('val') PsiWhiteSpace(' ') PsiElement(IDENTIFIER)('data') PsiWhiteSpace(' ') PsiElement(COLON)(':') PsiWhiteSpace(' ') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('E') PsiElement(COMMA)(',') PsiWhiteSpace(' ') PRIMARY_CONSTRUCTOR_PARAMETER PsiElement(val)('val') PsiWhiteSpace(' ') PsiElement(IDENTIFIER)('to') PsiWhiteSpace(' ') PsiElement(COLON)(':') PsiWhiteSpace(' ') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('V') PsiElement(RPAR)(')') PsiWhiteSpace('\n\n') CLASS PsiElement(class)('class') PsiWhiteSpace(' ') PsiElement(IDENTIFIER)('Graph') TYPE_PARAMETER_LIST PsiElement(LT)('<') TYPE_PARAMETER PsiElement(IDENTIFIER)('V') PsiElement(COMMA)(',') PsiWhiteSpace(' ') TYPE_PARAMETER PsiElement(IDENTIFIER)('E') PsiElement(GT)('>') PsiWhiteSpace(' ') CLASS_BODY PsiElement(LBRACE)('{') PsiWhiteSpace('\n\n ') PROPERTY MODIFIER_LIST PsiElement(private)('private') PsiWhiteSpace(' ') PsiElement(val)('val') PsiWhiteSpace(' ') PsiElement(IDENTIFIER)('mutableEdges') PsiWhiteSpace(' ') PsiElement(EQ)('=') PsiWhiteSpace(' ') NEW PsiElement(new)('new') PsiWhiteSpace(' ') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('ArrayList') TYPE_ARGUMENT_LIST PsiElement(LT)('<') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('Edge') TYPE_ARGUMENT_LIST PsiElement(LT)('<') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('V') PsiElement(COMMA)(',') PsiWhiteSpace(' ') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('E') PsiElement(GT)('>') PsiElement(GT)('>') VALUE_ARGUMENT_LIST PsiElement(LPAR)('(') PsiElement(RPAR)(')') PsiWhiteSpace(' ') PsiComment(EOL_COMMENT)('// type is ArrayList, but I want IMutableList') PsiWhiteSpace('\n') PsiComment(BLOCK_COMMENT)('/* options:\n private val edges : IMutableList> = new ArrayList>()\n private val edges : IMutableList> = new ArrayList() // not an erasure, but a request to infer parameters\n*/') PsiWhiteSpace('\n\n ') PROPERTY MODIFIER_LIST PsiElement(private)('private') PsiWhiteSpace(' ') PsiElement(val)('val') PsiWhiteSpace(' ') PsiElement(IDENTIFIER)('mutableVertices') PsiWhiteSpace(' ') PsiElement(EQ)('=') PsiWhiteSpace(' ') NEW PsiElement(new)('new') PsiWhiteSpace(' ') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('HashSet') TYPE_ARGUMENT_LIST PsiElement(LT)('<') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('Vertex') TYPE_ARGUMENT_LIST PsiElement(LT)('<') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('V') PsiElement(GT)('>') PsiElement(GT)('>') VALUE_ARGUMENT_LIST PsiElement(LPAR)('(') PsiElement(RPAR)(')') PsiWhiteSpace('\n\n ') PROPERTY PsiElement(val)('val') PsiWhiteSpace(' ') PsiElement(IDENTIFIER)('edges') PsiWhiteSpace(' ') PsiElement(COLON)(':') PsiWhiteSpace(' ') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('IList') TYPE_ARGUMENT_LIST PsiElement(LT)('<') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('Edge') TYPE_ARGUMENT_LIST PsiElement(LT)('<') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('V') PsiElement(COMMA)(',') PsiWhiteSpace(' ') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('E') PsiElement(GT)('>') PsiElement(GT)('>') PsiWhiteSpace(' ') PsiElement(EQ)('=') PsiWhiteSpace(' ') PsiElement(IDENTIFIER)('mutableEdges') PsiElement(SEMICOLON)(';') PsiWhiteSpace('\n ') PROPERTY PsiElement(val)('val') PsiWhiteSpace(' ') PsiElement(IDENTIFIER)('vertices') PsiWhiteSpace(' ') PsiElement(COLON)(':') PsiWhiteSpace(' ') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('ISet') TYPE_ARGUMENT_LIST PsiElement(LT)('<') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('Edge') TYPE_ARGUMENT_LIST PsiElement(LT)('<') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('V') PsiElement(COMMA)(',') PsiWhiteSpace(' ') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('E') PsiElement(GT)('>') PsiElement(GT)('>') PsiWhiteSpace(' ') PsiElement(EQ)('=') PsiWhiteSpace(' ') PsiElement(IDENTIFIER)('mutableVertices') PsiElement(SEMICOLON)(';') PsiWhiteSpace('\n\n ') FUN PsiElement(fun)('fun') PsiWhiteSpace(' ') PsiElement(IDENTIFIER)('addEdge') TYPE_PARAMETER_LIST VALUE_PARAMETER_LIST PsiElement(LPAR)('(') VALUE_PARAMETER PsiElement(IDENTIFIER)('from') PsiWhiteSpace(' ') PsiElement(COLON)(':') PsiWhiteSpace(' ') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('V') PsiElement(COMMA)(',') PsiWhiteSpace(' ') VALUE_PARAMETER PsiElement(IDENTIFIER)('data') PsiWhiteSpace(' ') PsiElement(COLON)(':') PsiWhiteSpace(' ') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('E') PsiElement(COMMA)(',') PsiWhiteSpace(' ') VALUE_PARAMETER PsiElement(IDENTIFIER)('to') PsiWhiteSpace(' ') PsiElement(COLON)(':') PsiWhiteSpace(' ') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('V') PsiElement(RPAR)(')') PsiWhiteSpace(' ') BLOCK PsiElement(LBRACE)('{') PsiWhiteSpace('\n ') CALL_EXPRESSION DOT_QIALIFIED_EXPRESSION PsiElement(IDENTIFIER)('mutableEdges') PsiElement(DOT)('.') PsiElement(IDENTIFIER)('add') VALUE_ARGUMENT_LIST PsiElement(LPAR)('(') VALUE_ARGUMENT NEW PsiElement(new)('new') PsiWhiteSpace(' ') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('Edge') VALUE_ARGUMENT_LIST PsiElement(LPAR)('(') VALUE_ARGUMENT PsiElement(IDENTIFIER)('from') PsiElement(COMMA)(',') PsiWhiteSpace(' ') VALUE_ARGUMENT PsiElement(IDENTIFIER)('data') PsiElement(COMMA)(',') PsiWhiteSpace(' ') VALUE_ARGUMENT PsiElement(IDENTIFIER)('to') PsiElement(RPAR)(')') PsiElement(RPAR)(')') PsiWhiteSpace(' ') PsiComment(EOL_COMMENT)('// constructor parameters are inferred') PsiWhiteSpace('\n ') PsiElement(RBRACE)('}') PsiWhiteSpace('\n ') FUN PsiElement(fun)('fun') PsiWhiteSpace(' ') PsiElement(IDENTIFIER)('addVertex') TYPE_PARAMETER_LIST VALUE_PARAMETER_LIST PsiElement(LPAR)('(') VALUE_PARAMETER PsiElement(IDENTIFIER)('v') PsiWhiteSpace(' ') PsiElement(COLON)(':') PsiWhiteSpace(' ') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('V') PsiElement(RPAR)(')') PsiWhiteSpace(' ') BLOCK PsiElement(LBRACE)('{') PsiWhiteSpace('\n ') CALL_EXPRESSION DOT_QIALIFIED_EXPRESSION PsiElement(IDENTIFIER)('mutableEdges') PsiElement(DOT)('.') PsiElement(IDENTIFIER)('add') VALUE_ARGUMENT_LIST PsiElement(LPAR)('(') VALUE_ARGUMENT NEW PsiElement(new)('new') PsiWhiteSpace(' ') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('Edge') VALUE_ARGUMENT_LIST PsiElement(LPAR)('(') VALUE_ARGUMENT PsiElement(IDENTIFIER)('from') PsiElement(COMMA)(',') PsiWhiteSpace(' ') VALUE_ARGUMENT PsiElement(IDENTIFIER)('data') PsiElement(COMMA)(',') PsiWhiteSpace(' ') VALUE_ARGUMENT PsiElement(IDENTIFIER)('to') PsiElement(RPAR)(')') PsiElement(RPAR)(')') PsiWhiteSpace(' ') PsiComment(EOL_COMMENT)('// constructor parameters are inferred') PsiWhiteSpace('\n ') PsiElement(RBRACE)('}') PsiWhiteSpace('\n\n ') FUN PsiElement(fun)('fun') PsiWhiteSpace(' ') PsiElement(IDENTIFIER)('neighbours') TYPE_PARAMETER_LIST VALUE_PARAMETER_LIST PsiElement(LPAR)('(') VALUE_PARAMETER PsiElement(IDENTIFIER)('v') PsiWhiteSpace(' ') PsiElement(COLON)(':') PsiWhiteSpace(' ') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('Vertex') TYPE_ARGUMENT_LIST PsiElement(LT)('<') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('V') PsiElement(GT)('>') PsiElement(RPAR)(')') PsiWhiteSpace(' ') PsiElement(EQ)('=') PsiWhiteSpace(' ') CALL_EXPRESSION DOT_QIALIFIED_EXPRESSION CALL_EXPRESSION DOT_QIALIFIED_EXPRESSION PsiElement(IDENTIFIER)('edges') PsiElement(DOT)('.') PsiElement(IDENTIFIER)('filter') FUNCTION_LITERAL PsiElement(LBRACE)('{') BODY BINARY_EXPRESSION DOT_QIALIFIED_EXPRESSION PsiElement(IDENTIFIER)('it') PsiElement(DOT)('.') PsiElement(IDENTIFIER)('from') PsiWhiteSpace(' ') PsiElement(EQEQ)('==') PsiWhiteSpace(' ') PsiElement(IDENTIFIER)('v') PsiElement(RBRACE)('}') PsiElement(DOT)('.') PsiElement(IDENTIFIER)('map') FUNCTION_LITERAL PsiElement(LBRACE)('{') BODY DOT_QIALIFIED_EXPRESSION PsiElement(IDENTIFIER)('it') PsiElement(DOT)('.') PsiElement(IDENTIFIER)('to') PsiElement(RBRACE)('}') PsiWhiteSpace(' ') PsiComment(EOL_COMMENT)('// type is IIterable>') PsiWhiteSpace('\n\n ') FUN PsiElement(fun)('fun') PsiWhiteSpace(' ') PsiElement(IDENTIFIER)('dfs') TYPE_PARAMETER_LIST VALUE_PARAMETER_LIST PsiElement(LPAR)('(') VALUE_PARAMETER PsiElement(IDENTIFIER)('handler') PsiWhiteSpace(' ') PsiElement(COLON)(':') PsiWhiteSpace(' ') TYPE_REFERENCE FUNCTION_TYPE PsiElement(LBRACE)('{') VALUE_PARAMETER_LIST PsiElement(LPAR)('(') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('V') PsiElement(RPAR)(')') PsiWhiteSpace(' ') PsiElement(COLON)(':') PsiWhiteSpace(' ') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('Unit') PsiElement(RBRACE)('}') PsiElement(RPAR)(')') PsiWhiteSpace(' ') BLOCK PsiElement(LBRACE)('{') PsiWhiteSpace('\n ') PROPERTY PsiElement(val)('val') PsiWhiteSpace(' ') PsiElement(IDENTIFIER)('visited') PsiWhiteSpace(' ') PsiElement(EQ)('=') PsiWhiteSpace(' ') NEW PsiElement(new)('new') PsiWhiteSpace(' ') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('HashSet') TYPE_ARGUMENT_LIST PsiElement(LT)('<') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('Vertex') TYPE_ARGUMENT_LIST PsiElement(LT)('<') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('V') PsiElement(GT)('>') PsiElement(GT)('>') VALUE_ARGUMENT_LIST PsiElement(LPAR)('(') PsiElement(RPAR)(')') PsiWhiteSpace('\n ') CALL_EXPRESSION DOT_QIALIFIED_EXPRESSION PsiElement(IDENTIFIER)('vertices') PsiElement(DOT)('.') PsiElement(IDENTIFIER)('foreach') FUNCTION_LITERAL PsiElement(LBRACE)('{') BODY CALL_EXPRESSION PsiElement(IDENTIFIER)('dfs') VALUE_ARGUMENT_LIST PsiElement(LPAR)('(') VALUE_ARGUMENT PsiElement(IDENTIFIER)('it') PsiElement(COMMA)(',') PsiWhiteSpace(' ') VALUE_ARGUMENT PsiElement(IDENTIFIER)('visited') PsiElement(COMMA)(',') PsiWhiteSpace(' ') VALUE_ARGUMENT PsiElement(IDENTIFIER)('handler') PsiElement(RPAR)(')') PsiElement(RBRACE)('}') PsiWhiteSpace('\n\n ') FUN PsiElement(fun)('fun') PsiWhiteSpace(' ') PsiElement(IDENTIFIER)('dfs') TYPE_PARAMETER_LIST VALUE_PARAMETER_LIST PsiElement(LPAR)('(') VALUE_PARAMETER PsiElement(IDENTIFIER)('current') PsiWhiteSpace(' ') PsiElement(COLON)(':') PsiWhiteSpace(' ') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('Vertex') TYPE_ARGUMENT_LIST PsiElement(LT)('<') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('V') PsiElement(GT)('>') PsiElement(COMMA)(',') PsiWhiteSpace(' ') VALUE_PARAMETER PsiElement(IDENTIFIER)('visited') PsiWhiteSpace(' ') PsiElement(COLON)(':') PsiWhiteSpace(' ') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('ISet') TYPE_ARGUMENT_LIST PsiElement(LT)('<') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('Vertex') TYPE_ARGUMENT_LIST PsiElement(LT)('<') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('V') PsiElement(GT)('>') PsiElement(GT)('>') PsiElement(COMMA)(',') PsiWhiteSpace(' ') VALUE_PARAMETER PsiElement(IDENTIFIER)('handler') PsiWhiteSpace(' ') PsiElement(COLON)(':') PsiWhiteSpace(' ') TYPE_REFERENCE FUNCTION_TYPE PsiElement(LBRACE)('{') VALUE_PARAMETER_LIST PsiElement(LPAR)('(') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('V') PsiElement(RPAR)(')') PsiWhiteSpace(' ') PsiElement(COLON)(':') PsiWhiteSpace(' ') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('Unit') PsiElement(RBRACE)('}') PsiElement(RPAR)(')') PsiWhiteSpace(' ') BLOCK PsiElement(LBRACE)('{') PsiWhiteSpace('\n ') IF PsiElement(if)('if') PsiWhiteSpace(' ') PsiElement(LPAR)('(') CONDITION PREFIX_EXPRESSION PsiElement(EXCL)('!') CALL_EXPRESSION DOT_QIALIFIED_EXPRESSION PsiElement(IDENTIFIER)('visited') PsiElement(DOT)('.') PsiElement(IDENTIFIER)('add') VALUE_ARGUMENT_LIST PsiElement(LPAR)('(') VALUE_ARGUMENT PsiElement(IDENTIFIER)('current') PsiElement(RPAR)(')') PsiElement(RPAR)(')') PsiWhiteSpace('\n ') THEN RETURN PsiElement(return)('return') PsiWhiteSpace('\n ') CALL_EXPRESSION PsiElement(IDENTIFIER)('handler') VALUE_ARGUMENT_LIST PsiElement(LPAR)('(') VALUE_ARGUMENT PsiElement(IDENTIFIER)('current') PsiElement(RPAR)(')') PsiWhiteSpace('\n ') CALL_EXPRESSION DOT_QIALIFIED_EXPRESSION CALL_EXPRESSION PsiElement(IDENTIFIER)('neighbours') VALUE_ARGUMENT_LIST PsiElement(LPAR)('(') VALUE_ARGUMENT PsiElement(IDENTIFIER)('current') PsiElement(RPAR)(')') PsiElement(DOT)('.') PsiElement(IDENTIFIER)('foreach') FUNCTION_LITERAL PsiElement(LBRACE)('{') BODY CALL_EXPRESSION PsiElement(IDENTIFIER)('dfs') VALUE_ARGUMENT_LIST PsiElement(LPAR)('(') VALUE_ARGUMENT PsiElement(IDENTIFIER)('it') PsiElement(COMMA)(',') PsiWhiteSpace(' ') VALUE_ARGUMENT PsiElement(IDENTIFIER)('visited') PsiElement(COMMA)(',') PsiWhiteSpace(' ') VALUE_ARGUMENT PsiElement(IDENTIFIER)('handler') PsiElement(RPAR)(')') PsiElement(RBRACE)('}') PsiWhiteSpace('\n ') PsiElement(RBRACE)('}') PsiWhiteSpace('\n ') PsiElement(RBRACE)('}') PsiWhiteSpace('\n\n ') FUN MODIFIER_LIST PsiElement(public)('public') PsiWhiteSpace(' ') PsiElement(fun)('fun') PsiWhiteSpace(' ') PsiElement(IDENTIFIER)('traverse') TYPE_PARAMETER_LIST VALUE_PARAMETER_LIST PsiElement(LPAR)('(') VALUE_PARAMETER PsiElement(IDENTIFIER)('pending') PsiWhiteSpace(' ') PsiElement(COLON)(':') PsiWhiteSpace(' ') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('IPushPop') TYPE_ARGUMENT_LIST PsiElement(LT)('<') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('Vertex') TYPE_ARGUMENT_LIST PsiElement(LT)('<') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('V') PsiElement(GT)('>') PsiElement(GT)('>') PsiElement(COMMA)(',') PsiWhiteSpace(' ') VALUE_PARAMETER PsiElement(IDENTIFIER)('visited') PsiWhiteSpace(' ') PsiElement(COLON)(':') PsiWhiteSpace(' ') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('ISet') TYPE_ARGUMENT_LIST PsiElement(LT)('<') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('Vertex') TYPE_ARGUMENT_LIST PsiElement(LT)('<') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('V') PsiElement(GT)('>') PsiElement(GT)('>') PsiElement(COMMA)(',') PsiWhiteSpace(' ') VALUE_PARAMETER PsiElement(IDENTIFIER)('handler') PsiWhiteSpace(' ') PsiElement(COLON)(':') PsiWhiteSpace(' ') TYPE_REFERENCE FUNCTION_TYPE PsiElement(LBRACE)('{') VALUE_PARAMETER_LIST PsiElement(LPAR)('(') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('V') PsiElement(RPAR)(')') PsiWhiteSpace(' ') PsiElement(COLON)(':') PsiWhiteSpace(' ') TYPE_REFERENCE USER_TYPE PsiElement(IDENTIFIER)('Unit') PsiElement(RBRACE)('}') PsiElement(RPAR)(')') PsiWhiteSpace(' ') BLOCK PsiElement(LBRACE)('{') PsiWhiteSpace('\n ') CALL_EXPRESSION DOT_QIALIFIED_EXPRESSION PsiElement(IDENTIFIER)('vertices') PsiElement(DOT)('.') PsiElement(IDENTIFIER)('foreach') PsiWhiteSpace(' ') FUNCTION_LITERAL PsiElement(LBRACE)('{') PsiWhiteSpace('\n ') BODY IF PsiElement(if)('if') PsiWhiteSpace(' ') PsiElement(LPAR)('(') CONDITION PREFIX_EXPRESSION PsiElement(EXCL)('!') CALL_EXPRESSION DOT_QIALIFIED_EXPRESSION PsiElement(IDENTIFIER)('visited') PsiElement(DOT)('.') PsiElement(IDENTIFIER)('add') VALUE_ARGUMENT_LIST PsiElement(LPAR)('(') VALUE_ARGUMENT PsiElement(IDENTIFIER)('it') PsiElement(RPAR)(')') PsiElement(RPAR)(')') PsiWhiteSpace('\n ') THEN CONTINUE PsiElement(continue)('continue') PsiWhiteSpace('\n ') CALL_EXPRESSION DOT_QIALIFIED_EXPRESSION PsiElement(IDENTIFIER)('pending') PsiElement(DOT)('.') PsiElement(IDENTIFIER)('push') VALUE_ARGUMENT_LIST PsiElement(LPAR)('(') VALUE_ARGUMENT PsiElement(IDENTIFIER)('it') PsiElement(RPAR)(')') PsiWhiteSpace('\n ') WHILE PsiElement(while)('while') PsiWhiteSpace(' ') PsiElement(LPAR)('(') CONDITION PREFIX_EXPRESSION PsiElement(EXCL)('!') DOT_QIALIFIED_EXPRESSION PsiElement(IDENTIFIER)('pending') PsiElement(DOT)('.') PsiElement(IDENTIFIER)('isEmpty') PsiElement(RPAR)(')') PsiWhiteSpace(' ') BODY FUNCTION_LITERAL PsiElement(LBRACE)('{') PsiWhiteSpace('\n ') BODY PROPERTY PsiElement(val)('val') PsiWhiteSpace(' ') PsiElement(IDENTIFIER)('current') PsiWhiteSpace(' ') PsiElement(EQ)('=') PsiWhiteSpace(' ') CALL_EXPRESSION DOT_QIALIFIED_EXPRESSION PsiElement(IDENTIFIER)('pending') PsiElement(DOT)('.') PsiElement(IDENTIFIER)('pop') VALUE_ARGUMENT_LIST PsiElement(LPAR)('(') PsiElement(RPAR)(')') PsiWhiteSpace('\n ') CALL_EXPRESSION PsiElement(IDENTIFIER)('handler') VALUE_ARGUMENT_LIST PsiElement(LPAR)('(') VALUE_ARGUMENT PsiElement(IDENTIFIER)('current') PsiElement(RPAR)(')') PsiElement(SEMICOLON)(';') PsiWhiteSpace('\n ') CALL_EXPRESSION DOT_QIALIFIED_EXPRESSION CALL_EXPRESSION PsiElement(IDENTIFIER)('neighbours') VALUE_ARGUMENT_LIST PsiElement(LPAR)('(') VALUE_ARGUMENT PsiElement(IDENTIFIER)('current') PsiElement(RPAR)(')') PsiElement(DOT)('.') PsiElement(IDENTIFIER)('foreach') PsiWhiteSpace(' ') FUNCTION_LITERAL PsiElement(LBRACE)('{') PsiWhiteSpace(' ') VALUE_PARAMETER PsiElement(IDENTIFIER)('n') PsiWhiteSpace(' ') PsiElement(DOUBLE_ARROW)('=>') PsiWhiteSpace('\n ') BODY IF PsiElement(if)('if') PsiWhiteSpace(' ') PsiElement(LPAR)('(') CONDITION CALL_EXPRESSION DOT_QIALIFIED_EXPRESSION PsiElement(IDENTIFIER)('visited') PsiElement(DOT)('.') PsiElement(IDENTIFIER)('add') VALUE_ARGUMENT_LIST PsiElement(LPAR)('(') VALUE_ARGUMENT PsiElement(IDENTIFIER)('n') PsiElement(RPAR)(')') PsiElement(RPAR)(')') PsiWhiteSpace(' ') THEN FUNCTION_LITERAL PsiElement(LBRACE)('{') PsiWhiteSpace('\n ') BODY CALL_EXPRESSION DOT_QIALIFIED_EXPRESSION PsiElement(IDENTIFIER)('pending') PsiElement(DOT)('.') PsiElement(IDENTIFIER)('push') VALUE_ARGUMENT_LIST PsiElement(LPAR)('(') VALUE_ARGUMENT PsiElement(IDENTIFIER)('n') PsiElement(RPAR)(')') PsiWhiteSpace('\n ') PsiElement(RBRACE)('}') PsiWhiteSpace('\n ') PsiElement(RBRACE)('}') PsiWhiteSpace('\n ') PsiComment(BLOCK_COMMENT)('/* alternative\n pending->push(neighbours(current).filter{n => !visited[n])})\n // -> means that if push(x : T) and actual parameter y is IIterable, this compiles into\n y.foreach{ n => push(n) }\n */') PsiWhiteSpace('\n ') PsiElement(RBRACE)('}') PsiWhiteSpace('\n ') PsiElement(RBRACE)('}') PsiWhiteSpace('\n ') PsiElement(RBRACE)('}') PsiWhiteSpace('\n') PsiElement(RBRACE)('}')