PsiElement (ASTNode node) { IElementType type = node.getElementType(); if (type == ASTERISK_PATTERN) { return new EditorConfigAsteriskPatternImpl(node); } else if (type == CHAR_CLASS_EXCLAMATION) { return new EditorConfigCharClassExclamationImpl(node); } else if (type == CHAR_CLASS_LETTER) { return new EditorConfigCharClassLetterImpl(node); } else if (type == CHAR_CLASS_PATTERN) { return new EditorConfigCharClassPatternImpl(node); } else if (type == CONCATENATED_PATTERN) { return new EditorConfigConcatenatedPatternImpl(node); } else if (type == DOUBLE_ASTERISK_PATTERN) { return new EditorConfigDoubleAsteriskPatternImpl(node); } else if (type == ENUMERATION_PATTERN) { return new EditorConfigEnumerationPatternImpl(node); } else if (type == FLAT_OPTION_KEY) { return new EditorConfigFlatOptionKeyImpl(node); } else if (type == FLAT_PATTERN) { return new EditorConfigFlatPatternImpl(node); } else if (type == HEADER) { return new EditorConfigHeaderImpl(node); } else if (type == OPTION) { return new EditorConfigOptionImpl(node); } else if (type == OPTION_VALUE_IDENTIFIER) { return new EditorConfigOptionValueIdentifierImpl(node); } else if (type == OPTION_VALUE_LIST) { return new EditorConfigOptionValueListImpl(node); } else if (type == OPTION_VALUE_PAIR) { return new EditorConfigOptionValuePairImpl(node); } else if (type == QUALIFIED_KEY_PART) { return new EditorConfigQualifiedKeyPartImpl(node); } else if (type == QUALIFIED_OPTION_KEY) { return new EditorConfigQualifiedOptionKeyImpl(node); } else if (type == QUESTION_PATTERN) { return new EditorConfigQuestionPatternImpl(node); } else if (type == RAW_OPTION_VALUE) { return new EditorConfigRawOptionValueImpl(node); } else if (type == ROOT_DECLARATION) { return new EditorConfigRootDeclarationImpl(node); } else if (type == ROOT_DECLARATION_KEY) { return new EditorConfigRootDeclarationKeyImpl(node); } else if (type == ROOT_DECLARATION_VALUE) { return new EditorConfigRootDeclarationValueImpl(node); } else if (type == SECTION) { return new EditorConfigSectionImpl(node); } throw new AssertionError("Unknown element type: " + type); }