private void StartRootContext <TContextData>(RDataContext <TContextData> context, bool immediately = false)
            where TContextData : class, new()
        {
            if (!CheckAuthorized("start root context " + context.Name))
            {
                return;
            }

            var request = new Requests.Contexts.StartContextRequest <TContextData>(context);

            CoroutineManager.StartCoroutine(Send <Requests.Contexts.StartContextRequest <TContextData>, BooleanResponse>(request, immediately));
        }
        public void StartContext <TContextData>(RDataContext <TContextData> context, RDataBaseContext parentContext = null, bool immediately = false)
            where TContextData : class, new()
        {
            if (!CheckAuthorized("start context " + context.Name))
            {
                return;
            }

            if (parentContext == null)
            {
                parentContext = _authorizationContext;
            }

            parentContext.AddChild(context);

            var request = new Requests.Contexts.StartContextRequest <TContextData>(context);

            CoroutineManager.StartCoroutine(Send <Requests.Contexts.StartContextRequest <TContextData>, BooleanResponse>(request, immediately));
        }