* @return String
   */
  public static String objectToString(Stella_Object self) {
    if (self == null) {
      return (null);
    }
    else {
      { Object old$PrintreadablyP$000 = Stella.$PRINTREADABLYp$.get();

        try {
          Native.setBooleanSpecial(Stella.$PRINTREADABLYp$, true);
          { Surrogate testValue000 = Stella_Object.safePrimaryType(self);

            if (Surrogate.subtypeOfStringP(testValue000)) {
              { StringWrapper self000 = ((StringWrapper)(self));

                return (self000.wrapperValue);
              }
            }
            else if (Surrogate.subtypeOfP(testValue000, Logic.SGT_LOGIC_SKOLEM)) {
              { Skolem self000 = ((Skolem)(self));

                { Stella_Object value = Logic.valueOf(self000);

                  if (value == self000) {
                    return (Native.stringify(self000));
                  }
                  else {
                    return (PLI.objectToString(value));
                  }
                }
              }
            }
            else if (Surrogate.subtypeOfP(testValue000, PLI.SGT_PLI_PL_ITERATOR)) {
              { PlIterator self000 = ((PlIterator)(self));

                return (Native.stringify(self000.consify()));
              }
            }
            else {
              return (Native.stringify(self));
            }
          }

        } finally {
          Stella.$PRINTREADABLYp$.set(old$PrintreadablyP$000);
        }
      }
    }
  }