Lab #8: Final Project Checkpoint and Searching Performance Get the various points in this lab checked off by a TA by the last lab of Tuesday, 6 November. Part I should get checked off by 30 October. PART I. 1. By now, you should be in a position to do some of the auxiliary stuff: writing User-Manual and INTERNALS, and the help message (-h). Do so. 2. Create a set of test cases and be prepared to defend them. 3. Be prepared to describe the data structure and algorithm you are using to solve the puzzle. PART II. SpellCheck.java contains a testing harness for various implementations of a search structure: an unsorted array, a sorted array, a balanced-tree implementation, and a hash table. Read SpellCheck.java (and SortedArrayList.java) to see what it is doing. 1. As the program initially stands, it produces an output like this: Spell checking for sorted dictionary: Implementation #0 took 0.00 seconds. Implementation #1 took 0.00 seconds. Implementation #2 took 0.00 seconds. Implementation #3 took 0.00 seconds. Spell checking for reversed dictionary: Implementation #0 took 0.00 seconds. Implementation #1 took 0.00 seconds. Implementation #2 took 0.00 seconds. Implementation #3 took 0.00 seconds. Spell checking for randomly ordered dictionary: Implementation #0 took 0.00 seconds. Implementation #1 took 0.00 seconds. Implementation #2 took 0.00 seconds. Implementation #3 took 0.00 seconds. Modify SpellCheck.test so that the timings are real. I suggest browsing through java.lang.System to figure out how. Use the files ~cs61b/lib/words for the dictionary file and ~cs61b/lib/check for the words to check. [What do you do with these files? Figure it out!] 2. Check that these spelling checkers are really working using only the debugger. Be prepared to show how you did this. It would be useful to get an independent answer to the question. Look at the Unix utilities comm and sort.