/** @apilevel internal */
 private SimpleSet memberTypes_compute(String name) {
   SimpleSet set = localTypeDecls(name);
   if (!set.isEmpty()) return set;
   for (Iterator outerIter = superinterfacesIterator(); outerIter.hasNext(); ) {
     TypeDecl typeDecl = (TypeDecl) outerIter.next();
     for (Iterator iter = typeDecl.memberTypes(name).iterator(); iter.hasNext(); ) {
       TypeDecl decl = (TypeDecl) iter.next();
       if (!decl.isPrivate()) set = set.add(decl);
     }
   }
   return set;
 }
 /** @apilevel internal */
 private SimpleSet memberFields_compute(String name) {
   SimpleSet fields = localFields(name);
   if (!fields.isEmpty()) return fields;
   for (Iterator outerIter = superinterfacesIterator(); outerIter.hasNext(); ) {
     TypeDecl typeDecl = (TypeDecl) outerIter.next();
     for (Iterator iter = typeDecl.memberFields(name).iterator(); iter.hasNext(); ) {
       FieldDeclaration f = (FieldDeclaration) iter.next();
       if (f.accessibleFrom(this) && !f.isPrivate()) {
         fields = fields.add(f);
       }
     }
   }
   return fields;
 }
 /** @apilevel internal */
 private SimpleSet ancestorMethods_compute(String signature) {
   SimpleSet set = SimpleSet.emptySet;
   for (Iterator outerIter = superinterfacesIterator(); outerIter.hasNext(); ) {
     TypeDecl typeDecl = (TypeDecl) outerIter.next();
     for (Iterator iter = typeDecl.methodsSignature(signature).iterator(); iter.hasNext(); ) {
       MethodDecl m = (MethodDecl) iter.next();
       set = set.add(m);
     }
   }
   if (!superinterfacesIterator().hasNext()) {
     for (Iterator iter = typeObject().methodsSignature(signature).iterator(); iter.hasNext(); ) {
       MethodDecl m = (MethodDecl) iter.next();
       if (m.isPublic()) set = set.add(m);
     }
   }
   return set;
 }
 /**
  * @ast method
  * @aspect TypeHierarchyCheck
  * @declaredat /home/uoji/JastAddJ/Java1.4Frontend/TypeHierarchyCheck.jrag:312
  */
 public void nameCheck() {
   super.nameCheck();
   if (isCircular()) error("circular inheritance dependency in " + typeName());
   else {
     for (int i = 0; i < getNumSuperInterfaceId(); i++) {
       TypeDecl typeDecl = getSuperInterfaceId(i).type();
       if (typeDecl.isCircular()) error("circular inheritance dependency in " + typeName());
     }
   }
   for (Iterator iter = methodsSignatureMap().values().iterator(); iter.hasNext(); ) {
     SimpleSet set = (SimpleSet) iter.next();
     if (set.size() > 1) {
       Iterator i2 = set.iterator();
       MethodDecl m = (MethodDecl) i2.next();
       while (i2.hasNext()) {
         MethodDecl n = (MethodDecl) i2.next();
         if (!n.mayOverrideReturn(m) && !m.mayOverrideReturn(n))
           error(
               "multiply inherited methods with the same signature must have the same return type");
       }
     }
   }
 }