private static boolean hasNamedArgOrNoArgConstructor(@NotNull PsiClass psiClass) {
    if (psiClass.getConstructors().length == 0) return true;
    return CachedValuesManager.getCachedValue(psiClass, () -> {
      for (PsiMethod constructor : psiClass.getConstructors()) {
        final PsiParameter[] parameters = constructor.getParameterList().getParameters();
        if (parameters.length == 0) {
          return CachedValueProvider.Result.create(true, PsiModificationTracker.MODIFICATION_COUNT);
        }
        boolean annotated = true;
        for (PsiParameter parameter : parameters) {
          if (!AnnotationUtil.isAnnotated(parameter, JavaFxCommonNames.JAVAFX_BEANS_NAMED_ARG, 0)) {
            annotated = false;
            break;
          }
        }
        if (annotated) return CachedValueProvider.Result.create(true, PsiModificationTracker.MODIFICATION_COUNT);
      }
      return CachedValueProvider.Result.create(false, PsiModificationTracker.MODIFICATION_COUNT);
    });
  }
private static boolean hasNamedArgOrNoArgConstructor(@NotNull PsiClass psiClass)