code: public Moment at(
          ZonalOffset offset,
          StartOfDay startOfDay
      ) {
  
          PlainTimestamp tsp = (
              (this.cv == null)
              ? this.ca.transform(PlainDate.class).at(this.time)
              : this.cv.transform(PlainDate.class).at(this.time));
  
          // assuming that deviation will not change much by one day difference (approximation)
          int deviation = startOfDay.getDeviation(tsp.getCalendarDate(), offset);
          int comp = this.time.get(PlainTime.SECOND_OF_DAY).intValue() - deviation;
  
          if (comp >= 86400) { // happens if sunset is the start of day
              tsp = tsp.minus(1, CalendarUnit.DAYS);
          } else if (comp < 0) { // happens if sunrise is the start of day
              tsp = tsp.plus(1, CalendarUnit.DAYS);
          }
  
          return tsp.at(offset);
  
      }
docs: /*[deutsch]
  <p>Kombiniert diesen allgemeinen Zeitstempel mit dem angegebenen Zeitzonen-Offset zu einem UTC-Moment. </p>
  
  @param   offset      timezone offset
  @param   startOfDay  start of day
  @return  global UTC-moment based on this general timestamp interpreted in given timezone
  @since   3.8/4.5