@Contract("null -> null; !null -> !null")
  public static IElementType platformType(@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;
      });
    }
  }
@Contract("null -> null; !null -> !null")
  public static IElementType platformType(@Nullable org.intellij.markdown.IElementType markdownType)