I have completed the student satisfaction survey. Author: Trai Pham Login: cs8bwi20px Date: 2020 March 3rd 1. The benefits of defining a generic type for Position class is that it'll allow us to put different types within the Position class. This means that it'll allow us to put in any sort of types other than pokemons within the Position class. 2. The type of the variable on the left hand side of the loop is Position rather than Position is because the elements in the boxElements lists are type of Position. The majority of the other methods uses the generic type of as well, which is why having just Position would not allow the code to work. It'll give you an error of incompatible types. 3. Simulator.java has methods that functions for battling, encountering wild pokemons, accessing the PC, going through a file of wild pokemons, and activating the simulation. The handleBattle method in Simulator.java would make you battle you rival, in which winning would depend on the damage value of the pokemons. The handleWild method would allow you to catch a pokemon or run away from it, in which these pokemons can be access through the parsePokemonFile method. The handlePC method allows you to access the pokemon storage, in which you can view a specific box within the storage, move pokemons to different position or box, and release a pokemon. The parsePokemonFile allows you to access the file that contains the information for wild pokemons that can be encountered. The handleWild and handlePC coding has a lot in common, in which it contains the try and catch blocks. The try block would contain the many options that the user can input, and the catch block would catch any illegal inputs. The main method also contains try and catch blocks.