Currently Java internally adds a type at the start of each protocol message's error list for system errors. This is used when an exception is encountered on the server while executing an RPC that does not match one of the messages declared errors. The type is "string", so it will never conflict with another error, since all other errors are defined as records.
For example, if a protocol has a message like:
Then errors are written and read with the schema ["string", "MyError"], although that schema never appears publicly.
This should either be documented or changed.