As mentioned by [Java_author](https://www.amazon.ca/Java-Concurrency-Practice-Tim-Peierls-ebook/dp/B004V9OA84/ref=dp_kinw_strp_1), > When defining which variables form an object's state, we want to consider only the data that object owns.... > In many case, ownership and encapsulation go together—the object encapsulates the state it owns and owns the state it encapsulates.... > A class usually does not own the objects passed to its methods or constructors, unless the method is designed to explicitly transfer ownership of objects passed in (such as the synchronized collection wrapper factory methods)... -------------------------------------------- Thinking about variables that associate as part of object's state due to association type, *aggregation* and *composition* ---------------------------------- In terms of data that object owns, 1) Can variables of an object formed due to association type *composition* should also be considered as data that object owns? To decide for that class, to ensure thread safety. 2) Amidst class maintaining generalization and association relationship with other classes, What are the actual state variables that an object actually own?