public IQuery Limit(long max)
        {
            QueryContract.ValidateLimit(max);

            Query = Query.Limit(max) as IVertexQuery;
            return(this);
        }
        public IQuery Has <T>(string key, Compare compare, T value)
        {
            QueryContract.ValidateHas(key, compare, value);

            Query = Query.Has(key, compare, value) as IVertexQuery;
            return(this);
        }
        public IQuery Interval <T>(string key, T startValue, T endValue)
        {
            QueryContract.ValidateInterval(key, startValue, endValue);

            Query = Query.Interval(key, startValue, endValue) as IVertexQuery;
            return(this);
        }
        public IQuery Has(string key, object value)
        {
            QueryContract.ValidateHas(key, value);

            Query = Query.Has(key, value) as IVertexQuery;
            return(this);
        }
        public virtual IQuery Limit(long max)
        {
            QueryContract.ValidateLimit(max);

            Innerlimit = max;
            return(this);
        }
        public virtual IQuery Has <T>(string key, Compare compare, T value)
        {
            QueryContract.ValidateHas(key, compare, value);

            HasContainers.Add(new HasContainer(key, value, compare));
            return(this);
        }
        public virtual IQuery Has(string key, object value)
        {
            QueryContract.ValidateHas(key, value);

            HasContainers.Add(new HasContainer(key, value, Compare.Equal));
            return(this);
        }
        public virtual IQuery Interval <T>(string key, T startValue, T endValue)
        {
            QueryContract.ValidateInterval(key, startValue, endValue);

            HasContainers.Add(new HasContainer(key, startValue, Compare.GreaterThanEqual));
            HasContainers.Add(new HasContainer(key, endValue, Compare.LessThan));
            return(this);
        }