private @NotNull PsiMethod createHashCodeMethod(@NotNull PsiClass psiClass,
                                                  @NotNull PsiAnnotation psiAnnotation) {
    final PsiManager psiManager = psiClass.getManager();

    return new LombokLightMethodBuilder(psiManager, HASH_CODE_METHOD_NAME)
      .withModifier(PsiModifier.PUBLIC)
      .withMethodReturnType(PsiTypes.intType())
      .withContainingClass(psiClass)
      .withNavigationElement(psiAnnotation)
      .withBodyText(m -> {
        PsiClass containingClass = m.getContainingClass();
        PsiAnnotation anno = (PsiAnnotation)m.getNavigationElement();
        return createHashcodeBlockString(containingClass, anno,
                                         EqualsAndHashCodeToStringHandler.filterMembers(containingClass, anno, true,
                                                                                        INCLUDE_ANNOTATION_METHOD, null,
                                                                                        EQUALS_AND_HASHCODE_INCLUDE,
                                                                                        EQUALS_AND_HASHCODE_EXCLUDE));
      });
  }
private @NotNull PsiMethod createHashCodeMethod(@NotNull PsiClass psiClass,
                                                  @NotNull PsiAnnotation psiAnnotation)