> Two biggest things so far: DeepEqual calls reflect.ValueOf on the inputs, which loses information because json.Number gets converted to a string (actually a Value whose Kind method returns reflect.String). This is bad because we want to handle strings and json.Numbers differently.

I think `TypeOf`/`value.Type()` is what you're looking for.