void OIDTree::remove_subtree(OID root_oid)
{
  _map_lock.lock();

  // Create a temporary copy, to avoid iterating over the map we're
  // deleting items from.
  OIDMap tmp_oidmap = _oidmap;
  for(OIDMap::iterator it = tmp_oidmap.begin();
      it != tmp_oidmap.end();
      ++it)
  {
    OID this_oid = it->first;
    if (root_oid.subtree_contains(this_oid))
    {
      _oidmap.erase(this_oid);
    }
  }
  _map_lock.unlock();
}