public static void addDependentPropositionLink(Stella_Object self, Proposition proposition) {
    { boolean descriptionP = Logic.descriptionModeP() ||
          ((BooleanWrapper)(KeyValueList.dynamicSlotValue(proposition.dynamicSlots, Logic.SYM_LOGIC_DESCRIPTIVEp, Stella.FALSE_WRAPPER))).wrapperValue;

      { Surrogate testValue000 = Stella_Object.safePrimaryType(self);

        if (Surrogate.subtypeOfP(testValue000, Logic.SGT_LOGIC_PROPOSITION)) {
          { Proposition self000 = ((Proposition)(self));

            if (self000.kind == Logic.KWD_CONSTANT) {
            }
            else {
              { NonPagingIndex index = self000.dependentPropositions;

                if (index == Logic.NIL_NON_PAGING_INDEX) {
                  index = ((NonPagingIndex)(Logic.createSequenceIndex(Logic.KWD_NON_PAGING, Stella.NIL)));
                  self000.dependentPropositions = index;
                }
                self000.dependentPropositions.insert(proposition);
              }
            }
          }
        }
        else if (Surrogate.subtypeOfP(testValue000, Logic.SGT_LOGIC_LOGIC_OBJECT)) {
          { LogicObject self000 = ((LogicObject)(self));

            if (!((!descriptionP) ||
                (Stella_Object.isaP(self000, Logic.SGT_LOGIC_SKOLEM) ||
                 (Stella_Object.isaP(self000, Logic.SGT_LOGIC_DESCRIPTION) &&
                  (self000.surrogateValueInverse == null))))) {
              System.err.print("Safety violation: INTERNAL ERROR: A named LOGIC-OBJECT such as `" + self000 + "' should never be argument to a description proposition such as `" + proposition + "'");
            }
            if ((Logic.$POWERLOOM_EXECUTION_MODE$ == Logic.KWD_DEBUGGING) &&
                (descriptionP &&
                 (Logic.skolemP(self000) &&
                  ((!Logic.variableP(self000)) &&
                   (!((BooleanWrapper)(KeyValueList.dynamicSlotValue(self000.dynamicSlots, Logic.SYM_LOGIC_HYPOTHESIZED_INSTANCEp, Stella.FALSE_WRAPPER))).wrapperValue))))) {
              { Object old$PrintreadablyP$000 = Stella.$PRINTREADABLYp$.get();

                try {
                  Native.setBooleanSpecial(Stella.$PRINTREADABLYp$, true);
                  Stella.STANDARD_WARNING.nativeStream.println("WARNING: Found skolem " + self000 + " in descriptive proposition " + proposition);
                  Logic.helpSignalPropositionError(Stella.STANDARD_WARNING, Logic.KWD_WARNING);

                } finally {
                  Stella.$PRINTREADABLYp$.set(old$PrintreadablyP$000);
                }
              }
            }
            if ((!descriptionP) ||
                Logic.variableP(self000)) {
              BacklinksIndex.helpAddDependentProposition(Logic.getBacklinksIndex(self000), proposition, self000);
            }
          }
        }
        else if (Surrogate.subtypeOfWrapperP(testValue000)) {
          { Wrapper self000 = ((Wrapper)(self));

            if (!descriptionP) {
              { BacklinksIndex index = Logic.getBacklinksIndex(self000);

                if (index != null) {
                  BacklinksIndex.helpAddDependentProposition(index, proposition, self000);
                }
              }
            }
          }
        }
        else if (Surrogate.subtypeOfP(testValue000, Logic.SGT_STELLA_THING)) {
          { Thing self000 = ((Thing)(self));

            if (!descriptionP) {
              BacklinksIndex.helpAddDependentProposition(Logic.getBacklinksIndex(self000), proposition, self000);
            }
          }
        }
        else {
        }
      }
    }
  }