public static boolean processClassMixins(@NotNull final PsiType qualifierType,
                                           @NotNull PsiScopeProcessor processor,
                                           @NotNull final PsiElement place,
                                           @NotNull ResolveState state) {
    if (isInAnnotation(place)) return true;

    final PsiClass aClass = PsiUtil.resolveClassInClassTypeOnly(qualifierType);
    if (aClass == null) return true;
    if (aClass.getLanguage() != GroovyLanguage.INSTANCE) return true;

    final PsiModifierList modifierList = aClass.getModifierList();
    if (modifierList == null) return true;

    List<PsiClass> mixins = new ArrayList<>();
    for (PsiAnnotation annotation : getAllMixins(modifierList)) {
      final PsiAnnotationMemberValue value = annotation.findAttributeValue("value");

      if (value instanceof GrAnnotationArrayInitializer) {
        final GrAnnotationMemberValue[] initializers = ((GrAnnotationArrayInitializer)value).getInitializers();
        for (GrAnnotationMemberValue initializer : initializers) {
          addMixin(initializer, mixins);
        }
      }
      else if (value instanceof GrExpression) {
        addMixin((GrExpression)value, mixins);
      }
    }

    final MixinProcessor delegate = new MixinProcessor(processor, qualifierType, place);
    for (PsiClass mixin : mixins) {
      if (!mixin.processDeclarations(delegate, state, null, place)) {
        return false;
      }
    }

    return true;
  }
public static boolean processClassMixins(@NotNull final PsiType qualifierType,
                                           @NotNull PsiScopeProcessor processor,
                                           @NotNull final PsiElement place,
                                           @NotNull ResolveState state)