// In future versions this will probably be split out into a framework level notion protected virtual IItem CloneItem(IItem item) { var duplicatedVariables = new DefaultItemVariables(); if (item.Variables.ContainsKey(ItemVariableTypes.Amount)) { duplicatedVariables.Amount(item.Variables.Amount()); } return(new DefaultItem { Modifications = item.Modifications.ToArray(), ItemTemplate = item.ItemTemplate, Variables = duplicatedVariables }); }