Just for my own understanding, the only reason with it is `<T extends Object>` here instead of just `<T>` is because `toPrimitives` returns an `Object` and the generic property `value` has to be at least a subclass of `Object`?