private static RubyIO/*!*/ Reopen(ConversionStorage<MutableString>/*!*/ toPath, RubyIO/*!*/ io, object pathObj, IOInfo info) {
MutableString path = Protocols.CastToPath(toPath, pathObj);
Stream newStream = RubyFile.OpenFileStream(io.Context, path.ToString(path.Encoding.Encoding), info.Mode);
io.Context.SetStream(io.GetFileDescriptor(), newStream);
io.SetStream(newStream);
io.Mode = info.Mode;
if (info.HasEncoding) {
io.ExternalEncoding = info.ExternalEncoding;
io.InternalEncoding = info.InternalEncoding;
}
return io;
}