PsiElement (ASTNode node) { IElementType type = node.getElementType(); if (type == COMMAND_LINE) { return new IJPerfCommandLineImpl(node); } else if (type == COMMAND_NAME) { return new IJPerfCommandNameImpl(node); } else if (type == DELAY_TYPING_OPTION) { return new IJPerfDelayTypingOptionImpl(node); } else if (type == GOTO_OPTION) { return new IJPerfGotoOptionImpl(node); } else if (type == OPTION) { return new IJPerfOptionImpl(node); } else if (type == OPTION_LIST) { return new IJPerfOptionListImpl(node); } else if (type == SIMPLE_OPTION) { return new IJPerfSimpleOptionImpl(node); } else if (type == STATEMENT) { return new IJPerfStatementImpl(node); } throw new AssertionError("Unknown element type: " + type); }