code: public <T extends ChronoEntity<T>> T now(Chronology<T> chronology) {
  
          Timezone tz = (this.timezone == null) ? Timezone.ofSystem() : this.timezone;
          Attributes attrs = new Attributes.Builder().setTimezone(tz.getID()).build();
          T result = chronology.createFrom(this.timeSource, attrs);
  
          if (result == null) {
              Class<?> type = chronology.getChronoType();
              if (CalendarVariant.class.isAssignableFrom(type)) {
                  throw new IllegalArgumentException("Calendar variant required: " + type.getName());
              } else {
                  throw new IllegalArgumentException("Insufficient data: " + type.getName());
              }
          } else {
              return result;
          }
  
      }
docs: /*[deutsch]
  <p>Ermittelt die aktuelle Zeit in der assoziierten Zeitzone und angegebenen Chronologie. </p>
  
  <p>Das Ergebnis h&auml;ngt immer dynamisch von der assoziierten Zeitzone ab. Wenn deren Daten sich
  &auml;ndern, dann wird diese Methode beim n&auml;chsten Aufruf ein angepasstes Ergebnis liefern. </p>
  
  <p>Code-Beispiel: </p>
  
  <pre>
  System.out.println(SystemClock.inLocalView().now(PlainTime.axis())); // lokale Uhrzeit
  </pre>
  
  @param   <T> generic type of chronology
  @param   chronology  chronology to be used
  @return  current local timestamp or date in given chronology
  @throws  IllegalArgumentException if given chronology requires a calendar variant
  @since   3.3/4.2