There's no "correct" way to handle this. That comes down to the needs of the project. We can comment on the complexity though, which will have an effect on how easy it is to manage the code going forward.
If the Object is stateless or a singleton, it'll be easy to manage. All references to it will predictably behave the same way. For example:
latestMath = someclass.getMathAfterAdd(1, 2)
// It doesn't matter which Math obj you have since it doesn't store state
// latestMath.add() will do the same as Math.add() with no side effects
If the Object has state the complexity increases since
b.name = 'changed' will change
a.name in the other objects that reference the same object. You can mitigate this increase somewhat by making the state changes transparent. How complexity increases:
updatedPerson = someclass.changePersonName('joe')
// is updatedPerson.name == 'joe'? I'd assume so
// is person.name == 'joe'? hmmm
// is anotherclass.person.name == 'joe'? hmmm
Whether or not the increased complexity is worth it is situational.