### Question:
Match extends AbstractMatch { public R orElseGet(Supplier<? extends R> other) { return result.orElseGet(other::get); } private  Match(Object o); Match<R> when(Class<T> type, Function<T, ? extends R> statement); Optional<R> get(); R orElseGet(Supplier<? extends R> other); static Match<R> match(Object o);  }### Answer:
@Test void orElseGet() { var list = List.of("list"); var result = Match.<String>match(list) .when(String.class, type -> "String") .when(Map.class, type -> "List2") .orElseGet(() -> "orElseGet"); assertTrue(result.equals("orElseGet")); }