boolean (@NotNull PsiClass psiClass, @NotNull PsiAnnotation psiAnnotation, @NotNull ProblemSink problemSink) { boolean result = validateAnnotationOnRightType(psiClass, psiAnnotation, problemSink); if (result) { final Project project = psiAnnotation.getProject(); final String builderClassName = getBuilderClassName(psiClass, psiAnnotation); final String buildMethodName = getBuildMethodName(psiAnnotation); final String builderMethodName = getBuilderMethodName(psiAnnotation); result = validateBuilderIdentifier(builderClassName, project, problemSink) && validateBuilderIdentifier(buildMethodName, project, problemSink) && (builderMethodName.isEmpty() || validateBuilderIdentifier(builderMethodName, project, problemSink)) && validateExistingBuilderClass(builderClassName, psiClass, problemSink); if (result) { final Collection<BuilderInfo> builderInfos = createBuilderInfos(psiClass, null).collect(Collectors.toList()); result = validateBuilderDefault(builderInfos, problemSink) && validateSingular(builderInfos, problemSink) && validateBuilderConstructor(psiClass, builderInfos, problemSink) && validateObtainViaAnnotations(builderInfos.stream(), problemSink); } } return result; }