public bool Equals(CodeTypeReference x, CodeTypeReference y)
 {
     if (!object.ReferenceEquals(x, y))
     {
         if (((x == null) || (y == null)) || ((x.ArrayRank != y.ArrayRank) || (x.BaseType != y.BaseType)))
         {
             return(false);
         }
         CodeTypeReferenceCollection typeArguments = x.TypeArguments;
         CodeTypeReferenceCollection references2   = y.TypeArguments;
         if (references2.Count == typeArguments.Count)
         {
             foreach (CodeTypeReference reference in typeArguments)
             {
                 using (IEnumerator enumerator2 = references2.GetEnumerator())
                 {
                     while (enumerator2.MoveNext())
                     {
                         CodeTypeReference current = (CodeTypeReference)enumerator2.Current;
                         if (!this.Equals(reference, reference))
                         {
                             return(false);
                         }
                     }
                 }
             }
         }
     }
     return(true);
 }