public virtual Item MundaneCloneInto(Item target) { if (target == null) { throw new ArgumentException("Clone target cannot be null"); } target.Attributes = Attributes.ToArray(); target.Contents.AddRange(Contents); target.ItemType = ItemType; target.Name = Name; target.BaseNames = BaseNames.ToArray(); if (target is Weapon) { target.Quantity = Quantity != 1 ? Quantity : target.Quantity; } else { target.Quantity = Quantity; } foreach (var trait in Traits) { target.Traits.Add(trait); } return(target); }