@NotNull
protected LombokLightClassBuilder createBuilderClass(@NotNull PsiClass psiClass, @NotNull PsiTypeParameterListOwner psiTypeParameterListOwner, @NotNull String builderClassName, @NotNull PsiAnnotation psiAnnotation) {
final String builderClassQualifiedName = psiClass.getQualifiedName() + "." + builderClassName;
final Project project = psiClass.getProject();
LombokLightClassBuilder innerClass = new LombokLightClassBuilder(project, builderClassName, builderClassQualifiedName)
.withContainingClass(psiClass)
.withNavigationElement(psiAnnotation)
.withParameterTypes(psiTypeParameterListOwner.getTypeParameterList())
.withModifier(PsiModifier.PUBLIC)
.withModifier(PsiModifier.STATIC);
innerClass.withConstructors(createConstructors(innerClass, psiAnnotation));
return innerClass;
}