Avoiding TypeToken type parameter replacement with bounds