public static Description getInferableComplementDescription(Description self) {
    { Description complement = ((Description)(KeyValueList.dynamicSlotValue(self.dynamicSlots, Logic.SYM_LOGIC_COMPLEMENT_DESCRIPTION, null)));

      if (Logic.$LAZY_SATELLITE_RULESp$) {
        if ((complement == null) &&
            BooleanWrapper.coerceWrappedBooleanToBoolean(self.deferredContrapositivesP())) {
          complement = NamedDescription.getComplementOfGoalDescription(((NamedDescription)(self)));
        }
        if (BooleanWrapper.coerceWrappedBooleanToBoolean(self.deferredContrapositivesP())) {
          Description.deriveDeferredSatelliteRules(self);
          KeyValueList.setDynamicSlotValue(self.dynamicSlots, Logic.SYM_LOGIC_DEFERRED_CONTRAPOSITIVESp, null, null);
        }
      }
      return (complement);
    }
  }