private void RemoveChildren(Transaction tran, MappedObject root, ref List<MappedObject> objects) {
List<MappedObject> children = objects.FindAll(o => o.ParentId == root.RemoteObjectId);
objects.RemoveAll(o => o.ParentId == root.RemoteObjectId);
foreach (var child in children) {
this.RemoveChildren(tran, child, ref objects);
tran.RemoveKey<string>(MappedObjectsTable, child.RemoteObjectId);
tran.RemoveKey<byte[]>(MappedObjectsGuidsTable, child.Guid.ToByteArray());
}
}