public static FloatWrapper zone(Stella_Object thing) {
    { Surrogate testValue000 = Stella_Object.safePrimaryType(thing);

      if (Surrogate.subtypeOfStringP(testValue000)) {
        { StringWrapper thing000 = ((StringWrapper)(thing));

          if (Stella.stringEqualP(thing000.wrapperValue, "local")) {
            return (FloatWrapper.wrapFloat(Stella.NULL_FLOAT));
          }
          { FloatWrapper zoneNumber = ((FloatWrapper)(((StringHashTable)(Stella.$ZONE_STRINGS$.get())).lookup(thing000.wrapperValue)));

            if (zoneNumber != null) {
              return (zoneNumber);
            }
            else {
              return (null);
            }
          }
        }
      }
      else if (Surrogate.subtypeOfFloatP(testValue000)) {
        { FloatWrapper thing000 = ((FloatWrapper)(thing));

          if ((-12.0 <= thing000.wrapperValue) &&
              (thing000.wrapperValue <= 14.0)) {
            return (thing000);
          }
          else {
            return (null);
          }
        }
      }
      else if (Surrogate.subtypeOfIntegerP(testValue000)) {
        { IntegerWrapper thing000 = ((IntegerWrapper)(thing));

          { int offset = thing000.wrapperValue;

            if ((-12 <= offset) &&
                (offset <= 14)) {
              return (FloatWrapper.wrapFloat(((double)(offset))));
            }
            else if ((-1200 <= offset) &&
                (offset <= 1400)) {
              return (FloatWrapper.wrapFloat((offset / 100) + ((offset % 100) / 60.0)));
            }
            else {
              return (null);
            }
          }
        }
      }
      else {
        return (null);
      }
    }
  }