@Nullable public static <T> T getIfSingle(@Nullable Stream<T> items) { return items == null ? null : items .limit(2) .map(Optional::ofNullable) .reduce( Optional.empty(), (a, b) -> a.isPresent() ^ b.isPresent() ? b : Optional.empty()) .orElse(null); }