def find_token(*args)
      body, list = _extract_token_search_args(args)
      # grr match comment with encoding in it
      lexed = lex(body)
      lexed.find.with_index do |tok, idx|
        is_token = list.include?(tok.type)
        is_not_symbol = idx == 0 || lexed[idx-1].type != :on_symbeg
        is_token && is_not_symbol
      end
    end
def find_token(*args)
      body, list = _extract_token_search_args(args)
      # grr match comment with encoding in it
      lexed = lex(body)
      lexed.find.with_index do |tok, idx|
        is_token = list.include?(tok.type)
        is_not_symbol = idx == 0 || lexed[idx-1].type != :on_symbeg
        is_token && is_not_symbol
      end
    end
Finds the first instance of a set of tokens in the body. If no text is
 given to scan, then the full content is scanned.

 @param [String] body (self.body) The first parameter is optional: the text
   to search. This defaults to the full text.
 @param [Symbol] token The rest of the arguments are tokens to search
   for. Any number of tokens may be specified.
 @return [Array] the token in the form returned by Ripper. See #lex.