From the [specs](https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/trace/api.md#tracestate): 1. All mutating operations MUST return a new TraceState with the modifications applied 2. TraceState MUST at all times be valid according to rules specified in W3C Trace Context [specs](https://www.w3.org/TR/trace-context/#mutating-the-tracestate-field) 3. Error handling -> must not return null or throw an exception (should log)