public static void startupJustifications() {
    { Object old$Module$000 = Stella.$MODULE$.get();
      Object old$Context$000 = Stella.$CONTEXT$.get();

      try {
        Native.setSpecial(Stella.$MODULE$, Stella.getStellaModule("/LOGIC", Stella.$STARTUP_TIME_PHASE$ > 1));
        Native.setSpecial(Stella.$CONTEXT$, ((Module)(Stella.$MODULE$.get())));
        if (Stella.currentStartupTimePhaseP(2)) {
          _StartupJustifications.helpStartupJustifications1();
        }
        if (Stella.currentStartupTimePhaseP(4)) {
          Logic.$RECORD_JUSTIFICATIONSp$.setDefaultValue(new Boolean(false));
        }
        if (Stella.currentStartupTimePhaseP(5)) {
          { Stella_Class renamed_Class = Stella.defineClassFromStringifiedSource("JUSTIFICATION", "(DEFCLASS JUSTIFICATION (STANDARD-OBJECT) :SLOTS ((INFERENCE-RULE :TYPE KEYWORD :DOCUMENTATION \"Keyword describing the inference rule used to conclude the\nproposition of this justification.\") (PROPOSITION :TYPE PROPOSITION :DOCUMENTATION \"The proposition supported by this justification.\") (ANTECEDENTS :TYPE (CONS OF JUSTIFICATION) :INITIALLY NIL :DOCUMENTATION \"Antecedents justifications of this justification.\") (PATTERN-JUSTIFICATION :TYPE JUSTIFICATION :DOCUMENTATION \"Backpointer to the closest parent :PATTERN justification containing\nthe variable substitutions from the associated pattern control frame.  If this\nis a :PATTERN justification, the slot points to the parent pattern.\") (SUBSTITUTION :TYPE (ENTITY-MAPPING OF PATTERN-VARIABLE OBJECT) :DOCUMENTATION \"List of variable bindings recorded for :PATTERN justifications.\") (REVERSE-POLARITY? :TYPE BOOLEAN :DOCUMENTATION \"True if proposition was derived in reverse polarity.\") (TRUTH-VALUE :TYPE TRUTH-VALUE :DOCUMENTATION \"Truth value of the derived proposition.\") (POSITIVE-SCORE :TYPE PARTIAL-MATCH-SCORE :DOCUMENTATION \"Positive partial match score of the derived proposition.\") (NEGATIVE-SCORE :TYPE PARTIAL-MATCH-SCORE :DOCUMENTATION \"Negative partial match score of the derived proposition.\")) :METHODS ((INFERENCE-STRATEGY ((SELF JUSTIFICATION)) :TYPE KEYWORD (RETURN NULL)) (INFERENCE-DIRECTION ((SELF JUSTIFICATION)) :TYPE KEYWORD (RETURN :BACKWARD))))");

            renamed_Class.classConstructorCode = Native.find_java_method("edu.isi.powerloom.logic.Justification", "newJustification", new java.lang.Class [] {});
            renamed_Class.classSlotAccessorCode = Native.find_java_method("edu.isi.powerloom.logic.Justification", "accessJustificationSlotValue", new java.lang.Class [] {Native.find_java_class("edu.isi.powerloom.logic.Justification"), Native.find_java_class("edu.isi.stella.Symbol"), Native.find_java_class("edu.isi.stella.Stella_Object"), java.lang.Boolean.TYPE});
          }
          { Stella_Class renamed_Class = Stella.defineClassFromStringifiedSource("PRIMITIVE-STRATEGY", "(DEFCLASS PRIMITIVE-STRATEGY (JUSTIFICATION) :SLOTS ((INFERENCE-RULE :TYPE KEYWORD :INITIALLY :PRIMITIVE-STRATEGY) (STRATEGY :TYPE KEYWORD)) :METHODS ((INFERENCE-STRATEGY ((SELF PRIMITIVE-STRATEGY)) :TYPE KEYWORD (RETURN (STRATEGY SELF)))))");

            renamed_Class.classConstructorCode = Native.find_java_method("edu.isi.powerloom.logic.PrimitiveStrategy", "newPrimitiveStrategy", new java.lang.Class [] {});
            renamed_Class.classSlotAccessorCode = Native.find_java_method("edu.isi.powerloom.logic.PrimitiveStrategy", "accessPrimitiveStrategySlotValue", new java.lang.Class [] {Native.find_java_class("edu.isi.powerloom.logic.PrimitiveStrategy"), Native.find_java_class("edu.isi.stella.Symbol"), Native.find_java_class("edu.isi.stella.Stella_Object"), java.lang.Boolean.TYPE});
          }
          { Stella_Class renamed_Class = Stella.defineClassFromStringifiedSource("FORWARD-GOAL-RECORD", "(DEFCLASS FORWARD-GOAL-RECORD (STANDARD-OBJECT) :SLOTS ((FORWARD-GOAL :TYPE PROPOSITION) (FORWARD-RULE :TYPE PROPOSITION)))");

            renamed_Class.classConstructorCode = Native.find_java_method("edu.isi.powerloom.logic.ForwardGoalRecord", "newForwardGoalRecord", new java.lang.Class [] {});
            renamed_Class.classSlotAccessorCode = Native.find_java_method("edu.isi.powerloom.logic.ForwardGoalRecord", "accessForwardGoalRecordSlotValue", new java.lang.Class [] {Native.find_java_class("edu.isi.powerloom.logic.ForwardGoalRecord"), Native.find_java_class("edu.isi.stella.Symbol"), Native.find_java_class("edu.isi.stella.Stella_Object"), java.lang.Boolean.TYPE});
          }
          { Stella_Class renamed_Class = Stella.defineClassFromStringifiedSource("FORWARD-JUSTIFICATION", "(DEFCLASS FORWARD-JUSTIFICATION (JUSTIFICATION) :METHODS ((INFERENCE-DIRECTION ((SELF FORWARD-JUSTIFICATION)) :TYPE KEYWORD (RETURN :FORWARD))))");

            renamed_Class.classConstructorCode = Native.find_java_method("edu.isi.powerloom.logic.ForwardJustification", "newForwardJustification", new java.lang.Class [] {});
          }
          { Stella_Class renamed_Class = Stella.defineClassFromStringifiedSource("CLASH-JUSTIFICATION", "(DEFCLASS CLASH-JUSTIFICATION (JUSTIFICATION) :SLOTS ((DIRECTION :TYPE KEYWORD :INITIALLY :FORWARD :DOCUMENTATION \"The inference direction for this inference.\")) :METHODS ((INFERENCE-DIRECTION ((SELF CLASH-JUSTIFICATION)) :TYPE KEYWORD (RETURN (DIRECTION SELF)))))");

            renamed_Class.classConstructorCode = Native.find_java_method("edu.isi.powerloom.logic.ClashJustification", "newClashJustification", new java.lang.Class [] {});
            renamed_Class.classSlotAccessorCode = Native.find_java_method("edu.isi.powerloom.logic.ClashJustification", "accessClashJustificationSlotValue", new java.lang.Class [] {Native.find_java_class("edu.isi.powerloom.logic.ClashJustification"), Native.find_java_class("edu.isi.stella.Symbol"), Native.find_java_class("edu.isi.stella.Stella_Object"), java.lang.Boolean.TYPE});
          }
        }
        if (Stella.currentStartupTimePhaseP(6)) {
          Stella.finalizeClasses();
        }
        if (Stella.currentStartupTimePhaseP(7)) {
          _StartupJustifications.helpStartupJustifications2();
        }
        if (Stella.currentStartupTimePhaseP(8)) {
          Stella.finalizeSlots();
          Stella.cleanupUnfinalizedClasses();
        }
        if (Stella.currentStartupTimePhaseP(9)) {
          Stella_Object.inModule(((StringWrapper)(Stella_Object.copyConsTree(StringWrapper.wrapString("LOGIC")))));
          Stella.defineStellaGlobalVariableFromStringifiedSource("(DEFSPECIAL *RECORD-JUSTIFICATIONS?* BOOLEAN FALSE :DOCUMENTATION \"If TRUE every query records justifications to enable\nthe explanation of concluded results.\")");
          Logic.defineExplanationPhrase(Logic.KWD_SCAN_COLLECTION, Logic.KWD_TECHNICAL, "by explicit assertion", Stella.NIL);
          Logic.defineExplanationPhrase(Logic.KWD_SCAN_PROPOSITIONS, Logic.KWD_TECHNICAL, "by explicit assertion", Stella.NIL);
          Logic.defineExplanationPhrase(Logic.KWD_LOOKUP_ASSERTIONS, Logic.KWD_TECHNICAL, "by explicit assertion", Stella.NIL);
          Logic.defineExplanationPhrase(Logic.KWD_SCAN_COLLECTION, Logic.KWD_LAY, "because the system was told this fact", Stella.NIL);
          Logic.defineExplanationPhrase(Logic.KWD_SCAN_PROPOSITIONS, Logic.KWD_LAY, "because the system was told this fact", Stella.NIL);
          Logic.defineExplanationPhrase(Logic.KWD_LOOKUP_ASSERTIONS, Logic.KWD_LAY, "because the system was told this fact", Stella.NIL);
          Logic.defineExplanationPhrase(Logic.KWD_SPECIALIST, Logic.KWD_TECHNICAL, "because it was proven by an inference specialist", Stella.NIL);
          Logic.defineExplanationPhrase(Logic.KWD_SPECIALIST, Logic.KWD_LAY, "because of a specialized reasoning procedure", Stella.NIL);
          Logic.defineExplanationPhrase(Logic.KWD_COMPUTED_PREDICATE, Logic.KWD_TECHNICAL, "because of a computation", Stella.NIL);
          Logic.defineExplanationPhrase(Logic.KWD_COMPUTED_PREDICATE, Logic.KWD_LAY, "because of a computation", Stella.NIL);
          Logic.defineExplanationPhrase(Logic.KWD_GOAL_COMPLEMENT, Logic.KWD_TECHNICAL, "because its argument was proven false", Stella.NIL);
          Logic.defineExplanationPhrase(Logic.KWD_GOAL_COMPLEMENT, Logic.KWD_LAY, "because its argument is false", Stella.NIL);
          Logic.defineExplanationPhrase(Logic.KWD_EQUIVALENCE, Logic.KWD_TECHNICAL, "from equivalence", Stella.NIL);
          Logic.defineExplanationPhrase(Logic.KWD_EQUIVALENCE, Logic.KWD_LAY, "because its arguments are equivalent", Stella.NIL);
          Logic.defineExplanationPhrase(Logic.KWD_SUBSUMPTION_TEST, Logic.KWD_TECHNICAL, "because of a successful subsumption test", Stella.NIL);
          Logic.defineExplanationPhrase(Logic.KWD_SUBSUMPTION_TEST, Logic.KWD_LAY, "because of a successful subsumption test", Stella.NIL);
          Logic.defineExplanationPhrase(Logic.KWD_SUBSUMPTION_REASONING, Logic.KWD_TECHNICAL, "because a subsumed relation is true", Stella.NIL);
          Logic.defineExplanationPhrase(Logic.KWD_SUBSUMPTION_REASONING, Logic.KWD_LAY, "because of it is true of a relation that is a subset of the one we want", Stella.NIL);
          Logic.defineExplanationPhrase(Logic.KWD_FAILURE, Logic.KWD_TECHNICAL, "could not be proven", Stella.NIL);
          Logic.defineExplanationPhrase(Logic.KWD_FAILURE, Logic.KWD_LAY, "could not be proven", Stella.NIL);
          Logic.defineExplanationPhrase(Logic.KWD_MODUS_PONENS, Logic.KWD_TECHNICAL, "by Modus Ponens", Stella.NIL);
          Logic.defineExplanationPhrase(Logic.KWD_MODUS_PONENS, Logic.KWD_LAY, "because an if-then rule applies", Stella.NIL);
          Logic.defineExplanationPhrase(Logic.KWD_MODUS_TOLLENS, Logic.KWD_TECHNICAL, "by Modus Tollens", Stella.NIL);
          Logic.defineExplanationPhrase(Logic.KWD_MODUS_TOLLENS, Logic.KWD_TECHNICAL, "(p => q, ~q |= ~p)", Cons.cons(Logic.KWD_AMPLIFICATION, Stella.NIL));
          Logic.defineExplanationPhrase(Logic.KWD_MODUS_TOLLENS, Logic.KWD_LAY, "because an if-then rule was used backwards", Stella.NIL);
          Logic.defineExplanationPhrase(Logic.KWD_MODUS_TOLLENS, Logic.KWD_LAY, "(if P then Q with Q false allows us to conclude P)", Cons.cons(Logic.KWD_AMPLIFICATION, Stella.NIL));
          Logic.defineExplanationPhrase(Logic.KWD_AND_INTRODUCTION, Logic.KWD_TECHNICAL, "by And-Introduction", Stella.NIL);
          Logic.defineExplanationPhrase(Logic.KWD_AND_INTRODUCTION, Logic.KWD_LAY, "because all parts of an AND expression were true", Stella.NIL);
          Logic.defineExplanationPhrase(Logic.KWD_AND_INTRODUCTION, Logic.KWD_LAY, "because parts of an AND expression were true", Cons.cons(Logic.KWD_PARTIAL, Stella.NIL));
          Logic.defineExplanationPhrase(Logic.KWD_AND_INTRODUCTION, Logic.KWD_TECHNICAL, "by Not-Or-Introduction", Cons.cons(Logic.KWD_REVERSE, Stella.NIL));
          Logic.defineExplanationPhrase(Logic.KWD_AND_INTRODUCTION, Logic.KWD_LAY, "because all parts of an OR expression were false", Cons.cons(Logic.KWD_REVERSE, Stella.NIL));
          Logic.defineExplanationPhrase(Logic.KWD_AND_INTRODUCTION, Logic.KWD_TECHNICAL, "(~p, ~q |= ~(p v q))", Cons.cons(Logic.KWD_REVERSE, Cons.cons(Logic.KWD_AMPLIFICATION, Stella.NIL)));
          Logic.defineExplanationPhrase(Logic.KWD_AND_INTRODUCTION, Logic.KWD_LAY, "(therefore the OR is also false)", Cons.cons(Logic.KWD_REVERSE, Cons.cons(Logic.KWD_AMPLIFICATION, Stella.NIL)));
          Logic.defineExplanationPhrase(Logic.KWD_OR_INTRODUCTION, Logic.KWD_TECHNICAL, "by Or-Introduction", Stella.NIL);
          Logic.defineExplanationPhrase(Logic.KWD_OR_INTRODUCTION, Logic.KWD_LAY, "because at least one part of an OR expression was true", Stella.NIL);
          Logic.defineExplanationPhrase(Logic.KWD_OR_INTRODUCTION, Logic.KWD_TECHNICAL, "by Not-And-Introduction", Cons.cons(Logic.KWD_REVERSE, Stella.NIL));
          Logic.defineExplanationPhrase(Logic.KWD_OR_INTRODUCTION, Logic.KWD_LAY, "because at least one part of an AND expression was false", Cons.cons(Logic.KWD_REVERSE, Stella.NIL));
          Logic.defineExplanationPhrase(Logic.KWD_OR_INTRODUCTION, Logic.KWD_TECHNICAL, "(~p |= ~(p & q))", Cons.cons(Logic.KWD_REVERSE, Cons.cons(Logic.KWD_AMPLIFICATION, Stella.NIL)));
          Logic.defineExplanationPhrase(Logic.KWD_OR_INTRODUCTION, Logic.KWD_LAY, "(therefore the AND is also false)", Cons.cons(Logic.KWD_REVERSE, Cons.cons(Logic.KWD_AMPLIFICATION, Stella.NIL)));
          Logic.defineExplanationPhrase(Logic.KWD_DISPROOF, Logic.KWD_TECHNICAL, "by disproof", Stella.NIL);
          Logic.defineExplanationPhrase(Logic.KWD_DISPROOF, Logic.KWD_LAY, "by proving the negation", Stella.NIL);
          Logic.defineExplanationPhrase(Logic.KWD_DISPROOF, Logic.KWD_TECHNICAL, "by Double-Negation-Introduction", Cons.cons(Logic.KWD_REVERSE, Stella.NIL));
          Logic.defineExplanationPhrase(Logic.KWD_DISPROOF, Logic.KWD_LAY, "by negating a negation", Cons.cons(Logic.KWD_REVERSE, Stella.NIL));
          Logic.defineExplanationPhrase(Logic.KWD_FAIL_INTRODUCTION, Logic.KWD_TECHNICAL, "because the argument proposition was not derivable", Stella.NIL);
          Logic.defineExplanationPhrase(Logic.KWD_FAIL_INTRODUCTION, Logic.KWD_LAY, "because the argument proposition could not be proven", Stella.NIL);
          Logic.defineExplanationPhrase(Logic.KWD_NEGATED_FAIL, Logic.KWD_TECHNICAL, "because the argument proposition was derived and the fail is has negative polarity", Stella.NIL);
          Logic.defineExplanationPhrase(Logic.KWD_NEGATED_FAIL, Logic.KWD_LAY, "because the argument proposition could be proven and we are trying to disprove the fail", Stella.NIL);
          Logic.defineExplanationPhrase(Logic.KWD_CLOSED_NOT_INTRODUCTION, Logic.KWD_TECHNICAL, "because the argument proposition was not derivable and it uses closed-world semantics", Stella.NIL);
          Logic.defineExplanationPhrase(Logic.KWD_CLOSED_NOT_INTRODUCTION, Logic.KWD_LAY, "because the argument proposition could not be proven and it is a closed-world proposition", Stella.NIL);
          Logic.defineExplanationPhrase(Logic.KWD_EXISTENTIAL_INTRODUCTION, Logic.KWD_TECHNICAL, "by Existential Introduction", Stella.NIL);
          Logic.defineExplanationPhrase(Logic.KWD_EXISTENTIAL_INTRODUCTION, Logic.KWD_LAY, "because it was true for at least one case", Stella.NIL);
          Logic.defineExplanationPhrase(Logic.KWD_FORWARD_INFERENCE, Logic.KWD_TECHNICAL, "by Forward Inference", Stella.NIL);
          Logic.defineExplanationPhrase(Logic.KWD_FORWARD_INFERENCE, Logic.KWD_LAY, "by forward rule reasoning", Stella.NIL);
        }

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