/// <summary>
        /// Initializes a new empty instance of the <see cref="MethodUrlsSubset"/> class.
        /// </summary>
        /// <param name="_engine">The engine.</param>
        internal BistroMethod(EngineControllerDispatcher _engine)
        {
            bindPointsList = new List<IMethodsBindPointDesc>();
            bindingsList = new List<MethodBinding>();
			pointBindRelation = new Dictionary<IMethodsBindPointDesc, List<MethodBinding>>();
            engine = _engine;
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="GenBindingTuple"/> class.
        /// </summary>
        /// <param name="_verbNormalizedUrl">The bind url with verb in form verb/url (i.e. GET/a/b/c/).</param>
        /// <param name="_engine">The methods engine.</param>
        internal MethodBindingTuple(string _verbNormalizedUrl ,EngineControllerDispatcher _engine)
        {
            PositiveBind = new MethodBinding(_verbNormalizedUrl, true, _engine);
            NegativeBind = new MethodBinding(_verbNormalizedUrl, false, _engine);
            Processed = false;

            engine = _engine;
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="MethodUrlsSubset"/> class. 
        /// Copies contents of the old bindings list and adds new to the new list GenBinding.
        /// </summary>
        /// <param name="_engine">The engine.</param>
        /// <param name="oldBindingsList">Old bindings list.</param>
        /// <param name="newBinding">The new binding.</param>
        private BistroMethod(EngineControllerDispatcher _engine, List<MethodBinding> oldBindingsList, MethodBinding newBinding)
        {
            engine = _engine;
            
            bindingsList = new List<MethodBinding>(oldBindingsList);
            bindingsList.Add(newBinding);


        }
        /// <summary>
        /// Initializes a new instance of the <see cref="SubSetsProcessor"/> class.
        /// </summary>
        /// <param name="_engine">The engine.</param>
        public MethodsProcessor(EngineControllerDispatcher _engine)
        {
            engine = _engine;
            allMethods = new List<BistroMethod>();
            allBindings = new List<MethodBindingTuple>();
            // We need to have at least one empty method. Otherwise it will be impossible to create new non-empty methods.
            allMethods.Add(new BistroMethod(_engine));


        }
        /// <summary>
        /// The only constructor, which splits url to the items.
        /// </summary>
        /// <param name="_verbNormalizedUrl">The bind url with verb in form verb/url (i.e. GET/a/b/c/).</param>
        /// <param name="_matchStatus">status - whether target half of the url field must match this bind, or not.</param>
        public MethodBinding(string _verbNormalizedUrl, bool _matchStatus, EngineControllerDispatcher _engine)
        {
            engine = _engine;
            InitialUrl = _verbNormalizedUrl;
            MatchStatus = _matchStatus;

            items = GetSplitItems(InitialUrl, out totalLength, out lengthWithoutEndParams);

        }