Contains

- MenuExample1.java: inflexible menu implementation
- MenuExample2.java: more flexible menu implementation using Command design
  pattern
- CommSubA.java: part of the more flexible implementation
- CommSubB.java: part of the more flexible implementation
- CommSubC.java: part of the more flexible implementation
- CommSubD.java: part of the more flexible implementation

- browser director: low-grade `browser' implementation
  - consoleIO package
    - ConsoleFileDialog.java: a text-based file dialog class
    - ConsoleInout.java: a class for getting user's textual console input
    - ConsoleMenu.java: a text-based menu, implemented using the Command
      design pattern
    - ConsoleMenuItem.java: menu items for the above menu class
  - datastructs package
    - EmptySequenceException.java: exception class, thrown when trying to
      do things to empty sequences
    - Sequence.java: interface that specifies sequences (slightly extended
      from its use in the previous case study)
    - SinglyLinkedList.java: a class that implements the Sequence interface
      (therefore also  slightly extended from its use in the previous case
      study)
  - utilities package
    - Command.java: a class used to implement menus when using the Coomand
      design pattern
    - PreconditionException.java: exception class, thrown when a method's
      precondition is violated by client code
  - web package
    - CheapBrowser.java: the main browser class
    - DownLoadException.java: exception class, thrown when downloading over
      the net fails
    - NotAURLFileException.java: exception class, thrown when a file that is
      supposed to contain URLs doesn't
    - URLDownLoader.java: the class whose objects can download content from
      a URL
    - URLFile.java: a class whose objects can read and write to files of URLs
    - URLFileReadWriteException.java: exception class, thrown when there
      is a problem opening, reading from, writing to or closing a URLFile
    - URLMenu.java: a class, using the Command design pattern, to offer
      menus of URLs for the user to choose from
