docs: @Deprecated
    public static ViewData create(
        final View view,
        Map<? extends List</*@Nullable*/ TagValue>, ? extends AggregationData> map,
        final AggregationWindowData windowData) {
      checkWindow(view.getWindow(), windowData);
      final Map<List</*@Nullable*/ TagValue>, AggregationData> deepCopy =
          new HashMap<List</*@Nullable*/ TagValue>, AggregationData>();
      for (Entry<? extends List</*@Nullable*/ TagValue>, ? extends AggregationData> entry :
          map.entrySet()) {
        checkAggregation(view.getAggregation(), entry.getValue(), view.getMeasure());
        deepCopy.put(
            Collections.unmodifiableList(new ArrayList</*@Nullable*/ TagValue>(entry.getKey())),
            entry.getValue());
      }
      return windowData.match(
          new Function<ViewData.AggregationWindowData.CumulativeData, ViewData>() {
            @Override
            public ViewData apply(ViewData.AggregationWindowData.CumulativeData arg) {
              return createInternal(
                  view, Collections.unmodifiableMap(deepCopy), arg, arg.getStart(), arg.getEnd());
            }
          },
          new Function<ViewData.AggregationWindowData.IntervalData, ViewData>() {
            @Override
            public ViewData apply(ViewData.AggregationWindowData.IntervalData arg) {
              Duration duration = ((View.AggregationWindow.Interval) view.getWindow()).getDuration();
              return createInternal(
                  view,
                  Collections.unmodifiableMap(deepCopy),
                  arg,
                  arg.getEnd()
                      .addDuration(Duration.create(-duration.getSeconds(), -duration.getNanos())),
                  arg.getEnd());
            }
          },
          Functions.<ViewData>throwAssertionError());
    }