### Question:
Choice { @SuppressWarnings("unchecked") public static <T> Choice<T> none() { return (Choice) NONE; } private  Choice(); @SuppressWarnings("unchecked") static Choice<T> none(); static Choice<T> of(final T t); static Choice<T> condition(boolean condition, T t); static Choice<T> fromOptional(Optional<T> optional); static Choice<T> from(final Collection<T> choices); static Choice<T> any(final Collection<Choice<T>> choices); @Override String toString(); Optional<T> first(); Choice<R> thenChoose(final Function<? super T, Choice<R>> function); Choice<R> thenOption(final Function<? super T, Optional<R>> function); Choice<R> transform(final Function<? super T, R> function); Choice<T> or(final Choice<T> other); Choice<T> condition(boolean condition); Choice<T> condition(final Predicate<? super T> predicate);  }### Answer:
@Test public void testNone() { assertThat(Choice.none().first()).isAbsent(); assertThat(Choice.none().condition(true)).isSameInstanceAs(Choice.none()); assertThat(Choice.none().condition(Predicates.alwaysTrue())).isSameInstanceAs(Choice.none()); assertThat(Choice.none().thenChoose(Functions.constant(Choice.of("foo")))) .isSameInstanceAs(Choice.none()); }