public Executor(TModel model, MessageContainer message)
 {
     ThreadChecker.AssertMainThread(false);
     this.forwarding      = new TExecutor();
     this.model           = model;
     this.message         = message;
     this.unpackedMessage = message.Parse <TMessage>();
 }
        public void Execute()
        {
            ThreadChecker.AssertMainThread();

            this.forwarding.Execute(this.model, this.unpackedMessage);

            if (this.unpackedMessage is IDisposable disposable)
            {
                disposable.Dispose();
            }
            this.message.ReturnBuffer();
        }