docs: public Components getComponents() {
          if (this.components == null) {
              // This is idempotent, so no need to synchronize ...
  
              // Calculate how many seconds, and don't lose any information ...
              BigDecimal bigSeconds = new BigDecimal(this.durationInNanos).divide(new BigDecimal(1000000000));
              // Calculate the minutes, and round to lose the seconds
              int minutes = bigSeconds.intValue() / 60;
              // Remove the minutes from the seconds, to just have the remainder of seconds
              double dMinutes = minutes;
              double seconds = bigSeconds.doubleValue() - dMinutes * 60;
              // Now compute the number of full hours, and change 'minutes' to hold the remainding minutes
              int hours = minutes / 60;
              minutes = minutes - (hours * 60);
              this.components = new Components(hours, minutes, seconds);
          }
          return this.components;
      }