public static object Load(ReaderSites /*!*/ sites, RespondToStorage /*!*/ respondToStorage,
RubyScope /*!*/ scope, RubyModule /*!*/ self, object source, [Optional] Proc proc)
{
Stream stream = null;
if (source != null)
{
stream = RubyIOOps.CreateIOWrapper(respondToStorage, source, FileAccess.Read);
}
if (stream == null || !stream.CanRead)
{
throw RubyExceptions.CreateTypeError("instance of IO needed");
}
BinaryReader reader = new BinaryReader(stream);
MarshalReader loader = new MarshalReader(sites, reader, scope.GlobalScope, proc);
return(loader.Load());
}