public static void signalTruthValueClash(Proposition proposition) {
    if (!((proposition == Logic.TRUE_PROPOSITION) ||
        (proposition == Logic.FALSE_PROPOSITION))) {
      Proposition.assignTruthValue(proposition, Logic.INCONSISTENT_TRUTH_VALUE);
      if (((Boolean)(Logic.$RECORD_JUSTIFICATIONSp$.get())).booleanValue()) {
        { Proposition negatedProposition = Proposition.fastenDownOneProposition(Proposition.safelyInvertProposition(proposition), true);
          Cons antecedents = Stella.NIL;

          if ((negatedProposition.forwardJustifications() != null) &&
              (!negatedProposition.forwardJustifications().emptyP())) {
            antecedents = negatedProposition.forwardJustifications().theConsList;
          }
          else {
            { PrimitiveStrategy self000 = PrimitiveStrategy.newPrimitiveStrategy();

              self000.proposition = negatedProposition;
              self000.strategy = Logic.KWD_LOOKUP_ASSERTIONS;
              antecedents = Cons.cons(self000, antecedents);
            }
          }
          if ((proposition.forwardJustifications() != null) &&
              (!proposition.forwardJustifications().emptyP())) {
            antecedents = Cons.append(proposition.forwardJustifications().theConsList, antecedents);
          }
          else {
            { PrimitiveStrategy self001 = PrimitiveStrategy.newPrimitiveStrategy();

              self001.proposition = proposition;
              self001.strategy = Logic.KWD_LOOKUP_ASSERTIONS;
              antecedents = Cons.cons(self001, antecedents);
            }
          }
          Proposition.addForwardJustifications(proposition, Proposition.createClashJustification(proposition, antecedents, Logic.KWD_FORWARD));
          Proposition.addForwardJustifications(negatedProposition, Proposition.createClashJustification(negatedProposition, Cons.copyConsList(antecedents).reverse(), Logic.KWD_FORWARD));
        }
      }
    }
    { String message = null;
      Context exceptionContext = ((Context)(Stella.$CONTEXT$.get()));
      TruthValueClash exception = null;

      if (((Context)(Stella.$CONTEXT$.get())) == ((World)(KeyValueList.dynamicSlotValue(((Module)(Stella.$MODULE$.get())).dynamicSlots, Logic.SYM_LOGIC_META_INFERENCE_CACHE, null)))) {
        { String message000 = null;

          { Object old$PrintreadablyP$000 = Stella.$PRINTREADABLYp$.get();

            try {
              Native.setBooleanSpecial(Stella.$PRINTREADABLYp$, true);
              message000 = "Derived both TRUE and FALSE for the proposition " + "`" + Native.stringify(proposition) + "'" + "." + "\n" + "   Clash occurred in the meta inference cache for module " + "`" + Native.stringify(((Module)(Stella.$MODULE$.get()))) + "'" + ".";

            } finally {
              Stella.$PRINTREADABLYp$.set(old$PrintreadablyP$000);
            }
          }
          message = message000;
        }
      }
      else if (((Context)(Stella.$CONTEXT$.get())) == ((World)(KeyValueList.dynamicSlotValue(((Module)(Stella.$MODULE$.get())).dynamicSlots, Logic.SYM_LOGIC_TRUTH_MAINTAINED_INFERENCE_CACHE, null)))) {
        { String message001 = null;

          { Object old$PrintreadablyP$001 = Stella.$PRINTREADABLYp$.get();

            try {
              Native.setBooleanSpecial(Stella.$PRINTREADABLYp$, true);
              message001 = "Derived both TRUE and FALSE for the proposition " + "`" + Native.stringify(proposition) + "'" + "." + "\n" + "   Clash occurred in the default inference cache for module " + "`" + Native.stringify(((Module)(Stella.$MODULE$.get()))) + "'" + ".";

            } finally {
              Stella.$PRINTREADABLYp$.set(old$PrintreadablyP$001);
            }
          }
          message = message001;
        }
      }
      else if (((Context)(Stella.$CONTEXT$.get())) == ((Module)(Stella.$MODULE$.get()))) {
        { String message002 = null;

          { Object old$PrintreadablyP$002 = Stella.$PRINTREADABLYp$.get();

            try {
              Native.setBooleanSpecial(Stella.$PRINTREADABLYp$, true);
              message002 = "Derived both TRUE and FALSE for the proposition " + "`" + Native.stringify(proposition) + "'" + "." + "\n" + "   Clash occurred in module " + "`" + Native.stringify(((Module)(Stella.$MODULE$.get()))) + "'" + ".";

            } finally {
              Stella.$PRINTREADABLYp$.set(old$PrintreadablyP$002);
            }
          }
          message = message002;
        }
      }
      else {
        { String message003 = null;

          { Object old$PrintreadablyP$003 = Stella.$PRINTREADABLYp$.get();

            try {
              Native.setBooleanSpecial(Stella.$PRINTREADABLYp$, true);
              message003 = "Derived both TRUE and FALSE for the proposition " + "`" + Native.stringify(proposition) + "'" + "." + "\n" + "   Clash occurred in the world " + "`" + Native.stringify(((Context)(Stella.$CONTEXT$.get()))) + "'" + " in module " + "`" + Native.stringify(((Module)(Stella.$MODULE$.get()))) + "'" + ".";

            } finally {
              Stella.$PRINTREADABLYp$.set(old$PrintreadablyP$003);
            }
          }
          message = message003;
        }
      }
      exception = TruthValueClash.newTruthValueClash(message);
      exception.proposition = proposition;
      exception.context = exceptionContext;
      throw ((TruthValueClash)(exception.fillInStackTrace()));
    }
  }