public static Stella_Object logicSymbol(Stella_Object obj) {
    { Surrogate testValue000 = Stella_Object.safePrimaryType(obj);

      if (Surrogate.subtypeOfP(testValue000, Logic.SGT_LOGIC_DESCRIPTION)) {
        { Description obj000 = ((Description)(obj));

          return (obj000);
        }
      }
      else if (Surrogate.subtypeOfP(testValue000, Logic.SGT_LOGIC_PATTERN_VARIABLE)) {
        { PatternVariable obj000 = ((PatternVariable)(obj));

          return (Symbol.internSymbol(Skolem.getSkolemPrintName(obj000)));
        }
      }
      else if (Surrogate.subtypeOfP(testValue000, Logic.SGT_LOGIC_SKOLEM)) {
        { Skolem obj000 = ((Skolem)(obj));

          return (Symbol.internSymbol(Skolem.getSkolemPrintName(obj000)));
        }
      }
      else if (Surrogate.subtypeOfP(testValue000, Logic.SGT_LOGIC_LOGIC_OBJECT)) {
        { LogicObject obj000 = ((LogicObject)(obj));

          return (Symbol.internSymbol(obj000.surrogateValueInverse.symbolName));
        }
      }
      else {
        return (obj);
      }
    }
  }