Remember that a function reference is an object, so we can choose them and assign them just like any object.
One place this is super useful is a case where you want to transform one object or collection to another, but with some optional difference - Say mapping from a data source form to a wire transfer form with optional child rendering.
By creating one mapping method that does not include the children, and one that does, you can write something like this
Optional<TargetType> result = sourceOptional.map( include ? Mapper::mapWithChildren : Mapper::mapWithoutChildren);
Where this gets even more useful is when you can take advantage of that and the optional nature of the return to streamline use further, through additional mapping or stream processing, or as input to another optional-accepting method like Spring's ResponseEntity.of
public ResponseEntity<WireType> getThing(Long thingId, Boolean includeChildren) {
return ResponseEntity.of(
dataService.getThing(thingId)
.map(includeChildren ? Mapper::mapWithChildren : Mapper::mapWithoutChildren)
);
}