/// <exception cref="System.IO.IOException"/>
        private IPortable Read(IBufferObjectDataInput @in, int factoryId, int classId)
        {
            int                   version         = @in.ReadInt();
            IPortable             portable        = CreateNewPortableInstance(factoryId, classId);
            int                   portableVersion = FindPortableVersion(factoryId, classId, portable);
            DefaultPortableReader reader          = CreateReader(@in, factoryId, classId, version, portableVersion);

            portable.ReadPortable(reader);
            reader.End();
            return(portable);
        }