// Token: 0x06002764 RID: 10084 RVA: 0x0008FFC8 File Offset: 0x0008E1C8
        private void Initialize(BinaryReader reader)
        {
            if (reader == null)
            {
                throw new ArgumentNullException("reader");
            }
            ClaimsPrincipal.SerializationMask serializationMask = (ClaimsPrincipal.SerializationMask)reader.ReadInt32();
            int num  = reader.ReadInt32();
            int num2 = 0;

            if ((serializationMask & ClaimsPrincipal.SerializationMask.HasIdentities) == ClaimsPrincipal.SerializationMask.HasIdentities)
            {
                num2++;
                int num3 = reader.ReadInt32();
                for (int i = 0; i < num3; i++)
                {
                    this.m_identities.Add(this.CreateClaimsIdentity(reader));
                }
            }
            if ((serializationMask & ClaimsPrincipal.SerializationMask.UserData) == ClaimsPrincipal.SerializationMask.UserData)
            {
                int count = reader.ReadInt32();
                this.m_userSerializationData = reader.ReadBytes(count);
                num2++;
            }
            for (int j = num2; j < num; j++)
            {
                reader.ReadString();
            }
        }
        /// <summary />
        /// <param name="writer" />
        /// <param name="userData" />
        // Token: 0x06002766 RID: 10086 RVA: 0x00090068 File Offset: 0x0008E268
        protected virtual void WriteTo(BinaryWriter writer, byte[] userData)
        {
            if (writer == null)
            {
                throw new ArgumentNullException("writer");
            }
            int num = 0;

            ClaimsPrincipal.SerializationMask serializationMask = ClaimsPrincipal.SerializationMask.None;
            if (this.m_identities.Count > 0)
            {
                serializationMask |= ClaimsPrincipal.SerializationMask.HasIdentities;
                num++;
            }
            if (userData != null && userData.Length != 0)
            {
                num++;
                serializationMask |= ClaimsPrincipal.SerializationMask.UserData;
            }
            writer.Write((int)serializationMask);
            writer.Write(num);
            if ((serializationMask & ClaimsPrincipal.SerializationMask.HasIdentities) == ClaimsPrincipal.SerializationMask.HasIdentities)
            {
                writer.Write(this.m_identities.Count);
                foreach (ClaimsIdentity claimsIdentity in this.m_identities)
                {
                    claimsIdentity.WriteTo(writer);
                }
            }
            if ((serializationMask & ClaimsPrincipal.SerializationMask.UserData) == ClaimsPrincipal.SerializationMask.UserData)
            {
                writer.Write(userData.Length);
                writer.Write(userData);
            }
            writer.Flush();
        }