'MultiSet.'

def MultiSet(self, subject, values, timestamp=None, replace=True, sync=True, to_delete=None, token=None):

    request = rdf_data_store.DataStoreRequest(sync=sync)
    token = (token or data_store.default_token)
    if token:
        request.token = token
    request.subject.Append(subject)
    now = (time.time() * 1000000)
    if ((timestamp is None) or (timestamp == self.NEWEST_TIMESTAMP)):
        timestamp = now
    to_delete = set((to_delete or []))
    for attribute in to_delete:
        if (attribute not in values):
            values[attribute] = [(None, 0)]
    for (k, seq) in values.items():
        for v in seq:
            if isinstance(v, basestring):
                element_timestamp = timestamp
            else:
                try:
                    (v, element_timestamp) = v
                except (TypeError, ValueError):
                    element_timestamp = timestamp
            option = rdf_data_store.DataStoreValue.Option.DEFAULT
            if (replace or (k in to_delete)):
                option = rdf_data_store.DataStoreValue.Option.REPLACE
            new_value = request.values.Append(attribute=utils.SmartUnicode(k), option=option)
            if (element_timestamp is None):
                element_timestamp = now
            new_value.timestamp = self.TimestampSpecFromTimestamp(element_timestamp)
            if (v is not None):
                new_value.value.SetValue(v)
    typ = rdf_data_server.DataStoreCommand.Command.MULTI_SET
    self._MakeRequestSyncOrAsync(request, typ, sync)
