@Override public PCollection<T> apply(PCollection<T> in) { WithKeys<IdT, T> withKeys = WithKeys.of(fn); if (representativeType != null) { withKeys = withKeys.withKeyType(representativeType); } return in.apply(withKeys) .apply( Combine.<IdT, T, T>perKey( new Combine.BinaryCombineFn<T>() { @Override public T apply(T left, T right) { return left; } })) .apply(Values.<T>create()); }