code: public EnumMap<TimeUnit, Timespan> getAsTimespans(EnumSet<TimeUnit> timeUnits) {
          EnumMap<TimeUnit, Timespan> res = new EnumMap<TimeUnit, Timespan>(TimeUnit.class);
  
          long durationInMillis = getDurationInMilliseconds();
  
          for (TimeUnit timeUnit : TIME_UNIT_ORDER) {
              if (timeUnits.contains(timeUnit)) {
                  Timespan timespan = truncateDurationToUnit(durationInMillis, timeUnit);
                  res.put(timeUnit, timespan);
                  durationInMillis -= timespan.getDurationInMilliseconds();
              }
          }
  
          return res;
      }
docs: Decomposes this timespan as a map for each unit provided. Example: if this timespan represents
  63s and you provide m/s/ms then you will get 3 timespans in the map: one of 1mn, one for 3s
  and one for 0ms.
  
  @param timeUnits
  the time units you want to be part of the decomposition.
  
  @return a map containing an entry for each time unit provided. All others are <code>null</code>.