public static void Menu()
        {
            int x = 0;

            do
            {
                Console.Clear();
                Console.WriteLine(" Implement Program Flow \n ");
                Console.WriteLine("    Iterate across collection and array items; program decisions by using switch \n");
                Console.WriteLine("    statements, if/then, and operators; evaluate expressions");
                Console.WriteLine(" 0.  Iteration Statements \n ");
                Console.WriteLine(" 1.  Operators (Ternary / Short-circuiting logic) \n ");

                Console.WriteLine(" 9.  Quit            \n\n ");
                Console.Write(" Enter Number to execute Routine ");


                int selection;
                selection = Common.readInt("Enter Number to Execute Routine : ", 0, 9);
                switch (selection)
                {
                case 0:
                    IterationStatements.Menu();
                    Console.ReadKey();
                    break;

                case 1:
                    Operators.Menu();
                    break;

                case 2:
                    break;

                case 9:
                    x = 9;
                    break;

                default:
                    Console.WriteLine(" Invalid Number");
                    break;
                }
            } while (x < 9);
        }
        /* Called by ReferenceTypes.cs
         */
        public static void Menu()
        {
            int x = 0;

            do
            {
                /*
                 *
                 * For Each versus using 'For' loop
                 *
                 * A foreach is readonly
                 * If you want to make modifications you have to use a for loop instead of a foreach
                 *
                 * But that does'n't mean individual elements are readonly, if the element contains
                 * reference types you can still modify their values, can't demonstrate that with strings
                 * because strings are immutable(unable to be changed or a value type, even though a string
                 * is a reference type).   But can be done with an an array
                 * of a reference type that is mutable (able to be changed).
                 *
                 * for each loop
                 * - can't replace elements
                 * - can modify values of elements - Array/Lists elements are read only.  But the element
                 *   properties can be modified e.g. You can change a word from lowercase to uppercase
                 * - cannot modify the index
                 * - only need one loop
                 * - Must iterate through all elements of a list
                 *
                 * for loop
                 * - can replace elements
                 * - Needed for nested loops
                 *
                 *
                 *
                 * Arrays versus Lists
                 *
                 * Arrays.
                 *  1.  Fixed Length.  Are Definined, so you cannot add to array on the fly.
                 *      If you want to add on the fly you have to use a List.
                 *  2.  Single Dimension array can be used with a foreach
                 *  3.  Strongly typed
                 * Lists.
                 *  1. Expandable - can add, insert, or remove elements
                 *  2. Multi-Dimensional.  A List cannot have more than one index.
                 *     Have to use a Multi-Dimensional Array if you want more than one index.
                 *  3. A list can be used with a foreach.
                 *  4. Strongly typed
                 *
                 * ArrayList
                 *  - Represents an ordered collection of an object that can be indexed
                 *    individually.  An Alternative to an array.  However, unlike an array
                 *    you can add and remove items from a list at a specified position using
                 *    an index and the array resizes itself automatically.  Allows dynamic memory
                 *    allocation, adding, searching and sorting items in the list.
                 *    https://www.tutorialspoint.com/csharp/csharp_arraylist.htm
                 *    List<T> is a generic version of ArrayList See GenericExamples.cs
                 *
                 *    C# is not like c++ where objects are destroyed when they go out of scope.
                 *    Instead, the Garbage Collector looks for objects which are completely unreferenced at
                 *    the current point of execution. Because the second function has a reference to the
                 *    arraylist, the arraylist and all its contents can't be garbage collected
                 *    while the second function is executing.
                 *
                 * Multi-Diminesional Arrays.
                 *  1.  Can have more than one index.
                 *  2.  Follow the x,y coordinates for a 2 dimensional array.  Great for grid based data
                 *  3.  Must use a 'for' loop for nested loops
                 *  4.  float [ , ] array1  -  defines a 2 dimensional array
                 *  5.  float [ , , ] array1 - defines a 3 dimesion array
                 *  6.  Multi-Dimensional Arrays are Simpler when compared to Jagged Arrays.
                 *  7.  The second, third dimension can only be arrays.  Can be any collection with Jagged Arrays
                 *
                 * Jagged Arrays.
                 *  1. Concept - You can put an Array into an Array
                 *  2. float [ ][ ] array1  - defines this as an array of arrays of floats.
                 *  3. float [ ][ ][ ] array1 - defines this as an array of arrays or arrays
                 *  4. float[ ][ ] array1 = new array1[4][]   -  you always have to set the first elment - says we will store 4 sets of arrays
                 *  5. Inner arrays (which is defined by the second element) do not have to be the same length, which is why they are called jagged.
                 *  6. The inner array can be any collections (.i.e. can be a List<int>)
                 *
                 *
                 */
                Console.Clear();
                Console.WriteLine(" Store data in and retrieve data from Collections  ");
                Console.WriteLine("     Store and retrieve data by using dictionaries, arrays, lists, sets,  ");
                Console.WriteLine("     and queues; hoose a collection type; initialize a collection; add    ");
                Console.WriteLine("     and remove items from a collection; use typed versus non-typed  ");
                Console.WriteLine("     collections; implement custom collections; implement collection interfaces. \n ");
                Console.WriteLine(" 0.  Print Obect Array  ");
                Console.WriteLine(" 1.  Print Generic List   ");
                Console.WriteLine(" 2.  Print Generic List Two   ");
                Console.WriteLine(" 3.  Print Generic List Three ");
                Console.WriteLine(" 4.  Class return List in Descending Order");
                Console.WriteLine(" 5.  Website ");
                Console.WriteLine(" 6.  Take Verb");
                Console.WriteLine(" 7.  Sort Ascendingz-Descending ");
                Console.WriteLine(" 8.  Dictionary and other Iterations");
                Console.WriteLine(" 9.  Quit            \n ");
                Console.Write(" Enter Number to execute Routine ");


                int   selection;
                int[] J = { 1, 2, 3 };
                selection = Common.readInt("Enter Number to Execute Routine : ", 0, 9);
                switch (selection)
                {
                case 0:
                    PrintObjectArray(new { i = J[2] });
                    break;

                case 1: PrintGenericList();
                    break;

                case 2: PrintGenericList2();
                    break;

                case 3: new PrintGenericList3().Print();
                    break;

                case 4: List <CommonCollections.Cat> threecats = CommonCollections.GetSomeCats(3);
                    Console.WriteLine(" Listed in Descending Order ");
                    Console.WriteLine(" Example of a Class returning three Cats");
                    foreach (CommonCollections.Cat c in threecats)
                    {
                        Console.WriteLine(SortingExamples.PrintCats(c));
                    }
                    Console.ReadKey();
                    //
                    // Returning Full List
                    //
                    List <CommonCollections.Cat> dbcats = CommonCollections.GetAllCats();
                    Console.WriteLine(" Example of a Class returning a Full List");
                    foreach (CommonCollections.Cat c in dbcats)
                    {
                        Console.WriteLine(SortingExamples.PrintCats(c));
                    }
                    Console.ReadKey();
                    break;

                case 5:
                    // Arrays_Collections();
                    Using_Collections();
                    break;

                case 6:
                    Test_To_take.TopThree();
                    break;

                case 7:
                    SortingExamples.Sort_Ascending_Descending();
                    SortingExamples.Sort_A_Class();
                    break;

                case 8: IterationStatements.Menu();
                    break;

                case 9: x = 9;
                    break;

                default: Console.WriteLine(" Invalid Number");
                    break;
                }
            } while (x < 9);  // end do
        }  // end Collections Menu()