docs: private long guessTimestamp(long millis, TimeZone tz) {
      if (tz == null) {
        // If client did not provide us with time zone, we use system default time zone
        tz = getDefaultTz();
      }
      // The story here:
      // Backend provided us with something like '2015-10-04 13:40' and it did NOT provide us with a
      // time zone.
      // On top of that, user asked us to treat the timestamp as if it were in GMT+02:00.
      //
      // The code below creates such a timestamp that is rendered as '2015-10-04 13:40 GMT+02:00'
      // In other words, its UTC value should be 11:40 UTC == 13:40 GMT+02:00.
      // It is not sufficient to just subtract offset as you might cross DST change as you subtract.
      //
      // For instance, on 2000-03-26 02:00:00 Moscow went to DST, thus local time became 03:00:00
      // Suppose we deal with 2000-03-26 02:00:01
      // If you subtract offset from the timestamp, the time will be "a hour behind" since
      // "just a couple of hours ago the OFFSET was different"
      //
      // To make a long story short: we have UTC timestamp that looks like "2000-03-26 02:00:01" when
      // rendered in UTC tz.
      // We want to know another timestamp that will look like "2000-03-26 02:00:01" in Europe/Moscow
      // time zone.
  
      if (isSimpleTimeZone(tz.getID())) {
        // For well-known non-DST time zones, just subtract offset
        return millis - tz.getRawOffset();
      }
      // For all the other time zones, enjoy debugging Calendar API
      // Here we do a straight-forward implementation that splits original timestamp into pieces and
      // composes it back.
      // Note: cal.setTimeZone alone is not sufficient as it would alter hour (it will try to keep the
      // same time instant value)
      Calendar cal = calendarWithUserTz;
      cal.setTimeZone(utcTz);
      cal.setTimeInMillis(millis);
      int era = cal.get(Calendar.ERA);
      int year = cal.get(Calendar.YEAR);
      int month = cal.get(Calendar.MONTH);
      int day = cal.get(Calendar.DAY_OF_MONTH);
      int hour = cal.get(Calendar.HOUR_OF_DAY);
      int min = cal.get(Calendar.MINUTE);
      int sec = cal.get(Calendar.SECOND);
      int ms = cal.get(Calendar.MILLISECOND);
      cal.setTimeZone(tz);
      cal.set(Calendar.ERA, era);
      cal.set(Calendar.YEAR, year);
      cal.set(Calendar.MONTH, month);
      cal.set(Calendar.DAY_OF_MONTH, day);
      cal.set(Calendar.HOUR_OF_DAY, hour);
      cal.set(Calendar.MINUTE, min);
      cal.set(Calendar.SECOND, sec);
      cal.set(Calendar.MILLISECOND, ms);
      return cal.getTimeInMillis();
    }