public static Iterator allAncestorsOfParents(Cons supers) {
    { Cons collection = Cons.copyConsList(supers);

      { LogicObject s = null;
        Cons iter000 = supers;

        for (;!(iter000 == Stella.NIL); iter000 = iter000.rest) {
          s = ((LogicObject)(iter000.value));
          { LogicObject a = null;
            Iterator iter001 = LogicObject.allSupercollections(s);

            while (iter001.nextP()) {
              a = ((LogicObject)(iter001.value));
              if (!supers.memberP(a)) {
                collection = Cons.cons(a, collection);
              }
            }
          }
        }
      }
      return (collection.allocateIterator());
    }
  }