The program tests the *bypassing* clause of the traversal code. The program a visitor that maintains a counter that increments everytime we enter the E object. Therefore, by using the *bypassing* clause we can manipulate the path that the program takes to get to the E object. This is result in the counter giving us various answers based on what paths we chose to take (we use *bypassing* to discard certain paths). The input to the program is "a", which creates the optional path from the E object to the A object. The program traverses the entire graph finding all paths in the grapd (this is denoted in the *to* clause by the *). We check that the traversal works with a blank *bypassing* clause. The program prints out everytime it enters E and then increments the counter. If the counter equals 32 (32 is the number of all possible paths in the graph) then SUCCESS is printed else FAILURE is printed. Here is the output: [batu: /proj/demsys/com1205/w97/bowtie/proj/phase2/j-c-bypassing4] > make test CLASSPATH=./gen:$CLASSPATH java Main < program.input ld.so: warning: /usr/lib/libc.so.1.8 has older revision than expected 9 in E in E in E in E in E in E in E in E in E in E in E in E in E in E in E in E in E in E in E in E in E in E in E in E in E in E in E in E in E in E in E in E *** result *** 32 SUCCESS