@Override public PCollectionView<Iterable<T>> expand(PCollection<T> input) { try { GroupByKey.applicableTo(input); } catch (IllegalStateException e) { throw new IllegalStateException("Unable to create a side-input view from input", e); } PCollection<KV<Void, T>> materializationInput = input.apply(new VoidKeyToMultimapMaterialization<>()); PCollectionView<Iterable<T>> view = PCollectionViews.iterableView( materializationInput, materializationInput.getWindowingStrategy()); materializationInput.apply(CreatePCollectionView.of(view)); return view; } }