*/
  public Iterator publicSlots() {
    { Stella_Class self = this;

      { Cons publicslots = ((Cons)(Stella.NIL));
        AllPurposeIterator iterator = AllPurposeIterator.newAllPurposeIterator();

        { Slot slot = null;
          Iterator iter000 = self.classSlots();

          while (iter000.nextP()) {
            slot = ((Slot)(iter000.value));
            { boolean testValue000 = false;

              testValue000 = slot.slotPublicP;
              if (testValue000) {
                { boolean foundP000 = false;

                  { Slot ps = null;
                    Cons iter001 = publicslots;

                    loop001 : for (;!(iter001 == Stella.NIL); iter001 = iter001.rest) {
                      ps = ((Slot)(iter001.value));
                      if (ps.slotName == slot.slotName) {
                        foundP000 = true;
                        break loop001;
                      }
                    }
                  }
                  testValue000 = foundP000;
                }
                testValue000 = !testValue000;
              }
              if (testValue000) {
                publicslots = ((Cons)(Cons.cons(slot, publicslots)));
              }
            }
          }
        }
        iterator.iteratorNextCode = Native.find_java_method("edu.isi.stella.AllPurposeIterator", "iteratorConsListNextP", new java.lang.Class [] {Native.find_java_class("edu.isi.stella.AllPurposeIterator")});
        iterator.iteratorConsList = publicslots;
        iterator.firstIterationP = true;
        return (iterator);
      }
    }
  }