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 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 IQuery Has(string key, object value)
        {
            QueryContract.ValidateHas(key, value);

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

            HasContainers.Add(new HasContainer(key, value, Compare.Equal));
            return(this);
        }