Creating the graphical depiction is left as an exercise to the reader :-). Start at the GraphViz page on the Design Patterns Wiki Web.
digraph Stepper { graph [ size="43.5,33.5", page="44,34", margin="0.25,0.25", label="doBuild.log", ratio="fill", orientation=portrait ]; { node [shape=plaintext]; /* the time stamps */ "10:47:45" -> "10:47:46" -> "10:54:34" -> "10:54:36" -> "10:56:30" -> "10:56:31" -> "10:56:33" -> "10:56:34" -> "10:56:37" -> "10:56:39" -> "10:56:43" -> "10:56:44" -> "10:56:48" -> "10:56:51" -> "10:57:02" -> "10:57:03" -> "10:57:06" -> "10:57:09" -> "10:57:15" -> "10:57:39" -> "11:06:23" -> "11:07:41" -> "11:11:14" -> "11:16:15" -> "11:16:17" -> "11:16:32" -> "11:16:33" -> "11:16:35" -> "11:16:36" -> "11:16:39" -> "11:16:42" -> "11:16:43" -> "11:16:46" -> "11:16:48" -> "11:16:50" -> "11:16:52" -> "11:16:57" -> "11:17:12" -> "11:18:00" -> "11:20:14" -> "11:20:55" -> "11:49:16" -> "11:49:19" -> "11:51:06" -> "11:51:07"; "PID 14203"; "PID 14572"; "PID 14585"; "PID 14658"; "PID 14665"; "PID 14672"; "PID 14877"; "PID 14884"; "PID 15023"; "PID 16081"; "PID 16092"; "PID 16165"; "PID 16238"; "PID 16311"; "PID 16318"; "PID 16457"; "PID 18241"; }; node [shape=box]; { rank = same; "10:47:45"; "Msg 0"; } { rank = same; "10:47:46"; "Msg 2"; } { rank = same; "10:54:34"; "Msg 1"; } { rank = same; "10:54:36"; "Msg 3"; "Msg 4"; "Msg 5"; "Msg 6"; } { rank = same; "10:56:30"; "Msg 7"; } { rank = same; "10:56:31"; "Msg 8"; "Msg 9"; } { rank = same; "10:56:33"; "Msg 10"; } { rank = same; "10:56:34"; "Msg 20"; } { rank = same; "10:56:37"; "Msg 11"; } { rank = same; "10:56:39"; "Msg 12"; } { rank = same; "10:56:43"; "Msg 13"; "Msg 18"; } { rank = same; "10:56:44"; "Msg 30"; } { rank = same; "10:56:48"; "Msg 22"; } { rank = same; "10:56:51"; "Msg 14"; } { rank = same; "10:57:02"; "Msg 15"; "Msg 28"; } { rank = same; "10:57:03"; "Msg 24"; } { rank = same; "10:57:06"; "Msg 16"; "Msg 17"; } { rank = same; "10:57:09"; "Msg 26"; } { rank = same; "10:57:15"; "Msg 19"; } { rank = same; "10:57:39"; "Msg 21"; } { rank = same; "11:06:23"; "Msg 23"; } { rank = same; "11:07:41"; "Msg 25"; } { rank = same; "11:11:14"; "Msg 27"; } { rank = same; "11:16:15"; "Msg 29"; } { rank = same; "11:16:17"; "Msg 31"; "Msg 32"; "Msg 33"; "Msg 34"; } { rank = same; "11:16:32"; "Msg 35"; } { rank = same; "11:16:33"; "Msg 36"; "Msg 37"; } { rank = same; "11:16:35"; "Msg 38"; } { rank = same; "11:16:36"; "Msg 49"; } { rank = same; "11:16:39"; "Msg 39"; "Msg 45"; } { rank = same; "11:16:42"; "Msg 40"; } { rank = same; "11:16:43"; "Msg 51"; } { rank = same; "11:16:46"; "Msg 41"; } { rank = same; "11:16:48"; "Msg 42"; "Msg 53"; } { rank = same; "11:16:50"; "Msg 47"; } { rank = same; "11:16:52"; "Msg 43"; "Msg 44"; } { rank = same; "11:16:57"; "Msg 55"; } { rank = same; "11:17:12"; "Msg 46"; } { rank = same; "11:18:00"; "Msg 48"; } { rank = same; "11:20:14"; "Msg 50"; } { rank = same; "11:20:55"; "Msg 52"; } { rank = same; "11:49:16"; "Msg 54"; } { rank = same; "11:49:19"; "Msg 56"; "Msg 57"; "Msg 58"; "Msg 59"; } { rank = same; "11:51:06"; "Msg 60"; } { rank = same; "11:51:07"; "Msg 61"; "Msg 62"; } "PID 14203" -> "Msg 2" -> "Msg 1" -> "Msg 3" -> "Msg 4" -> "Msg 5" -> "Msg 6"; "PID 14572" -> "Msg 7" -> "Msg 8" -> "Msg 9"; "PID 14585" -> "Msg 10" -> "Msg 20" -> "Msg 19"; "PID 14658" -> "Msg 11" -> "Msg 18" -> "Msg 16"; "PID 14665" -> "Msg 12" -> "Msg 30" -> "Msg 29" -> "Msg 31" -> "Msg 32" -> "Msg 33" -> "Msg 34"; "PID 14672" -> "Msg 13" -> "Msg 22" -> "Msg 21"; "PID 14877" -> "Msg 14" -> "Msg 28" -> "Msg 27"; "PID 14884" -> "Msg 15" -> "Msg 24" -> "Msg 23"; "PID 15023" -> "Msg 17" -> "Msg 26" -> "Msg 25"; "PID 16081" -> "Msg 35" -> "Msg 36" -> "Msg 37"; "PID 16092" -> "Msg 38" -> "Msg 49" -> "Msg 48"; "PID 16165" -> "Msg 39" -> "Msg 45" -> "Msg 43"; "PID 16238" -> "Msg 40" -> "Msg 51" -> "Msg 50"; "PID 16311" -> "Msg 41" -> "Msg 47" -> "Msg 46"; "PID 16318" -> "Msg 42" -> "Msg 53" -> "Msg 52"; "PID 16457" -> "Msg 44" -> "Msg 55" -> "Msg 54" -> "Msg 56" -> "Msg 57" -> "Msg 58" -> "Msg 59"; "PID 18241" -> "Msg 60" -> "Msg 61" -> "Msg 62"; }