> Specifying the return type adds another level of complexity, e.g. what if it doesn't match the target parameter's type?

Printing the error message in case the return type is not assignable from the target param's type is the *only* complexity that was added - having this feature or not is decided by either leaving that validation calling `isAssignable`, or replacing it with a check on `void`. ;-)

>> `return myMapper.sourceMapToTargetMap(computeInternalResult(...), new ConcurrentHashMap<>());`
> 
> I think this example should be solved differently, by declaring the return type of sourceMapToTargetMap() as ConcurrentMap. Internally ConcurrentHashMap would be used as implementation type (currently that's not yet implemented, though).

It was more an example of writing stuff in a short form when using this form of mapping methods. But I can think of some more examples where it wouldn't make sense to create individual mapping methods, but where you would like to pass some specific implementation of a target.