### Question:
AbstractFor { public <R> Kind<F, R> returns(R other) { return monad.map(run(), ignore -> other); } protected  AbstractFor(Monad<F> monad, Function1<? super A, ? extends Kind<F, ? extends B>> value); abstract Kind<F, B> run(); R fix(Fixer<Kind<F, B>, R> fixer); void end(Consumer1<? super Kind<F, B>> consumer); Kind<F, R> returns(R other);  }### Answer:
@Test public void returns(@Mock Function1<String, String> mapper) { when(mapper.apply(anyString())).thenReturn("called"); when(mapper.andThen(any())).thenCallRealMethod(); Kind<Id_, Unit> result = For.with(IdInstances.monad()) .and("hola mundo!") .map(mapper) .returns(unit()); assertEquals(Id.of(unit()), result); verify(mapper).apply("hola mundo!"); }