public static Cons yieldSlotReaderTree(StorageSlot slot, Stella_Class renamed_Class) {
    { Cons parameters = Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_SELF, Cons.cons(Symbol.internSymbolInModule(renamed_Class.classType.symbolName, ((Module)(renamed_Class.classType.homeContext)), true), Cons.cons(Stella.NIL, Stella.NIL)))), Stella.NIL);
      Stella_Object typetree = StorageSlot.yieldSlotTypeTree(slot);
      Stella_Object defaultexpression = (StorageSlot.hasNonNullDefaultValueP(slot) ? slot.systemDefaultValue() : ((Stella_Object)(null)));
      boolean slotvisibleP = Surrogate.subtypeOfP(renamed_Class.classType, slot.slotOwner);
      Cons readcode = null;
      Cons auxiliarycode = null;

      if (!slotvisibleP) {
        readcode = Cons.list$(Cons.cons(Stella.SYM_STELLA_PROGN, Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_ERROR, Cons.cons(StringWrapper.wrapString("Slot '"), Cons.cons(StringWrapper.wrapString(slot.slotName.symbolName), Cons.cons(Cons.list$(Cons.cons(StringWrapper.wrapString("' does not exist on "), Cons.cons(Stella.SYM_STELLA_SELF, Cons.cons(Stella.NIL, Stella.NIL)))), Stella.NIL))))), Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_RETURN, Cons.cons(Stella.SYM_STELLA_NULL, Cons.cons(Stella.NIL, Stella.NIL)))), Cons.cons(Stella.NIL, Stella.NIL)))));
      }
      else if (slot.activeP()) {
        readcode = StorageSlot.yieldActiveSlotReaderBody(slot, defaultexpression);
      }
      else if (slot.slotHardwiredP) {
        { Object [] caller_MV_returnarray = new Object[1];

          readcode = StorageSlot.yieldHardwiredSlotReaderBody(slot, caller_MV_returnarray);
          auxiliarycode = ((Cons)(caller_MV_returnarray[0]));
        }
        if (renamed_Class.classType == slot.slotOwner) {
          Cons.walkAuxiliaryTree(auxiliarycode);
        }
      }
      else {
        readcode = StorageSlot.wrapWithDefaultValueAndReturnCode(slot, defaultexpression);
      }
      return (Cons.list$(Cons.cons(Stella.SYM_STELLA_DEFMETHOD, Cons.cons(Cons.cons(slot.slotName, Cons.cons(typetree, Stella.NIL)), Cons.cons(parameters, Cons.cons(Cons.list$(Cons.cons(Stella.KWD_AUXILIARYp, Cons.cons(Stella.SYM_STELLA_TRUE, Cons.cons(readcode, Cons.cons(Stella.NIL, Stella.NIL))))), Stella.NIL))))));
    }
  }