class Mustache::Template

def token_names

def token_names
  def recursor(toks, section)
    toks.map do |token|
      next unless token.is_a? Array
      if token[0] == :mustache && [:etag,:utag].include? token[1]
        (section + [token[2][2][0]]).join '.'
      elsif token[0] == :mustache && [:section,:inverted_section].include? token[1]
        recursor(token[4], section + [token[2][2][0]])
      else
        recursor(token, section)
      end
    end
  end
  recursor(tokens, []).flatten.reject(&:nil?).uniq
end