'Resolve multiple attributes for a subject.
Results will be returned in arbitrary order (i.e. not ordered by attribute
or timestamp).
Args:
subject: The subject to resolve.
attributes: The attribute string or list of strings to match. Note this is
an exact match, not a regex.
timestamp: A range of times for consideration (In
microseconds). Can be a constant such as ALL_TIMESTAMPS or
NEWEST_TIMESTAMP or a tuple of ints (start, end).
limit: The maximum total number of results we return.
token: The security token used in this call.
Yields:
A unordered list of (attribute, value string, timestamp).
Raises:
AccessError: if anything goes wrong.'

def ResolveMulti(self, subject, attributes, timestamp=None, limit=None, token=None):

    subject = utils.SmartStr(subject)
    if isinstance(attributes, basestring):
        attributes = [utils.SmartStr(attributes)]
    else:
        attributes = [utils.SmartStr(x) for x in attributes]
    filter_union = []
    for attribute in attributes:
        (family, column) = self.GetFamilyColumn(attribute)
        col_filter = row_filters.ColumnRangeFilter(family, start_column=column, end_column=column)
        filter_union.append(col_filter)
    if (len(filter_union) > 1):
        filter_union = row_filters.RowFilterUnion(filters=filter_union)
    else:
        filter_union = filter_union[0]
    timestamp_filter = self._TimestampToFilter(timestamp)
    if timestamp_filter:
        row_filter = row_filters.RowFilterChain(filters=[filter_union, timestamp_filter])
    else:
        row_filter = filter_union
    row_data = self.CallWithRetry(self.table.read_row, 'read', subject, filter_=row_filter)
    if row_data:
        max_results = (limit or (2 ** 64))
        for (column, cells) in row_data.cells[family].iteritems():
            attribute = ':'.join((family, column))
            for cell in cells:
                if (max_results <= 0):
                    raise StopIteration
                max_results -= 1
                (yield (attribute, self.Decode(attribute, cell.value), self.DatetimeToMicroseconds(cell.timestamp)))
