private IList <Type> GetSerializationTypes(Type t)
 {
     if (GenericUtils.IsSubClassOfGeneric(t, typeof(IReliableDictionary <,>)))
     {
         var ts = new List <Type>()
         {
             typeof(NotifyDictionaryItemAddedEventArgs <,>).MakeGenericType(t.GetGenericArguments()),
             typeof(NotifyDictionaryClearEventArgs <,>).MakeGenericType(t.GetGenericArguments()),
             typeof(NotifyDictionaryItemRemovedEventArgs <,>).MakeGenericType(t.GetGenericArguments()),
             typeof(NotifyDictionaryItemUpdatedEventArgs <,>).MakeGenericType(t.GetGenericArguments()),
             typeof(NotifyDictionaryRebuildEventArgs <,>).MakeGenericType(t.GetGenericArguments()),
             t
         };
         ts.AddRange(t.GetGenericArguments());
         return(ts);
     }
     else
     {
         return(new List <Type>()
         {
             t
         });
     }
 }