Do we need to return a copy? I know strictly speaking we want to return an immutable object, but given that we're returning a temporary object it's pretty unlikely that it will be mutated without the callers knowledge.