def find_keyword(*args)
      body, list = _extract_token_search_args(args)
      list.map! {|x| x.to_s}
      lexed = lex(body)
      lexed.find.with_index do |tok, idx|
        is_keyword = tok.type == :on_kw && list.include?(tok.body)
        is_not_symbol = idx == 0 || lexed[idx-1].type != :on_symbeg
        is_keyword && is_not_symbol
      end
    end
def find_keyword(*args)
      body, list = _extract_token_search_args(args)
      list.map! {|x| x.to_s}
      lexed = lex(body)
      lexed.find.with_index do |tok, idx|
        is_keyword = tok.type == :on_kw && list.include?(tok.body)
        is_not_symbol = idx == 0 || lexed[idx-1].type != :on_symbeg
        is_keyword && is_not_symbol
      end
    end
Searches for the given token using standard [body], target symbols syntax.
 Yields for each token found that matches the query, and returns all those
 who match.

 @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<Array>] All the matching tokens for the query
 @deprecated

 def select_token(*args)
   body, list = _extract_token_search_args(args)
   result = []
   while (token = find_token(body, *list)) && token != nil
     result << token if yield(*token)
     _, body = split_on_token(body, *list)
     body = body[token.body.size..-1]
   end
   return result
 end
 Finds the first instance of a set of keywords 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] keyword The rest of the arguments are keywords to search
   for. Any number of keywords may be specified.
 @return [Array] the token in the form returned by Ripper. See #lex.