@Override
  public boolean isAvailable(@NotNull Project project, Editor editor, PsiFile file) {
    if (!myClass.isValid() || !canModify(myClass)) return false;
    PsiClass base = myClass.getSuperClass();
    if (base == null) return false;
    PsiSubstitutor substitutor = TypeConversionUtil.getSuperClassSubstitutor(base, myClass, PsiSubstitutor.EMPTY);
    for (PsiMethod baseConstructor: base.getConstructors()) {
      if (PsiUtil.isAccessible(baseConstructor, myClass, null)) {
        PsiMethod derived = GenerateMembersUtil.substituteGenericMethod(baseConstructor, substitutor, myClass);
        String className = myClass.getName();
        LOG.assertTrue(className != null);
        derived.setName(className);
        if (myClass.findMethodBySignature(derived, false) == null) {
          return true;
        }
      }
    }
    return false;
    
  }
@Override
  public boolean isAvailable(@NotNull Project project, Editor editor, PsiFile file)