CompositeOperationProvider
In some cases, different objects have different rules regarding the operations they support whether it be the insertion methods that are support or the logic through which we identify their matching keys. In this case, the developer should create multiple OperationProviders and pass them through the CompositeOperationProvider.