public static IModelMapInstruction CloneInstruction(IModelMapInstruction instruction)
        {
            var cloneable = instruction as ICloneable;

            if (cloneable != null)
            {
                return((IModelMapInstruction)cloneable.Clone());
            }

            var type       = instruction.GetType();
            var clone      = (IModelMapInstruction)FastYetSimpleTypeActivator.CreateInstance(type);
            var properties = type.GetProperties();

            foreach (var property in properties)
            {
                if (!property.CanWrite)
                {
                    continue;
                }

                property.SetValue(clone, property.GetValue(instruction, null));
            }

            return(clone);
        }
 private static bool shouldOffset(IModelMapInstruction instruction, ModelMapDiffOptions options)
 {
     return(options.Offsets.Contains(instruction.GetType()));
 }
 public void RemoveInstruction(IModelMapInstruction instruction)
 {
     _instructions.Remove(instruction);
 }
 public void InsertInstruction(int index, IModelMapInstruction instruction)
 {
     _instructions.Insert(index, instruction);
 }
 public void AddInstruction(IModelMapInstruction instruction)
 {
     _instructions.Add(instruction);
 }