code: public void setZoneStrings(String[][] newZoneStrings) {
          String[][] aCopy = new String[newZoneStrings.length][];
          for (int i = 0; i < newZoneStrings.length; ++i) {
              int len = newZoneStrings[i].length;
              if (len < 5) {
                  throw new IllegalArgumentException();
              }
              aCopy[i] = Arrays.copyOf(newZoneStrings[i], len);
          }
          zoneStrings = aCopy;
          isZoneStringsSet = true;
      }
docs: Sets time zone strings.  The argument must be a
  two-dimensional array of strings of size <em>n</em> by <em>m</em>,
  where <em>m</em> is at least 5.  Each of the <em>n</em> rows is an
  entry containing the localized names for a single <code>TimeZone</code>.
  Each such row contains (with <code>i</code> ranging from
  0..<em>n</em>-1):
  <ul>
  <li><code>zoneStrings[i][0]</code> - time zone ID</li>
  <li><code>zoneStrings[i][1]</code> - long name of zone in standard
  time</li>
  <li><code>zoneStrings[i][2]</code> - short name of zone in
  standard time</li>
  <li><code>zoneStrings[i][3]</code> - long name of zone in daylight
  saving time</li>
  <li><code>zoneStrings[i][4]</code> - short name of zone in daylight
  saving time</li>
  </ul>
  The zone ID is <em>not</em> localized; it's one of the valid IDs of
  the {@link java.util.TimeZone TimeZone} class that are not
  <a href="../util/TimeZone.html#CustomID">custom IDs</a>.
  All other entries are localized names.
  
  @param newZoneStrings the new time zone strings.
  @exception IllegalArgumentException if the length of any row in
  <code>newZoneStrings</code> is less than 5
  @exception NullPointerException if <code>newZoneStrings</code> is null
  @see #getZoneStrings()