code: private void parseMonthDayTime(StringTokenizer st, TZDBMonthDayTime mdt) {
          mdt.month = parseMonth(st.nextToken());
          if (st.hasMoreTokens()) {
              String dayRule = st.nextToken();
              if (dayRule.startsWith("last")) {
                  mdt.dayOfMonth = -1;
                  mdt.dayOfWeek = parseDayOfWeek(dayRule.substring(4));
                  mdt.adjustForwards = false;
              } else {
                  int index = dayRule.indexOf(">=");
                  if (index > 0) {
                      mdt.dayOfWeek = parseDayOfWeek(dayRule.substring(0, index));
                      dayRule = dayRule.substring(index + 2);
                  } else {
                      index = dayRule.indexOf("<=");
                      if (index > 0) {
                          mdt.dayOfWeek = parseDayOfWeek(dayRule.substring(0, index));
                          mdt.adjustForwards = false;
                          dayRule = dayRule.substring(index + 2);
                      }
                  }
                  mdt.dayOfMonth = Integer.parseInt(dayRule);
              }
              if (st.hasMoreTokens()) {
                  String timeStr = st.nextToken();
                  int timeOfDaySecs = parseSecs(timeStr);
                  LocalTime time = deduplicate(LocalTime.ofSecondOfDay(Jdk8Methods.floorMod(timeOfDaySecs, 86400)));
                  mdt.time = time;
                  mdt.adjustDays = Jdk8Methods.floorDiv(timeOfDaySecs, 86400);
                  mdt.timeDefinition = parseTimeDefinition(timeStr.charAt(timeStr.length() - 1));
              }
          }
      }
docs: Parses a Rule line.
  
  @param st  the tokenizer, not null
  @param mdt  the object to parse into, not null