private BaseNode DoSPList(Microsoft.SharePoint.Client.List list, BaseNode parentNode, BaseNode rootNode) { list.EnsureProperties(l => l.RootFolder, l => l.BaseType, l => l.ContentTypes, l => l.Fields); ListNode listNode = parentNode as ListNode; // Add Content Type Container node BaseNode listContentTypeContainerNode = new ContentTypeContainerNode(list.ContentTypes); listNode.Children.Add(listContentTypeContainerNode); listContentTypeContainerNode.ParentNode = listNode; listContentTypeContainerNode.RootNode = rootNode; listContentTypeContainerNode.NodeConnector = this; // Add Field Container node BaseNode fieldContainerNode = new FieldContainerNode(list.Fields); listNode.Children.Add(fieldContainerNode); fieldContainerNode.ParentNode = listNode; fieldContainerNode.RootNode = rootNode; fieldContainerNode.NodeConnector = this; // Add immediate children of the root folder BaseNode rootFolder = this.DoSPFolder(list.RootFolder, listNode, rootNode, true); foreach (var subFolder in rootFolder.Children) { listNode.Children.Add(subFolder); } return(listNode); }