*/
  public static void evaluateProposition(Proposition self) {
    Proposition.evaluationStateSetter(self, Logic.KWD_EVALUATED);
    { Keyword testValue000 = self.kind;

      if (testValue000 == Logic.KWD_AND) {
        Proposition.evaluateAndProposition(self);
      }
      else if (testValue000 == Logic.KWD_OR) {
        Proposition.evaluateOrProposition(self);
      }
      else if (testValue000 == Logic.KWD_NOT) {
        Proposition.evaluateNotProposition(self);
      }
      else if (testValue000 == Logic.KWD_EQUIVALENT) {
        Proposition.evaluateEquivalentProposition(self);
      }
      else if (testValue000 == Logic.KWD_ISA) {
      }
      else if ((testValue000 == Logic.KWD_FUNCTION) ||
          (testValue000 == Logic.KWD_PREDICATE)) {
        { NamedDescription description = Logic.getDescription(((Surrogate)(self.operator)));
          java.lang.reflect.Method evaluator = NamedDescription.lookupEvaluator(description);

          if (evaluator != null) {
            edu.isi.stella.javalib.Native.funcall(evaluator, null, new java.lang.Object [] {self});
          }
          else if (self.kind == Logic.KWD_PREDICATE) {
            Proposition.evaluatePredicateProposition(self);
          }
          else {
            Proposition.evaluateFunctionProposition(self);
          }
        }
      }
      else {
      }
    }
  }