private void DoAddField(FieldReference field) { if (m_needsCheck && m_method != null) { if (!field.Name.Contains("$")) { if (field.DeclaringType.FullName == m_type.FullName) { Partition p = m_partitions.Find(x => x.Fields.IndexOf(field.Name) >= 0); if (p != null) { if (p.Methods.IndexOf(m_method) < 0) p.Methods.Add(m_method); } else { p = new Partition(field.Name, m_method); m_partitions.Add(p); } } } } }
private void DoMerge(Partition p, Partition q) { foreach (string field in q.Fields) { if (p.Fields.IndexOf(field) < 0) p.Fields.Add(field); } q.Fields.Clear(); foreach (MethodDefinition method in q.Methods) { if (p.Methods.IndexOf(method) < 0) p.Methods.Add(method); } q.Methods.Clear(); }