Both the IGetAndSet and ObjectAndGetSetter names contain the word "And". Why is it a bad thing? Because there are multiple concepts in the name (e.g., the concepts of getter and setter in IGetAndSet), indicating that the single concept has not been spelled out yet. For this case, for IGetAndSet, I think the single concept is "property". For ObjectAndGetSetter, the single concept is "property of a given instance". So, I'd change the code as: