void DiffNamedType(int indent, InsNamedType type1, InsNamedType type2)
            {
                FormatLabel(Similar, indent, "NamedType");

                indent++;
                DiffLiteral(indent, type1.Name, type2.Name);
                DiffType(indent, type1.DeclaringType, type2.DeclaringType);
                DiffAssembly(indent, type1.Assembly, type2.Assembly);
            }
            void FormatNamed(char prefix, int indent, InsNamedType type)
            {
                FormatLabel(prefix, indent, "NamedType");

                indent++;
                FormatLiteral(prefix, indent, type.Name);
                FormatType(prefix, indent, type.DeclaringType);
                FormatAssembly(prefix, indent, type.Assembly);
            }
            public override InsType VisitNamed(InsNamedType type, Func <string, string> mutator)
            {
                var newName = mutator(type.Name);

                if (newName == type.Name)
                {
                    return(base.VisitNamed(type, mutator));
                }

                if (type.DeclaringType != null)
                {
                    return(NestedType(
                               type.DeclaringType,
                               newName));
                }
                else
                {
                    return(NamedType(
                               newName,
                               type.Assembly == null ? null : VisitAssembly(type.Assembly, mutator)));
                }
            }