Using ReferenceHandling.Preserve, having a start object or start array as the value for metadata properties $id and $ref, causes the deserialize method to throw NullReferenceException.
We should prevent such behavior and throw a meaningful exception instead.
cc @ahsonkhan