public static Proposition recursivelyFastenDownPropositions(Proposition self, boolean dontcheckforduplicatesP) {
    if (!BooleanWrapper.coerceWrappedBooleanToBoolean(self.unfastenedP())) {
      return (self);
    }
    { Object old$Visitedunfasteneddefiningpropositions$000 = Logic.$VISITEDUNFASTENEDDEFININGPROPOSITIONS$.get();

      try {
        Native.setSpecial(Logic.$VISITEDUNFASTENEDDEFININGPROPOSITIONS$, List.list(Stella.NIL));
        return (Proposition.helpFastenDownPropositions(self, dontcheckforduplicatesP));

      } finally {
        Logic.$VISITEDUNFASTENEDDEFININGPROPOSITIONS$.set(old$Visitedunfasteneddefiningpropositions$000);
      }
    }
  }