code: private int winterSolstice(int gyear) {
  
          long cacheValue = winterSolsticeCache.get(gyear);
  
          if (cacheValue == CalendarCache.EMPTY) {
              // In books December 15 is used, but it fails for some years
              // using our algorithms, e.g.: 1298 1391 1492 1553 1560.  That
              // is, winterSolstice(1298) starts search at Dec 14 08:00:00
              // PST 1298 with a final result of Dec 14 10:31:59 PST 1299.
              long ms = daysToMillis(computeGregorianMonthStart(gyear, DECEMBER) +
                                     1 - EPOCH_JULIAN_DAY);
              astro.setTime(ms);
              
              // Winter solstice is 270 degrees solar longitude aka Dongzhi
              long solarLong = astro.getSunTime(CalendarAstronomer.WINTER_SOLSTICE,
                                                true);
              cacheValue = millisToDays(solarLong);
              winterSolsticeCache.put(gyear, cacheValue);
          }
          return (int) cacheValue;
      }
docs: Return the major solar term on or after December 15 of the given
  Gregorian year, that is, the winter solstice of the given year.
  Computations are relative to Asia/Shanghai time zone.
  @param gyear a Gregorian year
  @return days after January 1, 1970 0:00 Asia/Shanghai of the
  winter solstice of the given year