/// <exception cref="System.IO.IOException"/>
        public static CachePoolInfo ReadCachePoolInfo(DataInput @in)
        {
            string        poolName = ReadString(@in);
            CachePoolInfo info     = new CachePoolInfo(poolName);
            int           flags    = ReadInt(@in);

            if ((flags & unchecked ((int)(0x1))) != 0)
            {
                info.SetOwnerName(ReadString(@in));
            }
            if ((flags & unchecked ((int)(0x2))) != 0)
            {
                info.SetGroupName(ReadString(@in));
            }
            if ((flags & unchecked ((int)(0x4))) != 0)
            {
                info.SetMode(FsPermission.Read(@in));
            }
            if ((flags & unchecked ((int)(0x8))) != 0)
            {
                info.SetLimit(ReadLong(@in));
            }
            if ((flags & unchecked ((int)(0x10))) != 0)
            {
                info.SetMaxRelativeExpiryMs(ReadLong(@in));
            }
            if ((flags & ~unchecked ((int)(0x1F))) != 0)
            {
                throw new IOException("Unknown flag in CachePoolInfo: " + flags);
            }
            return(info);
        }