/// <summary>
 /// Is called by the communicator every time a message is received from Python by the SideChannel.
 /// Can be called multiple times per simulation step if multiple messages were sent.
 /// </summary>
 /// <param name="msg">The incoming message.</param>
 protected abstract void OnMessageReceived(IncomingMessage msg);
 /// <inheritdoc/>
 protected override void OnMessageReceived(IncomingMessage msg)
 {
     throw new UnityAgentsException("StatsSideChannel should never receive messages.");
 }
 /// <inheritdoc/>
 protected override void OnMessageReceived(IncomingMessage msg)
 {
     m_MessagesReceived.Add(msg.GetRawBytes());
 }