private boolean holdConstraints_68_Consumption(MemberMatrix mm){
  TClassifier currentType=getCurrentClassifier();
  MemberList<TMember> consumedMembers=new MemberList<>(2);
  for (  TMember m : mm.implemented()) {
    boolean consume=true;
    for (SourceAwareIterator iter=mm.allMembers(); iter.hasNext(); ) {
      TMember m_=iter.next();
      if (m_ == m && iter.isInterfaceMember()) {
        continue;
      }
      if ((m.isMethod() && !m_.isMethod()) || (!m.isMethod() && !(m_.isAccessor() || m_.isField()))) {
        if (iter.isInterfaceMember()) {
          messageIncompatibleMembersToImplement(mm.implemented());
          return false;
        }
 else         if (iter.isInheritedMember()) {
          messageIncompatibleInheritedMembersToImplement(m_,mm.implemented());
          return false;
        }
 else {
          return true;
        }
      }
      boolean accessorPair=TypeUtils.isAccessorPair(m,m_);
      if (!accessorPair) {
        if ((!m_.isAbstract() || m_.getContainingType() == currentType)) {
          consume=false;
          break;
        }
        if (AccessModifiers.less(m,m_)) {
          consume=false;
          break;
        }
        if (!m_.isSetter()) {
          if (!isSubType(m,m_)) {
            consume=false;
            break;
          }
        }
        if (m_.isSetter() || m_.isField()) {
          if (!isSubType(m_,m)) {
            consume=false;
            break;
          }
        }
      }
    }
    if (consume) {
      if (!consumedMembers.contains(m)) {
        consumedMembers.add(m);
      }
    }
  }
  mm.markConsumed(consumedMembers);
  return true;
}

private boolean holdConstraints_68_Consumption ( MemberMatrix mm ) { TClassifier currentType = getCurrentClassifier ( ) ; MemberList < TMember > consumedMembers = new MemberList < > ( 2 ) ; for ( TMember m : mm . implemented ( ) ) { boolean consume = true ; for ( SourceAwareIterator iter = mm . allMembers ( ) ; iter . hasNext ( ) ; ) { TMember m_ = iter . next ( ) ; if ( m_ == m && iter . isInterfaceMember ( ) ) { continue ; } if ( ( m . isMethod ( ) && ! m_ . isMethod ( ) ) || ( ! m . isMethod ( ) && ! ( m_ . isAccessor ( ) || m_ . isField ( ) ) ) ) { if ( iter . isInterfaceMember ( ) ) { messageIncompatibleMembersToImplement ( mm . implemented ( ) ) ; return false ; } else if ( iter . isInheritedMember ( ) ) { messageIncompatibleInheritedMembersToImplement ( m_ , mm . implemented ( ) ) ; return false ; } else { return true ; } } boolean accessorPair = TypeUtils . isAccessorPair ( m , m_ ) ; if ( ! accessorPair ) { if ( ( ! m_ . isAbstract ( ) || m_ . getContainingType ( ) == currentType ) ) { consume = false ; break ; } if ( AccessModifiers . less ( m , m_ ) ) { consume = false ; break ; } if ( ! m_ . isSetter ( ) ) { if ( ! isSubType ( m , m_ ) ) { consume = false ; break ; } } if ( m_ . isSetter ( ) || m_ . isField ( ) ) { if ( ! isSubType ( m_ , m ) ) { consume = false ; break ; } } } } if ( consume ) { if ( ! consumedMembers . contains ( m ) ) { consumedMembers . add ( m ) ; } } } mm . markConsumed ( consumedMembers ) ; return true ; }
constraints 68 : consumption of interface members returns false if an error occurred which is not solvable in current classifier ( i . e . , incompatible meta types ) .
