public static void evaporateVirgin(Description self) {
    { List parentimplies = List.newList();
      List childimplies = List.newList();
      Description parent = null;
      Description child = null;
      Proposition bridgeprop = null;

      { Proposition p = null;
        Iterator iter000 = Logic.unfilteredDependentPropositions(self, null).allocateIterator();

        while (iter000.nextP()) {
          p = ((Proposition)(iter000.value));
          if ((p.arguments.theArray)[0] == self) {
            parentimplies.push(p);
          }
          else {
            childimplies.push(p);
          }
        }
      }
      { Proposition cp = null;
        Cons iter001 = childimplies.theConsList;

        for (;!(iter001 == Stella.NIL); iter001 = iter001.rest) {
          cp = ((Proposition)(iter001.value));
          child = ((Description)((cp.arguments.theArray)[0]));
          { Proposition pp = null;
            Cons iter002 = parentimplies.theConsList;

            for (;!(iter002 == Stella.NIL); iter002 = iter002.rest) {
              pp = ((Proposition)(iter002.value));
              parent = ((Description)((pp.arguments.theArray)[1]));
              bridgeprop = Description.assertDescriptionImpliesDescription(child, parent, true);
              if (((BooleanWrapper)(KeyValueList.dynamicSlotValue(cp.dynamicSlots, Logic.SYM_LOGIC_SUBRELATION_LINKp, Stella.FALSE_WRAPPER))).wrapperValue &&
                  ((BooleanWrapper)(KeyValueList.dynamicSlotValue(pp.dynamicSlots, Logic.SYM_LOGIC_SUBRELATION_LINKp, Stella.FALSE_WRAPPER))).wrapperValue) {
                KeyValueList.setDynamicSlotValue(bridgeprop.dynamicSlots, Logic.SYM_LOGIC_SUBRELATION_LINKp, Stella.TRUE_WRAPPER, Stella.FALSE_WRAPPER);
              }
              Proposition.updatePropositionTruthValue(bridgeprop, Logic.KWD_ASSERT_TRUE);
            }
          }
        }
      }
      { Proposition p = null;
        Iterator iter003 = Logic.unfilteredDependentPropositions(self, null).allocateIterator();

        while (iter003.nextP()) {
          p = ((Proposition)(iter003.value));
          Proposition.destroyProposition(p);
        }
      }
    }
  }