public static void evaluateNewProposition(Proposition self) {
    if (Logic.descriptionModeP() ||
        ((BooleanWrapper)(KeyValueList.dynamicSlotValue(self.dynamicSlots, Logic.SYM_LOGIC_DESCRIPTIVEp, Stella.FALSE_WRAPPER))).wrapperValue) {
      return;
    }
    { World world = Logic.lookupConstraintPropagationWorld(((Context)(Stella.$CONTEXT$.get())));

      if (world != null) {
        { Object old$Context$000 = Stella.$CONTEXT$.get();

          try {
            Native.setSpecial(Stella.$CONTEXT$, world);
            Proposition.evaluateProposition(self);
            if (!Proposition.unknownP(self)) {
              if ((Stella.$TRACED_KEYWORDS$ != null) &&
                  Stella.$TRACED_KEYWORDS$.membP(Logic.KWD_PROPAGATE)) {
                System.out.println("evaluate-new-proposition:  " + self);
              }
              { Proposition prop = null;
                Iterator iter000 = self.dependentPropositions.allocateIterator();

                while (iter000.nextP()) {
                  prop = ((Proposition)(iter000.value));
                  Proposition.evaluateProposition(prop);
                }
              }
            }

          } finally {
            Stella.$CONTEXT$.set(old$Context$000);
          }
        }
      }
    }
  }