_node_add_with_peer_list

        Low-level api: Apply delta child_other to child_self when child_self is
        the peer of child_other. Element child_self and child_other are list
        nodes. Element child_self will be modified during the process. RFC6020
        section 7.8.6 is a reference of this method.

        Parameters
        ----------

        child_self : `Element`
            A child of a config node in a config tree.

        child_other : `Element`
            A child of a config node in another config tree. child_self is
            the peer of child_other.

        Returns
        -------

        None
            There is no return of this method.

def _node_add_with_peer_list(self, child_self, child_other):
        '''_node_add_with_peer_list

        Low-level api: Apply delta child_other to child_self when child_self is
        the peer of child_other. Element child_self and child_other are list
        nodes. Element child_self will be modified during the process. RFC6020
        section 7.8.6 is a reference of this method.

        Parameters
        ----------

        child_self : `Element`
            A child of a config node in a config tree.

        child_other : `Element`
            A child of a config node in another config tree. child_self is
            the peer of child_other.

        Returns
        -------

        None
            There is no return of this method.
        '''

        parent_self = child_self.getparent()
        s_node = self.device.get_schema_node(child_self)
        if child_other.get(operation_tag) != 'delete' and \
           child_other.get(operation_tag) != 'remove' and \
           s_node.get('ordered-by') == 'user' and \
           child_other.get(insert_tag) is not None:
            if child_other.get(insert_tag) == 'first':
                scope = parent_self.getchildren()
                siblings = self._get_sequence(scope, child_other.tag,
                                              parent_self)
                if siblings[0] != child_self:
                    siblings[0].addprevious(child_self)
            elif child_other.get(insert_tag) == 'last':
                scope = parent_self.getchildren()
                siblings = self._get_sequence(scope, child_other.tag,
                                              parent_self)
                if siblings[-1] != child_self:
                    siblings[-1].addnext(child_self)
            elif child_other.get(insert_tag) == 'before':
                if child_other.get(key_tag) is None:
                    _inserterror('before', self.device.get_xpath(child_other),
                                 'key')
                sibling = parent_self.find(child_other.tag +
                                           child_other.get(key_tag),
                                           namespaces=child_other.nsmap)
                if sibling is None:
                    path = self.device.get_xpath(child_other)
                    key = child_other.get(key_tag)
                    _inserterror('before', path, 'key', key)
                if sibling != child_self:
                    sibling.addprevious(child_self)
            elif child_other.get(insert_tag) == 'after':
                if child_other.get(key_tag) is None:
                    _inserterror('after', self.device.get_xpath(child_other),
                                 'key')
                sibling = parent_self.find(child_other.tag +
                                           child_other.get(key_tag),
                                           namespaces=child_other.nsmap)
                if sibling is None:
                    path = self.device.get_xpath(child_other)
                    key = child_other.get(key_tag)
                    _inserterror('after', path, 'key', key)
                if sibling != child_self:
                    sibling.addnext(child_self)
        if child_other.get(operation_tag) is None or \
           child_other.get(operation_tag) == 'merge':
            self.node_add(child_self, child_other)
        elif child_other.get(operation_tag) == 'replace':
            e = deepcopy(child_other)
            parent_self.replace(child_self, self._del_attrib(e))
        elif child_other.get(operation_tag) == 'create':
            raise ConfigDeltaError('data-exists: try to create node {} but ' \
                                   'it already exists' \
                                   .format(self.device.get_xpath(child_other)))
        elif child_other.get(operation_tag) == 'delete' or \
             child_other.get(operation_tag) == 'remove':
            parent_self.remove(child_self)
        else:
            raise ConfigDeltaError("unknown operation: node {} contains " \
                                   "operation '{}'" \
                                   .format(self.device.get_xpath(child_other),
                                           child_other.get(operation_tag)))