code: public static ZoneId ofOffset(String prefix, ZoneOffset offset) {
          Jdk8Methods.requireNonNull(prefix, "prefix");
          Jdk8Methods.requireNonNull(offset, "offset");
          if (prefix.length() == 0) {
              return offset;
          }
          if (prefix.equals("GMT") || prefix.equals("UTC") || prefix.equals("UT")) {
              if (offset.getTotalSeconds() == 0) {
                  return new ZoneRegion(prefix, offset.getRules());
              }
              return new ZoneRegion(prefix + offset.getId(), offset.getRules());
          }
          throw new IllegalArgumentException("Invalid prefix, must be GMT, UTC or UT: " + prefix);
      }
docs: Obtains an instance of {@code ZoneId} wrapping an offset.
  <p>
  If the prefix is "GMT", "UTC", or "UT" a {@code ZoneId}
  with the prefix and the non-zero offset is returned.
  If the prefix is empty {@code ""} the {@code ZoneOffset} is returned.
  
  @param prefix  the time-zone ID, not null
  @param offset  the offset, not null
  @return the zone ID, not null
  @throws IllegalArgumentException if the prefix is not one of
  "GMT", "UTC", or "UT", or ""