public static Cons mostSpecificNamedDescriptions(Cons descriptions) {
    descriptions = Logic.mostSpecificCollections(descriptions);
    { boolean recomputeP = false;

      { LogicObject d = null;
        Cons iter000 = Cons.copyConsList(descriptions);

        for (;!(iter000 == Stella.NIL); iter000 = iter000.rest) {
          d = ((LogicObject)(iter000.value));
          if (!Description.namedDescriptionP(((Description)(d)))) {
            descriptions = descriptions.remove(d);
            { LogicObject renamed_Super = null;
              Iterator iter001 = LogicObject.allDirectSupercollections(d, false);

              while (iter001.nextP()) {
                renamed_Super = ((LogicObject)(iter001.value));
                descriptions = Cons.cons(renamed_Super, descriptions);
              }
            }
            recomputeP = true;
          }
        }
      }
      if (recomputeP) {
        Logic.mostSpecificNamedCollections(descriptions);
      }
      return (((Cons)(descriptions)));
    }
  }