code: function(){
                  /*
                   * negation_arg
                   *   : type_selector | universal | HASH | class | attrib | pseudo
                   *   ;
                   */
  
                  var tokenStream = this._tokenStream,
                      args        = [
                          this._type_selector,
                          this._universal,
                          function(){
                              return tokenStream.match(Tokens.HASH) ?
                                      new SelectorSubPart(tokenStream.token().value, "id", tokenStream.token().startLine, tokenStream.token().startCol) :
                                      null;
                          },
                          this._class,
                          this._attrib,
                          this._pseudo
                      ],
                      arg         = null,
                      i           = 0,
                      len         = args.length,
                      line,
                      col,
                      part;
  
                  line = tokenStream.LT(1).startLine;
                  col = tokenStream.LT(1).startCol;
  
                  while(i < len && arg === null){
  
                      arg = args[i].call(this);
                      i++;
                  }
  
                  //must be a negation arg
                  if (arg === null){
                      this._unexpectedToken(tokenStream.LT(1));
                  }
  
                  //it's an element name
                  if (arg.type === "elementName"){
                      part = new SelectorPart(arg, [], arg.toString(), line, col);
                  } else {
                      part = new SelectorPart(null, [arg], arg.toString(), line, col);
                  }
  
                  return part;
              }
docs: CSS3 Selectors