A user might have an attribute that can take an array as it's value, so just checking that value is an array is not specific enough; check specifically for composite keys object

Is it possible that we are still going to get an array value for anything? If all we're ever going to see is a single value, or `CompositeKeys`, this will be fine.
I just want to make sure we're not now failing to handle being passed an array value for any reason.