_mixin(items, dest, block) {
    var node
      , len = items.length;
    for (var i = 0; i < len; ++i) {
      switch ((node = items[i]).nodeName) {
        case 'return':
          return;
        case 'block':
          this._mixin(node.nodes, dest, block);
          break;
        case 'media':
          // fix link to the parent block
          var parentNode = node.block.parent.node;
          if (parentNode && 'call' != parentNode.nodeName) {
            node.block.parent = block;
          }
        case 'property':
          var val = node.expr;
          // prevent `block` mixin recursion
          if (node.literal && 'block' == val.first.name) {
            val = utils.unwrap(val);
            val.nodes[0] = new nodes.Literal('block');
          }
        default:
          dest.push(node);
      }
    }
  }
Mixin the given `items` to the `dest` array.

@param {Array} items
@param {Array} dest
@param {Block} block
@api private