using Prototype.Prototypes; namespace Prototype { internal class Program { static void Main(string[] args) { Person p1 = new Person(); p1.Age = 42; p1.BirthDate = Convert.ToDateTime("1977-01-01"); p1.Name = "Jack Daniels"; p1.IdInfo = new IdInfo(666); Person p2 = p1.ShallowCopy(); Person p3 = p1.DeepCopy(); Console.WriteLine("Original values of p1, p2, p3"); Console.WriteLine(" p1 instance value: "); DisplayValues(p1); Console.WriteLine(" p2 instance value: "); DisplayValues(p2); Console.WriteLine(" p3 instance value: "); DisplayValues(p3); Console.WriteLine(); p1.Age = 32; p1.BirthDate = Convert.ToDateTime("1900-01-01"); p1.Name = "Frank Daniels"; p1.IdInfo.IdNumber = 6767; Console.WriteLine("Values of p1, p2, p3"); Console.WriteLine(" p1 instance value: "); DisplayValues(p1); Console.WriteLine(" p2 instance value: "); DisplayValues(p2); Console.WriteLine(" p3 instance value: "); DisplayValues(p3); } private static void DisplayValues(Person person) { Console.WriteLine($" Name: {person.Name}, Age: {person.Age}, BirthDate: {person.BirthDate}"); Console.WriteLine($" ID#: {person.IdInfo.IdNumber}"); } } }