'Runs this query.
Similar to datastore.Query.Run.
Assumes that limit == -1 or > 0
Args:
args: arguments used to bind to references in the compiled query object.
keyword_args: dictionary-based arguments (for named parameters).
Returns:
A list of results if a query count limit was passed.
A result iterator if no limit was given.'

def Run(self, *args, **keyword_args):

    bind_results = self.Bind(args, keyword_args)
    offset = self.offset()
    if (self.__limit == (-1)):
        it = bind_results.Run()
        try:
            for _ in xrange(offset):
                it.next()
        except StopIteration:
            pass
        return it
    else:
        res = bind_results.Get(self.__limit, offset)
        return res
