internal Categories(CategoriesApi api, ISession session, string @namespace, CoroutineRunner coroutineRunner)
        {
            Assert.IsNotNull(api, "api parameter can not be null.");
            Assert.IsNotNull(session, "session parameter can not be null");
            Assert.IsFalse(string.IsNullOrEmpty(@namespace), "ns paramater couldn't be empty");
            Assert.IsNotNull(coroutineRunner, "coroutineRunner parameter can not be null. Construction failed");

            this.api             = api;
            this.session         = session;
            this.@namespace      = @namespace;
            this.coroutineRunner = coroutineRunner;
        }
        internal Categories(CategoriesApi api, User user, AsyncTaskDispatcher taskDispatcher,
                            CoroutineRunner coroutineRunner)
        {
            Assert.IsNotNull(api, "Can't construct Catalog manager; CatalogService parameter is null!");
            Assert.IsNotNull(user, "Can't construct Catalog manager; UserAccount parameter isnull!");
            Assert.IsNotNull(taskDispatcher, "taskReactor must not be null");
            Assert.IsNotNull(coroutineRunner, "coroutineRunner must not be null");

            this.api             = api;
            this.user            = user;
            this.taskDispatcher  = taskDispatcher;
            this.coroutineRunner = coroutineRunner;
        }