code: public final TemporalAmount getDuration() {
          if (duration == null) {
              return TemporalAmountAdapter.fromDateRange(getStart(), getEnd()).getDuration();
          }
          return duration.getDuration();
      }
docs: Returns the duration of this period. If an explicit duration is not
  specified, the duration is derived from the end date.
  
  @return the duration of this period in milliseconds.