public static boolean allSpecializingDependentPropositionsNextP(AllPurposeIterator self) {
    { Iterator iterator = self.iteratorNestedIterator;
      NamedDescription relation = ((NamedDescription)(self.iteratorConsList.value));

      for (;;) {
        while (iterator.nextP()) {
          { Proposition proposition = ((Proposition)(iterator.value));

            if (((Surrogate)(proposition.operator)) == relation.surrogateValueInverse) {
              self.value = proposition;
              return (true);
            }
          }
        }
        self.iteratorConsList = self.iteratorConsList.rest;
        relation = ((NamedDescription)(self.iteratorConsList.value));
        if (relation == null) {
          self.value = null;
          return (false);
        }
        iterator = Logic.unfilteredDependentPropositions(self.iteratorObject, relation.surrogateValueInverse).allocateIterator();
        self.iteratorNestedIterator = iterator;
      }
    }
  }