CSC 123 VISITOR PATTERN ASSIGNMENT For each of the 3 (actually 4) versions of the expression tree program in C#, modify it modularly as follows: 1. Add % as a new type of operator (the mod/remainder operator). This adds a new type of node to the tree. 2. Add, in addition to print and eval, a method int size() That returns the size of the tree. The size is the number of nodes. **** ABSOLUTE REQUIREMENT: YOU MAY NOT TOUCH THE ORIGINAL CODE. **** All existing interfaces and classes are to be kept as is. You should try to use them as much as possible. The only thing you can change is additional lines in main to test your additions. But the existing tests in main must still work. For each version, summarize what you have learned? That is, did the design of your program facilitate how you made the additions? Did any design require you to bascially rewrite everything from scratch? What are the tradeoffs between the different designs?