code: function(isRule) {
                  var elements, e, index = i, option, extendList, extend;
  
                  if (!(isRule ? $re(/^&:extend\(/) : $re(/^:extend\(/))) { return; }
  
                  do {
                      option = null;
                      elements = null;
                      while (! (option = $re(/^(all)(?=\s*(\)|,))/))) {
                          e = this.element();
                          if (!e) { break; }
                          if (elements) { elements.push(e); } else { elements = [ e ]; }
                      }
  
                      option = option && option[1];
  
                      extend = new(tree.Extend)(new(tree.Selector)(elements), option, index);
                      if (extendList) { extendList.push(extend); } else { extendList = [ extend ]; }
  
                  } while($char(","));
  
                  expect(/^\)/);
  
                  if (isRule) {
                      expect(/^;/);
                  }
  
                  return extendList;
              }
docs: extend syntax - used to extend selectors