def _UpdateChildIndex(self, urn, token, mutation_pool=None):
    try:
      # Create navigation aids by touching intermediate subject names.
      while urn.Path() != "/":
        basename = urn.Basename()
        dirname = rdfvalue.RDFURN(urn.Dirname())

        try:
          self.intermediate_cache.Get(urn)
          return
        except KeyError:
          attributes = {
              # This updates the directory index.
              "index:dir/%s" % utils.SmartStr(basename): [EMPTY_DATA],
          }
          # This is a performance optimization. On the root there is no point
          # setting the last access time since it gets accessed all the time.
          # TODO(user): Can we get rid of the index in the root node entirely?
          # It's too big to query anyways...
          if dirname != u"/":
            attributes[AFF4Object.SchemaCls.LAST] = [
                rdfvalue.RDFDatetime().Now().SerializeToDataStore()]

          if mutation_pool:
            mutation_pool.MultiSet(dirname, attributes, replace=True)
          else:
            data_store.DB.MultiSet(dirname, attributes,
                                   token=token, replace=True, sync=False)

          self.intermediate_cache.Put(urn, 1)

          urn = dirname

    except access_control.UnauthorizedAccess:
      pass
Gets the alias for the field or the auto_alias if one is set.
dataset/ETHPy150Open google/grr/grr/lib/aff4.py/Factory._UpdateChildIndex--crossover with--dataset/ETHPy150Open ambitioninc/django-query-builder/querybuilder/fields.py/Field.get_alias