title: Use another MapStruct mapper only inside an expression clause
body: <p>I have a mapper that, for a particular attribute of the target class, needs to choose one from a list of objects inside the source object, and map it using a differente mapper class.</p>
  <p>Simplifying it a lot, the <code>Game</code> class contains a list of <code>Transaction</code> objects, and my <code>GameMapper</code> class looks like this:</p>
  <pre><code>@Component
  @Mapper(injectionStrategy = InjectionStrategy.CONSTRUCTOR, uses = {TransactionMapper.class, EventMapper.class})
  public interface GameMapper {
  
  @Mapping(target = &quot;transaction&quot;, 
      expression = &quot;java(transactionMapper.transactionToDto(findTransactionForPlayer(game, idPlayer)))&quot;)
  GameResultDto gameToGameResultDto(Game game, Long idPlayer);
  
  // Some more methods
  
  }
  
  </code></pre>
  <p>The thing is, <code>EventMapper</code> gets generated as a <code>private final EventMapper eventMapper;</code> attribute inside <code>GameMapperImpl</code>, but <code>TransactionMapper</code> is not, so the build fails because MapStruct cannot find <code>transactionMapper</code>.</p>
  <p>My best guess is that this is due to no other methods in <code>GameMapper</code> using <code>TransactionMapper</code> explicitly, so Mapstruct decides that it's not needed and doesn't inject it in the implementation.</p>
  <p>So... is there any way to force MapStruct to include the mappers in the <code>uses</code> clause, even it if looks like they are not being used, or any other way to work around this?</p>