code: public Map<String, DatasetState> createDatasetStatesByUrns() {
      Map<String, DatasetState> datasetStatesByUrns = Maps.newHashMap();
  
      for (TaskState taskState : this.taskStates.values()) {
        String datasetUrn = createDatasetUrn(datasetStatesByUrns, taskState);
  
        datasetStatesByUrns.get(datasetUrn).incrementTaskCount();
        datasetStatesByUrns.get(datasetUrn).addTaskState(taskState);
      }
  
      for (TaskState taskState : this.skippedTaskStates.values()) {
        String datasetUrn = createDatasetUrn(datasetStatesByUrns, taskState);
        datasetStatesByUrns.get(datasetUrn).addSkippedTaskState(taskState);
      }
  
      return ImmutableMap.copyOf(datasetStatesByUrns);
    }
docs: Create a {@link Map} from dataset URNs (as being specified by {@link ConfigurationKeys#DATASET_URN_KEY} to
  {@link DatasetState} objects that represent the dataset states and store {@link TaskState}s corresponding
  to the datasets.
  
  <p>
  {@link TaskState}s that do not have {@link ConfigurationKeys#DATASET_URN_KEY} set will be added to
  the dataset state belonging to {@link ConfigurationKeys#DEFAULT_DATASET_URN}.
  </p>
  
  @return a {@link Map} from dataset URNs to {@link DatasetState}s representing the dataset states