code: func ReadJSON(data []byte, value interface{}) error {
  	trimmedData := bytes.Trim(data, "\x00")
  	if d, ok := value.(ejUnmarshaler); ok {
  		jl := &jlexer.Lexer{Data: trimmedData}
  		d.UnmarshalEasyJSON(jl)
  		return jl.Error()
  	}
  	if d, ok := value.(json.Unmarshaler); ok {
  		return d.UnmarshalJSON(trimmedData)
  	}
  	return json.Unmarshal(trimmedData, value)
  }
docs: // ReadJSON reads json data, prefers finding an appropriate interface to short-circuit the unmarshaller
  // so it takes the fastes option available