code: private Long getImmediatePreviousZoneTransition(long base) {
          Long transitionTime = null;
  
          if (zone instanceof BasicTimeZone) {
              TimeZoneTransition transition = ((BasicTimeZone) zone).getPreviousTransition(base, true);
              if (transition != null) {
                  transitionTime = transition.getTime();
              }
          } else {
              // Usually, it is enough to check past one hour because such transition is most
              // likely +1 hour shift. However, there is an example jumped +24 hour in the tz database.
              transitionTime = getPreviousZoneTransitionTime(zone, base, 2 * 60 * 60 * 1000); // check last 2 hours
              if (transitionTime == null) {
                  transitionTime = getPreviousZoneTransitionTime(zone, base, 30 * 60 * 60 * 1000); // try last 30 hours
              }
          }
          return transitionTime;
      }
docs: Find the previous zone transtion near the given time.
  
  @param base The base time, inclusive.
  @return The time of the previous transition, or null if not found.