### Question:
Guard implements Internal<Guard<S, T>, T> { public static <T> Guard<Chain<T>, T> call(@NonNull Callable<T> callable) { return new Guard<>(new Chain<T>(null, InternalConfiguration.getInstance(null)).access(), callable); } private  Guard(Proxy<S, T> proxy, Exception error);   Guard(Proxy<S, T> proxy, Callable<T> callable); static Guard<Chain<T>, T> call(@NonNull Callable<T> callable); S onErrorReturnItem(@NonNull T item); Guard<S, T> guard(final @NonNull Function<T, T> action); Guard<S, T> apply(Consumer<T> action); S onErrorReturn(@NonNull Function<Throwable, T> function); void onError(Consumer<Exception> consumer); Logger<Guard<S, T>, T> log(Object tag); Optional<R> onErrorMapItem(R mappedItem); @Override Proxy<Guard<S, T>, T> access(); Optional<R> onErrorMap(Function<Throwable, R> mapperFunction);  }### Answer:
@Test public void callWithSetTextOnTestClassThenFindTextValueUpdated() { final TestClass[] result = {new TestClass()}; Guard.call(new Callable<TestClass>() { @Override public TestClass call() throws Exception { result[0].text = "!"; return result[0]; } }); assertEquals("!", result[0].text); }
@Test public void callWithExceptionThenDoNotThrowException() { Guard.call(new Callable<TestClass>() { @Override public TestClass call() throws Exception { throw new UnsupportedOperationException(); } }); }
@Test public void runGuardProxyTester() { Guard<?, Integer> guard = Guard.call(new Callable<Integer>() { @Override public Integer call() throws Exception { return 0; } }); new ProxyTester<>(guard, 1).run(); }