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); }