al previous = io.open(file)
  if previous then
    previous:close()
    previous = dofile(file)
  else
    previous = {}
  end
  
  local results = {}
  for index, source in ipairs(cases) do
    local expected = previous[index]
    local actual = parser:evaluate(source)
    if expected then
      local matcher = Matcher{ metatable = false }
      local success, errmsg = matcher:match(expected, actual)
      if not success then
        io.stderr:write(message:format(index, errmsg))
      end
    else
      e