public static Cons yieldSlotValueReaderTree(Symbol slotname, Stella_Object objectref, Surrogate objecttype) {
    if ((objecttype == Stella.SGT_STELLA_CONS) &&
        ((List)(Stella.$CURRENT_STELLA_FEATURES$.get())).membP(Stella.KWD_USE_COMMON_LISP_CONSES)) {
      if (slotname == Stella.SYM_STELLA_VALUE) {
        return (Cons.cons(Symbol.clTranslateGlobalSymbol(Stella.SYM_STELLA_rrVALUE), Cons.cons(objectref, Stella.NIL)));
      }
      else if (slotname == Stella.SYM_STELLA_REST) {
        return (Cons.cons(Symbol.clTranslateGlobalSymbol(Stella.SYM_STELLA_rrREST), Cons.cons(objectref, Stella.NIL)));
      }
      else {
      }
    }
    { Stella_Class renamed_Class = ((Stella_Class)(objecttype.surrogateValue));

      if ((!((List)(Stella.$CURRENT_STELLA_FEATURES$.get())).membP(Stella.KWD_USE_COMMON_LISP_STRUCTS)) ||
          (Stella_Class.exceptionClassP(renamed_Class) ||
           Stella_Class.clAlwaysTranslateToClosClassP(renamed_Class))) {
        return (Cons.cons(Symbol.yieldClosSlotAccessorName(slotname), Cons.cons(objectref, Stella.NIL)));
      }
      else if (((List)(Stella.$CURRENT_STELLA_FEATURES$.get())).membP(Stella.KWD_USE_COMMON_LISP_VECTOR_STRUCTS)) {
        return (Cons.cons(Symbol.clTranslateGlobalSymbol(Stella.SYM_STELLA_CLSYS_SVAL), Cons.cons(IntegerWrapper.wrapInteger(Symbol.clStructSlotOffset(slotname, objecttype)), Cons.cons(Symbol.clTranslateGlobalSymbol(Symbol.internSymbolInModule(objecttype.symbolName, ((Module)(objecttype.homeContext)), true)), Cons.cons(Symbol.clTranslateGlobalSymbol(slotname), Cons.cons(objectref, Stella.NIL))))));
      }
      else {
        return (Cons.cons(Surrogate.yieldStructSlotAccessorName(objecttype, slotname), Cons.cons(objectref, Stella.NIL)));
      }
    }
  }