public static void evaluateOrProposition(Proposition self) {
    { Vector arguments = self.arguments;

      if (Proposition.falseP(self)) {
        { Proposition arg = null;
          Vector vector000 = arguments;
          int index000 = 0;
          int length000 = vector000.length();

          for (;index000 < length000; index000 = index000 + 1) {
            arg = ((Proposition)((vector000.theArray)[index000]));
            Proposition.assignTruthValue(arg, ((TruthValue)(Stella_Object.accessInContext(self.truthValue, self.homeContext, false))));
          }
        }
      }
      else if (Proposition.trueP(self)) {
        { Proposition onlyunboundarg = null;
          boolean toucheddefaultP = Proposition.defaultTrueP(self);

          { Proposition arg = null;
            Vector vector001 = arguments;
            int index001 = 0;
            int length001 = vector001.length();

            for (;index001 < length001; index001 = index001 + 1) {
              arg = ((Proposition)((vector001.theArray)[index001]));
              if (Proposition.trueP(arg)) {
                return;
              }
              else if (Proposition.unknownP(arg)) {
                if (onlyunboundarg != null) {
                  return;
                }
                onlyunboundarg = arg;
              }
              else if (Proposition.defaultFalseP(arg)) {
                toucheddefaultP = true;
              }
            }
          }
          if (onlyunboundarg != null) {
            Proposition.assignTruthValue(onlyunboundarg, Logic.defaultifyTruthValue(true, toucheddefaultP));
          }
          else {
            Proposition.assignTruthValue(self, Logic.defaultifyTruthValue(false, toucheddefaultP));
          }
        }
      }
      else {
        { boolean unboundargP = false;
          boolean toucheddefaultP = false;

          { Proposition arg = null;
            Vector vector002 = arguments;
            int index002 = 0;
            int length002 = vector002.length();

            for (;index002 < length002; index002 = index002 + 1) {
              arg = ((Proposition)((vector002.theArray)[index002]));
              if (Proposition.trueP(arg)) {
                if (Proposition.defaultTrueP(arg)) {
                  Proposition.assignTruthValue(self, Logic.DEFAULT_TRUE_TRUTH_VALUE);
                }
                else {
                  {
                    Proposition.assignTruthValue(self, Stella.TRUE_WRAPPER);
                    return;
                  }
                }
              }
              else if (Proposition.unknownP(arg)) {
                unboundargP = true;
              }
              else if (Proposition.defaultFalseP(arg)) {
                toucheddefaultP = true;
              }
            }
          }
          if ((!unboundargP) &&
              (!Proposition.defaultTrueP(self))) {
            Proposition.assignTruthValue(self, Logic.defaultifyTruthValue(false, toucheddefaultP));
          }
        }
      }
    }
  }