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