### Question:
Pattern3 implements PartialFunction3<A, B, C, R> { private Pattern3() { this(Pattern1.build()); } private  Pattern3(); private  Pattern3(Pattern1<Tuple3<A, B, C>, R> pattern); @Override boolean isDefinedAt(A a, B b, C c); @Override R apply(A a, B b, C c); static Pattern3<A, B, C, R> build(); ThenStep<Pattern3<A, B, C, R>, A, B, C, R> when(Matcher3<A, B, C> matcher); ThenStep<Pattern3<A, B, C, R>, A, B, C, R> otherwise();  }### Answer:
@Test public void pattern3() { Pattern3<Object, Object, Object, Object> pattern3 = Pattern3.build() .when((a, b, c) -> a.equals(b) && b.equals(c) && a.equals(c)).returns("a equals b equals c") .otherwise().returns("not equals"); assertAll(() -> assertEquals("a equals b equals c", pattern3.apply("a", "a", "a")), () -> assertEquals("not equals", pattern3.apply("a", 12L, 2.2))); }