public static boolean allNamedDescriptionsNextP(AllPurposeIterator self) {
    { int cursor = self.iteratorInteger;
      Surrogate surrogate = null;
      Stella_Object surrogatevalue = null;
      NamedDescription description = null;

      while (cursor < self.iteratorSecondInteger) {
        surrogate = ((Surrogate)((Stella.$SURROGATE_ARRAY$.theArray)[cursor]));
        if (surrogate != null) {
          surrogatevalue = surrogate.surrogateValue;
          if (surrogatevalue != null) {
            if (!(AllPurposeIterator.selectedMetaObjectP(self, surrogatevalue.homeModule()))) {
              surrogatevalue = null;
            }
          }
        }
        description = null;
        if (surrogatevalue != null) {
          { Surrogate testValue000 = Stella_Object.safePrimaryType(surrogatevalue);

            if (Surrogate.subtypeOfClassP(testValue000)) {
              { Stella_Class surrogatevalue000 = ((Stella_Class)(surrogatevalue));

                if (((Stella_Class)(surrogatevalue000)).classType == surrogate) {
                  description = ((NamedDescription)(KeyValueList.dynamicSlotValue(surrogatevalue000.dynamicSlots, Logic.SYM_LOGIC_DESCRIPTION, null)));
                }
              }
            }
            else if (Surrogate.subtypeOfP(testValue000, Logic.SGT_STELLA_RELATION)) {
              { Relation surrogatevalue000 = ((Relation)(surrogatevalue));

                description = ((NamedDescription)(KeyValueList.dynamicSlotValue(surrogatevalue000.dynamicSlots, Logic.SYM_LOGIC_DESCRIPTION, null)));
              }
            }
            else if (Surrogate.subtypeOfP(testValue000, Logic.SGT_LOGIC_NAMED_DESCRIPTION)) {
              { NamedDescription surrogatevalue000 = ((NamedDescription)(surrogatevalue));

                description = surrogatevalue000;
              }
            }
            else {
            }
          }
        }
        if (description != null) {
          self.value = description;
          self.iteratorInteger = cursor + 1;
          return (true);
        }
        cursor = cursor + 1;
      }
      return (false);
    }
  }