public static void addSubsumptionLink(Description subdescription, Description superdescription) {
    { Proposition impliesprop = Description.assertDescriptionImpliesDescription(subdescription, superdescription, false);

      KeyValueList.setDynamicSlotValue(impliesprop.dynamicSlots, Logic.SYM_LOGIC_SUBSUMPTION_LINKp, Stella.TRUE_WRAPPER, Stella.FALSE_WRAPPER);
      if (Stella_Object.traceKeywordP(Logic.KWD_CLASSIFIER_INFERENCES)) {
        { Object old$Indentcounter$000 = Logic.$INDENTCOUNTER$.get();
          Object old$PrintreadablyP$000 = Stella.$PRINTREADABLYp$.get();

          try {
            Native.setIntSpecial(Logic.$INDENTCOUNTER$, 4);
            Native.setBooleanSpecial(Stella.$PRINTREADABLYp$, true);
            if (Logic.$EMIT_THINKING_DOTSp$) {
              System.out.println();
            }
            {
              System.out.println("Recognized subsumption link:");
              System.out.println("    " + impliesprop);
            }
;

          } finally {
            Stella.$PRINTREADABLYp$.set(old$PrintreadablyP$000);
            Logic.$INDENTCOUNTER$.set(old$Indentcounter$000);
          }
        }
      }
    }
    LogicObject.allInferableDirectSubcollections(superdescription).push(subdescription);
    { NamedDescription p = null;
      Cons iter000 = Description.allNamedDirectSuperdescriptions(superdescription, false);

      for (;!(iter000 == Stella.NIL); iter000 = iter000.rest) {
        p = ((NamedDescription)(iter000.value));
        { List subcollections = LogicObject.allInferableDirectSubcollections(p);

          subcollections.theConsList = ((Cons)(Logic.mostGeneralCollections(subcollections.theConsList)));
        }
      }
    }
  }