When in a json+ld response the @context is top-level and multiple subjects are described in the @graph part, pass on the context into the recursion. Also, if a local @context is found in the description of a single subject, let it override (merge with) the global context, as expected.
Let the caller of deserialize specify an id where the call was done for - so if multiple subjects are described we can pick the right one for top level.