     }
 
 
+    /// Inserts the specified item as a child of `treeNode`’s item at the specified index.
+    ///
+    /// This method works by replacing `treeNode`’s item with an edited version that has the new
+    /// item added to it. It then invokes `‑setItem:ofTreeNodeAtIndexPath:nodeOperation:`, which
+    /// handles making actual model changes and registering an appropriate undo action.
+    ///
+    /// - parameter item: The item being added. 
+    /// - parameter index: The index in `treeNode`’s item at which to add the new item.
+    /// - parameter treeNode: The tree node that is having a child added to it. Raises an
+    ///       assertion if `treeNode`’s item is not a collection.
     private func insertItem(item: PropertyListItem, atIndex index: Int, inTreeNode treeNode: PropertyListTreeNode) {
         let newItem: PropertyListItem
 

// MARK: - Converting Between Property List Types

private extension PropertyListItem {
    init(propertyListType: PropertyListType) {
        switch propertyListType {
        case .ArrayType:

    }


    /// Removes the child item at the specified index from `treeNode`’s item.
    ///
    /// This method works by replacing `treeNode`’s item with an edited version that removes the
    /// child item at the specified index. It then invokes
    /// `‑setItem:ofTreeNodeAtIndexPath:nodeOperation:`, which handles making actual model
    /// changes and registering an appropriate undo action.
    ///
    /// - parameter index: The index of the child to remove in `treeNode`’s item.
    /// - parameter treeNode: The tree node that is having a child removed from it. Raises an
    ///       assertion if `treeNode`’s item is not a collection.
    private func removeItemAtIndex(index: Int, inTreeNode treeNode: PropertyListTreeNode) {
        let newItem: PropertyListItem

