TreeElement (@NotNull StartMarker rootMarker) { IElementType type = rootMarker.getTokenType(); TreeElement rootNode = type instanceof ILazyParseableElementType ? createLazy((ILazyParseableElementType)type, null, getASTFactory()) : createComposite(rootMarker, getASTFactory()); if (myCharTable == null) { myCharTable = rootNode instanceof FileElement ? ((FileElement)rootNode).getCharTable() : new CharTableImpl(); } if (!(rootNode instanceof FileElement)) { rootNode.putUserData(CharTable.CHAR_TABLE_KEY, myCharTable); } return rootNode; }