Only bother to deal with arrays as references if what we have is actually a reference
Only use array references to detect recursion (to avoid O(n^2) time)
Re-order methods
Formatting
Enabled Value::introspectValue() and Value::introspectRef() to accept an IntrospectionSettings
introspectValue() => introspect()