/***************************************************************************** * ------------------------------------------------------------------------- * * Licensed under the Apache License, Version 2.0 (the "License"); * * you may not use this file except in compliance with the License. * * You may obtain a copy of the License at * * * * http://www.apache.org/licenses/LICENSE-2.0 * * * * Unless required by applicable law or agreed to in writing, software * * distributed under the License is distributed on an "AS IS" BASIS, * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * * See the License for the specific language governing permissions and * * limitations under the License. * *****************************************************************************/ package com.google.mu.util; import static java.util.stream.Collectors.collectingAndThen; import static java.util.stream.Collectors.toCollection; import java.util.Collections; import java.util.LinkedHashSet; import java.util.Objects; import java.util.Set; import java.util.stream.Collector; import java.util.stream.Collectors; final class InternalCollectors { static <T> Collector<T, ?, Set<T>> toImmutableSet() { return checkingNulls( collectingAndThen(toCollection(LinkedHashSet::new), Collections::unmodifiableSet)); } static <T, A, R> Collector<T, ?, R> checkingNulls(Collector<T, A, R> downstream) { return Collectors.mapping(Objects::requireNonNull, downstream); } }