code: static TimeZone getTimeZone(PageContext pc, Tag fromTag) {
          TimeZone tz = null;
  
          Tag t = findAncestorWithClass(fromTag, TimeZoneSupport.class);
          if (t != null) {
              // use time zone from parent <timeZone> tag
              TimeZoneSupport parent = (TimeZoneSupport) t;
              tz = parent.getTimeZone();
          } else {
              // get time zone from configuration setting
              Object obj = Config.find(pc, Config.FMT_TIME_ZONE);
              if (obj != null) {
                  if (obj instanceof TimeZone) {
                      tz = (TimeZone) obj;
                  } else {
                      tz = TimeZone.getTimeZone((String) obj);
                  }
              }
          }
  
          return tz;
      }
docs: /*
  Determines and returns the time zone to be used by the given action.
  
  <p> If the given action is nested inside a &lt;timeZone&gt; action,
  the time zone is taken from the enclosing &lt;timeZone&gt; action.
  
  <p> Otherwise, the time zone configuration setting
  <tt>javax.servlet.jsp.jstl.core.Config.FMT_TIME_ZONE</tt>
  is used.
  
  @param pageContext the page containing the action for which the
  time zone needs to be determined
  @param fromTag the action for which the time zone needs to be
  determined
  
  @return the time zone, or <tt>null</tt> if the given action is not
  nested inside a &lt;timeZone&gt; action and no time zone configuration
  setting exists