Extracting MultiMethodFactory caching functionality to separate class