public function readFile(string $file_name)
    {
        $contents = @file_get_contents($file_name);
        if ($contents === false)
            throw new IOException("Failed to read file contents");

        $contents = Encoding::removeBOM($contents);
        return $this->readString(file_get_contents($file_name));
    }