internal int CreateEphemeralId(Guid guid, EphemeralIdTable.NamingContext namingContext)
        {
            int count;

            if (!this.guidToEphemeralId.TryGetValue(guid, out count))
            {
                count = this.ephemeralIdToEntry.Count;
                this.ephemeralIdToEntry.Add(new EphemeralIdTable.Entry(guid, namingContext));
                this.guidToEphemeralId.Add(guid, count);
            }
            return(-(count + 16));
        }
 internal void ConvertIdsToGuids(int[] ids, out Guid[] guids, out EphemeralIdTable.NamingContext[] contexts)
 {
     guids    = new Guid[ids.Length];
     contexts = new EphemeralIdTable.NamingContext[ids.Length];
     for (int i = 0; i < ids.Length; i++)
     {
         Guid guid;
         EphemeralIdTable.NamingContext namingContext;
         this.GetGuid(ids[i], out guid, out namingContext);
         guids[i]    = guid;
         contexts[i] = namingContext;
     }
 }
 internal bool GetGuid(int id, out Guid guid, out EphemeralIdTable.NamingContext namingContext)
 {
     if (!this.IsAddressBookEphemeralId(id))
     {
         guid          = EphemeralIdTable.InvalidGuid;
         namingContext = EphemeralIdTable.NamingContext.Invalid;
         return(false);
     }
     id = -id;
     EphemeralIdTable.Entry entry = this.ephemeralIdToEntry[id - 16];
     guid          = entry.Guid;
     namingContext = entry.NamingContext;
     return(true);
 }
 internal Entry(Guid guid, EphemeralIdTable.NamingContext namingContext)
 {
     this.Guid          = guid;
     this.NamingContext = namingContext;
 }