bubble(node) {
    var props = []
      , other = []
      , self = this;

    function filterProps(block) {
      block.nodes.forEach(function (node) {
        node = self.visit(node);

        switch (node.nodeName) {
          case 'property':
            props.push(node);
            break;
          case 'block':
            filterProps(node);
            break;
          default:
            other.push(node);
        }
      });
    }

    filterProps(node.block);

    if (props.length) {
      var selector = new nodes.Selector([new nodes.Literal('&')]);
      selector.lineno = node.lineno;
      selector.column = node.column;
      selector.filename = node.filename;
      selector.val = '&';

      var group = new nodes.Group;
      group.lineno = node.lineno;
      group.column = node.column;
      group.filename = node.filename;

      var block = new nodes.Block(node.block, group);
      block.lineno = node.lineno;
      block.column = node.column;
      block.filename = node.filename;

      props.forEach(function (prop) {
        block.push(prop);
      });

      group.push(selector);
      group.block = block;

      node.block.nodes = [];
      node.block.push(group);
      other.forEach(function (n) {
        node.block.push(n);
      });

      var group = this.closestGroup(node.block);
      if (group) node.group = group.clone();

      node.bubbled = true;
    }
  }
Bubble up the given `node`.

@param {Node} node
@api private