public void Execute(PostCompilerContext context)
        {
            var specAssembly = Path.GetFileNameWithoutExtension(context.Args.TestAssemblyPath);
            var autoSpecs = String.Format("{0}.Fluent.SharpMock.SerializedSpecifications.xml", specAssembly);

            var serializer = new ReplaceableCodeInfoSerializer(
                Path.GetDirectoryName(context.Args.TestAssemblyPath));

            var replaceableAssignments = context.Registry.GetRegisteredReferences(ReplaceableReferenceTypes.FieldAssignment);
            var replaceableAccessors = context.Registry.GetRegisteredReferences(ReplaceableReferenceTypes.FieldAccessor);
            var replaceableMethods = context.Registry.GetRegisteredReferences(ReplaceableReferenceTypes.Method);

            var replaceableCode = new ReplaceableCodeInfo();
            replaceableCode.Methods = replaceableMethods.As<ReplaceableMethodInfo>();
            replaceableCode.FieldAccessors = replaceableAccessors.As<ReplaceableFieldInfo>();
            replaceableCode.FieldAssignments = replaceableAssignments.As<ReplaceableFieldInfo>();

            serializer.SerializeSpecifications(autoSpecs, replaceableCode);
            SerializeExplicitSpecifications(context.Args.TestAssemblyPath);
        }
        private void SerializeExplicitSpecifications(string specAssembly)
        {
            var assembly = System.Reflection.Assembly.LoadFrom(specAssembly);
            var specs = new List<Type>(assembly.GetTypes())
                .FindAll(t => typeof(IReplacementSpecification).IsAssignableFrom(t));

            var specifiedMethods = new List<ReplaceableMethodInfo>();

            foreach (var specType in specs)
            {
                var spec = Activator.CreateInstance(specType) as IReplacementSpecification;
                specifiedMethods.AddRange(spec.GetMethodsToReplace());
            }

            var specPath = Path.GetDirectoryName(specAssembly);
            var specAssemblyName = Path.GetFileNameWithoutExtension(specAssembly);
            var serializedSpecName = String.Format("{0}.SharpMock.SerializedSpecifications.xml", specAssemblyName);

            var replaceableCode = new ReplaceableCodeInfo();
            replaceableCode.Methods = specifiedMethods;

            var serializer = new ReplaceableCodeInfoSerializer(specPath);
            serializer.SerializeSpecifications(serializedSpecName, replaceableCode);
        }