public string GetLineTextAtOffset(int offset)
        {
            FileStream stream = new FileStream (fileName, FileMode.Open, FileAccess.Read);
            try {
                ExtendedStreamReader streamReader = new ExtendedStreamReader (new StreamReader (stream));
                streamReader.Position = offset;

                int lastPos;
                int b;
                do {
                    lastPos = streamReader.Position;
                    b = streamReader.ReadBack ();
                } while (b != -1 && b != 10 && b != 13);

                streamReader.Position = lastPos;
                StringBuilder sb = new StringBuilder ();
                b = streamReader.Read ();
                while (b != -1 && b != 10 && b != 13) {
                    sb.Append ((char)b);
                    b = streamReader.Read ();
                }
                return sb.ToString ();
            } finally {
                stream.Close ();
            }
        }