IElementType (@Nullable org.intellij.markdown.IElementType markdownType) { if (markdownType == null) { return null; } if (markdownToPlatformTypeMap.containsKey(markdownType)) { return markdownToPlatformTypeMap.get(markdownType); } synchronized (platformToMarkdownTypeMap) { return markdownToPlatformTypeMap.computeIfAbsent(markdownType, type -> { final IElementType result; if (type == MarkdownElementTypes.PARAGRAPH || type == MarkdownTokenTypes.ATX_CONTENT || type == MarkdownTokenTypes.SETEXT_CONTENT || type == GFMTokenTypes.CELL) { result = new MarkdownLazyElementType(type.toString()); } else if (isHeaderElementType(type)) { result = new MarkdownHeaderStubElementType(type.toString()); } else { result = new MarkdownElementType(type.toString()); } platformToMarkdownTypeMap.put(result, type); return result; }); } }