* @return Stella_Object
   */
  public static Stella_Object termify(Stella_Object self) {
    { Surrogate testValue000 = Stella_Object.safePrimaryType(self);

      if (Surrogate.subtypeOfP(testValue000, Logic.SGT_STELLA_LITERAL_WRAPPER)) {
        { LiteralWrapper self000 = ((LiteralWrapper)(self));

          return (((LiteralWrapper)(self000.permanentify())));
        }
      }
      else if (Surrogate.subtypeOfSurrogateP(testValue000)) {
        { Surrogate self000 = ((Surrogate)(self));

          if (self000.surrogateValue != null) {
            return (Logic.valueOf(self000.surrogateValue));
          }
          System.out.print("Can't termify the surrogate 'self' because it is undefined.");
          return (null);
        }
      }
      else if (Surrogate.subtypeOfP(testValue000, Logic.SGT_LOGIC_LOGIC_OBJECT)) {
        { LogicObject self000 = ((LogicObject)(self));

          return (Logic.valueOf(self000));
        }
      }
      else if (Surrogate.subtypeOfP(testValue000, Logic.SGT_STELLA_THING)) {
        { Thing self000 = ((Thing)(self));

          return (self000);
        }
      }
      else {
        System.out.print("Can't 'termify': " + self);
        return (null);
      }
    }
  }