Triplet extends Tuple implements AValue<A>, BValue<B>, CValue<C> { public static <A extends Message, B extends Message, C extends Message> Triplet<A, B, C> of(A a, B b, C c) { checkAllNotNullOrEmpty(a, b, c); Triplet<A, B, C> result = new Triplet<>(a, b, c); return result; } private  Triplet(A a, B b, C c); static Triplet<A, B, C> of(A a, B b, C c); static Triplet<A, B, Optional<C>> withNullable(A a, B b, @Nullable C c); static Triplet<A, Optional<B>, Optional<C>> withNullable2(A a, @Nullable B b, @Nullable C c); @Override A getA(); @Override B getB(); @Override C getC();  }
@Test @DisplayName(NOT_ACCEPT_NULLS) void passNullToleranceCheck() { new NullPointerTester().setDefault(Message.class, TestValues.newUuidValue()) .setDefault(Optional.class, Optional.of(Time.currentTime())) .testAllPublicStaticMethods(Triplet.class); }