private IObjectTree<IMappedObject> GetSubTree(List<MappedObject> nodes, MappedObject parent) {
var children = nodes.FindAll(o => o.ParentId == parent.RemoteObjectId);
nodes.RemoveAll(o => o.ParentId == parent.RemoteObjectId);
IList<IObjectTree<IMappedObject>> childNodes = new List<IObjectTree<IMappedObject>>();
foreach (var child in children) {
childNodes.Add(this.GetSubTree(nodes, child));
}
IObjectTree<IMappedObject> tree = new ObjectTree<IMappedObject> {
Item = parent,
Children = childNodes
};
return tree;
}