code: func WriteJSON(data interface{}) ([]byte, error) {
  	if d, ok := data.(ejMarshaler); ok {
  		jw := new(jwriter.Writer)
  		d.MarshalEasyJSON(jw)
  		return jw.BuildBytes()
  	}
  	if d, ok := data.(json.Marshaler); ok {
  		return d.MarshalJSON()
  	}
  	return json.Marshal(data)
  }
docs: // WriteJSON writes json data, prefers finding an appropriate interface to short-circuit the marshaller
  // so it takes the fastest option available.