public static @Nullable @Nls String findSchemaAndGenerateDoc(PsiElement element,
                                                               @Nullable PsiElement originalElement,
                                                               final boolean preferShort,
                                                               @Nullable String forcedPropName) {
    if (element instanceof FakePsiElement) return null;
    element = isWhitespaceOrComment(originalElement) ? element : ObjectUtils.coalesce(originalElement, element);
    if (originalElement != null && hasFileOrPointerReferences(originalElement.getReferences())) return null;
    final PsiFile containingFile = element.getContainingFile();
    if (containingFile == null) return null;
    final JsonSchemaService service = JsonSchemaService.Impl.get(element.getProject());
    VirtualFile virtualFile = containingFile.getViewProvider().getVirtualFile();
    if (!service.isApplicableToFile(virtualFile)) return null;
    final JsonSchemaObject rootSchema = service.getSchemaObject(containingFile);
    if (rootSchema == null) return null;

    return generateDoc(element, rootSchema, preferShort, forcedPropName);
  }
public static @Nullable @Nls String findSchemaAndGenerateDoc(PsiElement element,
                                                               @Nullable PsiElement originalElement,
                                                               final boolean preferShort,
                                                               @Nullable String forcedPropName)