code: function (src, destId, next, parent) {
              var oldId = src.id;
              src.parent = destId;
  
              async.waterfall([
                  async.apply(_getAncestorsFromImmediateParent, destId, parent),
                  function saveNodesAncestors(newAncestors, next) {
                      src.ancestors = newAncestors;
                      src._id = new ObjectId();
                      pendingInsertNodes.push(src);
                      async.parallel([
                              function findContentEntries(next) {
                                  contentModel.find({"meta.node": oldId}).exec(function (err, data) {
                                      if (err) {
                                          next(err);
                                      }
                                      else {
                                          next(null, data);
                                      }
                                  });
                              },
                              function findNodeEntries(next) {
                                  nodeModel.find({parent: oldId}).exec(function (err, data) {
                                      if (err) {
                                          next(err);
                                      }
                                      else {
                                          next(null, data);
                                      }
                                  });
                              }
                          ],
                          function handleFoundContentAndNodes(err, data) {
                              var contentEntries = data[0], nodeEntries = data[1];
                              _.each(contentEntries, function (item) {
                                  item.meta.node = src._id;
                                  item._id = new ObjectId();
                                  pendingInsertContent.push(item);
                              });
                              if (!nodeEntries.length) {
                                  next();
                              }
                              else {
                                  async.each(nodeEntries, function (item, next) {
                                      _recursiveCopyNodes(item, src._id, next, src);
                                  }, function (err) {
                                      next(err);
                                  });
                              }
                          });
  
                  }
              ], function (err) {
                  next(err);
              });
          }
docs: /* This function needs access to pending* vars