Map<Short, Map<Short, Long>> getValidSizePerContainer(Long referenceTimeInMs) {
    Map<Short, Map<Short, Long>> validSizePerContainer = new HashMap<>();
    for (Map.Entry<Short, Map<Short, Long>> accountEntry : containerBaseBucket.entrySet()) {
      validSizePerContainer.put(accountEntry.getKey(), new HashMap<>(accountEntry.getValue()));
    }
    NavigableMap<Long, Map<Short, Map<Short, Long>>> subMap = containerDeltaBuckets.headMap(referenceTimeInMs, true);
    for (Map.Entry<Long, Map<Short, Map<Short, Long>>> bucket : subMap.entrySet()) {
      for (Map.Entry<Short, Map<Short, Long>> accountEntry : bucket.getValue().entrySet()) {
        for (Map.Entry<Short, Long> containerEntry : accountEntry.getValue().entrySet()) {
          updateNestedMapHelper(validSizePerContainer, accountEntry.getKey(), containerEntry.getKey(),
              containerEntry.getValue());
        }
      }
    }
    return validSizePerContainer;
  }
Given a reference time in ms return the corresponding valid data size per container map by aggregating all buckets
whose end time is less than or equal to the reference time.
@param referenceTimeInMs the reference time in ms until which deletes and expiration are relevant.
@return a {@link Pair} whose first element is the end time of the last bucket that was aggregated and whose second
element is the requested valid data size per container {@link Map}.
ambry-store/src/main/java/com/github/ambry/store/ScanResults.java