A context is a collection of all data that are fetched from the persistence unit.
So here what happens in your example:
Initially:
Context:
****************************
Empty.
****************************
After Fetch Year:
Context:
****************************
1) Year (Year.Company -> null)
****************************
After Fetch Company:
Context:
****************************
1) Year (Year.Company -> 2) //Refers to second object in the context
2) Company
****************************
After Fetching another Company
Context:
****************************
1) Year (Year.Company -> 2) //Refers to second object in the context
2) Company
3) Another Company
****************************
After Fetching the year that refers to "Another Company"
Context:
****************************
1) Year (Year.Company -> 2) //Refers to second object in the context
2) Company
3) Another Company
4) Another Year (Year.Company -> 3) //Refers to third object in the context
****************************