static bool compareTypeReferences(Type a, TypeReference b) { if (a.IsGenericParameter || a.IsPointer || a.IsByRef || a.IsArray) return false; if (a.Name != b.Name) return false; if ((a.Namespace ?? "") != b.Namespace) return false; var asmRef = DotNetUtils.getAssemblyNameReference(b); var asmName = a.Assembly.GetName(); if (asmRef.Name != asmName.Name) return false; return compareTypes(a.DeclaringType, b.DeclaringType); }