code: public ZoneOffset getOffset(Instant instant) {
          if (savingsInstantTransitions.length == 0) {
              return standardOffsets[0];
          }
          long epochSec = instant.getEpochSecond();
          // check if using last rules
          if (lastRules.length > 0 &&
                  epochSec > savingsInstantTransitions[savingsInstantTransitions.length - 1]) {
              int year = findYear(epochSec, wallOffsets[wallOffsets.length - 1]);
              ZoneOffsetTransition[] transArray = findTransitionArray(year);
              ZoneOffsetTransition trans = null;
              for (int i = 0; i < transArray.length; i++) {
                  trans = transArray[i];
                  if (epochSec < trans.toEpochSecond()) {
                      return trans.getOffsetBefore();
                  }
              }
              return trans.getOffsetAfter();
          }
  
          // using historic rules
          int index  = Arrays.binarySearch(savingsInstantTransitions, epochSec);
          if (index < 0) {
              // switch negative insert position to start of matched range
              index = -index - 2;
          }
          return wallOffsets[index + 1];
      }
docs: Gets the offset applicable at the specified instant in these rules.
  <p>
  The mapping from an instant to an offset is simple, there is only
  one valid offset for each instant.
  This method returns that offset.
  
  @param instant  the instant to find the offset for, not null, but null
  may be ignored if the rules have a single offset for all instants
  @return the offset, not null