private void constraints_69_Implementation(MemberMatrix mm,Collection<TMember> membersMissingOverrideAnnotation){
  String missingAccessor=null;
  List<TMember> missingAccessors=new MemberList<>();
  List<TMember> conflictingMembers=new MemberList<>();
  TClassifier currentClassifier=getCurrentClassifier();
  Set<TMember> ownedErroneousMembers=null;
  for (  TMember m : mm.implemented()) {
    if (mm.isConsumed(m)) {
      continue;
    }
    boolean bExistCompatibleMember=false;
    boolean bExistCompatibleGetter=false;
    boolean bExistCompatibleSetter=false;
    for (SourceAwareIterator iter=mm.ownedConsumedInheritedImplemented(); iter.hasNext(); ) {
      TMember m_=iter.next();
      if (ownedErroneousMembers != null && !iter.isOwnedMember()) {
        break;
      }
      if (m_ == m || ownedErroneousMembers != null && ownedErroneousMembers.contains(m_)) {
        if (iter.isInheritedMember()) {
          bExistCompatibleMember=true;
        }
        continue;
      }
      OverrideCompatibilityResult compatibility=checkAccessibilityAndOverrideCompatibility(RedefinitionType.implemented,m_,m,!iter.isActualMember(),mm);
      if (compatibility == OverrideCompatibilityResult.ACCESSOR_PAIR) {
        continue;
      }
 else       if (compatibility == OverrideCompatibilityResult.ERROR) {
        if (iter.isOwnedMember()) {
          if (ownedErroneousMembers == null) {
            ownedErroneousMembers=new HashSet<>();
          }
          ownedErroneousMembers.add(m_);
        }
 else         if (iter.isActualMember()) {
          return;
        }
 else {
          break;
        }
      }
 else       if (iter.isActualMember()) {
        if (m.isField()) {
          if (m_.isGetter()) {
            bExistCompatibleGetter=true;
          }
 else           if (m_.isSetter()) {
            bExistCompatibleSetter=true;
          }
 else {
            bExistCompatibleMember=true;
          }
        }
 else {
          bExistCompatibleMember=true;
        }
        if (!m_.isDeclaredOverride() && m_.getContainingType() == currentClassifier) {
          membersMissingOverrideAnnotation.add(m_);
        }
      }
    }
    if (bExistCompatibleGetter != bExistCompatibleSetter) {
      missingAccessor=bExistCompatibleGetter ? "setter" : "getter";
      missingAccessors.add(m);
    }
 else     if (!bExistCompatibleMember && !(bExistCompatibleGetter && bExistCompatibleSetter)) {
      conflictingMembers.add(m);
    }
  }
  if (ownedErroneousMembers != null) {
    return;
  }
  if (!conflictingMembers.isEmpty()) {
    messageConflictingMixins(conflictingMembers);
  }
 else   if (!missingAccessors.isEmpty()) {
    messageMissingAccessor(missingAccessor,missingAccessors);
  }
}

private void constraints_69_Implementation ( MemberMatrix mm , Collection < TMember > membersMissingOverrideAnnotation ) { String missingAccessor = null ; List < TMember > missingAccessors = new MemberList < > ( ) ; List < TMember > conflictingMembers = new MemberList < > ( ) ; TClassifier currentClassifier = getCurrentClassifier ( ) ; Set < TMember > ownedErroneousMembers = null ; for ( TMember m : mm . implemented ( ) ) { if ( mm . isConsumed ( m ) ) { continue ; } boolean bExistCompatibleMember = false ; boolean bExistCompatibleGetter = false ; boolean bExistCompatibleSetter = false ; for ( SourceAwareIterator iter = mm . ownedConsumedInheritedImplemented ( ) ; iter . hasNext ( ) ; ) { TMember m_ = iter . next ( ) ; if ( ownedErroneousMembers != null && ! iter . isOwnedMember ( ) ) { break ; } if ( m_ == m || ownedErroneousMembers != null && ownedErroneousMembers . contains ( m_ ) ) { if ( iter . isInheritedMember ( ) ) { bExistCompatibleMember = true ; } continue ; } OverrideCompatibilityResult compatibility = checkAccessibilityAndOverrideCompatibility ( RedefinitionType . implemented , m_ , m , ! iter . isActualMember ( ) , mm ) ; if ( compatibility == OverrideCompatibilityResult . ACCESSOR_PAIR ) { continue ; } else if ( compatibility == OverrideCompatibilityResult . ERROR ) { if ( iter . isOwnedMember ( ) ) { if ( ownedErroneousMembers == null ) { ownedErroneousMembers = new HashSet < > ( ) ; } ownedErroneousMembers . add ( m_ ) ; } else if ( iter . isActualMember ( ) ) { return ; } else { break ; } } else if ( iter . isActualMember ( ) ) { if ( m . isField ( ) ) { if ( m_ . isGetter ( ) ) { bExistCompatibleGetter = true ; } else if ( m_ . isSetter ( ) ) { bExistCompatibleSetter = true ; } else { bExistCompatibleMember = true ; } } else { bExistCompatibleMember = true ; } if ( ! m_ . isDeclaredOverride ( ) && m_ . getContainingType ( ) == currentClassifier ) { membersMissingOverrideAnnotation . add ( m_ ) ; } } } if ( bExistCompatibleGetter != bExistCompatibleSetter ) { missingAccessor = bExistCompatibleGetter ? "setter" : "getter" ; missingAccessors . add ( m ) ; } else if ( ! bExistCompatibleMember && ! ( bExistCompatibleGetter && bExistCompatibleSetter ) ) { conflictingMembers . add ( m ) ; } } if ( ownedErroneousMembers != null ) { return ; } if ( ! conflictingMembers . isEmpty ( ) ) { messageConflictingMixins ( conflictingMembers ) ; } else if ( ! missingAccessors . isEmpty ( ) ) { messageMissingAccessor ( missingAccessor , missingAccessors ) ; } }
constraints 69 : implementation of interface members this method doesn ' t add issues for missing override annotations but adds the missing - annotation - members to the given collection .
