void (@NotNull PsiClass psiClass, @NotNull PsiAnnotation psiAnnotation, @NotNull List<? super PsiElement> target, @Nullable String nameHint) { SuperBuilderHandler builderHandler = getBuilderHandler(); final String builderClassName = builderHandler.getBuilderClassName(psiClass); Optional<PsiClass> builderClass = PsiClassUtil.getInnerClassInternByName(psiClass, builderClassName); if (builderClass.isEmpty()) { final PsiClass createdBuilderClass = builderHandler.createBuilderBaseClass(psiClass, psiAnnotation); target.add(createdBuilderClass); builderClass = Optional.of(createdBuilderClass); } // skip generation of BuilderImpl class, if class is abstract if (!psiClass.hasModifierProperty(PsiModifier.ABSTRACT)) { final String builderImplClassName = builderHandler.getBuilderImplClassName(psiClass); if (PsiClassUtil.getInnerClassInternByName(psiClass, builderImplClassName).isEmpty()) { target.add(builderHandler.createBuilderImplClass(psiClass, builderClass.get(), psiAnnotation)); } } }