static void Main()
        {
            Payment phone = new Payment("Samsung S6", 3500m);
            Payment monitor = new Payment("Monitor Sony", 149.99m);

            Customer ivan = new Customer("Ivan", "Petrov", "Ivanov", 9305054476, "Borisova 34", "0883-43-43-12",
                "*****@*****.**", new List<Payment>() { phone, monitor }, CustomerType.Regular);

            // correct copy
            Customer ivanCopy = (Customer)ivan.Clone();
            ivanCopy.FirstName = "Ivancho";
            ivanCopy.Payments.Add(new Payment("Car audi A4", 5000m));
            Console.WriteLine(ivan);
            Console.WriteLine(ivanCopy);
            Console.WriteLine("ivanCopy == ivan : {0}", ivanCopy == ivan);
            Console.WriteLine("ivan.Equals(ivanCopy) : {0}", ivan.Equals(ivanCopy));
            Console.WriteLine("Object.ReferenceEquals(ivan, ivanCopy) : {0}", Object.ReferenceEquals(ivan, ivanCopy));
            Console.WriteLine("\n\n");

            // incorrect copy
            ivanCopy = ivan;
            ivan.FirstName = "Ivancho";
            ivanCopy.Payments.Add(new Payment("Car audi A4", 5000m));
            Console.WriteLine(ivan);
            Console.WriteLine(ivanCopy);
            Console.WriteLine("ivanCopy == ivan : {0}", ivanCopy == ivan);
            Console.WriteLine("ivan.Equals(ivanCopy) : {0}", ivan.Equals(ivanCopy));
            Console.WriteLine("Object.ReferenceEquals(ivan, ivanCopy) : {0}", Object.ReferenceEquals(ivan, ivanCopy));

        }
        static void Main()
        {
            Payment hdd = new Payment("WD HDD 2TB", 189.99m);
            Payment mouse = new Payment("Mouse", 9.90m);
            Customer geek = new Customer("Bill", "Gates", 8712013812, Enum.CustomerType.Diamond, hdd, mouse);

            Payment vacation = new Payment("Vacation", 1250);
            Customer smart = new Customer("Katya", "Georgieva", "Tomova", 9203131111, Enum.CustomerType.OneTime, "Sofia", null, null, vacation);

            Customer geekCopy = (Customer)geek.Clone();
            geek.AddNewPayment(vacation);
            Console.WriteLine(geek);
            Console.WriteLine(geekCopy);

            Console.WriteLine(geek == smart);
            Console.WriteLine(geek == geekCopy);
            Console.WriteLine(Customer.Equals(geek, geekCopy));
            Console.WriteLine();

            Customer[] customers = new[] { geek, geekCopy, smart };
            Array.Sort(customers);
            Console.WriteLine(string.Join("\n", customers.ToList()));
        }