public static boolean slotsNextP(AllPurposeIterator self) {
    { Slot slot = null;

      for (;;) {
        loop001 : for (;;) {
          { 
            slot = ((Slot)(self.iteratorConsList.value));
            if (!(slot != null)) {
              break loop001;
            }
          }
          self.iteratorConsList = self.iteratorConsList.rest;
          if ((self.iteratorFilterCode == null) ||
              ((Boolean)(edu.isi.stella.javalib.Native.funcall(self.iteratorFilterCode, null, new java.lang.Object [] {slot, self}))).booleanValue()) {
            self.value = slot;
            return (true);
          }
        }
        if (!self.iteratorNestedIterator.nextP()) {
          return (false);
        }
        self.iteratorConsList = ((Stella_Class)(self.iteratorNestedIterator.value)).classLocalSlots.theConsList;
      }
    }
  }