@ 260915.5

200203.1 · fd69059d2e54ea52d3dfd249698d0fd712efa7f9

released 1.7.6 - new --hexdump option; 528 test cases

reading declarations

README.md

@@ -1,7 +1,7 @@ [![build status][travis-image]][travis-url] [![Language grade: C/C++][lgtm-image]][lgtm-url] [![license][bsd-3-image]][bsd-3-url] -Universal grep pro ("uber grep")-================================+Universal grep ("uber grep")+============================  <div align="center"> <img src="https://www.genivia.com/images/function_defs.png" width="45%" height="45%" alt="ugrep C++ function search results">@@ -12,7 +12,7 @@ Grep super fast through source code, Unicode text, binary files, cpio/jar/pax/ta <br> </div> -- Unlimited pro version+- Unlimited pro edition - Fully compatible with the standard GNU and BSD grep command-line options - Written in clean and efficient C++11 code, built for extreme speed - Faster than GNU/BSD/PCRE grep, beating ripgrep, silver searcher, etc.@@ -389,9 +389,9 @@ the directory `C:\<fill this part in>\ugrep\bin\win32`. Notes on using `ugrep.exe` from the Windows command line: - ugrep.exe expands globs such as `*.txt` and `*\dir\*` - colorized output is enabled by default-- when specifying quited patterns and arguments on the command line, do not-  enclose arguments in single `'` quotes, use `"` instead (single `'` quotes-  become part of a command-line argument)+- when quoting patterns and arguments on the command line, do not use single+  `'` quotes but use `"` instead; single `'` quotes become part of the+  command-line argument - when specifying an empty pattern `""` to match all input, this may be ignored   by some Windows command interpreters such as Powershell, in that case use   option `--match` instead@@ -864,6 +864,11 @@ To search `myfile.cpp` for lines with `FIXME` and `urgent`, but not `Scotty`:      ugrep FIXME myfile.cpp | ugrep urgent | ugrep -v Scotty +Same, but using a negative pattern `-N '.*Scotty.*'` to ignore lines (or "zap"+them) containing `Scotty`:++    ugrep FIXME -N '.*Scotty.*' myfile.cpp | ugrep urgent+ To search for words starting with `disp` without matching `display` in file `myfile.py` by using a "negative pattern" `-N '/<display\>'` where `-N` specifies an additional negative pattern to skip matches:@@ -1483,6 +1488,11 @@ files, otherwise these files will be ignored.     -X, --hex             Output matches in hexadecimal.  This option is equivalent to the             --binary-files=hex option.+    --hexdump==[1-8][b][c]+            Output matches in 1 to 8 columns of 8 bytes hexadecimal.  The+            default is 2 columns or 16 bytes per line.  Option `b' removes+            the space breaks.  Option `c' removes the character column.+            Enables -X if -W or -X is not specified.  To search a file for ASCII words, displaying text lines as usual while binary content is shown in hex with `-U` and `-W`:@@ -1503,11 +1513,15 @@ non-Unicode pattern with `-U` and `-X`:      ugrep --color -UX '\x00+' myfile -Same, but hexdump the entire file as context with `-y` (but this line-based-option does not permit matching patterns with newlines):+Same, but hexdump the entire file as context with `-y` (note that this+line-based option does not permit matching patterns with newlines):      ugrep --color -UX -y '\x00+' myfile +Same, compacted to 32 bytes per line without the character column:++    ugrep --color -U --hexdump=4bc -y '\x00+' myfile+ To match the binary pattern `A3..A3.` (hex) in a binary file without Unicode pattern matching (which would otherwise match `\xaf` as a Unicode character U+00A3 with UTF-8 byte sequence C2 A3) and display the results@@ -2422,7 +2436,7 @@ in markdown:            -A NUM, --after-context=NUM                   Print  NUM  lines  of  trailing  context  after  matching lines.                   Places a --group-separator between contiguous groups of matches.-                  See also options -B, -C, and -y.+                  See  also options -B, -C, and -y.  Disables multi-line matching.             -a, --text                   Process a binary file as if it were text.  This is equivalent to@@ -2431,9 +2445,9 @@ in markdown:                   if the terminal driver interprets some of it as commands.             -B NUM, --before-context=NUM-                  Print NUM  lines  of  leading  context  before  matching  lines.+                  Print  NUM  lines  of  leading  context  before  matching lines.                   Places a --group-separator between contiguous groups of matches.-                  See also options -A, -C, and -y.+                  See  also options -A, -C, and -y.  Disables multi-line matching.             -b, --byte-offset                   The offset in bytes of a matched line is displayed in  front  of@@ -2444,7 +2458,7 @@ in markdown:             --binary-files=TYPE                   Controls searching  and  reporting  pattern  matches  in  binary-                  files.   Options  are  `binary', `without-match`, `text`, `hex`,+                  files.   TYPE  can  be `binary', `without-match`, `text`, `hex`,                   and `with-hex'.  The default is `binary' to search binary  files                   and  to  report  a  match  without displaying the match.  `with-                   out-match' ignores binary matches.   `text'  treats  all  binary@@ -2472,118 +2486,117 @@ in markdown:             --color[=WHEN], --colour[=WHEN]                   Mark up the matching text with  the  expression  stored  in  the-                  GREP_COLOR  or  GREP_COLORS  environment variable.  The possible-                  values of WHEN can be `never', `always', or `auto', where `auto'-                  marks up matches only when output on a terminal.  The default is-                  `auto'.+                  GREP_COLOR  or  GREP_COLORS  environment  variable.  WHEN can be+                  `never', `always', or `auto', where `auto' marks up matches only+                  when output on a terminal.  The default is `auto'.             --colors=COLORS, --colours=COLORS                   Use COLORS to mark up text.  COLORS is a colon-separated list of-                  one  or  more  parameters  `sl=' (selected line), `cx=' (context-                  line), `mt='  (matched  text),  `ms='  (match  selected),  `mc='-                  (match  context),  `fn=' (file name), `ln=' (line number), `cn='+                  one or more parameters `sl='  (selected  line),  `cx='  (context+                  line),  `mt='  (matched  text),  `ms='  (match  selected), `mc='+                  (match context), `fn=' (file name), `ln=' (line  number),  `cn='                   (column number), `bn=' (byte offset), `se=' (separator).  Param--                  eter  values are ANSI SGR color codes or `k' (black), `r' (red),-                  `g' (green),  `y'  (yellow),  `b'  (blue),  `m'  (magenta),  `c'+                  eter values are ANSI SGR color codes or `k' (black), `r'  (red),+                  `g'  (green),  `y'  (yellow),  `b'  (blue),  `m'  (magenta), `c'                   (cyan), `w' (white).  Upper case specifies background colors.  A-                  `+' qualifies a color as bright.  A foreground and a  background-                  color  may  be  combined  with font properties `n' (normal), `f'+                  `+'  qualifies a color as bright.  A foreground and a background+                  color may be combined with font  properties  `n'  (normal),  `f'                   (faint), `h' (highlight), `i' (invert), `u' (underline).  Selec-                   tively overrides GREP_COLORS.             --cpp  Output file matches in C++.  See also options --format and -u. -           --csv  Output  file matches in CSV.  If -H, -n, -k, or -b is specified,+           --csv  Output file matches in CSV.  If -H, -n, -k, or -b is  specified,                   additional values are output.  See also options --format and -u.             -D ACTION, --devices=ACTION-                  If  an  input  file  is  a device, FIFO or socket, use ACTION to-                  process it.  By default, ACTION  is  `skip',  which  means  that+                  If an input file is a device, FIFO  or  socket,  use  ACTION  to+                  process  it.   By  default,  ACTION  is `skip', which means that                   devices are silently skipped.  If ACTION is `read', devices read                   just as if they were ordinary files.             -d ACTION, --directories=ACTION-                  If an input file is a directory, use ACTION to process  it.   By-                  default,  ACTION  is  `read',  i.e., read directories just as if-                  they were ordinary files.  If ACTION is  `skip',  silently  skip-                  directories.   If ACTION is `recurse', read all files under each-                  directory, recursively, following symbolic links  only  if  they-                  are  on  the command line.  This is equivalent to the -r option.-                  If ACTION is `dereference-recurse', read all  files  under  each+                  If  an  input file is a directory, use ACTION to process it.  By+                  default, ACTION is `read', i.e., read  directories  just  as  if+                  they  were  ordinary  files.  If ACTION is `skip', silently skip+                  directories.  If ACTION is `recurse', read all files under  each+                  directory,  recursively,  following  symbolic links only if they+                  are on the command line.  This is equivalent to the  -r  option.+                  If  ACTION  is  `dereference-recurse', read all files under each                   directory,  recursively,  following  symbolic  links.   This  is                   equivalent to the -R option.             -E, --extended-regexp-                  Interpret patterns as extended regular expressions (EREs).  This+                  Interpret  patterns as extended regular expressions (EREs). This                   is the default.             -e PATTERN, --regexp=PATTERN-                  Specify  a PATTERN used during the search of the input: an input-                  line is selected if it matches any of  the  specified  patterns.+                  Specify a PATTERN used during the search of the input: an  input+                  line  is  selected  if it matches any of the specified patterns.                   Note that longer patterns take precedence over shorter patterns.-                  This option is most useful when multiple -e options are used  to-                  specify  multiple  patterns,  when  a pattern begins with a dash-                  (`-'), to specify a pattern after option -f or  after  the  FILE+                  This  option is most useful when multiple -e options are used to+                  specify multiple patterns, when a pattern  begins  with  a  dash+                  (`-'),  to  specify  a pattern after option -f or after the FILE                   arguments.             --exclude=GLOB                   Skip files whose name matches GLOB using wildcard matching, same                   as -g !GLOB.  GLOB can use **, *, ?, and [...] as wildcards, and-                  \  to  quote  a wildcard or backslash character literally.  When-                  GLOB contains a `/',  full  pathnames  are  matched.   Otherwise+                  \ to quote a wildcard or backslash  character  literally.   When+                  GLOB  contains  a  `/',  full  pathnames are matched.  Otherwise                   basenames are matched.  Note that --exclude patterns take prior-                   ity over --include patterns.  This option may be repeated.             --exclude-dir=GLOB-                  Exclude directories  whose  name  matches  GLOB  from  recursive-                  searches.   GLOB can use **, *, ?, and [...] as wildcards, and \+                  Exclude  directories  whose  name  matches  GLOB  from recursive+                  searches.  GLOB can use **, *, ?, and [...] as wildcards, and  \                   to quote a wildcard or backslash character literally.  When GLOB                   contains a `/', full pathnames are matched.  Otherwise basenames-                  are matched.  Note that  --exclude-dir  patterns  take  priority+                  are  matched.   Note  that  --exclude-dir patterns take priority                   over --include-dir patterns.  This option may be repeated.             --exclude-from=FILE-                  Read  the  globs  from FILE and skip files and directories whose+                  Read the globs from FILE and skip files  and  directories  whose                   name matches one or more globs (as if specified by --exclude and-                  --exclude-dir).   Lines  starting  with a `#' and empty lines in-                  FILE are ignored.  When FILE is a `-', standard input  is  read.+                  --exclude-dir).  Lines starting with a `#' and  empty  lines  in+                  FILE  are  ignored.  When FILE is a `-', standard input is read.                   This option may be repeated.             --exclude-fs=MOUNTS-                  Exclude   file   systems  specified  by  MOUNTS  from  recursive-                  searches, MOUNTS is a comma-separated list of  mount  points  or-                  pathnames   of   directories   on   file   systems.   Note  that-                  --exclude-fs mounts  take  priority  over  --include-fs  mounts.+                  Exclude  file  systems  specified  by  MOUNTS   from   recursive+                  searches,  MOUNTS  is  a comma-separated list of mount points or+                  pathnames  of  directories   on   file   systems.    Note   that+                  --exclude-fs  mounts  take  priority  over  --include-fs mounts.                   This option may be repeated.             -F, --fixed-strings-                  Interpret  pattern  as a set of fixed strings, separated by new--                  lines, any of which is to be matched.  This makes  ugrep  behave+                  Interpret pattern as a set of fixed strings, separated  by  new-+                  lines,  any  of which is to be matched.  This makes ugrep behave                   as fgrep.  If PATTERN or -e PATTERN is also specified, then this                   option does not apply to -f FILE patterns.             -f FILE, --file=FILE-                  Read newline-separated patterns from FILE.  Empty  patterns  and-                  patterns  starting  with  `###'  are  ignored.  If FILE does not+                  Read  newline-separated  patterns from FILE.  Empty patterns and+                  patterns starting with `###' are  ignored.   If  FILE  does  not                   exist, the GREP_PATH environment variable is used as the path to-                  FILE.      If     that     fails,     looks    for    FILE    in-                  /usr/local/share/ugrep/patterns.  When FILE is a  `-',  standard+                  FILE.     If    that    fails,     looks     for     FILE     in+                  /usr/local/share/ugrep/patterns.   When  FILE is a `-', standard                   input is read.  Empty files contain no patterns; thus nothing is                   matched.  This option may be repeated.             --filter=COMMANDS                   Filter files through the specified COMMANDS first before search-                   ing.   COMMANDS  is  a  comma-separated  list  of  `exts:command-                  [option ...]', where `exts' is a comma-separated list  of  file--                  name  extensions  and `command' is a filter utility.  The filter-                  utility should read from standard input and  write  to  standard+                  [option  ...]',  where `exts' is a comma-separated list of file-+                  name extensions and `command' is a filter utility.   The  filter+                  utility  should  read  from standard input and write to standard                   output.  Files matching one of `exts` are filtered.  When `exts'                   is `*', files with non-matching extensions are filtered.  One or-                  more  `option'  separated by spacing may be specified, which are-                  passed verbatim to the command.  A `%' as `option' expands  into-                  the  pathname to search.  For example, --filter='pdf:pdftotext %-                  -' searches PDF files.  The `%' expands into a `-' when  search--                  ing  standard input.  Option --label=.ext may be used to specify+                  more `option' separated by spacing may be specified,  which  are+                  passed  verbatim to the command.  A `%' as `option' expands into+                  the pathname to search.  For example, --filter='pdf:pdftotext  %+                  -'  searches PDF files.  The `%' expands into a `-' when search-+                  ing standard input.  Option --label=.ext may be used to  specify                   extension `ext' when searching standard input.             --format=FORMAT@@ -2598,8 +2611,8 @@ in markdown:                   behave as traditional grep.             -g GLOB, --glob=GLOB-                  Search  only  files   whose   name   matches   GLOB,   same   as-                  --include=GLOB.   When  GLOB is preceded by a `!' or a `^', skip+                  Search   only   files   whose   name   matches   GLOB,  same  as+                  --include=GLOB.  When GLOB is preceded by a `!' or a  `^',  skip                   files whose name matches GLOB, same as --exclude=GLOB.             --group-separator[=SEP]@@ -2607,12 +2620,12 @@ in markdown:                   The default is a double hyphen (`--').             -H, --with-filename-                  Always  print  the  filename  with  output  lines.   This is the+                  Always print the  filename  with  output  lines.   This  is  the                   default when there is more than one file to search.             -h, --no-filename-                  Never print filenames with output lines.  This  is  the  default-                  when  there is only one file (or only standard input) to search.+                  Never  print  filenames  with output lines.  This is the default+                  when there is only one file (or only standard input) to  search.             --heading                   Group matches per file.  Adds a heading and a line break between@@ -2620,6 +2633,12 @@ in markdown:             --help Print a help message. +           --hexdump=[1-8][b][c]+                  Output matches in 1 to 8 columns of 8  bytes  hexadecimal.   The+                  default  is  2 columns or 16 bytes per line.  Option `b' removes+                  the space breaks.  Option  `c'  removes  the  character  column.+                  Enables -X if -W or -X is not specified.+            -I     Ignore  matches  in  binary files.  This option is equivalent to                   the --binary-files=without-match option. @@ -2676,14 +2695,14 @@ in markdown:                   the same order as specified.             -j, --smart-case-                  Perform  case  insensitive  matching  unless PATTERN contains an+                  Perform  case  insensitive matching unless a pattern contains an                   upper case letter.  This option applies to ASCII letters only.             --json Output file matches in JSON.  If -H, -n, -k, or -b is specified,                   additional values are output.  See also options --format and -u. -           -K NUM1[,NUM2], --range=NUM1[,NUM2]-                  Start searching at line NUM1; stops at line NUM2 when specified.+           -K FROM[,END], --range=FROM[,END]+                  Start searching at line FROM; stops at line END when  specified.             -k, --column-number                   The  column number of a matched pattern is displayed in front of@@ -2801,21 +2820,21 @@ in markdown:                   ing.             -Q ENCODING, --encoding=ENCODING-                  The input file encoding.  The possible values  of  ENCODING  can-                  be:    `binary',   `ASCII',   `UTF-8',   `UTF-16',   `UTF-16BE',-                  `UTF-16LE',   `UTF-32',   `UTF-32BE',   `UTF-32LE',    `LATIN1',-                  `ISO-8859-1',    `ISO-8869-2',    `ISO-8869-3',    `ISO-8869-4',-                  `ISO-8869-5',    `ISO-8869-6',    `ISO-8869-7',    `ISO-8869-8',-                  `ISO-8869-9',   `ISO-8869-10',   `ISO-8869-11',   `ISO-8869-13',-                  `ISO-8869-14', `ISO-8869-15', `ISO-8869-16', `MAC',  `MACROMAN',-                  `EBCDIC',   `CP437',   `CP850',   `CP858',  `CP1250',  `CP1251',-                  `CP1252',  `CP1253',  `CP1254',  `CP1255',  `CP1256',  `CP1257',-                  `CP1258', `KOI8-R', `KOI8-U', `KOI8-RU'.+                  The encoding  format  of  the  input,  where  ENCODING  can  be:+                  `binary',  `ASCII',  `UTF-8',  `UTF-16', `UTF-16BE', `UTF-16LE',+                  `UTF-32',  `UTF-32BE',   `UTF-32LE',   `LATIN1',   `ISO-8859-1',+                  `ISO-8869-2',    `ISO-8869-3',    `ISO-8869-4',    `ISO-8869-5',+                  `ISO-8869-6',    `ISO-8869-7',    `ISO-8869-8',    `ISO-8869-9',+                  `ISO-8869-10',   `ISO-8869-11',   `ISO-8869-13',  `ISO-8869-14',+                  `ISO-8869-15',  `ISO-8869-16',  `MAC',   `MACROMAN',   `EBCDIC',+                  `CP437',   `CP850',   `CP858',   `CP1250',  `CP1251',  `CP1252',+                  `CP1253',  `CP1254',  `CP1255',  `CP1256',  `CP1257',  `CP1258',+                  `KOI8-R', `KOI8-U', `KOI8-RU'.             -q, --quiet, --silent-                  Quiet  mode:  suppress  normal  output.   ugrep will only search-                  until a match has been found, making searches  potentially  less-                  expensive.+                  Quiet mode: suppress all output.  ugrep will only search until a+                  match has been found, making searches  potentially  less  expen-+                  sive.             -R, --dereference-recursive                   Recursively  read  all  files  under each directory.  Follow all@@ -2905,7 +2924,7 @@ in markdown:             -X, --hex                   Output matches in hexadecimal.  This option is equivalent to the-                  --binary-files=hex option.+                  --binary-files=hex option.  See also option --hexdump.             -x, --line-regexp                   Only input lines selected against the entire PATTERN is  consid-@@ -2925,43 +2944,44 @@ in markdown:            -y, --any-line                   Any matching or non-matching line is output.  Non-matching lines                   are  output  with  the  `-' separator as context of the matching-                  lines.  See also options -A, -B, and -C.+                  lines.  See also options -A, -B, and  -C.   Disables  multi-line+                  matching.             -Z, --null                   Prints a zero-byte after the file name.             -z, --decompress-                  Decompress files to search, when compressed.   Archives  (.cpio,-                  .jar,  .pax,  .tar,  .zip)  and  compressed archives (e.g. .taz,-                  .tgz, .tpz,  .tbz,  .tbz2,  .tb2,  .tz2,  .tlz,  and  .txz)  are-                  searched  and matching pathnames of files in archives are output-                  in braces.  If -g, -O, -M, or -t is  specified,  searches  files-                  within  archives  whose  name  matches  globs, matches file name-                  extensions, matches file signature magic bytes, or matches  file+                  Decompress  files  to search, when compressed.  Archives (.cpio,+                  .jar, .pax, .tar, .zip)  and  compressed  archives  (e.g.  .taz,+                  .tgz,  .tpz,  .tbz,  .tbz2,  .tb2,  .tz2,  .tlz,  and  .txz) are+                  searched and matching pathnames of files in archives are  output+                  in  braces.   If  -g, -O, -M, or -t is specified, searches files+                  within archives whose name  matches  globs,  matches  file  name+                  extensions,  matches file signature magic bytes, or matches file                   types, respectively.  Supported compression formats: gzip (.gz),-                  compress (.Z), zip, bzip2 (requires suffix  .bz,  .bz2,  .bzip2,-                  .tbz,  .tbz2,  .tb2,  .tz2), lzma and xz (requires suffix .lzma,+                  compress  (.Z),  zip,  bzip2 (requires suffix .bz, .bz2, .bzip2,+                  .tbz, .tbz2, .tb2, .tz2), lzma and xz  (requires  suffix  .lzma,                   .tlz, .xz, .txz).             If no FILE arguments are specified, or if a `-' is specified, the stan-            dard input is read, unless recursive searches are specified which exam-            ine the working directory. -           If no FILE arguments are specified and one of the options -g,  -O,  -M,+           If  no  FILE arguments are specified and one of the options -g, -O, -M,            -t, --include, --include-dir, --exclude, or --exclude-dir is specified,            recursive searches are performed as if -r was specified. -           A `--' signals the end of options; the rest of the parameters are  FILE+           A  `--' signals the end of options; the rest of the parameters are FILE            arguments, allowing filenames to begin with a `-' character. -           The  regular expression pattern syntax is an extended form of the POSIX+           The regular expression pattern syntax is an extended form of the  POSIX            ERE syntax.  For an overview of the syntax see README.md or visit:                    https://github.com/Genivia/ugrep -           Note that `.' matches any non-newline character.  Pattern `\n'  matches-           a  newline character.  Multiple lines may be matched with patterns that-           match newlines, unless one or more of the context options -A,  -B,  -C,+           Note  that `.' matches any non-newline character.  Pattern `\n' matches+           a newline character.  Multiple lines may be matched with patterns  that+           match  newlines,  unless one or more of the context options -A, -B, -C,            or -y is used, or option -v is used.      EXIT STATUS@@ -2973,21 +2993,21 @@ in markdown:             >1     An error occurred. -           If  -q  or --quiet or --silent is used and a line is selected, the exit+           If -q or --quiet or --silent is used and a line is selected,  the  exit            status is 0 even if an error occurred.      GLOBBING-           Globbing is used by options -g,  --include,  --include-dir,  --include--           from,  --exclude,  --exclude-dir, --exclude-from to match pathnames and-           basenames in recursive searches.  Globbing  supports  gitignore  syntax+           Globbing  is  used  by options -g, --include, --include-dir, --include-+           from, --exclude, --exclude-dir, --exclude-from to match  pathnames  and+           basenames  in  recursive  searches.  Globbing supports gitignore syntax            and the corresponding matching rules.  When a glob contains a path sep--           arator `/', the pathname is matched.  Otherwise the basename of a  file+           arator  `/', the pathname is matched.  Otherwise the basename of a file            or directory is matched.  For example, *.h matches foo.h and bar/foo.h.-           bar/*.h matches bar/foo.h but not foo.h and not bar/bar/foo.h.   Use  a+           bar/*.h  matches  bar/foo.h but not foo.h and not bar/bar/foo.h.  Use a            leading `/' to force /*.h to match foo.h but not bar/foo.h. -           When  a  glob starts with a `!' as specified with -g!GLOB, or specified-           in a  FILE  with  --include-from=FILE  or  --exclude-from=FILE,  it  is+           When a glob starts with a `!' as specified with -g!GLOB,  or  specified+           in  a  FILE  with  --include-from=FILE  or  --exclude-from=FILE,  it is            negated.             Glob Syntax and Conventions@@ -3002,12 +3022,12 @@ in markdown:             [!a-z] Matches one character not in the selected range of characters. -           /      When  used at the begin of a glob, matches if pathname has no /.+           /      When used at the begin of a glob, matches if pathname has no  /.                   When used at the end of a glob, matches directories only.             **/    Matches zero or more directories. -           /**    When used at the end of a glob, matches everything after the  /.+           /**    When  used at the end of a glob, matches everything after the /.             \?     Matches a ? (or any character specified after the backslash). @@ -3044,37 +3064,37 @@ in markdown:             a\?b   Matches a?b,                 but not a, b, ab, axb, a/b -           Lines  in  the --exclude-from and --include-from files are ignored when-           empty or start with a `#'.  When a glob is prefixed with  `!',  negates+           Lines in the --exclude-from and --include-from files are  ignored  when+           empty  or  start with a `#'.  When a glob is prefixed with `!', negates            the match.      ENVIRONMENT            GREP_PATH-                  May  be  used to specify a file path to pattern files.  The file-                  path is used by option -f to open a pattern file, when the  file+                  May be used to specify a file path to pattern files.   The  file+                  path  is used by option -f to open a pattern file, when the file                   cannot be opened.             GREP_COLOR-                  May  be used to specify ANSI SGR parameters to highlight matches-                  when option --color is used, e.g. 1;35;40 shows pattern  matches+                  May be used to specify ANSI SGR parameters to highlight  matches+                  when  option --color is used, e.g. 1;35;40 shows pattern matches                   in bold magenta text on a black background.  Deprecated in favor                   of GREP_COLORS, but still supported.             GREP_COLORS-                  May be used to specify ANSI SGR parameters to highlight  matches-                  and  other attributes when option --color is used.  Its value is-                  a colon-separated list of ANSI SGR parameters that  defaults  to+                  May  be used to specify ANSI SGR parameters to highlight matches+                  and other attributes when option --color is used.  Its value  is+                  a  colon-separated  list of ANSI SGR parameters that defaults to                   cx=33:mt=1;31:fn=1;35:ln=1;32:cn=1;32:bn=1;32:se=36.   The  mt=,-                  ms=, and mc= capabilities  of  GREP_COLORS  have  priority  over+                  ms=,  and  mc=  capabilities  of  GREP_COLORS have priority over                   GREP_COLOR.  Option --colors has priority over GREP_COLORS.      GREP_COLORS-           Colors  are  specified as string of colon-separated ANSI SGR parameters-           of the form `what=substring', where `substring'  is  a  semicolon-sepa--           rated  list  of  ANSI SGR codes or `k' (black), `r' (red), `g' (green),-           `y' (yellow), `b' (blue),  `m'  (magenta),  `c'  (cyan),  `w'  (white).-           Upper  case  specifies  background  colors.  A `+' qualifies a color as-           bright.  A foreground and a background color may be combined  with  one+           Colors are specified as string of colon-separated ANSI  SGR  parameters+           of  the  form  `what=substring', where `substring' is a semicolon-sepa-+           rated list of ANSI SGR codes or `k' (black), `r'  (red),  `g'  (green),+           `y'  (yellow),  `b'  (blue),  `m'  (magenta),  `c' (cyan), `w' (white).+           Upper case specifies background colors.  A `+'  qualifies  a  color  as+           bright.   A  foreground and a background color may be combined with one            or more font properties `n' (normal), `f' (faint), `h' (highlight), `i'            (invert), `u' (underline).  Substrings may be specified for: @@ -3086,10 +3106,10 @@ in markdown:             mt=    SGR substring for matching text in any matching line. -           ms=    SGR substring for matching text in a selected  line.   The  sub-+           ms=    SGR  substring  for  matching text in a selected line.  The sub-                   string mt= by default. -           mc=    SGR  substring  for  matching  text in a context line.  The sub-+           mc=    SGR substring for matching text in a  context  line.   The  sub-                   string mt= by default.             fn=    SGR substring for file names.@@ -3103,7 +3123,7 @@ in markdown:            se=    SGR substring for separators.      FORMAT-           Option --format=FORMAT specifies an output  format  for  file  matches.+           Option  --format=FORMAT  specifies  an  output format for file matches.            Fields may be used in FORMAT, which expand into the following values:             %[ARG]F@@ -3198,27 +3218,27 @@ in markdown:             %%     the percentage sign. -           %1     the first regex group capture of the match,  and  so  on  up  to+           %1     the  first  regex  group  capture  of the match, and so on up to                   group %9, same as %[1]#; requires option -P Perl matching.             %[NUM]#                   the regex group capture NUM; requires option -P Perl matching. -           The  [ARG]  part  of  a  field  is  optional  and may be omitted.  When-           present, the argument must be placed in [] brackets, for example  %[,]F+           The [ARG] part of a  field  is  optional  and  may  be  omitted.   When+           present,  the argument must be placed in [] brackets, for example %[,]F            to output a comma, the pathname, and a separator.             %[SEP]$ and %u are switches and do not send anything to the output.             The separator used by %P, %H, %N, %K, %B, and %S may be changed by pre--           ceeding the field  by  %[SEP]$.   When  [SEP]  is  not  provided,  this+           ceeding  the  field  by  %[SEP]$.   When  [SEP]  is  not provided, this            reverses the separator to the default separator or the separator speci-            fied with --separator.             Formatted output is written for each matching pattern, which means that-           a  line may be output multiple times when patterns match more than once-           on the same line.  When field %u is found  anywhere  in  the  specified-           format  string,  matching  lines are output only once unless option -u,+           a line may be output multiple times when patterns match more than  once+           on  the  same  line.   When field %u is found anywhere in the specified+           format string, matching lines are output only once  unless  option  -u,            --ungroup is used or when a newline is matched.             Additional formatting options:@@ -3280,7 +3300,7 @@ in markdown:                    $ ugrep -n -f c++/comments myfile.cpp -           List the lines that need fixing in a C/C++ source file by  looking  for+           List  the  lines that need fixing in a C/C++ source file by looking for            the word `FIXME' while skipping any `FIXME' in quoted strings:                    $ ugrep -e 'FIXME' -N '"(\\.|\\\r?\n|[^\\\n"])*"' myfile.cpp@@ -3319,9 +3339,9 @@ in markdown:                    $ ugrep -r -z -w --filter='pdf:pdftotext % -' 'copyright' -           Match the binary pattern `A3hhhhA3hh' (hex) in a  binary  file  without-           Unicode  pattern  matching  -U (which would otherwise match `\xaf' as a-           Unicode character U+00A3 with UTF-8 byte sequence C2  A3)  and  display+           Match  the  binary  pattern `A3hhhhA3hh' (hex) in a binary file without+           Unicode pattern matching -U (which would otherwise match  `\xaf'  as  a+           Unicode  character  U+00A3  with UTF-8 byte sequence C2 A3) and display            the results in hex with -X using `less -R' as a pager:                    $ ugrep --pager -UXo '\xa3[\x00-\xff]{2}\xa3[\x00-\xff]' a.out@@ -3334,7 +3354,7 @@ in markdown:                    $ ugrep -Rl '' --ignore-files -           List  all files containing a RPM signature, located in the `rpm' direc-+           List all files containing a RPM signature, located in the `rpm'  direc-            tory and recursively below up to two levels deeper:                    $ ugrep -R --max-depth=3 -l -tRpm '' rpm/@@ -3350,8 +3370,8 @@ in markdown:       LICENSE-           ugrep is released under the BSD-3 license.  All parts of  the  software-           have  reasonable  copyright terms permitting free redistribution.  This+           ugrep  is  released under the BSD-3 license.  All parts of the software+           have reasonable copyright terms permitting free  redistribution.   This            includes the ability to reuse all or parts of the ugrep source tree.      SEE ALSO@@ -3359,7 +3379,7 @@ in markdown:   -    ugrep 1.7.5                    January 24, 2020                       UGREP(1)+    ugrep 1.7.6                    February 03, 2020                      UGREP(1)  <a name="patterns"/> 

bin/linux/ugrep

Binary file changed

bin/macosx/ugrep

Binary file changed

bin/win32/ugrep.exe

Binary file changed

bin/win64/ugrep.exe

Binary file changed

include/reflex/absmatcher.h

@@ -787,7 +787,7 @@ class AbstractMatcher {     /// @returns the next wide character (unsigned 0..U+10FFFF) or EOF (-1)   {     DBGLOG("AbstractMatcher::winput()");-    char tmp[6], *s = tmp;+    char tmp[8], *s = tmp;     int c;     if ((c = input()) == EOF)       return EOF;@@ -820,6 +820,28 @@ class AbstractMatcher {     buf_[pos_] = c;     cur_ = pos_;   }+  /// Put back one (wide) character on the input character sequence for matching, DANGER: invalidates the previous text() pointer and match info, unput is not honored when matching in-place using buffer(base, size) and nothing has been read yet.+  void wunput(int c) ///< character to put back+  {+    DBGLOG("AbstractMatcher::wunput()");+    char tmp[8];+    size_t n = utf8(c, tmp);+    if (pos_ >= n)+    {+      pos_ -= n;+    }+    else if (own_)+    {+      txt_ = buf_;+      len_ = 0;+      if (end_ + n >= max_)+        (void)grow();+      std::memmove(buf_ + n, buf_, end_);+      end_ += n;+    }+    std::memcpy(&buf_[pos_], tmp, n);+    cur_ = pos_;+  }   /// Peek at the next character available for reading from the current input source.   inline int peek()     /// @returns the character (unsigned char 0..255) or EOF (-1)

include/reflex/boostmatcher.h

@@ -236,14 +236,14 @@ class BoostMatcher : public PatternMatcher<boost::regex> {           DBGLOG("END BoostMatcher::match()");           return cap_;         }+        if (itr_ != fin_)+          break; // OK if iterator is still valid         if (method == Const::FIND && opt_.N)         {           DBGLOGN("No match, pos = %zu", pos_);           DBGLOG("END BoostMatcher::match()");           return 0;         }-        if (itr_ != fin_)-          break; // OK if iterator is still valid       }       new_itr(method); // need new iterator       if (itr_ != fin_)

include/reflex/convert.h

@@ -128,14 +128,14 @@ namespace convert_flag { /// The optional `"."` (dot) specifies that dot matches any character except newline. std::string convert(     const char                              *pattern,                    ///< regex string pattern to convert-    const char                              *signature = NULL,           ///< regex library signature+    const char                              *signature,                  ///< regex library signature     convert_flag_type                        flags = convert_flag::none, ///< conversion flags     const std::map<std::string,std::string> *macros = NULL)              ///< {name} macros to expand   ;  inline std::string convert(     const std::string&                       pattern,-    const char                              *signature = NULL,+    const char                              *signature,     convert_flag_type                        flags = convert_flag::none,     const std::map<std::string,std::string> *macros = NULL) {

include/reflex/flexlexer.h

@@ -162,9 +162,15 @@ int yywrap(void); /// Flex-compatible macro: the line number of the matched text. #define yylineno                static_cast<int>(YY_SCANNER_DOT_ matcher().lineno()) +/// Flex-compatible macro: the column number of the matched text.+#define yycolumno               static_cast<int>(YY_SCANNER_DOT_ matcher().columno())+ /// Flex-compatible macro: the matched action index (use only when scanner has started). #define yy_act                  YY_SCANNER_DOT_ matcher().accept() +/// Flex-compatible macro: the next action index (use only when scanner has started).+#define yylook()                YY_SCANNER_DOT_ matcher().scan()+ /// Flex-compatible macro: the current input, a reference to a reflex::Input object that can be a stream, file, or string. #define yyin                    YY_SCANNER_DOT_ in() @@ -254,27 +260,48 @@ int yywrap(void); #define yyterminate()           return YY_NULL #endif -/// Flex-compatible macro: read one character, returns zero when EOF.+/// Flex-compatible macro: read one 8-bit character, returns zero when EOF. #if defined(REFLEX_OPTION_reentrant) #define yyinput(s)              static_cast<FlexLexer*>(s)->input() #else #define yyinput()               YY_SCANNER_DOT_ input() #endif -/// Flex-compatible macro: put one character back onto the input stream to be read again.+/// Flex-compatible macro: read one wide character, returns zero when EOF.+#if defined(REFLEX_OPTION_reentrant)+#define yywinput(s)             static_cast<FlexLexer*>(s)->winput()+#else+#define yywinput()              YY_SCANNER_DOT_ winput()+#endif++/// Flex-compatible macro: put one 8-bit character back onto the input stream to be read again. #if defined(REFLEX_OPTION_reentrant) #define yyunput(c,s)            static_cast<FlexLexer*>(s)->unput(c) #else #define yyunput(c)              YY_SCANNER_DOT_ unput(c) #endif -/// Flex-compatible macro: output one character.+/// Flex-compatible macro: put one wide character back onto the input stream to be read again.+#if defined(REFLEX_OPTION_reentrant)+#define yywunput(c,s)           static_cast<FlexLexer*>(s)->wunput(c)+#else+#define yywunput(c)             YY_SCANNER_DOT_ wunput(c)+#endif++/// Flex-compatible macro: output one 8-bit character. #if defined(REFLEX_OPTION_reentrant) #define yyoutput(c,s)           static_cast<FlexLexer*>(s)->output(c) #else #define yyoutput(c)             YY_SCANNER_DOT_ output(c) #endif +/// Flex-compatible macro: woutput one wide character.+#if defined(REFLEX_OPTION_reentrant)+#define yywoutput(c,s)          static_cast<FlexLexer*>(s)->woutput(c)+#else+#define yywoutput(c)            YY_SCANNER_DOT_ woutput(c)+#endif+ /// Flex-compatible macro: push the current start condition state on the stack and transition to the given state. #if defined(REFLEX_OPTION_reentrant) #define yy_push_state(n,s)      static_cast<FlexLexer*>(s)->push_state(n)@@ -433,23 +460,42 @@ class FlexLexer : public AbstractLexer<M> {   {     return static_cast<int>(this->matcher().size());   }-  /// Read one character, returns zero when EOF.+  /// Read one 8-bit character, returns zero when EOF.   inline int input()     /// @returns the character read.   {     int c = this->matcher().input();     return c == EOF ? 0 : c;   }+  /// Read one wide character, returns zero when EOF.+  inline int winput()+    /// @returns the character read.+  {+    int c = this->matcher().winput();+    return c == EOF ? 0 : c;+  }   /// Put back one character on the input character sequence for matching, invalidating the current match info and text.-  inline void unput(char c) ///< character to put back+  inline void unput(char c) ///< 8-bit character to put back   {     this->matcher().unput(c);   }+  /// Put back one wide character on the input character sequence for matching, invalidating the current match info and text.+  inline void unput(int c) ///< wide character to put back+  {+    this->matcher().wunput(c);+  }   /// Output one character.-  inline void output(char c) ///< char to output via LexerOutput+  inline void output(char c) ///< 8-bit char to output via LexerOutput   {     this->LexerOutput(&c, 1);   }+  /// Output one wide character.+  inline void woutput(int c) ///< wide char to output via LexerOutput+  {+    char buf[8];+    size_t n = utf8(c, buf);+    this->LexerOutput(buf, n);+  }   /// Switch input and output streams.   virtual void switch_streams(       const Input&  input = Input(), ///< new input to read from

include/reflex/matcher.h

@@ -289,7 +289,7 @@ class Matcher : public PatternMatcher<reflex::Pattern> {   /// FSM code META UND.   inline bool FSM_META_UND()   {-    bool mrk = mrk_;+    bool mrk = mrk_ && !nodent();     mrk_ = false;     ded_ = 0;     return mrk;@@ -804,6 +804,13 @@ unrolled:     newline();     return !tab_.empty() && tab_.back() > col_;   }+  /// Returns true if nodent.+  inline bool nodent()+    /// @returns true if nodent+  {+    newline();+    return (col_ <= 0 || (!tab_.empty() && tab_.back() >= col_)) && (tab_.empty() || tab_.back() <= col_);+  } #endif   /// Boyer-Moore preprocessing of the given pattern pat of length len, generates bmd_ > 0 and bms_[] shifts.   void boyer_moore_init(

include/reflex/ranges.h

@@ -112,6 +112,10 @@ inherited `std::set` methods: - `bool contains(const Ranges& rs) const` returns true if this set of ranges   contains all ranges rs, i.e. ranges rs is a subset. +- `bound_type lo()` returns the lowest value in the set of ranges.++- `bound_type hi()` returns the highest value in the set of ranges.+ @warning Using `std::set::insert()` instead of `Ranges::insert()` may result in overlapping ranges rather than merging ranges to produce disjoint non-overlapping ranges.@@ -506,6 +510,18 @@ class Ranges : public std::set< std::pair<T,T>,range_compare<T> > {     }     return true;   }+  /// Return the lowest value in the set of ranges (the set cannot be empty)+  bound_type lo() const+    /// @returns lowest value+  {+    return this->begin()->first;+  }+  /// Return the highest value in the set of ranges (the set cannot be empty)+  bound_type hi() const+    /// @returns highest value+  {+    return this->rbegin()->second;+  } };  /// RE/flex ORanges (open-ended, ordinal value range) template class.@@ -887,6 +903,12 @@ class ORanges : public Ranges<T> {     }     return false;   }+  /// Return the highest value in the set of ranges (the set cannot be empty)+  bound_type hi() const+    /// @returns highest value+  {+    return this->rbegin()->second - static_cast<bound_type>(1);+  }  private:   /// Bump value.   static inline bound_type bump(bound_type val) ///< the value to bump

lib/convert.cpp

@@ -830,29 +830,7 @@ static void merge_list(const char *pattern, size_t len, size_t& pos, convert_fla   if (pattern[pos] == '[')   {     ++pos;-    if (pattern[pos] == '^')-    {-      ++pos;-      ORanges<int> merge;-      insert_list(pattern, len, pos, flags, mod, merge, macros);-      if (is_modified(mod, 'u'))-      {-        ORanges<int> inverse(0x00, 0x10FFFF);-        inverse -= ORanges<int>(0xD800, 0xDFFF); // remove surrogates-        inverse -= merge;-        ranges |= inverse;-      }-      else-      {-        ORanges<int> inverse(0x00, 0x7F);-        inverse -= merge;-        ranges |= inverse;-      }-    }-    else-    {-      insert_list(pattern, len, pos, flags, mod, ranges, macros);-    }+    insert_list(pattern, len, pos, flags, mod, ranges, macros);   }   else if (pattern[pos] == '{' && macros != NULL)   {@@ -860,31 +838,9 @@ static void merge_list(const char *pattern, size_t len, size_t& pos, convert_fla     const std::string& list = expand(macros, pattern, len, pos);     if (list.size() < 2 || list.at(0) != '[')       throw regex_error(regex_error::invalid_class_range, pattern, pos);-    size_t k = 1;-    if (list[k] == '^')-    {-      ++k;-      ORanges<int> merge;-      insert_list(list.c_str(), list.size(), k, flags, mod, merge, macros);-      if (is_modified(mod, 'u'))-      {-        ORanges<int> inverse(0x00, 0x10FFFF);-        inverse -= ORanges<int>(0xD800, 0xDFFF); // remove surrogates-        inverse -= merge;-        ranges |= inverse;-      }-      else-      {-        ORanges<int> inverse(0x00, 0x7F);-        inverse -= merge;-        ranges |= inverse;-      }-    }-    else-    {-      insert_list(list.c_str(), list.size(), k, flags, mod, ranges, macros);-    }-    if (k + 1 < list.size())+    size_t subpos = 1;+    insert_list(list.c_str(), list.size(), subpos, flags, mod, ranges, macros);+    if (subpos + 1 < list.size())       throw regex_error(regex_error::invalid_class_range, pattern, pos);   }   else@@ -899,29 +855,8 @@ static void intersect_list(const char *pattern, size_t len, size_t& pos, convert   if (pattern[pos] == '[')   {     ++pos;-    if (pattern[pos] == '^')-    {-      ++pos;-      insert_list(pattern, len, pos, flags, mod, intersect, macros);-      if (is_modified(mod, 'u'))-      {-        ORanges<int> inverse(0x00, 0x10FFFF);-        inverse -= ORanges<int>(0xD800, 0xDFFF); // remove surrogates-        inverse -= intersect;-        ranges &= inverse;-      }-      else-      {-        ORanges<int> inverse(0x00, 0x7F);-        inverse -= intersect;-        ranges &= inverse;-      }-    }-    else-    {-      insert_list(pattern, len, pos, flags, mod, intersect, macros);-      ranges &= intersect;-    }+    insert_list(pattern, len, pos, flags, mod, intersect, macros);+    ranges &= intersect;   }   else if (pattern[pos] == '{' && macros != NULL)   {@@ -929,31 +864,10 @@ static void intersect_list(const char *pattern, size_t len, size_t& pos, convert     const std::string& list = expand(macros, pattern, len, pos);     if (list.size() < 2 || list.at(0) != '[')       throw regex_error(regex_error::invalid_class_range, pattern, pos);-    size_t k = 1;-    if (list[k] == '^')-    {-      ++k;-      insert_list(list.c_str(), list.size(), k, flags, mod, intersect, macros);-      if (is_modified(mod, 'u'))-      {-        ORanges<int> inverse(0x00, 0x10FFFF);-        inverse -= ORanges<int>(0xD800, 0xDFFF); // remove surrogates-        inverse -= intersect;-        ranges &= inverse;-      }-      else-      {-        ORanges<int> inverse(0x00, 0x7F);-        inverse -= intersect;-        ranges &= inverse;-      }-    }-    else-    {-      insert_list(list.c_str(), list.size(), k, flags, mod, intersect, macros);-      ranges &= intersect;-    }-    if (k + 1 < list.size())+    size_t subpos = 1;+    insert_list(list.c_str(), list.size(), subpos, flags, mod, intersect, macros);+    ranges &= intersect;+    if (subpos + 1 < list.size())       throw regex_error(regex_error::invalid_class_range, pattern, pos);   }   else@@ -968,29 +882,8 @@ static void subtract_list(const char *pattern, size_t len, size_t& pos, convert_   if (pattern[pos] == '[')   {     ++pos;-    if (pattern[pos] == '^')-    {-      ++pos;-      insert_list(pattern, len, pos, flags, mod, subtract, macros);-      if (is_modified(mod, 'u'))-      {-        ORanges<int> inverse(0x00, 0x10FFFF);-        inverse -= ORanges<int>(0xD800, 0xDFFF); // remove surrogates-        inverse -= subtract;-        ranges -= inverse;-      }-      else-      {-        ORanges<int> inverse(0x00, 0x7F);-        inverse -= subtract;-        ranges -= inverse;-      }-    }-    else-    {-      insert_list(pattern, len, pos, flags, mod, subtract, macros);-      ranges -= subtract;-    }+    insert_list(pattern, len, pos, flags, mod, subtract, macros);+    ranges -= subtract;   }   else if (pattern[pos] == '{' && macros != NULL)   {@@ -998,44 +891,73 @@ static void subtract_list(const char *pattern, size_t len, size_t& pos, convert_     const std::string& list = expand(macros, pattern, len, pos);     if (list.size() < 2 || list.at(0) != '[')       throw regex_error(regex_error::invalid_class_range, pattern, pos);-    size_t k = 1;-    if (list[k] == '^')+    size_t subpos = 1;+    insert_list(list.c_str(), list.size(), subpos, flags, mod, subtract, macros);+    ranges -= subtract;+    if (subpos + 1 < list.size())+      throw regex_error(regex_error::invalid_class_range, pattern, pos);+  }+  else+  {+    throw regex_error(regex_error::invalid_class_range, pattern, pos);+  }+}++static void extend_list(const char *pattern, size_t len, size_t& pos, convert_flag_type flags, const std::map<size_t,std::string>& mod, ORanges<int>& ranges, const std::map<std::string,std::string> *macros)+{+  if ((flags & convert_flag::lex))+  {+    int c;+    while (pos + 5 < len && pattern[pos + 1] == '{' && ((c = pattern[pos + 2]) == '+' || c == '|' || c == '&' || c == '-') && pattern[pos + 3] == '}')     {-      ++k;-      insert_list(list.c_str(), list.size(), k, flags, mod, subtract, macros);-      if (is_modified(mod, 'u'))-      {-        ORanges<int> inverse(0x00, 0x10FFFF);-        inverse -= ORanges<int>(0xD800, 0xDFFF); // remove surrogates-        inverse -= subtract;-        ranges -= inverse;-      }-      else+      // lex: [a-z]{+}[A-Z] character class addition, [a-z]{-}[aeiou] subtraction, [a-z]{&}[^aeiou] intersection+      pos += 4;+      switch (c)       {-        ORanges<int> inverse(0x00, 0x7F);-        inverse -= subtract;-        ranges -= inverse;+        case '+':+        case '|':+          merge_list(pattern, len, pos, flags & ~convert_flag::lex, mod, ranges, macros);+          break;+        case '&':+          intersect_list(pattern, len, pos, flags & ~convert_flag::lex, mod, ranges, macros);+          break;+        case '-':+          subtract_list(pattern, len, pos, flags & ~convert_flag::lex, mod, ranges, macros);+          break;       }     }-    else-    {-      insert_list(list.c_str(), list.size(), k, flags, mod, subtract, macros);-      ranges -= subtract;-    }-    if (k + 1 < list.size())-      throw regex_error(regex_error::invalid_class_range, pattern, pos);+  }+}++static void negate_list(const std::map<size_t,std::string>& mod, ORanges<int>& ranges)+{+  if (is_modified(mod, 'u'))+  {+    ORanges<int> inverse(0x00, 0x10FFFF);+    inverse -= ORanges<int>(0xD800, 0xDFFF); // remove surrogates+    inverse -= ranges;+    ranges.swap(inverse);   }   else   {-    throw regex_error(regex_error::invalid_class_range, pattern, pos);+    ORanges<int> inverse(0x00, 0x7F);+    inverse -= ranges;+    ranges.swap(inverse);   } }  static void insert_list(const char *pattern, size_t len, size_t& pos, convert_flag_type flags, const std::map<size_t,std::string>& mod, ORanges<int>& ranges, const std::map<std::string,std::string> *macros) {   size_t loc = pos;+  bool negate = false;   bool range = false;   int pc = -2;+  if (pos + 1 < len)+  {+    negate = pattern[pos] == '^';+    if (negate)+      ++pos;+  }   while (pos + 1 < len)   {     int c = pattern[pos];@@ -1127,30 +1049,9 @@ static void insert_list(const char *pattern, size_t len, size_t& pos, convert_fl   }   if (pos >= len || pattern[pos] != ']')     throw regex_error(regex_error::mismatched_brackets, pattern, loc);-  if ((flags & convert_flag::lex))-  {-    int c;-    while (pos + 5 < len && pattern[pos + 1] == '{' && ((c = pattern[pos + 2]) == '+' || c == '|' || c == '&' || c == '-') && pattern[pos + 3] == '}')-    {-      // lex: [a-z]{+}[A-Z] character class addition, [a-z]{-}[aeiou] subtraction, [a-z]{&}[^aeiou] intersection-      pos += 4;-      switch (c)-      {-        case '+':-        case '|':-          merge_list(pattern, len, pos, flags & ~convert_flag::lex, mod, ranges, macros);-          break;-        case '&':-          intersect_list(pattern, len, pos, flags & ~convert_flag::lex, mod, ranges, macros);-          break;-        case '-':-          subtract_list(pattern, len, pos, flags & ~convert_flag::lex, mod, ranges, macros);-          break;-      }-    }-    if (pos >= len)-      throw regex_error(regex_error::mismatched_brackets, pattern, loc);-  }+  if (negate)+    negate_list(mod, ranges);+  extend_list(pattern, len, pos, flags, mod, ranges, macros);   if (ranges.empty())     throw regex_error(regex_error::empty_class, pattern, loc); }@@ -1169,10 +1070,23 @@ static std::string convert_unicode_ranges(const ORanges<int>& ranges, const char  static std::string convert_posix_ranges(const ORanges<int>& ranges, const char *signature) {-  std::string regex;   int esc = hex_or_octal_escape(signature);-  for (ORanges<int>::const_iterator i = ranges.begin(); i != ranges.end(); ++i)-    regex.append(latin1(i->first, i->second - 1, esc, false));+  std::string regex;+  bool negate = ranges.lo() == 0x00 && ranges.hi() == 0x7F;+  if (negate)+  {+    ORanges<int> inverse(0x00, 0x7F);+    inverse -= ranges;+    regex = "[^";+    for (ORanges<int>::const_iterator i = inverse.begin(); i != inverse.end(); ++i)+      regex.append(latin1(i->first, i->second - 1, esc, false));+  }+  else+  {+    regex = "[";+    for (ORanges<int>::const_iterator i = ranges.begin(); i != ranges.end(); ++i)+      regex.append(latin1(i->first, i->second - 1, esc, false));+  }   return regex.append("]"); } @@ -1186,6 +1100,17 @@ static void convert_anycase_ranges(ORanges<int>& ranges)     ranges.insert(i->first ^ 0x20, (i->second - 1) ^ 0x20); } +static std::string convert_ranges(const char *pattern, size_t pos, ORanges<int>& ranges, const std::map<size_t,std::string>& mod, const char *signature, const char *par)+{+  if (is_modified(mod, 'i'))+    convert_anycase_ranges(ranges);+  if (is_modified(mod, 'u') && ranges.hi() > 0x7F)+    return convert_unicode_ranges(ranges, signature, par);+  if (ranges.hi() > 0xFF)+    throw regex_error(regex_error::invalid_class, pattern, pos);+  return convert_posix_ranges(ranges, signature);+}+ //////////////////////////////////////////////////////////////////////////////// //                                                                            // //  Regex converter                                                           //@@ -1587,63 +1512,12 @@ std::string convert(const char *pattern, const char *signature, convert_flag_typ         }         else         {-          if (pos + 1 < len && pattern[pos + 1] == '^')-          {-            ORanges<int> ranges;-            regex.append(&pattern[loc], pos - loc);-            pos += 2;-            insert_list(pattern, len, pos, flags, mod, ranges, macros);-            if (is_modified(mod, 'i'))-              convert_anycase_ranges(ranges);-            if (is_modified(mod, 'u'))-            {-              // Unicode: translate [^ ] to new [ ] regex with inverted content-              ORanges<int> inverse(0x00, 0x10FFFF);-              inverse -= ORanges<int>(0xD800, 0xDFFF); // remove surrogates-              inverse -= ranges;-              if (inverse.empty())-                throw regex_error(regex_error::empty_class, pattern, loc);-              regex.append(convert_unicode_ranges(inverse, signature, par));-            }-            else-            {-              ORanges<int>::const_reverse_iterator i = ranges.rbegin();-              if (i == ranges.rend())-                throw regex_error(regex_error::empty_class, pattern, loc);-              if (i->second - 1 > 0xFF)-                throw regex_error(regex_error::invalid_class, pattern, pos);-              // ASCII: translate [^ ] to new [^ ] regex-              regex.append("[^").append(convert_posix_ranges(ranges, signature));-            }-            loc = pos + 1;-          }-          else-          {-            ORanges<int> ranges;-            regex.append(&pattern[loc], pos - loc);-            ++pos;-            insert_list(pattern, len, pos, flags, mod, ranges, macros);-            if (is_modified(mod, 'i'))-              convert_anycase_ranges(ranges);-            if (is_modified(mod, 'u'))-            {-              if (ranges.empty())-                throw regex_error(regex_error::empty_class, pattern, loc);-              // Unicode: translate [ ] to new regex-              regex.append(convert_unicode_ranges(ranges, signature, par));-            }-            else-            {-              ORanges<int>::const_reverse_iterator i = ranges.rbegin();-              if (i == ranges.rend())-                throw regex_error(regex_error::empty_class, pattern, loc);-              if (i->second - 1 > 0xFF)-                throw regex_error(regex_error::invalid_class, pattern, pos);-              // ASCII: translate [ ] to new regex-              regex.append("[").append(convert_posix_ranges(ranges, signature));-            }-            loc = pos + 1;-          }+          ORanges<int> ranges;+          regex.append(&pattern[loc], pos - loc);+          ++pos;+          insert_list(pattern, len, pos, flags, mod, ranges, macros);+          regex.append(convert_ranges(pattern, pos, ranges, mod, signature, par));+          loc = pos + 1;           anc = false;           beg = false;         }@@ -1727,7 +1601,23 @@ std::string convert(const char *pattern, const char *signature, convert_flag_typ             // if macros are provided: lookup {name} and expand without converting             regex.append(&pattern[loc], pos - loc);             ++pos;-            regex.append(par).append(expand(macros, pattern, len, pos)).append(")");+            loc = pos;+            const std::string& subregex = expand(macros, pattern, len, pos);+            int c;+            if ((flags & convert_flag::lex) && pos + 5 < len && pattern[pos + 1] == '{' && ((c = pattern[pos + 2]) == '+' || c == '|' || c == '&' || c == '-') && pattern[pos + 3] == '}')+            {+              size_t subpos = 0;+              ORanges<int> ranges;+              merge_list(subregex.c_str(), subregex.size(), subpos, flags, mod, ranges, macros);+              if (subpos + 1 < subregex.size())+                throw regex_error(regex_error::invalid_class_range, pattern, loc);+              extend_list(pattern, len, pos, flags, mod, ranges, macros);+              regex.append(convert_ranges(pattern, pos, ranges, mod, signature, par));+            }+            else+            {+              regex.append(par).append(subregex).append(")");+            }             loc = pos + (pattern[pos] == '\\') + 1;             anc = false;             beg = false;

lib/utf8.cpp

@@ -41,7 +41,7 @@ namespace reflex { static const char *regex_char(char *buf, int a, int esc, size_t *n = NULL) {   static const char digits[] = "0123456789abcdef";-  if (a >= '!' && a <= '~' && a != '-' && a != '[' && a != '\\' && a != ']' && a != '^' &&+  if (a >= '!' && a <= '~' && a != '#' && a != '-' && a != '[' && a != '\\' && a != ']' && a != '^' &&       (n != NULL || (a <= 'z' && a != '$' && a != '(' && a != ')' && a != '*' && a != '+' && a != '.' && a != '?'))      )   {

man.sh

@@ -48,8 +48,7 @@ src/ugrep --help \   -e '/^    >1      / d' \   -e '/^    If -q or --quiet or --silent/ d' \   -e '/^    status is 0 even/ d' \-  -e 's/^                //' \-  -e 's/^            //' \+  -e 's/^ \{5,\}//' \   -e 's/^\.\([A-Za-z]\)/\\\&.\1/g' \   -e $'s/^    \(.*\)$/.TP\\\n\\1/' \   -e 's/\(--[][+0-9A-Za-z_-]*\)/\\fB\1\\fR/g' \@@ -57,6 +56,8 @@ src/ugrep --help \   -e 's/\([^-0-9A-Za-z_]\)\(-.\)/\1\\fB\2\\fR/g' \   -e 's/^\(-.\) \([!A-Z]\{1,\}\)/\\fB\1\\fR \\fI\2\\fR/g' \   -e 's/^\(-.\)/\\fB\1\\fR/g' \+  -e 's/\[\([-A-Z]\{1,\}\)\]/[\\fI\1\\fR]/g' \+  -e 's/\[,\([-A-Z]\{1,\}\)\]/[,\\fI\1\\fR]/g' \   -e 's/\[=\([-A-Z]\{1,\}\)\]/[=\\fI\1\\fR]/g' \   -e 's/=\([-A-Z]\{1,\}\)/=\\fI\1\\fR/g' \ | sed -e 's/-/\\-/g' >> man/ugrep.1

man/ugrep.1

@@ -1,4 +1,4 @@-.TH UGREP "1" "January 24, 2020" "ugrep 1.7.5" "User Commands"+.TH UGREP "1" "February 03, 2020" "ugrep 1.7.6" "User Commands" .SH NAME \fBugrep\fR -- universal file pattern searcher .SH SYNOPSIS@@ -25,7 +25,7 @@ The following options are available: \fB\-A\fR \fINUM\fR, \fB\-\-after\-context\fR=\fINUM\fR Print NUM lines of trailing context after matching lines.  Places a \fB\-\-group\-separator\fR between contiguous groups of matches.  See also-options \fB\-B\fR, \fB\-C\fR, and \fB\-y\fR.+options \fB\-B\fR, \fB\-C\fR, and \fB\-y\fR.  Disables multi\-line matching. .TP \fB\-a\fR, \fB\-\-text\fR Process a binary file as if it were text.  This is equivalent to@@ -36,7 +36,7 @@ the terminal driver interprets some of it as commands. \fB\-B\fR \fINUM\fR, \fB\-\-before\-context\fR=\fINUM\fR Print NUM lines of leading context before matching lines.  Places a \fB\-\-group\-separator\fR between contiguous groups of matches.  See also-options \fB\-A\fR, \fB\-C\fR, and \fB\-y\fR.+options \fB\-A\fR, \fB\-C\fR, and \fB\-y\fR.  Disables multi\-line matching. .TP \fB\-b\fR, \fB\-\-byte\-offset\fR The offset in bytes of a matched line is displayed in front of the@@ -47,7 +47,7 @@ in the UTF\-8 normalized input is displayed. .TP \fB\-\-binary\-files\fR=\fITYPE\fR Controls searching and reporting pattern matches in binary files.-Options are `binary', `without\-match`, `text`, `hex`, and+TYPE can be `binary', `without\-match`, `text`, `hex`, and `with\-hex'.  The default is `binary' to search binary files and to report a match without displaying the match.  `without\-match' ignores binary matches.  `text' treats all binary files as text,@@ -61,7 +61,7 @@ byte or invalid UTF.  Short options are \fB\-a\fR, \fB\-I\fR, \fB\-U\fR, \fB\-W\ \fB\-\-break\fR Adds a line break between results from different files. .TP-\fB\-C\fR[NUM], \fB\-\-context[\fR=\fINUM\fR]+\fB\-C\fR[\fINUM\fR], \fB\-\-context[\fR=\fINUM\fR] Print NUM lines of leading and trailing context surrounding each match.  The default is 2 and is equivalent to \fB\-A\fR 2 \fB\-B\fR 2.  Places a \fB\-\-group\-separator\fR between contiguous groups of matches.@@ -74,10 +74,9 @@ If \fB\-v\fR is specified, counts the number of non\-matching lines. .TP \fB\-\-color[\fR=\fIWHEN\fR], \fB\-\-colour[\fR=\fIWHEN\fR] Mark up the matching text with the expression stored in the-GREP_COLOR or GREP_COLORS environment variable.  The possible-values of WHEN can be `never', `always', or `auto', where `auto'-marks up matches only when output on a terminal.  The default is-`auto'.+GREP_COLOR or GREP_COLORS environment variable.  WHEN can be+`never', `always', or `auto', where `auto' marks up matches only+when output on a terminal.  The default is `auto'. .TP \fB\-\-colors\fR=\fICOLORS\fR, \fB\-\-colours\fR=\fICOLORS\fR Use COLORS to mark up text.  COLORS is a colon\-separated list of@@ -220,6 +219,12 @@ results from different files. \fB\-\-help\fR Print a help message. .TP+\fB\-\-hexdump\fR=[1\-8][b][c]+Output matches in 1 to 8 columns of 8 bytes hexadecimal.  The+default is 2 columns or 16 bytes per line.  Option `b' removes+the space breaks.  Option `c' removes the character column.+Enables \fB\-X\fR if \fB\-W\fR or \fB\-X\fR is not specified.+.TP \fB\-I\fR Ignore matches in binary files.  This option is equivalent to the \fB\-\-binary\-files\fR=without\-match option.@@ -275,15 +280,15 @@ simultaneously.  \fB\-J\fR1 disables threading: files are searched in the same order as specified. .TP \fB\-j\fR, \fB\-\-smart\-case\fR-Perform case insensitive matching unless PATTERN contains an upper-case letter.  This option applies to ASCII letters only.+Perform case insensitive matching unless a pattern contains an+upper case letter.  This option applies to ASCII letters only. .TP \fB\-\-json\fR Output file matches in JSON.  If \fB\-H\fR, \fB\-n\fR, \fB\-k\fR, or \fB\-b\fR is specified, additional values are output.  See also options \fB\-\-format\fR and \fB\-u\fR. .TP-\fB\-K\fR \fINUM\fR1[,NUM2], \fB\-\-range\fR=\fINUM\fR1[,NUM2]-Start searching at line NUM1; stops at line NUM2 when specified.+\fB\-K\fR \fIFROM\fR[,\fIEND\fR], \fB\-\-range\fR=\fIFROM\fR[,\fIEND\fR]+Start searching at line FROM; stops at line END when specified. .TP \fB\-k\fR, \fB\-\-column\-number\fR The column number of a matched pattern is displayed in front of the@@ -397,7 +402,7 @@ and \fB\-\-line\-buffered\fR. When output is sent to a terminal, enables \fB\-\-color\fR and \fB\-\-heading\fR. .TP \fB\-Q\fR \fIENCODING\fR, \fB\-\-encoding\fR=\fIENCODING\fR-The input file encoding.  The possible values of ENCODING can be:+The encoding format of the input, where ENCODING can be: `binary', `ASCII', `UTF\-8', `UTF\-16', `UTF\-16BE', `UTF\-16LE', `UTF\-32', `UTF\-32BE', `UTF\-32LE', `LATIN1', `ISO\-8859\-1', `ISO\-8869\-2',@@ -411,7 +416,7 @@ The input file encoding.  The possible values of ENCODING can be: `KOI8\-R', `KOI8\-U', `KOI8\-RU'. .TP \fB\-q\fR, \fB\-\-quiet\fR, \fB\-\-silent\fR-Quiet mode: suppress normal output.  ugrep will only search until a+Quiet mode: suppress all output.  ugrep will only search until a match has been found, making searches potentially less expensive. .TP \fB\-R\fR, \fB\-\-dereference\-recursive\fR@@ -502,7 +507,7 @@ this option does not apply to \fB\-f\fR \fIFILE\fR patterns. .TP \fB\-X\fR, \fB\-\-hex\fR Output matches in hexadecimal.  This option is equivalent to the-\fB\-\-binary\-files\fR=hex option.+\fB\-\-binary\-files\fR=hex option.  See also option \fB\-\-hexdump\fR. .TP \fB\-x\fR, \fB\-\-line\-regexp\fR Only input lines selected against the entire PATTERN is considered@@ -523,7 +528,7 @@ match all input, not only lines with a `x'. \fB\-y\fR, \fB\-\-any\-line\fR Any matching or non\-matching line is output.  Non\-matching lines are output with the `\fB\-'\fR separator as context of the matching lines.-See also options \fB\-A\fR, \fB\-B\fR, and \fB\-C\fR.+See also options \fB\-A\fR, \fB\-B\fR, and \fB\-C\fR.  Disables multi\-line matching. .TP \fB\-Z\fR, \fB\-\-null\fR Prints a zero\-byte after the file name.

patterns/README.md

@@ -17,8 +17,7 @@ skipping all matches of identifiers in comments and strings:     ugrep -r -n -f java/names -f java/zap_comments -f java/zap_strings  Pattern files contain one or more regex patters, one pattern per line.  Empty-lines and lines starting with `###` are ignored in pattern files.  A starting-line with `###-o` auto-enables option `-o` for all patterns matched.+lines are ignored in pattern files.  Patterns that requiring Unicode matching should be placed in Unicode mode with `(?u:X)`, just in case to prevent ugrep option `-U` from disabling them.

src/ugrep.cpp

@@ -70,7 +70,7 @@ Prebuilt executables are located in ugrep/bin. */  // ugrep version-#define UGREP_VERSION "1.7.5"+#define UGREP_VERSION "1.7.6"  #include <reflex/input.h> #include <reflex/matcher.h>@@ -282,6 +282,11 @@ int pclose(FILE *stream) #define MAX_DEPTH 100 #endif +// max hexadecimal columns of bytes per line+#ifndef MAX_HEX_COLUMNS+#define MAX_HEX_COLUMNS 64+#endif+ // --min-steal default, the minimum co-worker's queue size of pending jobs to steal a job from, smaller values result in higher job stealing rates, should not be less than 3 #ifndef MIN_STEAL #define MIN_STEAL 3U@@ -442,6 +447,8 @@ bool flag_xml                      = false; bool flag_stdin                    = false; bool flag_pretty                   = DEFAULT_PRETTY; bool flag_no_hidden                = DEFAULT_HIDDEN;+bool flag_hex_brk                  = true;+bool flag_hex_chr                  = true; size_t flag_after_context          = 0; size_t flag_before_context         = 0; size_t flag_max_count              = 0;@@ -453,11 +460,13 @@ size_t flag_not_magic              = 0; size_t flag_min_magic              = 1; size_t flag_jobs                   = 0; size_t flag_tabs                   = 8;+size_t flag_hex_columns            = 16; size_t flag_min_mmap               = DEFAULT_MIN_MMAP_SIZE; size_t flag_max_mmap               = DEFAULT_MAX_MMAP_SIZE; size_t flag_min_steal              = MIN_STEAL; const char *flag_pager             = FLAG_PAGER; const char *flag_color             = FLAG_COLOR;+const char *flag_hexdump           = NULL; const char *flag_colors            = NULL; const char *flag_encoding          = NULL; const char *flag_filter            = NULL;@@ -495,6 +504,7 @@ std::vector<std::string> flag_not_exclude_dir;  void set_color(const char *colors, const char *parameter, char color[COLORLEN]); void trim(std::string& line);+void trim_nl(std::string& line); bool is_output(ino_t inode); size_t strtopos(const char *string, const char *message); void strtopos2(const char *string, size_t& pos1, size_t& pos2, const char *message);@@ -895,7 +905,7 @@ struct Output {         out(out),         offset(0)     {-      for (int i = 0; i < 16; ++i)+      for (int i = 0; i < MAX_HEX_COLUMNS; ++i)         bytes[i] = -1;     } @@ -911,9 +921,9 @@ struct Output {     // dump one line of hex     void line(const char *separator); -    Output& out;       // reference to the output state of this hex dump state-    size_t  offset;    // current byte offset in the hex dump-    short   bytes[16]; // one line of hex dump bytes with their mode bits for color highlighting+    Output& out;                 // reference to the output state of this hex dump state+    size_t  offset;              // current byte offset in the hex dump+    short   bytes[MAX_HEX_COLUMNS]; // one line of hex dump bytes with their mode bits for color highlighting    }; @@ -1217,8 +1227,8 @@ void Output::Dump::hex(short mode, size_t byte_offset, const char *data, size_t   offset = byte_offset;   while (size > 0)   {-    bytes[offset++ & 0x0f] = (mode << 8) | *reinterpret_cast<const unsigned char*>(data++);-    if ((offset & 0x0f) == 0)+    bytes[offset++ % flag_hex_columns] = (mode << 8) | *reinterpret_cast<const unsigned char*>(data++);+    if (offset % flag_hex_columns == 0)       line(separator);     --size;   }@@ -1227,17 +1237,18 @@ void Output::Dump::hex(short mode, size_t byte_offset, const char *data, size_t // next hex dump location void Output::Dump::next(size_t byte_offset, const char *separator) {-  if ((offset & ~static_cast<size_t>(0x0f)) != (byte_offset & ~static_cast<size_t>(0x0f)))+  if (offset - offset % flag_hex_columns != byte_offset - byte_offset % flag_hex_columns)     done(separator); }  // done dumping hex void Output::Dump::done(const char *separator) {-  if ((offset & 0x0f) != 0)+  if (offset % flag_hex_columns != 0)   {     line(separator);-    offset = (offset + 0x0f) & ~static_cast<size_t>(0x0f);+    offset += flag_hex_columns - 1;+    offset -= offset % flag_hex_columns;   } } @@ -1245,20 +1256,22 @@ void Output::Dump::done(const char *separator) void Output::Dump::line(const char *separator) {   out.str(color_bn);-  out.hex((offset - 1) & ~static_cast<size_t>(0x0f), 8);+  out.hex((offset - 1) - (offset - 1) % flag_hex_columns, 8);   out.str(color_off);   out.str(color_se);   out.str(separator);   out.str(color_off);   out.chr(' '); -  for (size_t i = 0; i < 16; ++i)+  for (size_t i = 0; i < flag_hex_columns; ++i)   {     if (bytes[i] < 0)     {       out.str(color_cx);-      out.str(" --");-      if ((i & 7) == 7)+      if (flag_hex_brk)+        out.chr(' ');+      out.str("--");+      if ((i & 7) == 7 && flag_hex_brk)         out.chr(' ');       out.str(color_off);     }@@ -1266,70 +1279,75 @@ void Output::Dump::line(const char *separator)     {       short byte = bytes[i];       out.str(color_hex[byte >> 8]);-      out.chr(' ');+      if (flag_hex_brk)+        out.chr(' ');       out.hex(byte & 0xff, 2);-      if ((i & 7) == 7)+      if ((i & 7) == 7 && flag_hex_brk)         out.chr(' ');       out.str(color_off);     }   } -  out.chr(' ');-  out.str(color_se);-  out.chr('|');-  out.str(color_off);--  for (size_t i = 0; i < 16; ++i)+  if (flag_hex_chr)   {-    if (bytes[i] < 0)-    {-      out.str(color_cx);-      out.chr('-');-      out.str(color_off);-    }-    else+    out.chr(' ');+    out.str(color_se);+    out.chr('|');+    out.str(color_off);++    for (size_t i = 0; i < flag_hex_columns; ++i)     {-      short byte = bytes[i];-      out.str(color_hex[byte >> 8]);-      byte &= 0xff;-      if (flag_color != NULL)+      if (bytes[i] < 0)       {-        if (byte < 0x20)-        {-          out.str("\033[7m");-          out.chr('@' + byte);-        }-        else if (byte == 0x7f)+        out.str(color_cx);+        out.chr('-');+        out.str(color_off);+      }+      else+      {+        short byte = bytes[i];+        out.str(color_hex[byte >> 8]);+        byte &= 0xff;+        if (flag_color != NULL)         {-          out.str("\033[7m~");+          if (byte < 0x20)+          {+            out.str("\033[7m");+            out.chr('@' + byte);+          }+          else if (byte == 0x7f)+          {+            out.str("\033[7m~");+          }+          else if (byte > 0x7f)+          {+            out.str("\033[7m.");+          }+          else+          {+            out.chr(byte);+          }         }-        else if (byte > 0x7f)+        else if (byte < 0x20 || byte >= 0x7f)         {-          out.str("\033[7m.");+          out.chr('.');         }         else         {           out.chr(byte);         }+        out.str(color_off);       }-      else if (byte < 0x20 || byte >= 0x7f)-      {-        out.chr('.');-      }-      else-      {-        out.chr(byte);-      }-      out.str(color_off);     }++    out.str(color_se);+    out.chr('|');+    out.str(color_off);   } -  out.str(color_se);-  out.chr('|');-  out.str(color_off);   out.nl(); -  for (size_t i = 0; i < 16; ++i)+  for (size_t i = 0; i < MAX_HEX_COLUMNS; ++i)     bytes[i] = -1; } @@ -3692,6 +3710,8 @@ int main(int argc, char **argv)               help();             else if (strcmp(arg, "hex") == 0)               flag_binary_files = "hex";+            else if (strncmp(arg, "hexdump=", 8) == 0)+              flag_hexdump = arg + 8;             else if (strcmp(arg, "hidden") == 0)               flag_no_hidden = false;             else if (strcmp(arg, "ignore-case") == 0)@@ -4190,17 +4210,31 @@ int main(int argc, char **argv)   else if (strcmp(flag_binary_files, "binary") != 0)     help("invalid argument --binary-files=TYPE, valid arguments are 'binary', 'without-match', 'text', 'hex', and 'with-hex'"); -  // --match-all is the same as specifying an '' empty pattern argument+  // --hexdump+  if (flag_hexdump != NULL)+  {+    if (isdigit(*flag_hexdump))+    {+      flag_hex_columns = 8 * (*flag_hexdump - '0');+      if (flag_hex_columns == 0 || flag_hex_columns > MAX_HEX_COLUMNS)+        help("invalid argument --hexdump=[1-8][b][c]");+    }+    if (strchr(flag_hexdump, 'b') != NULL)+      flag_hex_brk = false;+    if (strchr(flag_hexdump, 'c') != NULL)+      flag_hex_chr = false;+    if (!flag_with_hex)+      flag_hex = true;+  }++  // --match: same as specifying an '' empty pattern argument if no patterns are specified   if (flag_match)     flag_regexp.emplace_back(""); -  // the regex compiled from PATTERN-  std::string regex;-   // regex PATTERN specified   if (pattern != NULL)   {-    // if not --match-all, then add pattern to the front else add to the front of FILE args+    // if no regex specified, then add pattern else add to the front of FILE args     if (flag_regexp.empty())       flag_regexp.emplace_back(pattern);     else@@ -4215,6 +4249,9 @@ int main(int argc, char **argv)   if (flag_line_regexp)     flag_empty = true; +  // the regex compiled from PATTERN+  std::string regex;+   // -F: make newline-separated lines in regex literal with \Q and \E   const char *Q = flag_fixed_strings ? "\\Q" : "";   const char *E = flag_fixed_strings ? "\\E|" : "|";@@ -4245,8 +4282,11 @@ int main(int argc, char **argv)         flag_match = true;       } -      // include empty pattern matches in the results+      // enable -Y: include empty pattern matches in the results       flag_empty = true;++      // disable -w+      flag_word_regexp = false;     }     else     {@@ -4360,30 +4400,6 @@ int main(int argc, char **argv)   if (flag_perl_regexp)     flag_basic_regexp = false; -  // -j: case insensitive search if regex does not contain an upper case letter-  if (flag_smart_case)-  {-    flag_ignore_case = true;--    for (size_t i = 0; i < regex.size(); ++i)-    {-      if (regex[i] == '\\')-      {-        ++i;-      }-      else if (regex[i] == '{')-      {-        while (++i < regex.size() && regex[i] != '}')-          continue;-      }-      else if (isupper(regex[i]))-      {-        flag_ignore_case = false;-        break;-      }-    }-  }-   // -f: get patterns from file   if (!flag_file.empty())   {@@ -4445,17 +4461,11 @@ int main(int argc, char **argv)          ++lineno; -        trim(line);+        trim_nl(line);          // add line to the regex if not empty         if (!line.empty())-        {-          // enable -o when the first line is ###-o, skip ###-comments-          if (lineno == 1 && line == "###-o")-            flag_only_matching = true;-          else if (line.substr(0, 3) != "###")-            regex.append(Q).append(line).append(E);-        }+          regex.append(Q).append(line).append(E);       }        if (file != stdin)@@ -4472,6 +4482,30 @@ int main(int argc, char **argv)       regex.insert(0, "\\<(").append(")\\>"); // make the regex word-anchored   } +  // -j: case insensitive search if regex does not contain an upper case letter+  if (flag_smart_case)+  {+    flag_ignore_case = true;++    for (size_t i = 0; i < regex.size(); ++i)+    {+      if (regex[i] == '\\')+      {+        ++i;+      }+      else if (regex[i] == '{')+      {+        while (++i < regex.size() && regex[i] != '}')+          continue;+      }+      else if (isupper(regex[i]))+      {+        flag_ignore_case = false;+        break;+      }+    }+  }+   // -y: disable -A, -B, and -C   if (flag_any_line)     flag_after_context = flag_before_context = 0;@@ -4749,7 +4783,7 @@ int main(int argc, char **argv)     }   } -  // --headin: enable --break+  // --heading: enable --break   if (flag_heading)     flag_break = true; @@ -7372,6 +7406,7 @@ void extend(FILE *file, std::vector<std::string>& files, std::vector<std::string     if (getline(input, line))       break; +    // trim white space from either end     trim(line);      // add glob to files and dirs using gitignore glob pattern rules@@ -7496,7 +7531,7 @@ void format(const char *format, size_t matches)   } } -// trim line to remove leading and trailing white space+// trim white space from either end of the line void trim(std::string& line) {   size_t len = line.length();@@ -7516,6 +7551,20 @@ void trim(std::string& line)   line.erase(pos, len - pos); } +// trim trailing CR and LF if present+void trim_nl(std::string& line)+{+  size_t len = line.length();++  if (len > 0 && line.back() == '\n')+  {+    line.pop_back();+    --len;+  }+  if (len > 0 && line.back() == '\r')+    line.pop_back();+}+ // convert GREP_COLORS and set the color substring to the ANSI SGR sequence void set_color(const char *colors, const char *parameter, char color[COLORLEN]) {@@ -7717,7 +7766,7 @@ void help(const char *message, const char *arg)     -A NUM, --after-context=NUM\n\             Print NUM lines of trailing context after matching lines.  Places\n\             a --group-separator between contiguous groups of matches.  See also\n\-            options -B, -C, and -y.\n\+            options -B, -C, and -y.  Disables multi-line matching.\n\     -a, --text\n\             Process a binary file as if it were text.  This is equivalent to\n\             the --binary-files=text option.  This option might output binary\n\@@ -7726,7 +7775,7 @@ void help(const char *message, const char *arg)     -B NUM, --before-context=NUM\n\             Print NUM lines of leading context before matching lines.  Places\n\             a --group-separator between contiguous groups of matches.  See also\n\-            options -A, -C, and -y.\n\+            options -A, -C, and -y.  Disables multi-line matching.\n\     -b, --byte-offset\n\             The offset in bytes of a matched line is displayed in front of the\n\             respective matched line.  If -u is specified, displays the offset\n\@@ -7735,7 +7784,7 @@ void help(const char *message, const char *arg)             in the UTF-8 normalized input is displayed.\n\     --binary-files=TYPE\n\             Controls searching and reporting pattern matches in binary files.\n\-            Options are `binary', `without-match`, `text`, `hex`, and\n\+            TYPE can be `binary', `without-match`, `text`, `hex`, and\n\             `with-hex'.  The default is `binary' to search binary files and to\n\             report a match without displaying the match.  `without-match'\n\             ignores binary matches.  `text' treats all binary files as text,\n\@@ -7758,10 +7807,9 @@ void help(const char *message, const char *arg)             If -v is specified, counts the number of non-matching lines.\n\     --color[=WHEN], --colour[=WHEN]\n\             Mark up the matching text with the expression stored in the\n\-            GREP_COLOR or GREP_COLORS environment variable.  The possible\n\-            values of WHEN can be `never', `always', or `auto', where `auto'\n\-            marks up matches only when output on a terminal.  The default is\n\-            `auto'.\n\+            GREP_COLOR or GREP_COLORS environment variable.  WHEN can be\n\+            `never', `always', or `auto', where `auto' marks up matches only\n\+            when output on a terminal.  The default is `auto'.\n\     --colors=COLORS, --colours=COLORS\n\             Use COLORS to mark up text.  COLORS is a colon-separated list of\n\             one or more parameters `sl=' (selected line), `cx=' (context line),\n\@@ -7893,6 +7941,11 @@ void help(const char *message, const char *arg)             results from different files.\n\     --help\n\             Print a help message.\n\+    --hexdump=[1-8][b][c]\n\+            Output matches in 1 to 8 columns of 8 bytes hexadecimal.  The\n\+            default is 2 columns or 16 bytes per line.  Option `b' removes\n\+            the space breaks.  Option `c' removes the character column.\n\+            Enables -X if -W or -X is not specified.\n\     -I\n\             Ignore matches in binary files.  This option is equivalent to the\n\             --binary-files=without-match option.\n\@@ -7945,13 +7998,13 @@ void help(const char *message, const char *arg)             simultaneously.  -J1 disables threading: files are searched in the\n\             same order as specified.\n\     -j, --smart-case\n\-            Perform case insensitive matching unless PATTERN contains an upper\n\-            case letter.  This option applies to ASCII letters only.\n\+            Perform case insensitive matching unless a pattern contains an\n\+            upper case letter.  This option applies to ASCII letters only.\n\     --json\n\             Output file matches in JSON.  If -H, -n, -k, or -b is specified,\n\             additional values are output.  See also options --format and -u.\n\-    -K NUM1[,NUM2], --range=NUM1[,NUM2]\n\-            Start searching at line NUM1; stops at line NUM2 when specified.\n\+    -K FROM[,END], --range=FROM[,END]\n\+            Start searching at line FROM; stops at line END when specified.\n\     -k, --column-number\n\             The column number of a matched pattern is displayed in front of the\n\             respective matched line, starting at column 1.  Tabs are expanded\n\@@ -8055,12 +8108,12 @@ void help(const char *message, const char *arg)     --pretty\n\             When output is sent to a terminal, enables --color and --heading.\n\     -Q ENCODING, --encoding=ENCODING\n\-            The input file encoding.  The possible values of ENCODING can be:";+            The encoding format of the input, where ENCODING can be:";   for (int i = 0; format_table[i].format != NULL; ++i)     std::cout << (i == 0 ? "" : ",") << (i % 4 ? " " : "\n            ") << "`" << format_table[i].format << "'";   std::cout << ".\n\     -q, --quiet, --silent\n\-            Quiet mode: suppress normal output.  ugrep will only search until a\n\+            Quiet mode: suppress all output.  ugrep will only search until a\n\             match has been found, making searches potentially less expensive.\n\     -R, --dereference-recursive\n\             Recursively read all files under each directory.  Follow all\n\@@ -8124,7 +8177,7 @@ void help(const char *message, const char *arg)             this option does not apply to -f FILE patterns.\n\     -X, --hex\n\             Output matches in hexadecimal.  This option is equivalent to the\n\-            --binary-files=hex option.\n\+            --binary-files=hex option.  See also option --hexdump.\n\     -x, --line-regexp\n\             Only input lines selected against the entire PATTERN is considered\n\             to be matching lines (as if surrounded by ^ and $).  If a PATTERN\n\@@ -8141,7 +8194,7 @@ void help(const char *message, const char *arg)     -y, --any-line\n\             Any matching or non-matching line is output.  Non-matching lines\n\             are output with the `-' separator as context of the matching lines.\n\-            See also options -A, -B, and -C.\n\+            See also options -A, -B, and -C.  Disables multi-line matching.\n\     -Z, --null\n\             Prints a zero-byte after the file name.\n\     -z, --decompress\n\

tests/Hello.java

@@ -1,4 +1,5 @@ import java.lang.*;+ public class Hello // prints a Hello World! greeting { public static void main(String[] arg)   { System.out.println("Hello World!");

tests/archive.cpio

Binary file changed

tests/archive.gz

Binary file changed

tests/archive.pax

Binary file changed

tests/archive.tar

Binary file changed

tests/archive.tar.Z

Binary file changed

tests/archive.tar.zip

Binary file changed

tests/archive.tbz

Binary file changed

tests/archive.tgz

Binary file changed

tests/archive.tlz

Binary file changed

tests/archive.txz

Binary file changed

tests/archive.zip

Binary file changed

tests/gen.sh

@@ -68,7 +68,10 @@ END $UG -Fiwco -f lorem lorem.utf8.txt  > out/lorem.utf8.out $UG -Fiwco -f lorem lorem.utf16.txt > out/lorem.utf16.out $UG -Fiwco -f lorem lorem.utf32.txt > out/lorem.utf32.out-cat lorem | $UG -Fjwco -Q LATIN1 -f - lorem.latin1.txt > out/lorem.latin1.out+cat lorem | $UG -Fiwco -Q LATIN1 -f - lorem.latin1.txt > out/lorem.latin1.out++$UG -ci hello Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt > out/Hello_Hello-ci.out+$UG -cj hello Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt > out/Hello_Hello-cj.out  $UG -e Hello -e '".*?"' Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt > out/Hello_Hello-ee.out $UG -e Hello -N '".*?"' Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt > out/Hello_Hello-eN.out@@ -79,15 +82,29 @@ $UG --range=1,1   Hello Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hell for PAT in '' 'Hello' '\w+\s+\S+' 'nomatch' ; do   FN=`echo "Hello_$PAT" | tr -Cd '[:alnum:]_'`   for OUT in '' '-I' '-W' '-X' ; do-    for OPS in '' '-l' '-lv' '-c' '-co' '-cv' '-n' '-nkbT' '-unkbT' '-o' '-ounkbT' '-on' '-onkbT' '-nv' '-nC1' '-nvC1' '-ny' '-nvy' ; do+    for OPS in '' '-l' '-lv' '-c' '-co' '-cv' '-n' '-nkbT' '-unkbT' '-o' '-on' '-onkbT' '-ounkbT' '-nv' '-nC1' '-nvC1' '-ny' '-nvy' ; do       $UG -U $OUT $OPS "$PAT" Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt > "out/$FN$OUT$OPS.out"     done   done   for OUT in '--csv' '--json' '--xml' ; do-    for OPS in '' '-l' '-lv' '-c' '-co' '-cv' '-n' '-nkb' '-unkb' '-o' '-ounkb' '-on' '-onkb' ; do+    for OPS in '' '-l' '-lv' '-c' '-co' '-cv' '-n' '-nkb' '-unkb' '-o' '-on' '-onkb' '-ounkb' ; do       $UG -U $OUT $OPS "$PAT" Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt > "out/$FN$OUT$OPS.out"     done   done+  $UG -U --format-open='%m) %f:%~' --format='  %m) %n,%k %w-%d%~' --format-close='%~' "$PAT" Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt > "out/$FN--format.out"+  $UG -U -Iw "$PAT" Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt > "out/$FN-Iw.out"+  $UG -U -Ix "$PAT" Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt > "out/$FN-Ix.out"+  $UG -U -F  "$PAT" Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt > "out/$FN-F.out"+  $UG -U -Fw "$PAT" Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt > "out/$FN-Fw.out"+  $UG -U -Fx "$PAT" Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt > "out/$FN-Fx.out"+  if [ "$PAT" == '\w+\s+\S+' ]; then+    $UG -U -G '\w\+\s\+\S\+' Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt > "out/$FN-G.out"+  else+    $UG -U -G "$PAT" Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt > "out/$FN-G.out"+  fi+  $UG -U -P  "$PAT" Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt > "out/$FN-P.out"+  $UG -U -Pw "$PAT" Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt > "out/$FN-Pw.out"+  $UG -U -Px "$PAT" Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt > "out/$FN-Px.out" done  echo "GENERATING TEST ARCHIVES"

tests/out/Hello_--csv-c.out

@@ -1,6 +1,5 @@ "Hello.bat",2 "Hello.class",8-"Hello.java",6 "Hello.pdf",134 "Hello.sh",2 "Hello.txt",1

tests/out/Hello_--csv-co.out

@@ -1,6 +1,5 @@ "Hello.bat",2 "Hello.class",8-"Hello.java",6 "Hello.pdf",134 "Hello.sh",2 "Hello.txt",1

tests/out/Hello_--csv-cv.out

@@ -1,6 +1,5 @@ "Hello.bat",0 "Hello.class",0-"Hello.java",0 "Hello.pdf",0 "Hello.sh",0 "Hello.txt",0

tests/out/Hello_--csv-n.out

@@ -9,11 +9,12 @@ "Hello.class",7,"\x00\x00\x00" "Hello.class",8,"\x00\x02\x00\x00\x00\x04\x00\b\x00\x05\x00\x01\x00\r\x00\x00\x00\x02\x00\x0e" "Hello.java",1,"import java.lang.*;"-"Hello.java",2,"public class Hello // prints a Hello World! greeting"-"Hello.java",3,"{ public static void main(String[] arg)"-"Hello.java",4,"  { System.out.println(""Hello World!"");"-"Hello.java",5,"  }"-"Hello.java",6,"}"+"Hello.java",2,""+"Hello.java",3,"public class Hello // prints a Hello World! greeting"+"Hello.java",4,"{ public static void main(String[] arg)"+"Hello.java",5,"  { System.out.println(""Hello World!"");"+"Hello.java",6,"  }"+"Hello.java",7,"}" "Hello.pdf",1,"%PDF-1.3" "Hello.pdf",2,"%Äåòåë§ó ÐÄÆ" "Hello.pdf",3,"4 0 obj"

tests/out/Hello_--csv-nkb.out

@@ -9,11 +9,12 @@ "Hello.class",7,1,392,"\x00\x00\x00" "Hello.class",8,1,396,"\x00\x02\x00\x00\x00\x04\x00\b\x00\x05\x00\x01\x00\r\x00\x00\x00\x02\x00\x0e" "Hello.java",1,1,0,"import java.lang.*;"-"Hello.java",2,1,20,"public class Hello // prints a Hello World! greeting"-"Hello.java",3,1,73,"{ public static void main(String[] arg)"-"Hello.java",4,1,113,"  { System.out.println(""Hello World!"");"-"Hello.java",5,1,153,"  }"-"Hello.java",6,1,157,"}"+"Hello.java",2,1,20,""+"Hello.java",3,1,21,"public class Hello // prints a Hello World! greeting"+"Hello.java",4,1,74,"{ public static void main(String[] arg)"+"Hello.java",5,1,114,"  { System.out.println(""Hello World!"");"+"Hello.java",6,1,154,"  }"+"Hello.java",7,1,158,"}" "Hello.pdf",1,1,0,"%PDF-1.3" "Hello.pdf",2,1,9,"%Äåòåë§ó ÐÄÆ" "Hello.pdf",3,1,22,"4 0 obj"

tests/out/Hello_--csv-o.out

@@ -9,6 +9,7 @@ "Hello.class","\x00\x00\x00" "Hello.class","\x00\x02\x00\x00\x00\x04\x00\b\x00\x05\x00\x01\x00\r\x00\x00\x00\x02\x00\x0e" "Hello.java","import java.lang.*;"+"Hello.java","" "Hello.java","public class Hello // prints a Hello World! greeting" "Hello.java","{ public static void main(String[] arg)" "Hello.java","  { System.out.println(""Hello World!"");"

tests/out/Hello_--csv-on.out

@@ -9,11 +9,12 @@ "Hello.class",7,"\x00\x00\x00" "Hello.class",8,"\x00\x02\x00\x00\x00\x04\x00\b\x00\x05\x00\x01\x00\r\x00\x00\x00\x02\x00\x0e" "Hello.java",1,"import java.lang.*;"-"Hello.java",2,"public class Hello // prints a Hello World! greeting"-"Hello.java",3,"{ public static void main(String[] arg)"-"Hello.java",4,"  { System.out.println(""Hello World!"");"-"Hello.java",5,"  }"-"Hello.java",6,"}"+"Hello.java",2,""+"Hello.java",3,"public class Hello // prints a Hello World! greeting"+"Hello.java",4,"{ public static void main(String[] arg)"+"Hello.java",5,"  { System.out.println(""Hello World!"");"+"Hello.java",6,"  }"+"Hello.java",7,"}" "Hello.pdf",1,"%PDF-1.3" "Hello.pdf",2,"%Äåòåë§ó ÐÄÆ" "Hello.pdf",3,"4 0 obj"

tests/out/Hello_--csv-onkb.out

@@ -9,11 +9,12 @@ "Hello.class",7,1,392,"\x00\x00\x00" "Hello.class",8,1,396,"\x00\x02\x00\x00\x00\x04\x00\b\x00\x05\x00\x01\x00\r\x00\x00\x00\x02\x00\x0e" "Hello.java",1,1,0,"import java.lang.*;"-"Hello.java",2,1,20,"public class Hello // prints a Hello World! greeting"-"Hello.java",3,1,73,"{ public static void main(String[] arg)"-"Hello.java",4,1,113,"  { System.out.println(""Hello World!"");"-"Hello.java",5,1,153,"  }"-"Hello.java",6,1,157,"}"+"Hello.java",2,1,20,""+"Hello.java",3,1,21,"public class Hello // prints a Hello World! greeting"+"Hello.java",4,1,74,"{ public static void main(String[] arg)"+"Hello.java",5,1,114,"  { System.out.println(""Hello World!"");"+"Hello.java",6,1,154,"  }"+"Hello.java",7,1,158,"}" "Hello.pdf",1,1,0,"%PDF-1.3" "Hello.pdf",2,1,9,"%Äåòåë§ó ÐÄÆ" "Hello.pdf",3,1,22,"4 0 obj"

tests/out/Hello_--csv-ounkb.out

@@ -9,11 +9,12 @@ "Hello.class",7,1,392,"\x00\x00\x00" "Hello.class",8,1,396,"\x00\x02\x00\x00\x00\x04\x00\b\x00\x05\x00\x01\x00\r\x00\x00\x00\x02\x00\x0e" "Hello.java",1,1,0,"import java.lang.*;"-"Hello.java",2,1,20,"public class Hello // prints a Hello World! greeting"-"Hello.java",3,1,73,"{ public static void main(String[] arg)"-"Hello.java",4,1,113,"  { System.out.println(""Hello World!"");"-"Hello.java",5,1,153,"  }"-"Hello.java",6,1,157,"}"+"Hello.java",2,1,20,""+"Hello.java",3,1,21,"public class Hello // prints a Hello World! greeting"+"Hello.java",4,1,74,"{ public static void main(String[] arg)"+"Hello.java",5,1,114,"  { System.out.println(""Hello World!"");"+"Hello.java",6,1,154,"  }"+"Hello.java",7,1,158,"}" "Hello.pdf",1,1,0,"%PDF-1.3" "Hello.pdf",2,1,9,"%Äåòåë§ó ÐÄÆ" "Hello.pdf",3,1,22,"4 0 obj"

tests/out/Hello_--csv-unkb.out

@@ -9,11 +9,12 @@ "Hello.class",7,1,392,"\x00\x00\x00" "Hello.class",8,1,396,"\x00\x02\x00\x00\x00\x04\x00\b\x00\x05\x00\x01\x00\r\x00\x00\x00\x02\x00\x0e" "Hello.java",1,1,0,"import java.lang.*;"-"Hello.java",2,1,20,"public class Hello // prints a Hello World! greeting"-"Hello.java",3,1,73,"{ public static void main(String[] arg)"-"Hello.java",4,1,113,"  { System.out.println(""Hello World!"");"-"Hello.java",5,1,153,"  }"-"Hello.java",6,1,157,"}"+"Hello.java",2,1,20,""+"Hello.java",3,1,21,"public class Hello // prints a Hello World! greeting"+"Hello.java",4,1,74,"{ public static void main(String[] arg)"+"Hello.java",5,1,114,"  { System.out.println(""Hello World!"");"+"Hello.java",6,1,154,"  }"+"Hello.java",7,1,158,"}" "Hello.pdf",1,1,0,"%PDF-1.3" "Hello.pdf",2,1,9,"%Äåòåë§ó ÐÄÆ" "Hello.pdf",3,1,22,"4 0 obj"

tests/out/Hello_--csv.out

@@ -9,6 +9,7 @@ "Hello.class","\x00\x00\x00" "Hello.class","\x00\x02\x00\x00\x00\x04\x00\b\x00\x05\x00\x01\x00\r\x00\x00\x00\x02\x00\x0e" "Hello.java","import java.lang.*;"+"Hello.java","" "Hello.java","public class Hello // prints a Hello World! greeting" "Hello.java","{ public static void main(String[] arg)" "Hello.java","  { System.out.println(""Hello World!"");"

tests/out/Hello_--format.out

new file mode 100644@@ -0,0 +1,166 @@+1) Hello.bat:+  1) 1,1 9-9+  2) 2,1 19-19++2) Hello.class:+  1) 1,1 8-10+  2) 2,1 12-12+  3) 3,1 84-84+  4) 4,1 12-12+  5) 5,1 220-222+  6) 6,1 43-46+  7) 7,1 3-3+  8) 8,1 20-20++3) Hello.java:+  1) 1,1 19-19+  2) 2,1 0-0+  3) 3,1 52-52+  4) 4,1 39-39+  5) 5,1 39-39+  6) 6,1 3-3+  7) 7,1 1-1++4) Hello.pdf:+  1) 1,1 8-8+  2) 2,1 10-12+  3) 3,1 7-7+  4) 4,1 40-40+  5) 5,1 6-6+  6) 6,1 3-5+  7) 7,1 36-53+  8) 8,1 40-63+  9) 9,1 9-9+  10) 10,1 6-6+  11) 11,1 7-7+  12) 12,1 3-3+  13) 13,1 6-6+  14) 14,1 7-7+  15) 15,1 85-85+  16) 16,1 2-2+  17) 17,1 6-6+  18) 18,1 7-7+  19) 19,1 75-75+  20) 20,1 5-5+  21) 21,1 6-6+  22) 22,1 7-7+  23) 23,1 69-69+  24) 24,1 6-6+  25) 25,1 58-81+  26) 26,1 313-412+  27) 27,1 159-203+  28) 28,1 111-153+  29) 29,1 175-226+  30) 30,1 29-36+  31) 31,1 9-9+  32) 32,1 6-6+  33) 33,1 8-8+  34) 34,1 4-4+  35) 35,1 6-6+  36) 36,1 7-7+  37) 37,1 19-19+  38) 38,1 6-6+  39) 39,1 7-7+  40) 40,1 67-67+  41) 41,1 6-6+  42) 42,1 8-8+  43) 43,1 33-33+  44) 44,1 6-6+  45) 45,1 7-7+  46) 46,1 81-81+  47) 47,1 76-76+  48) 48,1 75-75+  49) 49,1 12-12+  50) 50,1 6-6+  51) 51,1 8-8+  52) 52,1 76-76+  53) 53,1 76-76+  54) 54,1 78-78+  55) 55,1 2-2+  56) 56,1 6-6+  57) 57,1 8-8+  58) 58,1 55-55+  59) 59,1 6-6+  60) 60,1 59-76+  61) 61,1 349-486+  62) 62,1 38-46+  63) 63,1 5-6+  64) 64,1 61-90+  65) 65,1 31-44+  66) 66,1 95-114+  67) 67,1 17-21+  68) 68,1 4-4+  69) 69,1 7-8+  70) 70,1 35-45+  71) 71,1 146-191+  72) 72,1 72-105+  73) 73,1 8-11+  74) 74,1 92-126+  75) 75,1 7-10+  76) 76,1 14-18+  77) 77,1 517-679+  78) 78,1 492-636+  79) 79,1 9-9+  80) 80,1 6-6+  81) 81,1 8-8+  82) 82,1 4-4+  83) 83,1 6-6+  84) 84,1 8-8+  85) 85,1 7-7+  86) 86,1 6-6+  87) 87,1 8-8+  88) 88,1 36-36+  89) 89,1 6-6+  90) 90,1 8-8+  91) 91,1 10-10+  92) 92,1 6-6+  93) 93,1 8-8+  94) 94,1 25-25+  95) 95,1 6-6+  96) 96,1 8-8+  97) 97,1 2-2+  98) 98,1 6-6+  99) 99,1 8-8+  100) 100,1 3-3+  101) 101,1 6-6+  102) 102,1 7-7+  103) 103,1 79-79+  104) 104,1 48-48+  105) 105,1 6-6+  106) 106,1 4-4+  107) 107,1 4-4+  108) 108,1 19-19+  109) 109,1 19-19+  110) 110,1 19-19+  111) 111,1 19-19+  112) 112,1 19-19+  113) 113,1 19-19+  114) 114,1 19-19+  115) 115,1 19-19+  116) 116,1 19-19+  117) 117,1 19-19+  118) 118,1 19-19+  119) 119,1 19-19+  120) 120,1 19-19+  121) 121,1 19-19+  122) 122,1 19-19+  123) 123,1 19-19+  124) 124,1 19-19+  125) 125,1 19-19+  126) 126,1 19-19+  127) 127,1 19-19+  128) 128,1 19-19+  129) 129,1 7-7+  130) 130,1 77-77+  131) 131,1 39-39+  132) 132,1 9-9+  133) 133,1 4-4+  134) 134,1 5-5++5) Hello.sh:+  1) 1,1 9-9+  2) 2,1 19-19++6) Hello.txt:+  1) 1,1 5-5+

tests/out/Hello_--json-c.out

@@ -14,7 +14,7 @@   {     "file": "Hello.java",     "matches": [,-      { "match": 6 }+      { "match": 7 }     ]   },   {

tests/out/Hello_--json-co.out

@@ -14,7 +14,7 @@   {     "file": "Hello.java",     "matches": [,-      { "match": 6 }+      { "match": 7 }     ]   },   {

tests/out/Hello_--json-n.out

@@ -23,11 +23,12 @@     "file": "Hello.java",     "matches": [       { "line": 1, "match": "import java.lang.*;" },-      { "line": 2, "match": "public class Hello // prints a Hello World! greeting" },-      { "line": 3, "match": "{ public static void main(String[] arg)" },-      { "line": 4, "match": "  { System.out.println(\"Hello World!\");" },-      { "line": 5, "match": "  }" },-      { "line": 6, "match": "}" }+      { "line": 2, "match": "" },+      { "line": 3, "match": "public class Hello // prints a Hello World! greeting" },+      { "line": 4, "match": "{ public static void main(String[] arg)" },+      { "line": 5, "match": "  { System.out.println(\"Hello World!\");" },+      { "line": 6, "match": "  }" },+      { "line": 7, "match": "}" }     ]   },   {

tests/out/Hello_--json-nkb.out

@@ -23,11 +23,12 @@     "file": "Hello.java",     "matches": [       { "line": 1, "column": 1, "offset": 0, "match": "import java.lang.*;" },-      { "line": 2, "column": 1, "offset": 20, "match": "public class Hello // prints a Hello World! greeting" },-      { "line": 3, "column": 1, "offset": 73, "match": "{ public static void main(String[] arg)" },-      { "line": 4, "column": 1, "offset": 113, "match": "  { System.out.println(\"Hello World!\");" },-      { "line": 5, "column": 1, "offset": 153, "match": "  }" },-      { "line": 6, "column": 1, "offset": 157, "match": "}" }+      { "line": 2, "column": 1, "offset": 20, "match": "" },+      { "line": 3, "column": 1, "offset": 21, "match": "public class Hello // prints a Hello World! greeting" },+      { "line": 4, "column": 1, "offset": 74, "match": "{ public static void main(String[] arg)" },+      { "line": 5, "column": 1, "offset": 114, "match": "  { System.out.println(\"Hello World!\");" },+      { "line": 6, "column": 1, "offset": 154, "match": "  }" },+      { "line": 7, "column": 1, "offset": 158, "match": "}" }     ]   },   {

tests/out/Hello_--json-o.out

@@ -23,6 +23,7 @@     "file": "Hello.java",     "matches": [       { "match": "import java.lang.*;" },+      { "match": "" },       { "match": "public class Hello // prints a Hello World! greeting" },       { "match": "{ public static void main(String[] arg)" },       { "match": "  { System.out.println(\"Hello World!\");" },

tests/out/Hello_--json-on.out

@@ -23,11 +23,12 @@     "file": "Hello.java",     "matches": [       { "line": 1, "match": "import java.lang.*;" },-      { "line": 2, "match": "public class Hello // prints a Hello World! greeting" },-      { "line": 3, "match": "{ public static void main(String[] arg)" },-      { "line": 4, "match": "  { System.out.println(\"Hello World!\");" },-      { "line": 5, "match": "  }" },-      { "line": 6, "match": "}" }+      { "line": 2, "match": "" },+      { "line": 3, "match": "public class Hello // prints a Hello World! greeting" },+      { "line": 4, "match": "{ public static void main(String[] arg)" },+      { "line": 5, "match": "  { System.out.println(\"Hello World!\");" },+      { "line": 6, "match": "  }" },+      { "line": 7, "match": "}" }     ]   },   {

tests/out/Hello_--json-onkb.out

@@ -23,11 +23,12 @@     "file": "Hello.java",     "matches": [       { "line": 1, "column": 1, "offset": 0, "match": "import java.lang.*;" },-      { "line": 2, "column": 1, "offset": 20, "match": "public class Hello // prints a Hello World! greeting" },-      { "line": 3, "column": 1, "offset": 73, "match": "{ public static void main(String[] arg)" },-      { "line": 4, "column": 1, "offset": 113, "match": "  { System.out.println(\"Hello World!\");" },-      { "line": 5, "column": 1, "offset": 153, "match": "  }" },-      { "line": 6, "column": 1, "offset": 157, "match": "}" }+      { "line": 2, "column": 1, "offset": 20, "match": "" },+      { "line": 3, "column": 1, "offset": 21, "match": "public class Hello // prints a Hello World! greeting" },+      { "line": 4, "column": 1, "offset": 74, "match": "{ public static void main(String[] arg)" },+      { "line": 5, "column": 1, "offset": 114, "match": "  { System.out.println(\"Hello World!\");" },+      { "line": 6, "column": 1, "offset": 154, "match": "  }" },+      { "line": 7, "column": 1, "offset": 158, "match": "}" }     ]   },   {

tests/out/Hello_--json-ounkb.out

@@ -23,11 +23,12 @@     "file": "Hello.java",     "matches": [       { "line": 1, "column": 1, "offset": 0, "match": "import java.lang.*;" },-      { "line": 2, "column": 1, "offset": 20, "match": "public class Hello // prints a Hello World! greeting" },-      { "line": 3, "column": 1, "offset": 73, "match": "{ public static void main(String[] arg)" },-      { "line": 4, "column": 1, "offset": 113, "match": "  { System.out.println(\"Hello World!\");" },-      { "line": 5, "column": 1, "offset": 153, "match": "  }" },-      { "line": 6, "column": 1, "offset": 157, "match": "}" }+      { "line": 2, "column": 1, "offset": 20, "match": "" },+      { "line": 3, "column": 1, "offset": 21, "match": "public class Hello // prints a Hello World! greeting" },+      { "line": 4, "column": 1, "offset": 74, "match": "{ public static void main(String[] arg)" },+      { "line": 5, "column": 1, "offset": 114, "match": "  { System.out.println(\"Hello World!\");" },+      { "line": 6, "column": 1, "offset": 154, "match": "  }" },+      { "line": 7, "column": 1, "offset": 158, "match": "}" }     ]   },   {

tests/out/Hello_--json-unkb.out

@@ -23,11 +23,12 @@     "file": "Hello.java",     "matches": [       { "line": 1, "column": 1, "offset": 0, "match": "import java.lang.*;" },-      { "line": 2, "column": 1, "offset": 20, "match": "public class Hello // prints a Hello World! greeting" },-      { "line": 3, "column": 1, "offset": 73, "match": "{ public static void main(String[] arg)" },-      { "line": 4, "column": 1, "offset": 113, "match": "  { System.out.println(\"Hello World!\");" },-      { "line": 5, "column": 1, "offset": 153, "match": "  }" },-      { "line": 6, "column": 1, "offset": 157, "match": "}" }+      { "line": 2, "column": 1, "offset": 20, "match": "" },+      { "line": 3, "column": 1, "offset": 21, "match": "public class Hello // prints a Hello World! greeting" },+      { "line": 4, "column": 1, "offset": 74, "match": "{ public static void main(String[] arg)" },+      { "line": 5, "column": 1, "offset": 114, "match": "  { System.out.println(\"Hello World!\");" },+      { "line": 6, "column": 1, "offset": 154, "match": "  }" },+      { "line": 7, "column": 1, "offset": 158, "match": "}" }     ]   },   {

tests/out/Hello_--json.out

@@ -23,6 +23,7 @@     "file": "Hello.java",     "matches": [       { "match": "import java.lang.*;" },+      { "match": "" },       { "match": "public class Hello // prints a Hello World! greeting" },       { "match": "{ public static void main(String[] arg)" },       { "match": "  { System.out.println(\"Hello World!\");" },

tests/out/Hello_--xml-c.out

@@ -6,7 +6,7 @@     <match>8</match>   </file>   <file name="Hello.java">-    <match>6</match>+    <match>7</match>   </file>   <file name="Hello.pdf">     <match>134</match>

tests/out/Hello_--xml-co.out

@@ -6,7 +6,7 @@     <match>8</match>   </file>   <file name="Hello.java">-    <match>6</match>+    <match>7</match>   </file>   <file name="Hello.pdf">     <match>134</match>

tests/out/Hello_--xml-n.out

@@ -15,11 +15,12 @@   </file>   <file name="Hello.java">     <match line="1">import java.lang.*;</match>-    <match line="2">public class Hello // prints a Hello World! greeting</match>-    <match line="3">{ public static void main(String[] arg)</match>-    <match line="4">  { System.out.println(&quot;Hello World!&quot;);</match>-    <match line="5">  }</match>-    <match line="6">}</match>+    <match line="2"></match>+    <match line="3">public class Hello // prints a Hello World! greeting</match>+    <match line="4">{ public static void main(String[] arg)</match>+    <match line="5">  { System.out.println(&quot;Hello World!&quot;);</match>+    <match line="6">  }</match>+    <match line="7">}</match>   </file>   <file name="Hello.pdf">     <match line="1">%PDF-1.3</match>

tests/out/Hello_--xml-nkb.out

@@ -15,11 +15,12 @@   </file>   <file name="Hello.java">     <match line="1" column="1" offset="0">import java.lang.*;</match>-    <match line="2" column="1" offset="20">public class Hello // prints a Hello World! greeting</match>-    <match line="3" column="1" offset="73">{ public static void main(String[] arg)</match>-    <match line="4" column="1" offset="113">  { System.out.println(&quot;Hello World!&quot;);</match>-    <match line="5" column="1" offset="153">  }</match>-    <match line="6" column="1" offset="157">}</match>+    <match line="2" column="1" offset="20"></match>+    <match line="3" column="1" offset="21">public class Hello // prints a Hello World! greeting</match>+    <match line="4" column="1" offset="74">{ public static void main(String[] arg)</match>+    <match line="5" column="1" offset="114">  { System.out.println(&quot;Hello World!&quot;);</match>+    <match line="6" column="1" offset="154">  }</match>+    <match line="7" column="1" offset="158">}</match>   </file>   <file name="Hello.pdf">     <match line="1" column="1" offset="0">%PDF-1.3</match>

tests/out/Hello_--xml-o.out

@@ -15,6 +15,7 @@   </file>   <file name="Hello.java">     <match>import java.lang.*;</match>+    <match></match>     <match>public class Hello // prints a Hello World! greeting</match>     <match>{ public static void main(String[] arg)</match>     <match>  { System.out.println(&quot;Hello World!&quot;);</match>

tests/out/Hello_--xml-on.out

@@ -15,11 +15,12 @@   </file>   <file name="Hello.java">     <match line="1">import java.lang.*;</match>-    <match line="2">public class Hello // prints a Hello World! greeting</match>-    <match line="3">{ public static void main(String[] arg)</match>-    <match line="4">  { System.out.println(&quot;Hello World!&quot;);</match>-    <match line="5">  }</match>-    <match line="6">}</match>+    <match line="2"></match>+    <match line="3">public class Hello // prints a Hello World! greeting</match>+    <match line="4">{ public static void main(String[] arg)</match>+    <match line="5">  { System.out.println(&quot;Hello World!&quot;);</match>+    <match line="6">  }</match>+    <match line="7">}</match>   </file>   <file name="Hello.pdf">     <match line="1">%PDF-1.3</match>

tests/out/Hello_--xml-onkb.out

@@ -15,11 +15,12 @@   </file>   <file name="Hello.java">     <match line="1" column="1" offset="0">import java.lang.*;</match>-    <match line="2" column="1" offset="20">public class Hello // prints a Hello World! greeting</match>-    <match line="3" column="1" offset="73">{ public static void main(String[] arg)</match>-    <match line="4" column="1" offset="113">  { System.out.println(&quot;Hello World!&quot;);</match>-    <match line="5" column="1" offset="153">  }</match>-    <match line="6" column="1" offset="157">}</match>+    <match line="2" column="1" offset="20"></match>+    <match line="3" column="1" offset="21">public class Hello // prints a Hello World! greeting</match>+    <match line="4" column="1" offset="74">{ public static void main(String[] arg)</match>+    <match line="5" column="1" offset="114">  { System.out.println(&quot;Hello World!&quot;);</match>+    <match line="6" column="1" offset="154">  }</match>+    <match line="7" column="1" offset="158">}</match>   </file>   <file name="Hello.pdf">     <match line="1" column="1" offset="0">%PDF-1.3</match>

tests/out/Hello_--xml-ounkb.out

@@ -15,11 +15,12 @@   </file>   <file name="Hello.java">     <match line="1" column="1" offset="0">import java.lang.*;</match>-    <match line="2" column="1" offset="20">public class Hello // prints a Hello World! greeting</match>-    <match line="3" column="1" offset="73">{ public static void main(String[] arg)</match>-    <match line="4" column="1" offset="113">  { System.out.println(&quot;Hello World!&quot;);</match>-    <match line="5" column="1" offset="153">  }</match>-    <match line="6" column="1" offset="157">}</match>+    <match line="2" column="1" offset="20"></match>+    <match line="3" column="1" offset="21">public class Hello // prints a Hello World! greeting</match>+    <match line="4" column="1" offset="74">{ public static void main(String[] arg)</match>+    <match line="5" column="1" offset="114">  { System.out.println(&quot;Hello World!&quot;);</match>+    <match line="6" column="1" offset="154">  }</match>+    <match line="7" column="1" offset="158">}</match>   </file>   <file name="Hello.pdf">     <match line="1" column="1" offset="0">%PDF-1.3</match>

tests/out/Hello_--xml-unkb.out

@@ -15,11 +15,12 @@   </file>   <file name="Hello.java">     <match line="1" column="1" offset="0">import java.lang.*;</match>-    <match line="2" column="1" offset="20">public class Hello // prints a Hello World! greeting</match>-    <match line="3" column="1" offset="73">{ public static void main(String[] arg)</match>-    <match line="4" column="1" offset="113">  { System.out.println(&quot;Hello World!&quot;);</match>-    <match line="5" column="1" offset="153">  }</match>-    <match line="6" column="1" offset="157">}</match>+    <match line="2" column="1" offset="20"></match>+    <match line="3" column="1" offset="21">public class Hello // prints a Hello World! greeting</match>+    <match line="4" column="1" offset="74">{ public static void main(String[] arg)</match>+    <match line="5" column="1" offset="114">  { System.out.println(&quot;Hello World!&quot;);</match>+    <match line="6" column="1" offset="154">  }</match>+    <match line="7" column="1" offset="158">}</match>   </file>   <file name="Hello.pdf">     <match line="1" column="1" offset="0">%PDF-1.3</match>

tests/out/Hello_--xml.out

@@ -15,6 +15,7 @@   </file>   <file name="Hello.java">     <match>import java.lang.*;</match>+    <match></match>     <match>public class Hello // prints a Hello World! greeting</match>     <match>{ public static void main(String[] arg)</match>     <match>  { System.out.println(&quot;Hello World!&quot;);</match>

tests/out/Hello_-F.out

new file mode 100644@@ -0,0 +1,15 @@+Hello.bat:#!/bin/sh+Hello.bat:echo "Hello World!"+Binary file Hello.class matches+Hello.java:import java.lang.*;+Hello.java:+Hello.java:public class Hello // prints a Hello World! greeting+Hello.java:{ public static void main(String[] arg)+Hello.java:  { System.out.println("Hello World!");+Hello.java:  }+Hello.java:}+Hello.pdf:%PDF-1.3+Binary file Hello.pdf matches+Hello.sh:#!/bin/sh+Hello.sh:echo "Hello World!"+Hello.txt:Hello

tests/out/Hello_-Fw.out

new file mode 100644@@ -0,0 +1,15 @@+Hello.bat:#!/bin/sh+Hello.bat:echo "Hello World!"+Binary file Hello.class matches+Hello.java:import java.lang.*;+Hello.java:+Hello.java:public class Hello // prints a Hello World! greeting+Hello.java:{ public static void main(String[] arg)+Hello.java:  { System.out.println("Hello World!");+Hello.java:  }+Hello.java:}+Hello.pdf:%PDF-1.3+Binary file Hello.pdf matches+Hello.sh:#!/bin/sh+Hello.sh:echo "Hello World!"+Hello.txt:Hello

tests/out/Hello_-Fx.out

new file mode 100644@@ -0,0 +1 @@+Hello.java:

tests/out/Hello_-G.out

new file mode 100644@@ -0,0 +1,15 @@+Hello.bat:#!/bin/sh+Hello.bat:echo "Hello World!"+Binary file Hello.class matches+Hello.java:import java.lang.*;+Hello.java:+Hello.java:public class Hello // prints a Hello World! greeting+Hello.java:{ public static void main(String[] arg)+Hello.java:  { System.out.println("Hello World!");+Hello.java:  }+Hello.java:}+Hello.pdf:%PDF-1.3+Binary file Hello.pdf matches+Hello.sh:#!/bin/sh+Hello.sh:echo "Hello World!"+Hello.txt:Hello

tests/out/Hello_-I-c.out

@@ -1,6 +1,6 @@ Hello.bat:2 Hello.class:0-Hello.java:6+Hello.java:7 Hello.pdf:134 Hello.sh:2 Hello.txt:1

tests/out/Hello_-I-co.out

@@ -1,6 +1,6 @@ Hello.bat:2 Hello.class:0-Hello.java:6+Hello.java:7 Hello.pdf:134 Hello.sh:2 Hello.txt:1

tests/out/Hello_-I-n.out

@@ -1,11 +1,12 @@ Hello.bat:1:#!/bin/sh Hello.bat:2:echo "Hello World!" Hello.java:1:import java.lang.*;-Hello.java:2:public class Hello // prints a Hello World! greeting-Hello.java:3:{ public static void main(String[] arg)-Hello.java:4:  { System.out.println("Hello World!");-Hello.java:5:  }-Hello.java:6:}+Hello.java:2:+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java:4:{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!");+Hello.java:6:  }+Hello.java:7:} Hello.pdf:1:%PDF-1.3 Hello.sh:1:#!/bin/sh Hello.sh:2:echo "Hello World!"

tests/out/Hello_-I-nC1.out

@@ -1,11 +1,12 @@ Hello.bat:1:#!/bin/sh Hello.bat:2:echo "Hello World!" Hello.java:1:import java.lang.*;-Hello.java:2:public class Hello // prints a Hello World! greeting-Hello.java:3:{ public static void main(String[] arg)-Hello.java:4:  { System.out.println("Hello World!");-Hello.java:5:  }-Hello.java:6:}+Hello.java:2:+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java:4:{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!");+Hello.java:6:  }+Hello.java:7:} Hello.pdf:1:%PDF-1.3 Hello.sh:1:#!/bin/sh Hello.sh:2:echo "Hello World!"

tests/out/Hello_-I-nkbT.out

@@ -1,11 +1,12 @@ Hello.bat:     1:  1:      0:	#!/bin/sh Hello.bat:     2:  1:     10:	echo "Hello World!" Hello.java:     1:  1:      0:	import java.lang.*;-Hello.java:     2:  1:     20:	public class Hello // prints a Hello World! greeting-Hello.java:     3:  1:     73:	{ public static void main(String[] arg)-Hello.java:     4:  1:    113:	  { System.out.println("Hello World!");-Hello.java:     5:  1:    153:	  }-Hello.java:     6:  1:    157:	}+Hello.java:     2:  1:     20:	+Hello.java:     3:  1:     21:	public class Hello // prints a Hello World! greeting+Hello.java:     4:  1:     74:	{ public static void main(String[] arg)+Hello.java:     5:  1:    114:	  { System.out.println("Hello World!");+Hello.java:     6:  1:    154:	  }+Hello.java:     7:  1:    158:	} Hello.pdf:     1:  1:      0:	%PDF-1.3 Hello.sh:     1:  1:      0:	#!/bin/sh Hello.sh:     2:  1:     10:	echo "Hello World!"

tests/out/Hello_-I-nvy.out

@@ -1,11 +1,12 @@ Hello.bat-1-#!/bin/sh Hello.bat-2-echo "Hello World!" Hello.java-1-import java.lang.*;-Hello.java-2-public class Hello // prints a Hello World! greeting-Hello.java-3-{ public static void main(String[] arg)-Hello.java-4-  { System.out.println("Hello World!");-Hello.java-5-  }-Hello.java-6-}+Hello.java-2-+Hello.java-3-public class Hello // prints a Hello World! greeting+Hello.java-4-{ public static void main(String[] arg)+Hello.java-5-  { System.out.println("Hello World!");+Hello.java-6-  }+Hello.java-7-} Hello.pdf-1-%PDF-1.3 Hello.sh-1-#!/bin/sh Hello.sh-2-echo "Hello World!"

tests/out/Hello_-I-ny.out

@@ -1,11 +1,12 @@ Hello.bat:1:#!/bin/sh Hello.bat:2:echo "Hello World!" Hello.java:1:import java.lang.*;-Hello.java:2:public class Hello // prints a Hello World! greeting-Hello.java:3:{ public static void main(String[] arg)-Hello.java:4:  { System.out.println("Hello World!");-Hello.java:5:  }-Hello.java:6:}+Hello.java:2:+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java:4:{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!");+Hello.java:6:  }+Hello.java:7:} Hello.pdf:1:%PDF-1.3 Hello.sh:1:#!/bin/sh Hello.sh:2:echo "Hello World!"

tests/out/Hello_-I-o.out

@@ -1,6 +1,7 @@ Hello.bat:#!/bin/sh Hello.bat:echo "Hello World!" Hello.java:import java.lang.*;+Hello.java: Hello.java:public class Hello // prints a Hello World! greeting Hello.java:{ public static void main(String[] arg) Hello.java:  { System.out.println("Hello World!");

tests/out/Hello_-I-on.out

@@ -1,11 +1,12 @@ Hello.bat:1:#!/bin/sh Hello.bat:2:echo "Hello World!" Hello.java:1:import java.lang.*;-Hello.java:2:public class Hello // prints a Hello World! greeting-Hello.java:3:{ public static void main(String[] arg)-Hello.java:4:  { System.out.println("Hello World!");-Hello.java:5:  }-Hello.java:6:}+Hello.java:2:+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java:4:{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!");+Hello.java:6:  }+Hello.java:7:} Hello.pdf:1:%PDF-1.3 Hello.sh:1:#!/bin/sh Hello.sh:2:echo "Hello World!"

tests/out/Hello_-I-onkbT.out

@@ -1,11 +1,12 @@ Hello.bat:     1:  1:      0:	#!/bin/sh Hello.bat:     2:  1:     10:	echo "Hello World!" Hello.java:     1:  1:      0:	import java.lang.*;-Hello.java:     2:  1:     20:	public class Hello // prints a Hello World! greeting-Hello.java:     3:  1:     73:	{ public static void main(String[] arg)-Hello.java:     4:  1:    113:	  { System.out.println("Hello World!");-Hello.java:     5:  1:    153:	  }-Hello.java:     6:  1:    157:	}+Hello.java:     2:  1:     20:	+Hello.java:     3:  1:     21:	public class Hello // prints a Hello World! greeting+Hello.java:     4:  1:     74:	{ public static void main(String[] arg)+Hello.java:     5:  1:    114:	  { System.out.println("Hello World!");+Hello.java:     6:  1:    154:	  }+Hello.java:     7:  1:    158:	} Hello.pdf:     1:  1:      0:	%PDF-1.3 Hello.sh:     1:  1:      0:	#!/bin/sh Hello.sh:     2:  1:     10:	echo "Hello World!"

tests/out/Hello_-I-ounkbT.out

@@ -1,11 +1,12 @@ Hello.bat:     1:  1:      0:	#!/bin/sh Hello.bat:     2:  1:     10:	echo "Hello World!" Hello.java:     1:  1:      0:	import java.lang.*;-Hello.java:     2:  1:     20:	public class Hello // prints a Hello World! greeting-Hello.java:     3:  1:     73:	{ public static void main(String[] arg)-Hello.java:     4:  1:    113:	  { System.out.println("Hello World!");-Hello.java:     5:  1:    153:	  }-Hello.java:     6:  1:    157:	}+Hello.java:     2:  1:     20:	+Hello.java:     3:  1:     21:	public class Hello // prints a Hello World! greeting+Hello.java:     4:  1:     74:	{ public static void main(String[] arg)+Hello.java:     5:  1:    114:	  { System.out.println("Hello World!");+Hello.java:     6:  1:    154:	  }+Hello.java:     7:  1:    158:	} Hello.pdf:     1:  1:      0:	%PDF-1.3 Hello.sh:     1:  1:      0:	#!/bin/sh Hello.sh:     2:  1:     10:	echo "Hello World!"

tests/out/Hello_-I-unkbT.out

@@ -1,11 +1,12 @@ Hello.bat:     1:  1:      0:	#!/bin/sh Hello.bat:     2:  1:     10:	echo "Hello World!" Hello.java:     1:  1:      0:	import java.lang.*;-Hello.java:     2:  1:     20:	public class Hello // prints a Hello World! greeting-Hello.java:     3:  1:     73:	{ public static void main(String[] arg)-Hello.java:     4:  1:    113:	  { System.out.println("Hello World!");-Hello.java:     5:  1:    153:	  }-Hello.java:     6:  1:    157:	}+Hello.java:     2:  1:     20:	+Hello.java:     3:  1:     21:	public class Hello // prints a Hello World! greeting+Hello.java:     4:  1:     74:	{ public static void main(String[] arg)+Hello.java:     5:  1:    114:	  { System.out.println("Hello World!");+Hello.java:     6:  1:    154:	  }+Hello.java:     7:  1:    158:	} Hello.pdf:     1:  1:      0:	%PDF-1.3 Hello.sh:     1:  1:      0:	#!/bin/sh Hello.sh:     2:  1:     10:	echo "Hello World!"

tests/out/Hello_-I.out

@@ -1,6 +1,7 @@ Hello.bat:#!/bin/sh Hello.bat:echo "Hello World!" Hello.java:import java.lang.*;+Hello.java: Hello.java:public class Hello // prints a Hello World! greeting Hello.java:{ public static void main(String[] arg) Hello.java:  { System.out.println("Hello World!");

tests/out/Hello_-Iw.out

new file mode 100644@@ -0,0 +1,13 @@+Hello.bat:#!/bin/sh+Hello.bat:echo "Hello World!"+Hello.java:import java.lang.*;+Hello.java:+Hello.java:public class Hello // prints a Hello World! greeting+Hello.java:{ public static void main(String[] arg)+Hello.java:  { System.out.println("Hello World!");+Hello.java:  }+Hello.java:}+Hello.pdf:%PDF-1.3+Hello.sh:#!/bin/sh+Hello.sh:echo "Hello World!"+Hello.txt:Hello

tests/out/Hello_-Ix.out

new file mode 100644@@ -0,0 +1 @@+Hello.java:

tests/out/Hello_-P.out

new file mode 100644@@ -0,0 +1,15 @@+Hello.bat:#!/bin/sh+Hello.bat:echo "Hello World!"+Binary file Hello.class matches+Hello.java:import java.lang.*;+Hello.java:+Hello.java:public class Hello // prints a Hello World! greeting+Hello.java:{ public static void main(String[] arg)+Hello.java:  { System.out.println("Hello World!");+Hello.java:  }+Hello.java:}+Hello.pdf:%PDF-1.3+Binary file Hello.pdf matches+Hello.sh:#!/bin/sh+Hello.sh:echo "Hello World!"+Hello.txt:Hello

tests/out/Hello_-Pw.out

new file mode 100644@@ -0,0 +1,15 @@+Hello.bat:#!/bin/sh+Hello.bat:echo "Hello World!"+Binary file Hello.class matches+Hello.java:import java.lang.*;+Hello.java:+Hello.java:public class Hello // prints a Hello World! greeting+Hello.java:{ public static void main(String[] arg)+Hello.java:  { System.out.println("Hello World!");+Hello.java:  }+Hello.java:}+Hello.pdf:%PDF-1.3+Binary file Hello.pdf matches+Hello.sh:#!/bin/sh+Hello.sh:echo "Hello World!"+Hello.txt:Hello

tests/out/Hello_-Px.out

new file mode 100644@@ -0,0 +1,5 @@+Hello.bat:+Hello.java:+Hello.java:+Hello.pdf:+Hello.sh:

tests/out/Hello_-W-c.out

@@ -1,6 +1,6 @@ Hello.bat:2 Hello.class:8-Hello.java:6+Hello.java:7 Hello.pdf:134 Hello.sh:2 Hello.txt:1

tests/out/Hello_-W-co.out

@@ -1,6 +1,6 @@ Hello.bat:2 Hello.class:8-Hello.java:6+Hello.java:7 Hello.pdf:134 Hello.sh:2 Hello.txt:1

tests/out/Hello_-W-n.out

@@ -42,11 +42,12 @@ 00000180:  -- -- -- -- -- -- -- --  -- -- -- -- 00 02 00 00  |------------@B@@| 00000190:  00 04 00 08 00 05 00 01  00 0d 00 00 00 02 00 0e  |@D@H@E@A@M@@@B@N| Hello.java:1:import java.lang.*;-Hello.java:2:public class Hello // prints a Hello World! greeting-Hello.java:3:{ public static void main(String[] arg)-Hello.java:4:  { System.out.println("Hello World!");-Hello.java:5:  }-Hello.java:6:}+Hello.java:2:+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java:4:{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!");+Hello.java:6:  }+Hello.java:7:} Hello.pdf:1:%PDF-1.3 Hello.pdf:2: 00000000:  -- -- -- -- -- -- -- --  -- 25 c4 e5 f2 e5 eb a7  |---------%......|

tests/out/Hello_-W-nC1.out

@@ -42,11 +42,12 @@ 00000180:  -- -- -- -- -- -- -- --  -- -- -- -- 00 02 00 00  |------------@B@@| 00000190:  00 04 00 08 00 05 00 01  00 0d 00 00 00 02 00 0e  |@D@H@E@A@M@@@B@N| Hello.java:1:import java.lang.*;-Hello.java:2:public class Hello // prints a Hello World! greeting-Hello.java:3:{ public static void main(String[] arg)-Hello.java:4:  { System.out.println("Hello World!");-Hello.java:5:  }-Hello.java:6:}+Hello.java:2:+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java:4:{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!");+Hello.java:6:  }+Hello.java:7:} Hello.pdf:1:%PDF-1.3 Hello.pdf:2: 00000000:  -- -- -- -- -- -- -- --  -- 25 c4 e5 f2 e5 eb a7  |---------%......|

tests/out/Hello_-W-nkbT.out

@@ -42,11 +42,12 @@ 00000180:  -- -- -- -- -- -- -- --  -- -- -- -- 00 02 00 00  |------------@B@@| 00000190:  00 04 00 08 00 05 00 01  00 0d 00 00 00 02 00 0e  |@D@H@E@A@M@@@B@N| Hello.java:     1:  1:      0:	import java.lang.*;-Hello.java:     2:  1:     20:	public class Hello // prints a Hello World! greeting-Hello.java:     3:  1:     73:	{ public static void main(String[] arg)-Hello.java:     4:  1:    113:	  { System.out.println("Hello World!");-Hello.java:     5:  1:    153:	  }-Hello.java:     6:  1:    157:	}+Hello.java:     2:  1:     20:	+Hello.java:     3:  1:     21:	public class Hello // prints a Hello World! greeting+Hello.java:     4:  1:     74:	{ public static void main(String[] arg)+Hello.java:     5:  1:    114:	  { System.out.println("Hello World!");+Hello.java:     6:  1:    154:	  }+Hello.java:     7:  1:    158:	} Hello.pdf:     1:  1:      0:	%PDF-1.3 Hello.pdf:     2:  1:      9:	 00000000:  -- -- -- -- -- -- -- --  -- 25 c4 e5 f2 e5 eb a7  |---------%......|

tests/out/Hello_-W-nvy.out

@@ -35,11 +35,12 @@ 00000180-  04 b1 00 00 00 01 00 0a  00 00 00 0a 00 02 00 00  |D.@@@A@J@@@J@B@@| 00000190-  00 04 00 08 00 05 00 01  00 0d 00 00 00 02 00 0e  |@D@H@E@A@M@@@B@N| Hello.java-1-import java.lang.*;-Hello.java-2-public class Hello // prints a Hello World! greeting-Hello.java-3-{ public static void main(String[] arg)-Hello.java-4-  { System.out.println("Hello World!");-Hello.java-5-  }-Hello.java-6-}+Hello.java-2-+Hello.java-3-public class Hello // prints a Hello World! greeting+Hello.java-4-{ public static void main(String[] arg)+Hello.java-5-  { System.out.println("Hello World!");+Hello.java-6-  }+Hello.java-7-} Hello.pdf-1-%PDF-1.3 Hello.pdf-2- 00000000-  -- -- -- -- -- -- -- --  -- 25 c4 e5 f2 e5 eb a7  |---------%......|

tests/out/Hello_-W-ny.out

@@ -35,11 +35,12 @@ 00000180:  04 b1 00 00 00 01 00 0a  00 00 00 0a 00 02 00 00  |D.@@@A@J@@@J@B@@| 00000190:  00 04 00 08 00 05 00 01  00 0d 00 00 00 02 00 0e  |@D@H@E@A@M@@@B@N| Hello.java:1:import java.lang.*;-Hello.java:2:public class Hello // prints a Hello World! greeting-Hello.java:3:{ public static void main(String[] arg)-Hello.java:4:  { System.out.println("Hello World!");-Hello.java:5:  }-Hello.java:6:}+Hello.java:2:+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java:4:{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!");+Hello.java:6:  }+Hello.java:7:} Hello.pdf:1:%PDF-1.3 Hello.pdf:2: 00000000:  -- -- -- -- -- -- -- --  -- 25 c4 e5 f2 e5 eb a7  |---------%......|

tests/out/Hello_-W-o.out

@@ -42,6 +42,7 @@ 00000180:  -- -- -- -- -- -- -- --  -- -- -- -- 00 02 00 00  |------------@B@@| 00000190:  00 04 00 08 00 05 00 01  00 0d 00 00 00 02 00 0e  |@D@H@E@A@M@@@B@N| Hello.java:import java.lang.*;+Hello.java: Hello.java:public class Hello // prints a Hello World! greeting Hello.java:{ public static void main(String[] arg) Hello.java:  { System.out.println("Hello World!");

tests/out/Hello_-W-on.out

@@ -42,11 +42,12 @@ 00000180:  -- -- -- -- -- -- -- --  -- -- -- -- 00 02 00 00  |------------@B@@| 00000190:  00 04 00 08 00 05 00 01  00 0d 00 00 00 02 00 0e  |@D@H@E@A@M@@@B@N| Hello.java:1:import java.lang.*;-Hello.java:2:public class Hello // prints a Hello World! greeting-Hello.java:3:{ public static void main(String[] arg)-Hello.java:4:  { System.out.println("Hello World!");-Hello.java:5:  }-Hello.java:6:}+Hello.java:2:+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java:4:{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!");+Hello.java:6:  }+Hello.java:7:} Hello.pdf:1:%PDF-1.3 Hello.pdf:2: 00000000:  -- -- -- -- -- -- -- --  -- 25 c4 e5 f2 e5 eb a7  |---------%......|

tests/out/Hello_-W-onkbT.out

@@ -42,11 +42,12 @@ 00000180:  -- -- -- -- -- -- -- --  -- -- -- -- 00 02 00 00  |------------@B@@| 00000190:  00 04 00 08 00 05 00 01  00 0d 00 00 00 02 00 0e  |@D@H@E@A@M@@@B@N| Hello.java:     1:  1:      0:	import java.lang.*;-Hello.java:     2:  1:     20:	public class Hello // prints a Hello World! greeting-Hello.java:     3:  1:     73:	{ public static void main(String[] arg)-Hello.java:     4:  1:    113:	  { System.out.println("Hello World!");-Hello.java:     5:  1:    153:	  }-Hello.java:     6:  1:    157:	}+Hello.java:     2:  1:     20:	+Hello.java:     3:  1:     21:	public class Hello // prints a Hello World! greeting+Hello.java:     4:  1:     74:	{ public static void main(String[] arg)+Hello.java:     5:  1:    114:	  { System.out.println("Hello World!");+Hello.java:     6:  1:    154:	  }+Hello.java:     7:  1:    158:	} Hello.pdf:     1:  1:      0:	%PDF-1.3 Hello.pdf:     2:  1:      9:	 00000000:  -- -- -- -- -- -- -- --  -- 25 c4 e5 f2 e5 eb a7  |---------%......|

tests/out/Hello_-W-ounkbT.out

@@ -42,11 +42,12 @@ 00000180:  -- -- -- -- -- -- -- --  -- -- -- -- 00 02 00 00  |------------@B@@| 00000190:  00 04 00 08 00 05 00 01  00 0d 00 00 00 02 00 0e  |@D@H@E@A@M@@@B@N| Hello.java:     1:  1:      0:	import java.lang.*;-Hello.java:     2:  1:     20:	public class Hello // prints a Hello World! greeting-Hello.java:     3:  1:     73:	{ public static void main(String[] arg)-Hello.java:     4:  1:    113:	  { System.out.println("Hello World!");-Hello.java:     5:  1:    153:	  }-Hello.java:     6:  1:    157:	}+Hello.java:     2:  1:     20:	+Hello.java:     3:  1:     21:	public class Hello // prints a Hello World! greeting+Hello.java:     4:  1:     74:	{ public static void main(String[] arg)+Hello.java:     5:  1:    114:	  { System.out.println("Hello World!");+Hello.java:     6:  1:    154:	  }+Hello.java:     7:  1:    158:	} Hello.pdf:     1:  1:      0:	%PDF-1.3 Hello.pdf:     2:  1:      9:	 00000000:  -- -- -- -- -- -- -- --  -- 25 c4 e5 f2 e5 eb a7  |---------%......|

tests/out/Hello_-W-unkbT.out

@@ -42,11 +42,12 @@ 00000180:  -- -- -- -- -- -- -- --  -- -- -- -- 00 02 00 00  |------------@B@@| 00000190:  00 04 00 08 00 05 00 01  00 0d 00 00 00 02 00 0e  |@D@H@E@A@M@@@B@N| Hello.java:     1:  1:      0:	import java.lang.*;-Hello.java:     2:  1:     20:	public class Hello // prints a Hello World! greeting-Hello.java:     3:  1:     73:	{ public static void main(String[] arg)-Hello.java:     4:  1:    113:	  { System.out.println("Hello World!");-Hello.java:     5:  1:    153:	  }-Hello.java:     6:  1:    157:	}+Hello.java:     2:  1:     20:	+Hello.java:     3:  1:     21:	public class Hello // prints a Hello World! greeting+Hello.java:     4:  1:     74:	{ public static void main(String[] arg)+Hello.java:     5:  1:    114:	  { System.out.println("Hello World!");+Hello.java:     6:  1:    154:	  }+Hello.java:     7:  1:    158:	} Hello.pdf:     1:  1:      0:	%PDF-1.3 Hello.pdf:     2:  1:      9:	 00000000:  -- -- -- -- -- -- -- --  -- 25 c4 e5 f2 e5 eb a7  |---------%......|

tests/out/Hello_-W.out

@@ -42,6 +42,7 @@ 00000180:  -- -- -- -- -- -- -- --  -- -- -- -- 00 02 00 00  |------------@B@@| 00000190:  00 04 00 08 00 05 00 01  00 0d 00 00 00 02 00 0e  |@D@H@E@A@M@@@B@N| Hello.java:import java.lang.*;+Hello.java: Hello.java:public class Hello // prints a Hello World! greeting Hello.java:{ public static void main(String[] arg) Hello.java:  { System.out.println("Hello World!");

tests/out/Hello_-X-c.out

@@ -1,6 +1,6 @@ Hello.bat:2 Hello.class:8-Hello.java:6+Hello.java:7 Hello.pdf:134 Hello.sh:2 Hello.txt:1

tests/out/Hello_-X-co.out

@@ -1,6 +1,6 @@ Hello.bat:2 Hello.class:8-Hello.java:6+Hello.java:7 Hello.pdf:134 Hello.sh:2 Hello.txt:1

tests/out/Hello_-X-n.out

@@ -30,15 +30,15 @@ 00000190:  00 04 00 08 00 05 00 01  00 0d 00 00 00 02 00 0e  |@D@H@E@A@M@@@B@N| Hello.java:1: 00000000:  69 6d 70 6f 72 74 20 6a  61 76 61 2e 6c 61 6e 67  |import java.lang|-00000010:  2e 2a 3b 0a 70 75 62 6c  69 63 20 63 6c 61 73 73  |.*;Jpublic class|-00000020:  20 48 65 6c 6c 6f 20 2f  2f 20 70 72 69 6e 74 73  | Hello // prints|-00000030:  20 61 20 48 65 6c 6c 6f  20 57 6f 72 6c 64 21 20  | a Hello World! |-00000040:  67 72 65 65 74 69 6e 67  0a 7b 20 70 75 62 6c 69  |greetingJ{ publi|-00000050:  63 20 73 74 61 74 69 63  20 76 6f 69 64 20 6d 61  |c static void ma|-00000060:  69 6e 28 53 74 72 69 6e  67 5b 5d 20 61 72 67 29  |in(String[] arg)|-00000070:  0a 20 20 7b 20 53 79 73  74 65 6d 2e 6f 75 74 2e  |J  { System.out.|-00000080:  70 72 69 6e 74 6c 6e 28  22 48 65 6c 6c 6f 20 57  |println("Hello W|-00000090:  6f 72 6c 64 21 22 29 3b  0a 20 20 7d 0a 7d 0a --  |orld!");J  }J}J-|+00000010:  2e 2a 3b 0a 0a 70 75 62  6c 69 63 20 63 6c 61 73  |.*;JJpublic clas|+00000020:  73 20 48 65 6c 6c 6f 20  2f 2f 20 70 72 69 6e 74  |s Hello // print|+00000030:  73 20 61 20 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |s a Hello World!|+00000040:  20 67 72 65 65 74 69 6e  67 0a 7b 20 70 75 62 6c  | greetingJ{ publ|+00000050:  69 63 20 73 74 61 74 69  63 20 76 6f 69 64 20 6d  |ic static void m|+00000060:  61 69 6e 28 53 74 72 69  6e 67 5b 5d 20 61 72 67  |ain(String[] arg|+00000070:  29 0a 20 20 7b 20 53 79  73 74 65 6d 2e 6f 75 74  |)J  { System.out|+00000080:  2e 70 72 69 6e 74 6c 6e  28 22 48 65 6c 6c 6f 20  |.println("Hello |+00000090:  57 6f 72 6c 64 21 22 29  3b 0a 20 20 7d 0a 7d 0a  |World!");J  }J}J| Hello.pdf:1: 00000000:  25 50 44 46 2d 31 2e 33  0a 25 c4 e5 f2 e5 eb a7  |%PDF-1.3J%......| 00000010:  f3 a0 d0 c4 c6 0a 34 20  30 20 6f 62 6a 0a 3c 3c  |.....J4 0 objJ<<|

tests/out/Hello_-X-nC1.out

@@ -48,23 +48,25 @@ 00000000:  69 6d 70 6f 72 74 20 6a  61 76 61 2e 6c 61 6e 67  |import java.lang| 00000010:  2e 2a 3b 0a -- -- -- --  -- -- -- -- -- -- -- --  |.*;J------------| Hello.java:2:-00000010:  -- -- -- -- 70 75 62 6c  69 63 20 63 6c 61 73 73  |----public class|-00000020:  20 48 65 6c 6c 6f 20 2f  2f 20 70 72 69 6e 74 73  | Hello // prints|-00000030:  20 61 20 48 65 6c 6c 6f  20 57 6f 72 6c 64 21 20  | a Hello World! |-00000040:  67 72 65 65 74 69 6e 67  0a -- -- -- -- -- -- --  |greetingJ-------|+00000010:  -- -- -- -- 0a -- -- --  -- -- -- -- -- -- -- --  |----J-----------| Hello.java:3:-00000040:  -- -- -- -- -- -- -- --  -- 7b 20 70 75 62 6c 69  |---------{ publi|-00000050:  63 20 73 74 61 74 69 63  20 76 6f 69 64 20 6d 61  |c static void ma|-00000060:  69 6e 28 53 74 72 69 6e  67 5b 5d 20 61 72 67 29  |in(String[] arg)|-00000070:  0a -- -- -- -- -- -- --  -- -- -- -- -- -- -- --  |J---------------|+00000010:  -- -- -- -- -- 70 75 62  6c 69 63 20 63 6c 61 73  |-----public clas|+00000020:  73 20 48 65 6c 6c 6f 20  2f 2f 20 70 72 69 6e 74  |s Hello // print|+00000030:  73 20 61 20 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |s a Hello World!|+00000040:  20 67 72 65 65 74 69 6e  67 0a -- -- -- -- -- --  | greetingJ------| Hello.java:4:-00000070:  -- 20 20 7b 20 53 79 73  74 65 6d 2e 6f 75 74 2e  |-  { System.out.|-00000080:  70 72 69 6e 74 6c 6e 28  22 48 65 6c 6c 6f 20 57  |println("Hello W|-00000090:  6f 72 6c 64 21 22 29 3b  0a -- -- -- -- -- -- --  |orld!");J-------|+00000040:  -- -- -- -- -- -- -- --  -- -- 7b 20 70 75 62 6c  |----------{ publ|+00000050:  69 63 20 73 74 61 74 69  63 20 76 6f 69 64 20 6d  |ic static void m|+00000060:  61 69 6e 28 53 74 72 69  6e 67 5b 5d 20 61 72 67  |ain(String[] arg|+00000070:  29 0a -- -- -- -- -- --  -- -- -- -- -- -- -- --  |)J--------------| Hello.java:5:-00000090:  -- -- -- -- -- -- -- --  -- 20 20 7d 0a -- -- --  |---------  }J---|+00000070:  -- -- 20 20 7b 20 53 79  73 74 65 6d 2e 6f 75 74  |--  { System.out|+00000080:  2e 70 72 69 6e 74 6c 6e  28 22 48 65 6c 6c 6f 20  |.println("Hello |+00000090:  57 6f 72 6c 64 21 22 29  3b 0a -- -- -- -- -- --  |World!");J------| Hello.java:6:-00000090:  -- -- -- -- -- -- -- --  -- -- -- -- -- 7d 0a --  |-------------}J-|+00000090:  -- -- -- -- -- -- -- --  -- -- 20 20 7d 0a -- --  |----------  }J--|+Hello.java:7:+00000090:  -- -- -- -- -- -- -- --  -- -- -- -- -- -- 7d 0a  |--------------}J| Hello.pdf:1: 00000000:  25 50 44 46 2d 31 2e 33  0a -- -- -- -- -- -- --  |%PDF-1.3J-------| Hello.pdf:2:

tests/out/Hello_-X-nkbT.out

@@ -30,15 +30,15 @@ 00000190:  00 04 00 08 00 05 00 01  00 0d 00 00 00 02 00 0e  |@D@H@E@A@M@@@B@N| Hello.java:     1:  1:      0:	 00000000:  69 6d 70 6f 72 74 20 6a  61 76 61 2e 6c 61 6e 67  |import java.lang|-00000010:  2e 2a 3b 0a 70 75 62 6c  69 63 20 63 6c 61 73 73  |.*;Jpublic class|-00000020:  20 48 65 6c 6c 6f 20 2f  2f 20 70 72 69 6e 74 73  | Hello // prints|-00000030:  20 61 20 48 65 6c 6c 6f  20 57 6f 72 6c 64 21 20  | a Hello World! |-00000040:  67 72 65 65 74 69 6e 67  0a 7b 20 70 75 62 6c 69  |greetingJ{ publi|-00000050:  63 20 73 74 61 74 69 63  20 76 6f 69 64 20 6d 61  |c static void ma|-00000060:  69 6e 28 53 74 72 69 6e  67 5b 5d 20 61 72 67 29  |in(String[] arg)|-00000070:  0a 20 20 7b 20 53 79 73  74 65 6d 2e 6f 75 74 2e  |J  { System.out.|-00000080:  70 72 69 6e 74 6c 6e 28  22 48 65 6c 6c 6f 20 57  |println("Hello W|-00000090:  6f 72 6c 64 21 22 29 3b  0a 20 20 7d 0a 7d 0a --  |orld!");J  }J}J-|+00000010:  2e 2a 3b 0a 0a 70 75 62  6c 69 63 20 63 6c 61 73  |.*;JJpublic clas|+00000020:  73 20 48 65 6c 6c 6f 20  2f 2f 20 70 72 69 6e 74  |s Hello // print|+00000030:  73 20 61 20 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |s a Hello World!|+00000040:  20 67 72 65 65 74 69 6e  67 0a 7b 20 70 75 62 6c  | greetingJ{ publ|+00000050:  69 63 20 73 74 61 74 69  63 20 76 6f 69 64 20 6d  |ic static void m|+00000060:  61 69 6e 28 53 74 72 69  6e 67 5b 5d 20 61 72 67  |ain(String[] arg|+00000070:  29 0a 20 20 7b 20 53 79  73 74 65 6d 2e 6f 75 74  |)J  { System.out|+00000080:  2e 70 72 69 6e 74 6c 6e  28 22 48 65 6c 6c 6f 20  |.println("Hello |+00000090:  57 6f 72 6c 64 21 22 29  3b 0a 20 20 7d 0a 7d 0a  |World!");J  }J}J| Hello.pdf:     1:  1:      0:	 00000000:  25 50 44 46 2d 31 2e 33  0a 25 c4 e5 f2 e5 eb a7  |%PDF-1.3J%......| 00000010:  f3 a0 d0 c4 c6 0a 34 20  30 20 6f 62 6a 0a 3c 3c  |.....J4 0 objJ<<|

tests/out/Hello_-X-nvy.out

@@ -38,18 +38,20 @@ Hello.java-1- 00000000-  69 6d 70 6f 72 74 20 6a  61 76 61 2e 6c 61 6e 67  |import java.lang| Hello.java-2--00000010-  2e 2a 3b 0a 70 75 62 6c  69 63 20 63 6c 61 73 73  |.*;Jpublic class|-00000020-  20 48 65 6c 6c 6f 20 2f  2f 20 70 72 69 6e 74 73  | Hello // prints|-00000030-  20 61 20 48 65 6c 6c 6f  20 57 6f 72 6c 64 21 20  | a Hello World! | Hello.java-3--00000040-  67 72 65 65 74 69 6e 67  0a 7b 20 70 75 62 6c 69  |greetingJ{ publi|-00000050-  63 20 73 74 61 74 69 63  20 76 6f 69 64 20 6d 61  |c static void ma|-00000060-  69 6e 28 53 74 72 69 6e  67 5b 5d 20 61 72 67 29  |in(String[] arg)|+00000010-  2e 2a 3b 0a 0a 70 75 62  6c 69 63 20 63 6c 61 73  |.*;JJpublic clas|+00000020-  73 20 48 65 6c 6c 6f 20  2f 2f 20 70 72 69 6e 74  |s Hello // print|+00000030-  73 20 61 20 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |s a Hello World!| Hello.java-4--00000070-  0a 20 20 7b 20 53 79 73  74 65 6d 2e 6f 75 74 2e  |J  { System.out.|-00000080-  70 72 69 6e 74 6c 6e 28  22 48 65 6c 6c 6f 20 57  |println("Hello W|+00000040-  20 67 72 65 65 74 69 6e  67 0a 7b 20 70 75 62 6c  | greetingJ{ publ|+00000050-  69 63 20 73 74 61 74 69  63 20 76 6f 69 64 20 6d  |ic static void m|+00000060-  61 69 6e 28 53 74 72 69  6e 67 5b 5d 20 61 72 67  |ain(String[] arg| Hello.java-5-+00000070-  29 0a 20 20 7b 20 53 79  73 74 65 6d 2e 6f 75 74  |)J  { System.out|+00000080-  2e 70 72 69 6e 74 6c 6e  28 22 48 65 6c 6c 6f 20  |.println("Hello | Hello.java-6-+Hello.java-7-+00000090-  57 6f 72 6c 64 21 22 29  3b 0a 20 20 7d 0a 7d 0a  |World!");J  }J}J| Hello.pdf-1- Hello.pdf-2- 00000000-  25 50 44 46 2d 31 2e 33  0a 25 c4 e5 f2 e5 eb a7  |%PDF-1.3J%......|

tests/out/Hello_-X-ny.out

@@ -38,18 +38,20 @@ Hello.java:1: 00000000:  69 6d 70 6f 72 74 20 6a  61 76 61 2e 6c 61 6e 67  |import java.lang| Hello.java:2:-00000010:  2e 2a 3b 0a 70 75 62 6c  69 63 20 63 6c 61 73 73  |.*;Jpublic class|-00000020:  20 48 65 6c 6c 6f 20 2f  2f 20 70 72 69 6e 74 73  | Hello // prints|-00000030:  20 61 20 48 65 6c 6c 6f  20 57 6f 72 6c 64 21 20  | a Hello World! | Hello.java:3:-00000040:  67 72 65 65 74 69 6e 67  0a 7b 20 70 75 62 6c 69  |greetingJ{ publi|-00000050:  63 20 73 74 61 74 69 63  20 76 6f 69 64 20 6d 61  |c static void ma|-00000060:  69 6e 28 53 74 72 69 6e  67 5b 5d 20 61 72 67 29  |in(String[] arg)|+00000010:  2e 2a 3b 0a 0a 70 75 62  6c 69 63 20 63 6c 61 73  |.*;JJpublic clas|+00000020:  73 20 48 65 6c 6c 6f 20  2f 2f 20 70 72 69 6e 74  |s Hello // print|+00000030:  73 20 61 20 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |s a Hello World!| Hello.java:4:-00000070:  0a 20 20 7b 20 53 79 73  74 65 6d 2e 6f 75 74 2e  |J  { System.out.|-00000080:  70 72 69 6e 74 6c 6e 28  22 48 65 6c 6c 6f 20 57  |println("Hello W|+00000040:  20 67 72 65 65 74 69 6e  67 0a 7b 20 70 75 62 6c  | greetingJ{ publ|+00000050:  69 63 20 73 74 61 74 69  63 20 76 6f 69 64 20 6d  |ic static void m|+00000060:  61 69 6e 28 53 74 72 69  6e 67 5b 5d 20 61 72 67  |ain(String[] arg| Hello.java:5:+00000070:  29 0a 20 20 7b 20 53 79  73 74 65 6d 2e 6f 75 74  |)J  { System.out|+00000080:  2e 70 72 69 6e 74 6c 6e  28 22 48 65 6c 6c 6f 20  |.println("Hello | Hello.java:6:+Hello.java:7:+00000090:  57 6f 72 6c 64 21 22 29  3b 0a 20 20 7d 0a 7d 0a  |World!");J  }J}J| Hello.pdf:1: Hello.pdf:2: 00000000:  25 50 44 46 2d 31 2e 33  0a 25 c4 e5 f2 e5 eb a7  |%PDF-1.3J%......|

tests/out/Hello_-X-o.out

@@ -39,19 +39,20 @@ Hello.java: 00000000:  69 6d 70 6f 72 74 20 6a  61 76 61 2e 6c 61 6e 67  |import java.lang| Hello.java:-00000010:  2e 2a 3b 0a 70 75 62 6c  69 63 20 63 6c 61 73 73  |.*;Jpublic class|-00000020:  20 48 65 6c 6c 6f 20 2f  2f 20 70 72 69 6e 74 73  | Hello // prints|-00000030:  20 61 20 48 65 6c 6c 6f  20 57 6f 72 6c 64 21 20  | a Hello World! | Hello.java:-00000040:  67 72 65 65 74 69 6e 67  0a 7b 20 70 75 62 6c 69  |greetingJ{ publi|-00000050:  63 20 73 74 61 74 69 63  20 76 6f 69 64 20 6d 61  |c static void ma|-00000060:  69 6e 28 53 74 72 69 6e  67 5b 5d 20 61 72 67 29  |in(String[] arg)|+00000010:  2e 2a 3b 0a 0a 70 75 62  6c 69 63 20 63 6c 61 73  |.*;JJpublic clas|+00000020:  73 20 48 65 6c 6c 6f 20  2f 2f 20 70 72 69 6e 74  |s Hello // print|+00000030:  73 20 61 20 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |s a Hello World!| Hello.java:-00000070:  0a 20 20 7b 20 53 79 73  74 65 6d 2e 6f 75 74 2e  |J  { System.out.|-00000080:  70 72 69 6e 74 6c 6e 28  22 48 65 6c 6c 6f 20 57  |println("Hello W|+00000040:  20 67 72 65 65 74 69 6e  67 0a 7b 20 70 75 62 6c  | greetingJ{ publ|+00000050:  69 63 20 73 74 61 74 69  63 20 76 6f 69 64 20 6d  |ic static void m|+00000060:  61 69 6e 28 53 74 72 69  6e 67 5b 5d 20 61 72 67  |ain(String[] arg| Hello.java:+00000070:  29 0a 20 20 7b 20 53 79  73 74 65 6d 2e 6f 75 74  |)J  { System.out|+00000080:  2e 70 72 69 6e 74 6c 6e  28 22 48 65 6c 6c 6f 20  |.println("Hello | Hello.java:-00000090:  6f 72 6c 64 21 22 29 3b  0a 20 20 7d 0a 7d 0a --  |orld!");J  }J}J-|+Hello.java:+00000090:  57 6f 72 6c 64 21 22 29  3b 0a 20 20 7d 0a 7d 0a  |World!");J  }J}J| Hello.pdf: Hello.pdf: 00000000:  25 50 44 46 2d 31 2e 33  0a 25 c4 e5 f2 e5 eb a7  |%PDF-1.3J%......|

tests/out/Hello_-X-on.out

@@ -39,19 +39,20 @@ Hello.java:1: 00000000:  69 6d 70 6f 72 74 20 6a  61 76 61 2e 6c 61 6e 67  |import java.lang| Hello.java:2:-00000010:  2e 2a 3b 0a 70 75 62 6c  69 63 20 63 6c 61 73 73  |.*;Jpublic class|-00000020:  20 48 65 6c 6c 6f 20 2f  2f 20 70 72 69 6e 74 73  | Hello // prints|-00000030:  20 61 20 48 65 6c 6c 6f  20 57 6f 72 6c 64 21 20  | a Hello World! | Hello.java:3:-00000040:  67 72 65 65 74 69 6e 67  0a 7b 20 70 75 62 6c 69  |greetingJ{ publi|-00000050:  63 20 73 74 61 74 69 63  20 76 6f 69 64 20 6d 61  |c static void ma|-00000060:  69 6e 28 53 74 72 69 6e  67 5b 5d 20 61 72 67 29  |in(String[] arg)|+00000010:  2e 2a 3b 0a 0a 70 75 62  6c 69 63 20 63 6c 61 73  |.*;JJpublic clas|+00000020:  73 20 48 65 6c 6c 6f 20  2f 2f 20 70 72 69 6e 74  |s Hello // print|+00000030:  73 20 61 20 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |s a Hello World!| Hello.java:4:-00000070:  0a 20 20 7b 20 53 79 73  74 65 6d 2e 6f 75 74 2e  |J  { System.out.|-00000080:  70 72 69 6e 74 6c 6e 28  22 48 65 6c 6c 6f 20 57  |println("Hello W|+00000040:  20 67 72 65 65 74 69 6e  67 0a 7b 20 70 75 62 6c  | greetingJ{ publ|+00000050:  69 63 20 73 74 61 74 69  63 20 76 6f 69 64 20 6d  |ic static void m|+00000060:  61 69 6e 28 53 74 72 69  6e 67 5b 5d 20 61 72 67  |ain(String[] arg| Hello.java:5:+00000070:  29 0a 20 20 7b 20 53 79  73 74 65 6d 2e 6f 75 74  |)J  { System.out|+00000080:  2e 70 72 69 6e 74 6c 6e  28 22 48 65 6c 6c 6f 20  |.println("Hello | Hello.java:6:-00000090:  6f 72 6c 64 21 22 29 3b  0a 20 20 7d 0a 7d 0a --  |orld!");J  }J}J-|+Hello.java:7:+00000090:  57 6f 72 6c 64 21 22 29  3b 0a 20 20 7d 0a 7d 0a  |World!");J  }J}J| Hello.pdf:1: Hello.pdf:2: 00000000:  25 50 44 46 2d 31 2e 33  0a 25 c4 e5 f2 e5 eb a7  |%PDF-1.3J%......|

tests/out/Hello_-X-onkbT.out

@@ -39,19 +39,20 @@ Hello.java:     1:  1:      0:	 00000000:  69 6d 70 6f 72 74 20 6a  61 76 61 2e 6c 61 6e 67  |import java.lang| Hello.java:     2:  1:     20:	-00000010:  2e 2a 3b 0a 70 75 62 6c  69 63 20 63 6c 61 73 73  |.*;Jpublic class|-00000020:  20 48 65 6c 6c 6f 20 2f  2f 20 70 72 69 6e 74 73  | Hello // prints|-00000030:  20 61 20 48 65 6c 6c 6f  20 57 6f 72 6c 64 21 20  | a Hello World! |-Hello.java:     3:  1:     73:	-00000040:  67 72 65 65 74 69 6e 67  0a 7b 20 70 75 62 6c 69  |greetingJ{ publi|-00000050:  63 20 73 74 61 74 69 63  20 76 6f 69 64 20 6d 61  |c static void ma|-00000060:  69 6e 28 53 74 72 69 6e  67 5b 5d 20 61 72 67 29  |in(String[] arg)|-Hello.java:     4:  1:    113:	-00000070:  0a 20 20 7b 20 53 79 73  74 65 6d 2e 6f 75 74 2e  |J  { System.out.|-00000080:  70 72 69 6e 74 6c 6e 28  22 48 65 6c 6c 6f 20 57  |println("Hello W|-Hello.java:     5:  1:    153:	-Hello.java:     6:  1:    157:	-00000090:  6f 72 6c 64 21 22 29 3b  0a 20 20 7d 0a 7d 0a --  |orld!");J  }J}J-|+Hello.java:     3:  1:     21:	+00000010:  2e 2a 3b 0a 0a 70 75 62  6c 69 63 20 63 6c 61 73  |.*;JJpublic clas|+00000020:  73 20 48 65 6c 6c 6f 20  2f 2f 20 70 72 69 6e 74  |s Hello // print|+00000030:  73 20 61 20 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |s a Hello World!|+Hello.java:     4:  1:     74:	+00000040:  20 67 72 65 65 74 69 6e  67 0a 7b 20 70 75 62 6c  | greetingJ{ publ|+00000050:  69 63 20 73 74 61 74 69  63 20 76 6f 69 64 20 6d  |ic static void m|+00000060:  61 69 6e 28 53 74 72 69  6e 67 5b 5d 20 61 72 67  |ain(String[] arg|+Hello.java:     5:  1:    114:	+00000070:  29 0a 20 20 7b 20 53 79  73 74 65 6d 2e 6f 75 74  |)J  { System.out|+00000080:  2e 70 72 69 6e 74 6c 6e  28 22 48 65 6c 6c 6f 20  |.println("Hello |+Hello.java:     6:  1:    154:	+Hello.java:     7:  1:    158:	+00000090:  57 6f 72 6c 64 21 22 29  3b 0a 20 20 7d 0a 7d 0a  |World!");J  }J}J| Hello.pdf:     1:  1:      0:	 Hello.pdf:     2:  1:      9:	 00000000:  25 50 44 46 2d 31 2e 33  0a 25 c4 e5 f2 e5 eb a7  |%PDF-1.3J%......|

tests/out/Hello_-X-ounkbT.out

@@ -39,19 +39,20 @@ Hello.java:     1:  1:      0:	 00000000:  69 6d 70 6f 72 74 20 6a  61 76 61 2e 6c 61 6e 67  |import java.lang| Hello.java:     2:  1:     20:	-00000010:  2e 2a 3b 0a 70 75 62 6c  69 63 20 63 6c 61 73 73  |.*;Jpublic class|-00000020:  20 48 65 6c 6c 6f 20 2f  2f 20 70 72 69 6e 74 73  | Hello // prints|-00000030:  20 61 20 48 65 6c 6c 6f  20 57 6f 72 6c 64 21 20  | a Hello World! |-Hello.java:     3:  1:     73:	-00000040:  67 72 65 65 74 69 6e 67  0a 7b 20 70 75 62 6c 69  |greetingJ{ publi|-00000050:  63 20 73 74 61 74 69 63  20 76 6f 69 64 20 6d 61  |c static void ma|-00000060:  69 6e 28 53 74 72 69 6e  67 5b 5d 20 61 72 67 29  |in(String[] arg)|-Hello.java:     4:  1:    113:	-00000070:  0a 20 20 7b 20 53 79 73  74 65 6d 2e 6f 75 74 2e  |J  { System.out.|-00000080:  70 72 69 6e 74 6c 6e 28  22 48 65 6c 6c 6f 20 57  |println("Hello W|-Hello.java:     5:  1:    153:	-Hello.java:     6:  1:    157:	-00000090:  6f 72 6c 64 21 22 29 3b  0a 20 20 7d 0a 7d 0a --  |orld!");J  }J}J-|+Hello.java:     3:  1:     21:	+00000010:  2e 2a 3b 0a 0a 70 75 62  6c 69 63 20 63 6c 61 73  |.*;JJpublic clas|+00000020:  73 20 48 65 6c 6c 6f 20  2f 2f 20 70 72 69 6e 74  |s Hello // print|+00000030:  73 20 61 20 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |s a Hello World!|+Hello.java:     4:  1:     74:	+00000040:  20 67 72 65 65 74 69 6e  67 0a 7b 20 70 75 62 6c  | greetingJ{ publ|+00000050:  69 63 20 73 74 61 74 69  63 20 76 6f 69 64 20 6d  |ic static void m|+00000060:  61 69 6e 28 53 74 72 69  6e 67 5b 5d 20 61 72 67  |ain(String[] arg|+Hello.java:     5:  1:    114:	+00000070:  29 0a 20 20 7b 20 53 79  73 74 65 6d 2e 6f 75 74  |)J  { System.out|+00000080:  2e 70 72 69 6e 74 6c 6e  28 22 48 65 6c 6c 6f 20  |.println("Hello |+Hello.java:     6:  1:    154:	+Hello.java:     7:  1:    158:	+00000090:  57 6f 72 6c 64 21 22 29  3b 0a 20 20 7d 0a 7d 0a  |World!");J  }J}J| Hello.pdf:     1:  1:      0:	 Hello.pdf:     2:  1:      9:	 00000000:  25 50 44 46 2d 31 2e 33  0a 25 c4 e5 f2 e5 eb a7  |%PDF-1.3J%......|

tests/out/Hello_-X-unkbT.out

@@ -72,33 +72,35 @@ 00000190:  00 04 00 08 00 05 00 01  00 0d 00 00 00 02 00 0e  |@D@H@E@A@M@@@B@N| Hello.java:     1:  1:      0:	 00000000:  69 6d 70 6f 72 74 20 6a  61 76 61 2e 6c 61 6e 67  |import java.lang|-00000010:  2e 2a 3b 0a 70 75 62 6c  69 63 20 63 6c 61 73 73  |.*;Jpublic class|-00000020:  20 48 65 6c 6c 6f 20 2f  2f 20 70 72 69 6e 74 73  | Hello // prints|-00000030:  20 61 20 48 65 6c 6c 6f  20 57 6f 72 6c 64 21 20  | a Hello World! |-00000040:  67 72 65 65 74 69 6e 67  0a -- -- -- -- -- -- --  |greetingJ-------|+00000010:  2e 2a 3b 0a 0a -- -- --  -- -- -- -- -- -- -- --  |.*;JJ-----------| Hello.java+     2+  1+     20+	-00000010:  -- -- -- -- 70 75 62 6c  69 63 20 63 6c 61 73 73  |----public class|-00000020:  20 48 65 6c 6c 6f 20 2f  2f 20 70 72 69 6e 74 73  | Hello // prints|-00000030:  20 61 20 48 65 6c 6c 6f  20 57 6f 72 6c 64 21 20  | a Hello World! |-00000040:  67 72 65 65 74 69 6e 67  0a 7b 20 70 75 62 6c 69  |greetingJ{ publi|-00000050:  63 20 73 74 61 74 69 63  20 76 6f 69 64 20 6d 61  |c static void ma|-00000060:  69 6e 28 53 74 72 69 6e  67 5b 5d 20 61 72 67 29  |in(String[] arg)|-00000070:  0a -- -- -- -- -- -- --  -- -- -- -- -- -- -- --  |J---------------|-Hello.java+     3+  1+     73+	-00000040:  -- -- -- -- -- -- -- --  -- 7b 20 70 75 62 6c 69  |---------{ publi|-00000050:  63 20 73 74 61 74 69 63  20 76 6f 69 64 20 6d 61  |c static void ma|-00000060:  69 6e 28 53 74 72 69 6e  67 5b 5d 20 61 72 67 29  |in(String[] arg)|-00000070:  0a 20 20 7b 20 53 79 73  74 65 6d 2e 6f 75 74 2e  |J  { System.out.|-00000080:  70 72 69 6e 74 6c 6e 28  22 48 65 6c 6c 6f 20 57  |println("Hello W|-00000090:  6f 72 6c 64 21 22 29 3b  0a -- -- -- -- -- -- --  |orld!");J-------|-Hello.java+     4+  1+    113+	-00000070:  -- 20 20 7b 20 53 79 73  74 65 6d 2e 6f 75 74 2e  |-  { System.out.|-00000080:  70 72 69 6e 74 6c 6e 28  22 48 65 6c 6c 6f 20 57  |println("Hello W|-00000090:  6f 72 6c 64 21 22 29 3b  0a 20 20 7d 0a -- -- --  |orld!");J  }J---|-Hello.java+     5+  1+    153+	-00000090:  -- -- -- -- -- -- -- --  -- 20 20 7d 0a 7d 0a --  |---------  }J}J-|-Hello.java+     6+  1+    157+	-00000090:  -- -- -- -- -- -- -- --  -- -- -- -- -- 7d 0a --  |-------------}J-|+00000010:  -- -- -- -- 0a 70 75 62  6c 69 63 20 63 6c 61 73  |----Jpublic clas|+00000020:  73 20 48 65 6c 6c 6f 20  2f 2f 20 70 72 69 6e 74  |s Hello // print|+00000030:  73 20 61 20 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |s a Hello World!|+00000040:  20 67 72 65 65 74 69 6e  67 0a -- -- -- -- -- --  | greetingJ------|+Hello.java+     3+  1+     21+	+00000010:  -- -- -- -- -- 70 75 62  6c 69 63 20 63 6c 61 73  |-----public clas|+00000020:  73 20 48 65 6c 6c 6f 20  2f 2f 20 70 72 69 6e 74  |s Hello // print|+00000030:  73 20 61 20 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |s a Hello World!|+00000040:  20 67 72 65 65 74 69 6e  67 0a 7b 20 70 75 62 6c  | greetingJ{ publ|+00000050:  69 63 20 73 74 61 74 69  63 20 76 6f 69 64 20 6d  |ic static void m|+00000060:  61 69 6e 28 53 74 72 69  6e 67 5b 5d 20 61 72 67  |ain(String[] arg|+00000070:  29 0a -- -- -- -- -- --  -- -- -- -- -- -- -- --  |)J--------------|+Hello.java+     4+  1+     74+	+00000040:  -- -- -- -- -- -- -- --  -- -- 7b 20 70 75 62 6c  |----------{ publ|+00000050:  69 63 20 73 74 61 74 69  63 20 76 6f 69 64 20 6d  |ic static void m|+00000060:  61 69 6e 28 53 74 72 69  6e 67 5b 5d 20 61 72 67  |ain(String[] arg|+00000070:  29 0a 20 20 7b 20 53 79  73 74 65 6d 2e 6f 75 74  |)J  { System.out|+00000080:  2e 70 72 69 6e 74 6c 6e  28 22 48 65 6c 6c 6f 20  |.println("Hello |+00000090:  57 6f 72 6c 64 21 22 29  3b 0a -- -- -- -- -- --  |World!");J------|+Hello.java+     5+  1+    114+	+00000070:  -- -- 20 20 7b 20 53 79  73 74 65 6d 2e 6f 75 74  |--  { System.out|+00000080:  2e 70 72 69 6e 74 6c 6e  28 22 48 65 6c 6c 6f 20  |.println("Hello |+00000090:  57 6f 72 6c 64 21 22 29  3b 0a 20 20 7d 0a -- --  |World!");J  }J--|+Hello.java+     6+  1+    154+	+00000090:  -- -- -- -- -- -- -- --  -- -- 20 20 7d 0a 7d 0a  |----------  }J}J|+Hello.java+     7+  1+    158+	+00000090:  -- -- -- -- -- -- -- --  -- -- -- -- -- -- 7d 0a  |--------------}J| Hello.pdf:     1:  1:      0:	 00000000:  25 50 44 46 2d 31 2e 33  0a 25 c4 e5 f2 e5 eb a7  |%PDF-1.3J%......| 00000010:  f3 a0 d0 c4 c6 0a -- --  -- -- -- -- -- -- -- --  |.....J----------|

tests/out/Hello_-X.out

@@ -30,15 +30,15 @@ 00000190:  00 04 00 08 00 05 00 01  00 0d 00 00 00 02 00 0e  |@D@H@E@A@M@@@B@N| Hello.java: 00000000:  69 6d 70 6f 72 74 20 6a  61 76 61 2e 6c 61 6e 67  |import java.lang|-00000010:  2e 2a 3b 0a 70 75 62 6c  69 63 20 63 6c 61 73 73  |.*;Jpublic class|-00000020:  20 48 65 6c 6c 6f 20 2f  2f 20 70 72 69 6e 74 73  | Hello // prints|-00000030:  20 61 20 48 65 6c 6c 6f  20 57 6f 72 6c 64 21 20  | a Hello World! |-00000040:  67 72 65 65 74 69 6e 67  0a 7b 20 70 75 62 6c 69  |greetingJ{ publi|-00000050:  63 20 73 74 61 74 69 63  20 76 6f 69 64 20 6d 61  |c static void ma|-00000060:  69 6e 28 53 74 72 69 6e  67 5b 5d 20 61 72 67 29  |in(String[] arg)|-00000070:  0a 20 20 7b 20 53 79 73  74 65 6d 2e 6f 75 74 2e  |J  { System.out.|-00000080:  70 72 69 6e 74 6c 6e 28  22 48 65 6c 6c 6f 20 57  |println("Hello W|-00000090:  6f 72 6c 64 21 22 29 3b  0a 20 20 7d 0a 7d 0a --  |orld!");J  }J}J-|+00000010:  2e 2a 3b 0a 0a 70 75 62  6c 69 63 20 63 6c 61 73  |.*;JJpublic clas|+00000020:  73 20 48 65 6c 6c 6f 20  2f 2f 20 70 72 69 6e 74  |s Hello // print|+00000030:  73 20 61 20 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |s a Hello World!|+00000040:  20 67 72 65 65 74 69 6e  67 0a 7b 20 70 75 62 6c  | greetingJ{ publ|+00000050:  69 63 20 73 74 61 74 69  63 20 76 6f 69 64 20 6d  |ic static void m|+00000060:  61 69 6e 28 53 74 72 69  6e 67 5b 5d 20 61 72 67  |ain(String[] arg|+00000070:  29 0a 20 20 7b 20 53 79  73 74 65 6d 2e 6f 75 74  |)J  { System.out|+00000080:  2e 70 72 69 6e 74 6c 6e  28 22 48 65 6c 6c 6f 20  |.println("Hello |+00000090:  57 6f 72 6c 64 21 22 29  3b 0a 20 20 7d 0a 7d 0a  |World!");J  }J}J| Hello.pdf: 00000000:  25 50 44 46 2d 31 2e 33  0a 25 c4 e5 f2 e5 eb a7  |%PDF-1.3J%......| 00000010:  f3 a0 d0 c4 c6 0a 34 20  30 20 6f 62 6a 0a 3c 3c  |.....J4 0 objJ<<|

tests/out/Hello_-c.out

@@ -1,6 +1,6 @@ Hello.bat:2 Hello.class:8-Hello.java:6+Hello.java:7 Hello.pdf:134 Hello.sh:2 Hello.txt:1

tests/out/Hello_-co.out

@@ -1,6 +1,6 @@ Hello.bat:2 Hello.class:8-Hello.java:6+Hello.java:7 Hello.pdf:134 Hello.sh:2 Hello.txt:1

tests/out/Hello_-n.out

@@ -2,11 +2,12 @@ Hello.bat:2:echo "Hello World!" Binary file Hello.class matches Hello.java:1:import java.lang.*;-Hello.java:2:public class Hello // prints a Hello World! greeting-Hello.java:3:{ public static void main(String[] arg)-Hello.java:4:  { System.out.println("Hello World!");-Hello.java:5:  }-Hello.java:6:}+Hello.java:2:+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java:4:{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!");+Hello.java:6:  }+Hello.java:7:} Hello.pdf:1:%PDF-1.3 Binary file Hello.pdf matches Hello.sh:1:#!/bin/sh

tests/out/Hello_-nC1.out

@@ -2,11 +2,12 @@ Hello.bat:2:echo "Hello World!" Binary file Hello.class matches Hello.java:1:import java.lang.*;-Hello.java:2:public class Hello // prints a Hello World! greeting-Hello.java:3:{ public static void main(String[] arg)-Hello.java:4:  { System.out.println("Hello World!");-Hello.java:5:  }-Hello.java:6:}+Hello.java:2:+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java:4:{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!");+Hello.java:6:  }+Hello.java:7:} Hello.pdf:1:%PDF-1.3 Binary file Hello.pdf matches Hello.sh:1:#!/bin/sh

tests/out/Hello_-nkbT.out

@@ -2,11 +2,12 @@ Hello.bat:     2:  1:     10:	echo "Hello World!" Binary file Hello.class matches Hello.java:     1:  1:      0:	import java.lang.*;-Hello.java:     2:  1:     20:	public class Hello // prints a Hello World! greeting-Hello.java:     3:  1:     73:	{ public static void main(String[] arg)-Hello.java:     4:  1:    113:	  { System.out.println("Hello World!");-Hello.java:     5:  1:    153:	  }-Hello.java:     6:  1:    157:	}+Hello.java:     2:  1:     20:	+Hello.java:     3:  1:     21:	public class Hello // prints a Hello World! greeting+Hello.java:     4:  1:     74:	{ public static void main(String[] arg)+Hello.java:     5:  1:    114:	  { System.out.println("Hello World!");+Hello.java:     6:  1:    154:	  }+Hello.java:     7:  1:    158:	} Hello.pdf:     1:  1:      0:	%PDF-1.3 Binary file Hello.pdf matches Hello.sh:     1:  1:      0:	#!/bin/sh

tests/out/Hello_-nvy.out

@@ -27,11 +27,12 @@ 00000180-  04 b1 00 00 00 01 00 --  00 00 00 -- 00 02 00 00  |D.@@@A@-@@@-@B@@| 00000190-  00 04 00 08 00 05 00 01  00 0d 00 00 00 02 00 0e  |@D@H@E@A@M@@@B@N| Hello.java-1-import java.lang.*;-Hello.java-2-public class Hello // prints a Hello World! greeting-Hello.java-3-{ public static void main(String[] arg)-Hello.java-4-  { System.out.println("Hello World!");-Hello.java-5-  }-Hello.java-6-}+Hello.java-2-+Hello.java-3-public class Hello // prints a Hello World! greeting+Hello.java-4-{ public static void main(String[] arg)+Hello.java-5-  { System.out.println("Hello World!");+Hello.java-6-  }+Hello.java-7-} Hello.pdf-1-%PDF-1.3 00000000-  -- -- -- -- -- -- -- --  -- 25 c4 e5 f2 e5 eb a7  |---------%......| Hello.pdf-3-4 0 obj

tests/out/Hello_-ny.out

@@ -2,11 +2,12 @@ Hello.bat:2:echo "Hello World!" Binary file Hello.class matches Hello.java:1:import java.lang.*;-Hello.java:2:public class Hello // prints a Hello World! greeting-Hello.java:3:{ public static void main(String[] arg)-Hello.java:4:  { System.out.println("Hello World!");-Hello.java:5:  }-Hello.java:6:}+Hello.java:2:+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java:4:{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!");+Hello.java:6:  }+Hello.java:7:} Hello.pdf:1:%PDF-1.3 Binary file Hello.pdf matches Hello.sh:1:#!/bin/sh

tests/out/Hello_-o.out

@@ -2,6 +2,7 @@ Hello.bat:echo "Hello World!" Binary file Hello.class matches Hello.java:import java.lang.*;+Hello.java: Hello.java:public class Hello // prints a Hello World! greeting Hello.java:{ public static void main(String[] arg) Hello.java:  { System.out.println("Hello World!");

tests/out/Hello_-on.out

@@ -2,11 +2,12 @@ Hello.bat:2:echo "Hello World!" Binary file Hello.class matches Hello.java:1:import java.lang.*;-Hello.java:2:public class Hello // prints a Hello World! greeting-Hello.java:3:{ public static void main(String[] arg)-Hello.java:4:  { System.out.println("Hello World!");-Hello.java:5:  }-Hello.java:6:}+Hello.java:2:+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java:4:{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!");+Hello.java:6:  }+Hello.java:7:} Hello.pdf:1:%PDF-1.3 Binary file Hello.pdf matches Hello.sh:1:#!/bin/sh

tests/out/Hello_-onkbT.out

@@ -2,11 +2,12 @@ Hello.bat:     2:  1:     10:	echo "Hello World!" Binary file Hello.class matches Hello.java:     1:  1:      0:	import java.lang.*;-Hello.java:     2:  1:     20:	public class Hello // prints a Hello World! greeting-Hello.java:     3:  1:     73:	{ public static void main(String[] arg)-Hello.java:     4:  1:    113:	  { System.out.println("Hello World!");-Hello.java:     5:  1:    153:	  }-Hello.java:     6:  1:    157:	}+Hello.java:     2:  1:     20:	+Hello.java:     3:  1:     21:	public class Hello // prints a Hello World! greeting+Hello.java:     4:  1:     74:	{ public static void main(String[] arg)+Hello.java:     5:  1:    114:	  { System.out.println("Hello World!");+Hello.java:     6:  1:    154:	  }+Hello.java:     7:  1:    158:	} Hello.pdf:     1:  1:      0:	%PDF-1.3 Binary file Hello.pdf matches Hello.sh:     1:  1:      0:	#!/bin/sh

tests/out/Hello_-ounkbT.out

@@ -2,11 +2,12 @@ Hello.bat:     2:  1:     10:	echo "Hello World!" Binary file Hello.class matches Hello.java:     1:  1:      0:	import java.lang.*;-Hello.java:     2:  1:     20:	public class Hello // prints a Hello World! greeting-Hello.java:     3:  1:     73:	{ public static void main(String[] arg)-Hello.java:     4:  1:    113:	  { System.out.println("Hello World!");-Hello.java:     5:  1:    153:	  }-Hello.java:     6:  1:    157:	}+Hello.java:     2:  1:     20:	+Hello.java:     3:  1:     21:	public class Hello // prints a Hello World! greeting+Hello.java:     4:  1:     74:	{ public static void main(String[] arg)+Hello.java:     5:  1:    114:	  { System.out.println("Hello World!");+Hello.java:     6:  1:    154:	  }+Hello.java:     7:  1:    158:	} Hello.pdf:     1:  1:      0:	%PDF-1.3 Binary file Hello.pdf matches Hello.sh:     1:  1:      0:	#!/bin/sh

tests/out/Hello_-unkbT.out

@@ -2,11 +2,12 @@ Hello.bat:     2:  1:     10:	echo "Hello World!" Binary file Hello.class matches Hello.java:     1:  1:      0:	import java.lang.*;-Hello.java:     2:  1:     20:	public class Hello // prints a Hello World! greeting-Hello.java:     3:  1:     73:	{ public static void main(String[] arg)-Hello.java:     4:  1:    113:	  { System.out.println("Hello World!");-Hello.java:     5:  1:    153:	  }-Hello.java:     6:  1:    157:	}+Hello.java:     2:  1:     20:	+Hello.java:     3:  1:     21:	public class Hello // prints a Hello World! greeting+Hello.java:     4:  1:     74:	{ public static void main(String[] arg)+Hello.java:     5:  1:    114:	  { System.out.println("Hello World!");+Hello.java:     6:  1:    154:	  }+Hello.java:     7:  1:    158:	} Hello.pdf:     1:  1:      0:	%PDF-1.3 Binary file Hello.pdf matches Hello.sh:     1:  1:      0:	#!/bin/sh

tests/out/Hello_.out

@@ -2,6 +2,7 @@ Hello.bat:echo "Hello World!" Binary file Hello.class matches Hello.java:import java.lang.*;+Hello.java: Hello.java:public class Hello // prints a Hello World! greeting Hello.java:{ public static void main(String[] arg) Hello.java:  { System.out.println("Hello World!");

tests/out/Hello_Hello--csv-c.out

@@ -1,6 +1,5 @@ "Hello.bat",1 "Hello.class",1-"Hello.java",2 "Hello.pdf",1 "Hello.sh",1 "Hello.txt",1

tests/out/Hello_Hello--csv-co.out

@@ -1,6 +1,5 @@ "Hello.bat",1 "Hello.class",3-"Hello.java",3 "Hello.pdf",1 "Hello.sh",1 "Hello.txt",1

tests/out/Hello_Hello--csv-cv.out

@@ -1,6 +1,5 @@ "Hello.bat",1 "Hello.class",6-"Hello.java",4 "Hello.pdf",133 "Hello.sh",1 "Hello.txt",0

tests/out/Hello_Hello--csv-n.out

@@ -1,7 +1,7 @@ "Hello.bat",2,"echo ""Hello World!""" "Hello.class",5,"Hello.java\f\x00\x07\x00\b\x07\x00\x17\f\x00\x18\x00\x19\x01\x00\fHello World!\x07\x00\x1a\f\x00\x1b\x00\x1c\x01\x00\x05Hello\x01\x00\x10java/lang/Object\x01\x00\x10java/lang/System\x01\x00\x03out\x01\x00\x15Ljava/io/PrintStream;\x01\x00\x13java/io/PrintStream\x01\x00\x07println\x01\x00\x15(Ljava/lang/String;)V\x00!\x00\x05\x00\x06\x00\x00\x00\x00\x00\x02\x00\x01\x00\x07\x00\b\x00\x01\x00	\x00\x00\x00\x1d\x00\x01\x00\x01\x00\x00\x00\x05*·\x00\x01±\x00\x00\x00\x01\x00"-"Hello.java",2,"public class Hello // prints a Hello World! greeting"-"Hello.java",4,"  { System.out.println(""Hello World!"");"+"Hello.java",3,"public class Hello // prints a Hello World! greeting"+"Hello.java",5,"  { System.out.println(""Hello World!"");" "Hello.pdf",85,"(Hello)" "Hello.sh",2,"echo ""Hello World!""" "Hello.txt",1,"Hello"

tests/out/Hello_Hello--csv-nkb.out

@@ -1,7 +1,7 @@ "Hello.bat",2,7,16,"echo ""Hello World!""" "Hello.class",5,1,122,"Hello.java\f\x00\x07\x00\b\x07\x00\x17\f\x00\x18\x00\x19\x01\x00\fHello World!\x07\x00\x1a\f\x00\x1b\x00\x1c\x01\x00\x05Hello\x01\x00\x10java/lang/Object\x01\x00\x10java/lang/System\x01\x00\x03out\x01\x00\x15Ljava/io/PrintStream;\x01\x00\x13java/io/PrintStream\x01\x00\x07println\x01\x00\x15(Ljava/lang/String;)V\x00!\x00\x05\x00\x06\x00\x00\x00\x00\x00\x02\x00\x01\x00\x07\x00\b\x00\x01\x00	\x00\x00\x00\x1d\x00\x01\x00\x01\x00\x00\x00\x05*·\x00\x01±\x00\x00\x00\x01\x00"-"Hello.java",2,14,33,"public class Hello // prints a Hello World! greeting"-"Hello.java",4,25,137,"  { System.out.println(""Hello World!"");"+"Hello.java",3,14,34,"public class Hello // prints a Hello World! greeting"+"Hello.java",5,25,138,"  { System.out.println(""Hello World!"");" "Hello.pdf",85,2,5217,"(Hello)" "Hello.sh",2,7,16,"echo ""Hello World!""" "Hello.txt",1,1,0,"Hello"

tests/out/Hello_Hello--csv-on.out

@@ -1,7 +1,7 @@ "Hello.bat",2,"Hello" "Hello.class",5,"Hello"-"Hello.java",2,"Hello"-"Hello.java",4,"Hello"+"Hello.java",3,"Hello"+"Hello.java",5,"Hello" "Hello.pdf",85,"Hello" "Hello.sh",2,"Hello" "Hello.txt",1,"Hello"

tests/out/Hello_Hello--csv-onkb.out

@@ -1,7 +1,7 @@ "Hello.bat",2,7,16,"Hello" "Hello.class",5,1,122,"Hello"-"Hello.java",2,14,33,"Hello"-"Hello.java",4,25,137,"Hello"+"Hello.java",3,14,34,"Hello"+"Hello.java",5,25,138,"Hello" "Hello.pdf",85,2,5217,"Hello" "Hello.sh",2,7,16,"Hello" "Hello.txt",1,1,0,"Hello"

tests/out/Hello_Hello--csv-ounkb.out

@@ -2,9 +2,9 @@ "Hello.class",5,1,122,"Hello" "Hello.class",5,27,148,"Hello" "Hello.class",5,50,171,"Hello"-"Hello.java",2,14,33,"Hello"-"Hello.java",2,32,51,"Hello"-"Hello.java",4,25,137,"Hello"+"Hello.java",3,14,34,"Hello"+"Hello.java",3,32,52,"Hello"+"Hello.java",5,25,138,"Hello" "Hello.pdf",85,2,5217,"Hello" "Hello.sh",2,7,16,"Hello" "Hello.txt",1,1,0,"Hello"

tests/out/Hello_Hello--csv-unkb.out

@@ -2,9 +2,9 @@ "Hello.class",5,1,122,"Hello.java\f\x00\x07\x00\b\x07\x00\x17\f\x00\x18\x00\x19\x01\x00\fHello World!\x07\x00\x1a\f\x00\x1b\x00\x1c\x01\x00\x05Hello\x01\x00\x10java/lang/Object\x01\x00\x10java/lang/System\x01\x00\x03out\x01\x00\x15Ljava/io/PrintStream;\x01\x00\x13java/io/PrintStream\x01\x00\x07println\x01\x00\x15(Ljava/lang/String;)V\x00!\x00\x05\x00\x06\x00\x00\x00\x00\x00\x02\x00\x01\x00\x07\x00\b\x00\x01\x00	\x00\x00\x00\x1d\x00\x01\x00\x01\x00\x00\x00\x05*·\x00\x01±\x00\x00\x00\x01\x00" "Hello.class",5,27,148,"Hello.java\f\x00\x07\x00\b\x07\x00\x17\f\x00\x18\x00\x19\x01\x00\fHello World!\x07\x00\x1a\f\x00\x1b\x00\x1c\x01\x00\x05Hello\x01\x00\x10java/lang/Object\x01\x00\x10java/lang/System\x01\x00\x03out\x01\x00\x15Ljava/io/PrintStream;\x01\x00\x13java/io/PrintStream\x01\x00\x07println\x01\x00\x15(Ljava/lang/String;)V\x00!\x00\x05\x00\x06\x00\x00\x00\x00\x00\x02\x00\x01\x00\x07\x00\b\x00\x01\x00	\x00\x00\x00\x1d\x00\x01\x00\x01\x00\x00\x00\x05*·\x00\x01±\x00\x00\x00\x01\x00" "Hello.class",5,50,171,"Hello.java\f\x00\x07\x00\b\x07\x00\x17\f\x00\x18\x00\x19\x01\x00\fHello World!\x07\x00\x1a\f\x00\x1b\x00\x1c\x01\x00\x05Hello\x01\x00\x10java/lang/Object\x01\x00\x10java/lang/System\x01\x00\x03out\x01\x00\x15Ljava/io/PrintStream;\x01\x00\x13java/io/PrintStream\x01\x00\x07println\x01\x00\x15(Ljava/lang/String;)V\x00!\x00\x05\x00\x06\x00\x00\x00\x00\x00\x02\x00\x01\x00\x07\x00\b\x00\x01\x00	\x00\x00\x00\x1d\x00\x01\x00\x01\x00\x00\x00\x05*·\x00\x01±\x00\x00\x00\x01\x00"-"Hello.java",2,14,33,"public class Hello // prints a Hello World! greeting"-"Hello.java",2,32,51,"public class Hello // prints a Hello World! greeting"-"Hello.java",4,25,137,"  { System.out.println(""Hello World!"");"+"Hello.java",3,14,34,"public class Hello // prints a Hello World! greeting"+"Hello.java",3,32,52,"public class Hello // prints a Hello World! greeting"+"Hello.java",5,25,138,"  { System.out.println(""Hello World!"");" "Hello.pdf",85,2,5217,"(Hello)" "Hello.sh",2,7,16,"echo ""Hello World!""" "Hello.txt",1,1,0,"Hello"

tests/out/Hello_Hello--format.out

new file mode 100644@@ -0,0 +1,22 @@+1) Hello.bat:+  1) 2,7 5-5++2) Hello.class:+  1) 5,1 5-5+  2) 5,27 5-5+  3) 5,50 5-5++3) Hello.java:+  1) 3,14 5-5+  2) 3,32 5-5+  3) 5,25 5-5++4) Hello.pdf:+  1) 85,2 5-5++5) Hello.sh:+  1) 2,7 5-5++6) Hello.txt:+  1) 1,1 5-5+

tests/out/Hello_Hello--json-cv.out

@@ -14,7 +14,7 @@   {     "file": "Hello.java",     "matches": [,-      { "match": 4 }+      { "match": 5 }     ]   },   {

tests/out/Hello_Hello--json-n.out

@@ -14,8 +14,8 @@   {     "file": "Hello.java",     "matches": [-      { "line": 2, "match": "public class Hello // prints a Hello World! greeting" },-      { "line": 4, "match": "  { System.out.println(\"Hello World!\");" }+      { "line": 3, "match": "public class Hello // prints a Hello World! greeting" },+      { "line": 5, "match": "  { System.out.println(\"Hello World!\");" }     ]   },   {

tests/out/Hello_Hello--json-nkb.out

@@ -14,8 +14,8 @@   {     "file": "Hello.java",     "matches": [-      { "line": 2, "column": 14, "offset": 33, "match": "public class Hello // prints a Hello World! greeting" },-      { "line": 4, "column": 25, "offset": 137, "match": "  { System.out.println(\"Hello World!\");" }+      { "line": 3, "column": 14, "offset": 34, "match": "public class Hello // prints a Hello World! greeting" },+      { "line": 5, "column": 25, "offset": 138, "match": "  { System.out.println(\"Hello World!\");" }     ]   },   {

tests/out/Hello_Hello--json-on.out

@@ -14,8 +14,8 @@   {     "file": "Hello.java",     "matches": [-      { "line": 2, "match": "Hello" },-      { "line": 4, "match": "Hello" }+      { "line": 3, "match": "Hello" },+      { "line": 5, "match": "Hello" }     ]   },   {

tests/out/Hello_Hello--json-onkb.out

@@ -14,8 +14,8 @@   {     "file": "Hello.java",     "matches": [-      { "line": 2, "column": 14, "offset": 33, "match": "Hello" },-      { "line": 4, "column": 25, "offset": 137, "match": "Hello" }+      { "line": 3, "column": 14, "offset": 34, "match": "Hello" },+      { "line": 5, "column": 25, "offset": 138, "match": "Hello" }     ]   },   {

tests/out/Hello_Hello--json-ounkb.out

@@ -16,9 +16,9 @@   {     "file": "Hello.java",     "matches": [-      { "line": 2, "column": 14, "offset": 33, "match": "Hello" },-      { "line": 2, "column": 32, "offset": 51, "match": "Hello" },-      { "line": 4, "column": 25, "offset": 137, "match": "Hello" }+      { "line": 3, "column": 14, "offset": 34, "match": "Hello" },+      { "line": 3, "column": 32, "offset": 52, "match": "Hello" },+      { "line": 5, "column": 25, "offset": 138, "match": "Hello" }     ]   },   {

tests/out/Hello_Hello--json-unkb.out

@@ -16,9 +16,9 @@   {     "file": "Hello.java",     "matches": [-      { "line": 2, "column": 14, "offset": 33, "match": "public class Hello // prints a Hello World! greeting" },-      { "line": 2, "column": 32, "offset": 51, "match": "public class Hello // prints a Hello World! greeting" },-      { "line": 4, "column": 25, "offset": 137, "match": "  { System.out.println(\"Hello World!\");" }+      { "line": 3, "column": 14, "offset": 34, "match": "public class Hello // prints a Hello World! greeting" },+      { "line": 3, "column": 32, "offset": 52, "match": "public class Hello // prints a Hello World! greeting" },+      { "line": 5, "column": 25, "offset": 138, "match": "  { System.out.println(\"Hello World!\");" }     ]   },   {

tests/out/Hello_Hello--xml-cv.out

@@ -6,7 +6,7 @@     <match>6</match>   </file>   <file name="Hello.java">-    <match>4</match>+    <match>5</match>   </file>   <file name="Hello.pdf">     <match>133</match>

tests/out/Hello_Hello--xml-n.out

@@ -6,8 +6,8 @@     <match line="5">Hello.java&#12;&#0;&#7;&#0;&#8;&#7;&#0;&#23;&#12;&#0;&#24;&#0;&#25;&#1;&#0;&#12;Hello World!&#7;&#0;&#26;&#12;&#0;&#27;&#0;&#28;&#1;&#0;&#5;Hello&#1;&#0;&#16;java/lang/Object&#1;&#0;&#16;java/lang/System&#1;&#0;&#3;out&#1;&#0;&#21;Ljava/io/PrintStream;&#1;&#0;&#19;java/io/PrintStream&#1;&#0;&#7;println&#1;&#0;&#21;(Ljava/lang/String;)V&#0;!&#0;&#5;&#0;&#6;&#0;&#0;&#0;&#0;&#0;&#2;&#0;&#1;&#0;&#7;&#0;&#8;&#0;&#1;&#0;&#9;&#0;&#0;&#0;&#29;&#0;&#1;&#0;&#1;&#0;&#0;&#0;&#5;*·&#0;&#1;±&#0;&#0;&#0;&#1;&#0;</match>   </file>   <file name="Hello.java">-    <match line="2">public class Hello // prints a Hello World! greeting</match>-    <match line="4">  { System.out.println(&quot;Hello World!&quot;);</match>+    <match line="3">public class Hello // prints a Hello World! greeting</match>+    <match line="5">  { System.out.println(&quot;Hello World!&quot;);</match>   </file>   <file name="Hello.pdf">     <match line="85">(Hello)</match>

tests/out/Hello_Hello--xml-nkb.out

@@ -6,8 +6,8 @@     <match line="5" column="1" offset="122">Hello.java&#12;&#0;&#7;&#0;&#8;&#7;&#0;&#23;&#12;&#0;&#24;&#0;&#25;&#1;&#0;&#12;Hello World!&#7;&#0;&#26;&#12;&#0;&#27;&#0;&#28;&#1;&#0;&#5;Hello&#1;&#0;&#16;java/lang/Object&#1;&#0;&#16;java/lang/System&#1;&#0;&#3;out&#1;&#0;&#21;Ljava/io/PrintStream;&#1;&#0;&#19;java/io/PrintStream&#1;&#0;&#7;println&#1;&#0;&#21;(Ljava/lang/String;)V&#0;!&#0;&#5;&#0;&#6;&#0;&#0;&#0;&#0;&#0;&#2;&#0;&#1;&#0;&#7;&#0;&#8;&#0;&#1;&#0;&#9;&#0;&#0;&#0;&#29;&#0;&#1;&#0;&#1;&#0;&#0;&#0;&#5;*·&#0;&#1;±&#0;&#0;&#0;&#1;&#0;</match>   </file>   <file name="Hello.java">-    <match line="2" column="14" offset="33">public class Hello // prints a Hello World! greeting</match>-    <match line="4" column="25" offset="137">  { System.out.println(&quot;Hello World!&quot;);</match>+    <match line="3" column="14" offset="34">public class Hello // prints a Hello World! greeting</match>+    <match line="5" column="25" offset="138">  { System.out.println(&quot;Hello World!&quot;);</match>   </file>   <file name="Hello.pdf">     <match line="85" column="2" offset="5217">(Hello)</match>

tests/out/Hello_Hello--xml-on.out

@@ -6,8 +6,8 @@     <match line="5">Hello</match>   </file>   <file name="Hello.java">-    <match line="2">Hello</match>-    <match line="4">Hello</match>+    <match line="3">Hello</match>+    <match line="5">Hello</match>   </file>   <file name="Hello.pdf">     <match line="85">Hello</match>

tests/out/Hello_Hello--xml-onkb.out

@@ -6,8 +6,8 @@     <match line="5" column="1" offset="122">Hello</match>   </file>   <file name="Hello.java">-    <match line="2" column="14" offset="33">Hello</match>-    <match line="4" column="25" offset="137">Hello</match>+    <match line="3" column="14" offset="34">Hello</match>+    <match line="5" column="25" offset="138">Hello</match>   </file>   <file name="Hello.pdf">     <match line="85" column="2" offset="5217">Hello</match>

tests/out/Hello_Hello--xml-ounkb.out

@@ -8,9 +8,9 @@     <match line="5" column="50" offset="171">Hello</match>   </file>   <file name="Hello.java">-    <match line="2" column="14" offset="33">Hello</match>-    <match line="2" column="32" offset="51">Hello</match>-    <match line="4" column="25" offset="137">Hello</match>+    <match line="3" column="14" offset="34">Hello</match>+    <match line="3" column="32" offset="52">Hello</match>+    <match line="5" column="25" offset="138">Hello</match>   </file>   <file name="Hello.pdf">     <match line="85" column="2" offset="5217">Hello</match>

tests/out/Hello_Hello--xml-unkb.out

@@ -8,9 +8,9 @@     <match line="5" column="50" offset="171">Hello.java&#12;&#0;&#7;&#0;&#8;&#7;&#0;&#23;&#12;&#0;&#24;&#0;&#25;&#1;&#0;&#12;Hello World!&#7;&#0;&#26;&#12;&#0;&#27;&#0;&#28;&#1;&#0;&#5;Hello&#1;&#0;&#16;java/lang/Object&#1;&#0;&#16;java/lang/System&#1;&#0;&#3;out&#1;&#0;&#21;Ljava/io/PrintStream;&#1;&#0;&#19;java/io/PrintStream&#1;&#0;&#7;println&#1;&#0;&#21;(Ljava/lang/String;)V&#0;!&#0;&#5;&#0;&#6;&#0;&#0;&#0;&#0;&#0;&#2;&#0;&#1;&#0;&#7;&#0;&#8;&#0;&#1;&#0;&#9;&#0;&#0;&#0;&#29;&#0;&#1;&#0;&#1;&#0;&#0;&#0;&#5;*·&#0;&#1;±&#0;&#0;&#0;&#1;&#0;</match>   </file>   <file name="Hello.java">-    <match line="2" column="14" offset="33">public class Hello // prints a Hello World! greeting</match>-    <match line="2" column="32" offset="51">public class Hello // prints a Hello World! greeting</match>-    <match line="4" column="25" offset="137">  { System.out.println(&quot;Hello World!&quot;);</match>+    <match line="3" column="14" offset="34">public class Hello // prints a Hello World! greeting</match>+    <match line="3" column="32" offset="52">public class Hello // prints a Hello World! greeting</match>+    <match line="5" column="25" offset="138">  { System.out.println(&quot;Hello World!&quot;);</match>   </file>   <file name="Hello.pdf">     <match line="85" column="2" offset="5217">(Hello)</match>

tests/out/Hello_Hello-F.out

new file mode 100644@@ -0,0 +1,7 @@+Hello.bat:echo "Hello World!"+Binary file Hello.class matches+Hello.java:public class Hello // prints a Hello World! greeting+Hello.java:  { System.out.println("Hello World!");+Hello.pdf:(Hello)+Hello.sh:echo "Hello World!"+Hello.txt:Hello

tests/out/Hello_Hello-Fw.out

new file mode 100644@@ -0,0 +1,7 @@+Hello.bat:echo "Hello World!"+Binary file Hello.class matches+Hello.java:public class Hello // prints a Hello World! greeting+Hello.java:  { System.out.println("Hello World!");+Hello.pdf:(Hello)+Hello.sh:echo "Hello World!"+Hello.txt:Hello

tests/out/Hello_Hello-Fx.out

new file mode 100644@@ -0,0 +1 @@+Hello.txt:Hello

tests/out/Hello_Hello-G.out

new file mode 100644@@ -0,0 +1,7 @@+Hello.bat:echo "Hello World!"+Binary file Hello.class matches+Hello.java:public class Hello // prints a Hello World! greeting+Hello.java:  { System.out.println("Hello World!");+Hello.pdf:(Hello)+Hello.sh:echo "Hello World!"+Hello.txt:Hello

tests/out/Hello_Hello-I-cv.out

@@ -1,6 +1,6 @@ Hello.bat:1 Hello.class:0-Hello.java:4+Hello.java:5 Hello.pdf:133 Hello.sh:1 Hello.txt:0

tests/out/Hello_Hello-I-n.out

@@ -1,6 +1,6 @@ Hello.bat:2:echo "Hello World!"-Hello.java:2:public class Hello // prints a Hello World! greeting-Hello.java:4:  { System.out.println("Hello World!");+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java:5:  { System.out.println("Hello World!"); Hello.pdf:85:(Hello) Hello.sh:2:echo "Hello World!" Hello.txt:1:Hello

tests/out/Hello_Hello-I-nC1.out

@@ -1,13 +1,13 @@ Hello.bat-1-#!/bin/sh Hello.bat:2:echo "Hello World!"-Hello.java-1-import java.lang.*;-Hello.java:2:public class Hello // prints a Hello World! greeting-Hello.java-3-{ public static void main(String[] arg)+Hello.java-2-+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java-4-{ public static void main(String[] arg) -- ---Hello.java-3-{ public static void main(String[] arg)-Hello.java:4:  { System.out.println("Hello World!");-Hello.java-5-  }+Hello.java-4-{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!");+Hello.java-6-  } Hello.sh-1-#!/bin/sh Hello.sh:2:echo "Hello World!" Hello.txt:1:Hello\ No newline at end of file

tests/out/Hello_Hello-I-nkbT.out

@@ -1,6 +1,6 @@ Hello.bat:     2:  7:     16:	echo "Hello World!"-Hello.java:     2: 14:     33:	public class Hello // prints a Hello World! greeting-Hello.java:     4: 25:    137:	  { System.out.println("Hello World!");+Hello.java:     3: 14:     34:	public class Hello // prints a Hello World! greeting+Hello.java:     5: 25:    138:	  { System.out.println("Hello World!"); Hello.pdf:    85:  2:   5217:	(Hello) Hello.sh:     2:  7:     16:	echo "Hello World!" Hello.txt:     1:  1:      0:	Hello

tests/out/Hello_Hello-I-nv.out

@@ -1,7 +1,8 @@ Hello.bat:1:#!/bin/sh Hello.java:1:import java.lang.*;-Hello.java:3:{ public static void main(String[] arg)-Hello.java:5:  }-Hello.java:6:}+Hello.java:2:+Hello.java:4:{ public static void main(String[] arg)+Hello.java:6:  }+Hello.java:7:} Hello.pdf:1:%PDF-1.3 Hello.sh:1:#!/bin/sh

tests/out/Hello_Hello-I-nvC1.out

@@ -1,17 +1,18 @@ Hello.bat:1:#!/bin/sh Hello.bat-2-echo "Hello World!" Hello.java:1:import java.lang.*;-Hello.java-2-public class Hello // prints a Hello World! greeting+Hello.java:2:+Hello.java-3-public class Hello // prints a Hello World! greeting -- ---Hello.java-2-public class Hello // prints a Hello World! greeting-Hello.java:3:{ public static void main(String[] arg)-Hello.java-4-  { System.out.println("Hello World!");+Hello.java-3-public class Hello // prints a Hello World! greeting+Hello.java:4:{ public static void main(String[] arg)+Hello.java-5-  { System.out.println("Hello World!"); -- ---Hello.java-4-  { System.out.println("Hello World!");-Hello.java:5:  }-Hello.java:6:}+Hello.java-5-  { System.out.println("Hello World!");+Hello.java:6:  }+Hello.java:7:} Hello.pdf:1:%PDF-1.3 Hello.sh:1:#!/bin/sh Hello.sh-2-echo "Hello World!"

tests/out/Hello_Hello-I-nvy.out

@@ -1,11 +1,12 @@ Hello.bat:1:#!/bin/sh Hello.bat-2-echo "Hello World!" Hello.java:1:import java.lang.*;-Hello.java-2-public class Hello // prints a Hello World! greeting-Hello.java:3:{ public static void main(String[] arg)-Hello.java-4-  { System.out.println("Hello World!");-Hello.java:5:  }-Hello.java:6:}+Hello.java:2:+Hello.java-3-public class Hello // prints a Hello World! greeting+Hello.java:4:{ public static void main(String[] arg)+Hello.java-5-  { System.out.println("Hello World!");+Hello.java:6:  }+Hello.java:7:} Hello.pdf:1:%PDF-1.3 Hello.sh:1:#!/bin/sh Hello.sh-2-echo "Hello World!"

tests/out/Hello_Hello-I-ny.out

@@ -1,11 +1,12 @@ Hello.bat-1-#!/bin/sh Hello.bat:2:echo "Hello World!" Hello.java-1-import java.lang.*;-Hello.java:2:public class Hello // prints a Hello World! greeting-Hello.java-3-{ public static void main(String[] arg)-Hello.java:4:  { System.out.println("Hello World!");-Hello.java-5-  }-Hello.java-6-}+Hello.java-2-+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java-4-{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!");+Hello.java-6-  }+Hello.java-7-} Hello.pdf-1-%PDF-1.3 Hello.sh-1-#!/bin/sh Hello.sh:2:echo "Hello World!"

tests/out/Hello_Hello-I-on.out

@@ -1,7 +1,7 @@ Hello.bat:2:Hello-Hello.java:2:Hello+Hello.java:3:Hello Hello-Hello.java:4:Hello+Hello.java:5:Hello Hello.pdf:85:Hello Hello.sh:2:Hello Hello.txt:1:Hello

tests/out/Hello_Hello-I-onkbT.out

@@ -1,7 +1,7 @@ Hello.bat:     2:  7:     16:	Hello-Hello.java:     2: 14:     33:	Hello+Hello.java:     3: 14:     34:	Hello Hello-Hello.java:     4: 25:    137:	Hello+Hello.java:     5: 25:    138:	Hello Hello.pdf:    85:  2:   5217:	Hello Hello.sh:     2:  7:     16:	Hello Hello.txt:     1:  1:      0:	Hello

tests/out/Hello_Hello-I-ounkbT.out

@@ -1,7 +1,7 @@ Hello.bat:     2:  7:     16:	Hello-Hello.java:     2: 14:     33:	Hello-Hello.java+     2+ 32+     51+	Hello-Hello.java:     4: 25:    137:	Hello+Hello.java:     3: 14:     34:	Hello+Hello.java+     3+ 32+     52+	Hello+Hello.java:     5: 25:    138:	Hello Hello.pdf:    85:  2:   5217:	Hello Hello.sh:     2:  7:     16:	Hello Hello.txt:     1:  1:      0:	Hello

tests/out/Hello_Hello-I-unkbT.out

@@ -1,7 +1,7 @@ Hello.bat:     2:  7:     16:	echo "Hello World!"-Hello.java:     2: 14:     33:	public class Hello // prints a Hello World! greeting-Hello.java+     2+ 32+     51+	public class Hello // prints a Hello World! greeting-Hello.java:     4: 25:    137:	  { System.out.println("Hello World!");+Hello.java:     3: 14:     34:	public class Hello // prints a Hello World! greeting+Hello.java+     3+ 32+     52+	public class Hello // prints a Hello World! greeting+Hello.java:     5: 25:    138:	  { System.out.println("Hello World!"); Hello.pdf:    85:  2:   5217:	(Hello) Hello.sh:     2:  7:     16:	echo "Hello World!" Hello.txt:     1:  1:      0:	Hello

tests/out/Hello_Hello-Iw.out

new file mode 100644@@ -0,0 +1,6 @@+Hello.bat:echo "Hello World!"+Hello.java:public class Hello // prints a Hello World! greeting+Hello.java:  { System.out.println("Hello World!");+Hello.pdf:(Hello)+Hello.sh:echo "Hello World!"+Hello.txt:Hello

tests/out/Hello_Hello-Ix.out

new file mode 100644@@ -0,0 +1 @@+Hello.txt:Hello

tests/out/Hello_Hello-P.out

new file mode 100644@@ -0,0 +1,7 @@+Hello.bat:echo "Hello World!"+Binary file Hello.class matches+Hello.java:public class Hello // prints a Hello World! greeting+Hello.java:  { System.out.println("Hello World!");+Hello.pdf:(Hello)+Hello.sh:echo "Hello World!"+Hello.txt:Hello

tests/out/Hello_Hello-Pw.out

new file mode 100644@@ -0,0 +1,7 @@+Hello.bat:echo "Hello World!"+Binary file Hello.class matches+Hello.java:public class Hello // prints a Hello World! greeting+Hello.java:  { System.out.println("Hello World!");+Hello.pdf:(Hello)+Hello.sh:echo "Hello World!"+Hello.txt:Hello

tests/out/Hello_Hello-Px.out

new file mode 100644@@ -0,0 +1 @@+Hello.txt:Hello

tests/out/Hello_Hello-W-cv.out

@@ -1,6 +1,6 @@ Hello.bat:1 Hello.class:6-Hello.java:4+Hello.java:5 Hello.pdf:133 Hello.sh:1 Hello.txt:0

tests/out/Hello_Hello-W-n.out

@@ -15,8 +15,8 @@ 00000130:  00 06 00 00 00 00 00 02  00 01 00 07 00 08 00 01  |@F@@@@@B@A@G@H@A| 00000140:  00 09 00 00 00 1d 00 01  00 01 00 00 00 05 2a b7  |@I@@@]@A@A@@@E*.| 00000150:  00 01 b1 00 00 00 01 00  0a -- -- -- -- -- -- --  |@A.@@@A@J-------|-Hello.java:2:public class Hello // prints a Hello World! greeting-Hello.java:4:  { System.out.println("Hello World!");+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java:5:  { System.out.println("Hello World!"); Hello.pdf:85:(Hello) Hello.sh:2:echo "Hello World!" Hello.txt:1:Hello

tests/out/Hello_Hello-W-nC1.out

@@ -24,14 +24,14 @@ 00000160-  00 00 02 00 09 00 0b 00  0c 00 01 00 09 00 00 00  |@@B@I@K@L@A@I@@@| 00000170-  25 00 02 00 01 00 00 00  09 b2 00 02 12 03 b6 00  |%@B@A@@@I.@BRC.@| 00000180-  04 b1 00 00 00 01 00 0a  -- -- -- -- -- -- -- --  |D.@@@A@J--------|-Hello.java-1-import java.lang.*;-Hello.java:2:public class Hello // prints a Hello World! greeting-Hello.java-3-{ public static void main(String[] arg)+Hello.java-2-+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java-4-{ public static void main(String[] arg) -- ---Hello.java-3-{ public static void main(String[] arg)-Hello.java:4:  { System.out.println("Hello World!");-Hello.java-5-  }+Hello.java-4-{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!");+Hello.java-6-  } Hello.pdf-84-15 0 obj Hello.pdf:85:(Hello) Hello.pdf-86-endobj

tests/out/Hello_Hello-W-nkbT.out

@@ -15,8 +15,8 @@ 00000130:  00 06 00 00 00 00 00 02  00 01 00 07 00 08 00 01  |@F@@@@@B@A@G@H@A| 00000140:  00 09 00 00 00 1d 00 01  00 01 00 00 00 05 2a b7  |@I@@@]@A@A@@@E*.| 00000150:  00 01 b1 00 00 00 01 00  0a -- -- -- -- -- -- --  |@A.@@@A@J-------|-Hello.java:     2: 14:     33:	public class Hello // prints a Hello World! greeting-Hello.java:     4: 25:    137:	  { System.out.println("Hello World!");+Hello.java:     3: 14:     34:	public class Hello // prints a Hello World! greeting+Hello.java:     5: 25:    138:	  { System.out.println("Hello World!"); Hello.pdf:    85:  2:   5217:	(Hello) Hello.sh:     2:  7:     16:	echo "Hello World!" Hello.txt:     1:  1:      0:	Hello

tests/out/Hello_Hello-W-nv.out

@@ -25,9 +25,10 @@ 00000180:  -- -- -- -- -- -- -- --  -- -- -- -- 00 02 00 00  |------------@B@@| 00000190:  00 04 00 08 00 05 00 01  00 0d 00 00 00 02 00 0e  |@D@H@E@A@M@@@B@N| Hello.java:1:import java.lang.*;-Hello.java:3:{ public static void main(String[] arg)-Hello.java:5:  }-Hello.java:6:}+Hello.java:2:+Hello.java:4:{ public static void main(String[] arg)+Hello.java:6:  }+Hello.java:7:} Hello.pdf:1:%PDF-1.3 Hello.pdf:2: 00000000:  -- -- -- -- -- -- -- --  -- 25 c4 e5 f2 e5 eb a7  |---------%......|

tests/out/Hello_Hello-W-nvC1.out

@@ -60,17 +60,18 @@ 00000180:  -- -- -- -- -- -- -- --  -- -- -- -- 00 02 00 00  |------------@B@@| 00000190:  00 04 00 08 00 05 00 01  00 0d 00 00 00 02 00 0e  |@D@H@E@A@M@@@B@N| Hello.java:1:import java.lang.*;-Hello.java-2-public class Hello // prints a Hello World! greeting+Hello.java:2:+Hello.java-3-public class Hello // prints a Hello World! greeting -- ---Hello.java-2-public class Hello // prints a Hello World! greeting-Hello.java:3:{ public static void main(String[] arg)-Hello.java-4-  { System.out.println("Hello World!");+Hello.java-3-public class Hello // prints a Hello World! greeting+Hello.java:4:{ public static void main(String[] arg)+Hello.java-5-  { System.out.println("Hello World!"); -- ---Hello.java-4-  { System.out.println("Hello World!");-Hello.java:5:  }-Hello.java:6:}+Hello.java-5-  { System.out.println("Hello World!");+Hello.java:6:  }+Hello.java:7:} Hello.pdf:1:%PDF-1.3 Hello.pdf:2: 00000000:  -- -- -- -- -- -- -- --  -- 25 c4 e5 f2 e5 eb a7  |---------%......|

tests/out/Hello_Hello-W-nvy.out

@@ -35,11 +35,12 @@ 00000180:  04 b1 00 00 00 01 00 0a  00 00 00 0a 00 02 00 00  |D.@@@A@J@@@J@B@@| 00000190:  00 04 00 08 00 05 00 01  00 0d 00 00 00 02 00 0e  |@D@H@E@A@M@@@B@N| Hello.java:1:import java.lang.*;-Hello.java-2-public class Hello // prints a Hello World! greeting-Hello.java:3:{ public static void main(String[] arg)-Hello.java-4-  { System.out.println("Hello World!");-Hello.java:5:  }-Hello.java:6:}+Hello.java:2:+Hello.java-3-public class Hello // prints a Hello World! greeting+Hello.java:4:{ public static void main(String[] arg)+Hello.java-5-  { System.out.println("Hello World!");+Hello.java:6:  }+Hello.java:7:} Hello.pdf:1:%PDF-1.3 Hello.pdf:2: 00000000:  -- -- -- -- -- -- -- --  -- 25 c4 e5 f2 e5 eb a7  |---------%......|

tests/out/Hello_Hello-W-ny.out

@@ -35,11 +35,12 @@ 00000180-  04 b1 00 00 00 01 00 0a  00 00 00 0a 00 02 00 00  |D.@@@A@J@@@J@B@@| 00000190-  00 04 00 08 00 05 00 01  00 0d 00 00 00 02 00 0e  |@D@H@E@A@M@@@B@N| Hello.java-1-import java.lang.*;-Hello.java:2:public class Hello // prints a Hello World! greeting-Hello.java-3-{ public static void main(String[] arg)-Hello.java:4:  { System.out.println("Hello World!");-Hello.java-5-  }-Hello.java-6-}+Hello.java-2-+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java-4-{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!");+Hello.java-6-  }+Hello.java-7-} Hello.pdf-1-%PDF-1.3 Hello.pdf-2- 00000000-  -- -- -- -- -- -- -- --  -- 25 c4 e5 f2 e5 eb a7  |---------%......|

tests/out/Hello_Hello-W-on.out

@@ -2,9 +2,9 @@ Hello.class:5:Hello Hello Hello-Hello.java:2:Hello+Hello.java:3:Hello Hello-Hello.java:4:Hello+Hello.java:5:Hello Hello.pdf:85:Hello Hello.sh:2:Hello Hello.txt:1:Hello

tests/out/Hello_Hello-W-onkbT.out

@@ -2,9 +2,9 @@ Hello.class:     5:  1:    122:	Hello Hello Hello-Hello.java:     2: 14:     33:	Hello+Hello.java:     3: 14:     34:	Hello Hello-Hello.java:     4: 25:    137:	Hello+Hello.java:     5: 25:    138:	Hello Hello.pdf:    85:  2:   5217:	Hello Hello.sh:     2:  7:     16:	Hello Hello.txt:     1:  1:      0:	Hello

tests/out/Hello_Hello-W-ounkbT.out

@@ -2,9 +2,9 @@ Hello.class:     5:  1:    122:	Hello Hello.class+     5+ 27+    148+	Hello Hello.class+     5+ 50+    171+	Hello-Hello.java:     2: 14:     33:	Hello-Hello.java+     2+ 32+     51+	Hello-Hello.java:     4: 25:    137:	Hello+Hello.java:     3: 14:     34:	Hello+Hello.java+     3+ 32+     52+	Hello+Hello.java:     5: 25:    138:	Hello Hello.pdf:    85:  2:   5217:	Hello Hello.sh:     2:  7:     16:	Hello Hello.txt:     1:  1:      0:	Hello

tests/out/Hello_Hello-W-unkbT.out

@@ -47,9 +47,9 @@ 00000130:  00 06 00 00 00 00 00 02  00 01 00 07 00 08 00 01  |@F@@@@@B@A@G@H@A| 00000140:  00 09 00 00 00 1d 00 01  00 01 00 00 00 05 2a b7  |@I@@@]@A@A@@@E*.| 00000150:  00 01 b1 00 00 00 01 00  0a -- -- -- -- -- -- --  |@A.@@@A@J-------|-Hello.java:     2: 14:     33:	public class Hello // prints a Hello World! greeting-Hello.java+     2+ 32+     51+	public class Hello // prints a Hello World! greeting-Hello.java:     4: 25:    137:	  { System.out.println("Hello World!");+Hello.java:     3: 14:     34:	public class Hello // prints a Hello World! greeting+Hello.java+     3+ 32+     52+	public class Hello // prints a Hello World! greeting+Hello.java:     5: 25:    138:	  { System.out.println("Hello World!"); Hello.pdf:    85:  2:   5217:	(Hello) Hello.sh:     2:  7:     16:	echo "Hello World!" Hello.txt:     1:  1:      0:	Hello

tests/out/Hello_Hello-X-cv.out

@@ -1,6 +1,6 @@ Hello.bat:1 Hello.class:6-Hello.java:4+Hello.java:5 Hello.pdf:133 Hello.sh:1 Hello.txt:0

tests/out/Hello_Hello-X-n.out

@@ -17,15 +17,15 @@ 00000130:  00 06 00 00 00 00 00 02  00 01 00 07 00 08 00 01  |@F@@@@@B@A@G@H@A| 00000140:  00 09 00 00 00 1d 00 01  00 01 00 00 00 05 2a b7  |@I@@@]@A@A@@@E*.| 00000150:  00 01 b1 00 00 00 01 00  0a -- -- -- -- -- -- --  |@A.@@@A@J-------|-Hello.java:2:-00000010:  -- -- -- -- 70 75 62 6c  69 63 20 63 6c 61 73 73  |----public class|-00000020:  20 48 65 6c 6c 6f 20 2f  2f 20 70 72 69 6e 74 73  | Hello // prints|-00000030:  20 61 20 48 65 6c 6c 6f  20 57 6f 72 6c 64 21 20  | a Hello World! |-00000040:  67 72 65 65 74 69 6e 67  0a -- -- -- -- -- -- --  |greetingJ-------|-Hello.java:4:-00000070:  -- 20 20 7b 20 53 79 73  74 65 6d 2e 6f 75 74 2e  |-  { System.out.|-00000080:  70 72 69 6e 74 6c 6e 28  22 48 65 6c 6c 6f 20 57  |println("Hello W|-00000090:  6f 72 6c 64 21 22 29 3b  0a -- -- -- -- -- -- --  |orld!");J-------|+Hello.java:3:+00000010:  -- -- -- -- -- 70 75 62  6c 69 63 20 63 6c 61 73  |-----public clas|+00000020:  73 20 48 65 6c 6c 6f 20  2f 2f 20 70 72 69 6e 74  |s Hello // print|+00000030:  73 20 61 20 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |s a Hello World!|+00000040:  20 67 72 65 65 74 69 6e  67 0a -- -- -- -- -- --  | greetingJ------|+Hello.java:5:+00000070:  -- -- 20 20 7b 20 53 79  73 74 65 6d 2e 6f 75 74  |--  { System.out|+00000080:  2e 70 72 69 6e 74 6c 6e  28 22 48 65 6c 6c 6f 20  |.println("Hello |+00000090:  57 6f 72 6c 64 21 22 29  3b 0a -- -- -- -- -- --  |World!");J------| Hello.pdf:85: 00001460:  28 48 65 6c 6c 6f 29 0a  -- -- -- -- -- -- -- --  |(Hello)J--------| Hello.sh:2:

tests/out/Hello_Hello-X-nC1.out

@@ -27,32 +27,31 @@ 00000160-  00 00 02 00 09 00 0b 00  0c 00 01 00 09 00 00 00  |@@B@I@K@L@A@I@@@| 00000170-  25 00 02 00 01 00 00 00  09 b2 00 02 12 03 b6 00  |%@B@A@@@I.@BRC.@| 00000180-  04 b1 00 00 00 01 00 0a  -- -- -- -- -- -- -- --  |D.@@@A@J--------|-Hello.java-1--00000000-  69 6d 70 6f 72 74 20 6a  61 76 61 2e 6c 61 6e 67  |import java.lang|-00000010-  2e 2a 3b 0a -- -- -- --  -- -- -- -- -- -- -- --  |.*;J------------|-Hello.java:2:-00000010:  -- -- -- -- 70 75 62 6c  69 63 20 63 6c 61 73 73  |----public class|-00000020:  20 48 65 6c 6c 6f 20 2f  2f 20 70 72 69 6e 74 73  | Hello // prints|-00000030:  20 61 20 48 65 6c 6c 6f  20 57 6f 72 6c 64 21 20  | a Hello World! |-00000040:  67 72 65 65 74 69 6e 67  0a -- -- -- -- -- -- --  |greetingJ-------|-Hello.java-3--00000040-  -- -- -- -- -- -- -- --  -- 7b 20 70 75 62 6c 69  |---------{ publi|-00000050-  63 20 73 74 61 74 69 63  20 76 6f 69 64 20 6d 61  |c static void ma|-00000060-  69 6e 28 53 74 72 69 6e  67 5b 5d 20 61 72 67 29  |in(String[] arg)|-00000070-  0a -- -- -- -- -- -- --  -- -- -- -- -- -- -- --  |J---------------|+Hello.java-2-+00000010-  -- -- -- -- 0a -- -- --  -- -- -- -- -- -- -- --  |----J-----------|+Hello.java:3:+00000010:  -- -- -- -- -- 70 75 62  6c 69 63 20 63 6c 61 73  |-----public clas|+00000020:  73 20 48 65 6c 6c 6f 20  2f 2f 20 70 72 69 6e 74  |s Hello // print|+00000030:  73 20 61 20 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |s a Hello World!|+00000040:  20 67 72 65 65 74 69 6e  67 0a -- -- -- -- -- --  | greetingJ------|+Hello.java-4-+00000040-  -- -- -- -- -- -- -- --  -- -- 7b 20 70 75 62 6c  |----------{ publ|+00000050-  69 63 20 73 74 61 74 69  63 20 76 6f 69 64 20 6d  |ic static void m|+00000060-  61 69 6e 28 53 74 72 69  6e 67 5b 5d 20 61 72 67  |ain(String[] arg|+00000070-  29 0a -- -- -- -- -- --  -- -- -- -- -- -- -- --  |)J--------------| -- ---Hello.java-3--00000040-  -- -- -- -- -- -- -- --  -- 7b 20 70 75 62 6c 69  |---------{ publi|-00000050-  63 20 73 74 61 74 69 63  20 76 6f 69 64 20 6d 61  |c static void ma|-00000060-  69 6e 28 53 74 72 69 6e  67 5b 5d 20 61 72 67 29  |in(String[] arg)|-00000070-  0a -- -- -- -- -- -- --  -- -- -- -- -- -- -- --  |J---------------|-Hello.java:4:-00000070:  -- 20 20 7b 20 53 79 73  74 65 6d 2e 6f 75 74 2e  |-  { System.out.|-00000080:  70 72 69 6e 74 6c 6e 28  22 48 65 6c 6c 6f 20 57  |println("Hello W|-00000090:  6f 72 6c 64 21 22 29 3b  0a -- -- -- -- -- -- --  |orld!");J-------|-Hello.java-5--00000090-  -- -- -- -- -- -- -- --  -- 20 20 7d 0a -- -- --  |---------  }J---|+Hello.java-4-+00000040-  -- -- -- -- -- -- -- --  -- -- 7b 20 70 75 62 6c  |----------{ publ|+00000050-  69 63 20 73 74 61 74 69  63 20 76 6f 69 64 20 6d  |ic static void m|+00000060-  61 69 6e 28 53 74 72 69  6e 67 5b 5d 20 61 72 67  |ain(String[] arg|+00000070-  29 0a -- -- -- -- -- --  -- -- -- -- -- -- -- --  |)J--------------|+Hello.java:5:+00000070:  -- -- 20 20 7b 20 53 79  73 74 65 6d 2e 6f 75 74  |--  { System.out|+00000080:  2e 70 72 69 6e 74 6c 6e  28 22 48 65 6c 6c 6f 20  |.println("Hello |+00000090:  57 6f 72 6c 64 21 22 29  3b 0a -- -- -- -- -- --  |World!");J------|+Hello.java-6-+00000090-  -- -- -- -- -- -- -- --  -- -- 20 20 7d 0a -- --  |----------  }J--| Hello.pdf-84- 00001450-  -- -- -- -- -- -- -- 31  35 20 30 20 6f 62 6a 0a  |-------15 0 objJ| Hello.pdf:85:

tests/out/Hello_Hello-X-nkbT.out

@@ -17,15 +17,15 @@ 00000130:  00 06 00 00 00 00 00 02  00 01 00 07 00 08 00 01  |@F@@@@@B@A@G@H@A| 00000140:  00 09 00 00 00 1d 00 01  00 01 00 00 00 05 2a b7  |@I@@@]@A@A@@@E*.| 00000150:  00 01 b1 00 00 00 01 00  0a -- -- -- -- -- -- --  |@A.@@@A@J-------|-Hello.java:     2: 14:     33:	-00000010:  -- -- -- -- 70 75 62 6c  69 63 20 63 6c 61 73 73  |----public class|-00000020:  20 48 65 6c 6c 6f 20 2f  2f 20 70 72 69 6e 74 73  | Hello // prints|-00000030:  20 61 20 48 65 6c 6c 6f  20 57 6f 72 6c 64 21 20  | a Hello World! |-00000040:  67 72 65 65 74 69 6e 67  0a -- -- -- -- -- -- --  |greetingJ-------|-Hello.java:     4: 25:    137:	-00000070:  -- 20 20 7b 20 53 79 73  74 65 6d 2e 6f 75 74 2e  |-  { System.out.|-00000080:  70 72 69 6e 74 6c 6e 28  22 48 65 6c 6c 6f 20 57  |println("Hello W|-00000090:  6f 72 6c 64 21 22 29 3b  0a -- -- -- -- -- -- --  |orld!");J-------|+Hello.java:     3: 14:     34:	+00000010:  -- -- -- -- -- 70 75 62  6c 69 63 20 63 6c 61 73  |-----public clas|+00000020:  73 20 48 65 6c 6c 6f 20  2f 2f 20 70 72 69 6e 74  |s Hello // print|+00000030:  73 20 61 20 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |s a Hello World!|+00000040:  20 67 72 65 65 74 69 6e  67 0a -- -- -- -- -- --  | greetingJ------|+Hello.java:     5: 25:    138:	+00000070:  -- -- 20 20 7b 20 53 79  73 74 65 6d 2e 6f 75 74  |--  { System.out|+00000080:  2e 70 72 69 6e 74 6c 6e  28 22 48 65 6c 6c 6f 20  |.println("Hello |+00000090:  57 6f 72 6c 64 21 22 29  3b 0a -- -- -- -- -- --  |World!");J------| Hello.pdf:    85:  2:   5217:	 00001460:  28 48 65 6c 6c 6f 29 0a  -- -- -- -- -- -- -- --  |(Hello)J--------| Hello.sh:     2:  7:     16:	

tests/out/Hello_Hello-X-nv.out

@@ -28,15 +28,17 @@ Hello.java:1: 00000000:  69 6d 70 6f 72 74 20 6a  61 76 61 2e 6c 61 6e 67  |import java.lang| 00000010:  2e 2a 3b 0a -- -- -- --  -- -- -- -- -- -- -- --  |.*;J------------|-Hello.java:3:-00000040:  -- -- -- -- -- -- -- --  -- 7b 20 70 75 62 6c 69  |---------{ publi|-00000050:  63 20 73 74 61 74 69 63  20 76 6f 69 64 20 6d 61  |c static void ma|-00000060:  69 6e 28 53 74 72 69 6e  67 5b 5d 20 61 72 67 29  |in(String[] arg)|-00000070:  0a -- -- -- -- -- -- --  -- -- -- -- -- -- -- --  |J---------------|-Hello.java:5:-00000090:  -- -- -- -- -- -- -- --  -- 20 20 7d 0a -- -- --  |---------  }J---|+Hello.java:2:+00000010:  -- -- -- -- 0a -- -- --  -- -- -- -- -- -- -- --  |----J-----------|+Hello.java:4:+00000040:  -- -- -- -- -- -- -- --  -- -- 7b 20 70 75 62 6c  |----------{ publ|+00000050:  69 63 20 73 74 61 74 69  63 20 76 6f 69 64 20 6d  |ic static void m|+00000060:  61 69 6e 28 53 74 72 69  6e 67 5b 5d 20 61 72 67  |ain(String[] arg|+00000070:  29 0a -- -- -- -- -- --  -- -- -- -- -- -- -- --  |)J--------------| Hello.java:6:-00000090:  -- -- -- -- -- -- -- --  -- -- -- -- -- 7d 0a --  |-------------}J-|+00000090:  -- -- -- -- -- -- -- --  -- -- 20 20 7d 0a -- --  |----------  }J--|+Hello.java:7:+00000090:  -- -- -- -- -- -- -- --  -- -- -- -- -- -- 7d 0a  |--------------}J| Hello.pdf:1: 00000000:  25 50 44 46 2d 31 2e 33  0a -- -- -- -- -- -- --  |%PDF-1.3J-------| Hello.pdf:2:

tests/out/Hello_Hello-X-nvC1.out

@@ -65,37 +65,39 @@ Hello.java:1: 00000000:  69 6d 70 6f 72 74 20 6a  61 76 61 2e 6c 61 6e 67  |import java.lang| 00000010:  2e 2a 3b 0a -- -- -- --  -- -- -- -- -- -- -- --  |.*;J------------|-Hello.java-2--00000010-  -- -- -- -- 70 75 62 6c  69 63 20 63 6c 61 73 73  |----public class|-00000020-  20 48 65 6c 6c 6f 20 2f  2f 20 70 72 69 6e 74 73  | Hello // prints|-00000030-  20 61 20 48 65 6c 6c 6f  20 57 6f 72 6c 64 21 20  | a Hello World! |-00000040-  67 72 65 65 74 69 6e 67  0a -- -- -- -- -- -- --  |greetingJ-------|+Hello.java:2:+00000010:  -- -- -- -- 0a -- -- --  -- -- -- -- -- -- -- --  |----J-----------|+Hello.java-3-+00000010-  -- -- -- -- -- 70 75 62  6c 69 63 20 63 6c 61 73  |-----public clas|+00000020-  73 20 48 65 6c 6c 6f 20  2f 2f 20 70 72 69 6e 74  |s Hello // print|+00000030-  73 20 61 20 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |s a Hello World!|+00000040-  20 67 72 65 65 74 69 6e  67 0a -- -- -- -- -- --  | greetingJ------| -- ---Hello.java-2--00000010-  -- -- -- -- 70 75 62 6c  69 63 20 63 6c 61 73 73  |----public class|-00000020-  20 48 65 6c 6c 6f 20 2f  2f 20 70 72 69 6e 74 73  | Hello // prints|-00000030-  20 61 20 48 65 6c 6c 6f  20 57 6f 72 6c 64 21 20  | a Hello World! |-00000040-  67 72 65 65 74 69 6e 67  0a -- -- -- -- -- -- --  |greetingJ-------|-Hello.java:3:-00000040:  -- -- -- -- -- -- -- --  -- 7b 20 70 75 62 6c 69  |---------{ publi|-00000050:  63 20 73 74 61 74 69 63  20 76 6f 69 64 20 6d 61  |c static void ma|-00000060:  69 6e 28 53 74 72 69 6e  67 5b 5d 20 61 72 67 29  |in(String[] arg)|-00000070:  0a -- -- -- -- -- -- --  -- -- -- -- -- -- -- --  |J---------------|-Hello.java-4--00000070-  -- 20 20 7b 20 53 79 73  74 65 6d 2e 6f 75 74 2e  |-  { System.out.|-00000080-  70 72 69 6e 74 6c 6e 28  22 48 65 6c 6c 6f 20 57  |println("Hello W|-00000090-  6f 72 6c 64 21 22 29 3b  0a -- -- -- -- -- -- --  |orld!");J-------|+Hello.java-3-+00000010-  -- -- -- -- -- 70 75 62  6c 69 63 20 63 6c 61 73  |-----public clas|+00000020-  73 20 48 65 6c 6c 6f 20  2f 2f 20 70 72 69 6e 74  |s Hello // print|+00000030-  73 20 61 20 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |s a Hello World!|+00000040-  20 67 72 65 65 74 69 6e  67 0a -- -- -- -- -- --  | greetingJ------|+Hello.java:4:+00000040:  -- -- -- -- -- -- -- --  -- -- 7b 20 70 75 62 6c  |----------{ publ|+00000050:  69 63 20 73 74 61 74 69  63 20 76 6f 69 64 20 6d  |ic static void m|+00000060:  61 69 6e 28 53 74 72 69  6e 67 5b 5d 20 61 72 67  |ain(String[] arg|+00000070:  29 0a -- -- -- -- -- --  -- -- -- -- -- -- -- --  |)J--------------|+Hello.java-5-+00000070-  -- -- 20 20 7b 20 53 79  73 74 65 6d 2e 6f 75 74  |--  { System.out|+00000080-  2e 70 72 69 6e 74 6c 6e  28 22 48 65 6c 6c 6f 20  |.println("Hello |+00000090-  57 6f 72 6c 64 21 22 29  3b 0a -- -- -- -- -- --  |World!");J------| -- ---Hello.java-4--00000070-  -- 20 20 7b 20 53 79 73  74 65 6d 2e 6f 75 74 2e  |-  { System.out.|-00000080-  70 72 69 6e 74 6c 6e 28  22 48 65 6c 6c 6f 20 57  |println("Hello W|-00000090-  6f 72 6c 64 21 22 29 3b  0a -- -- -- -- -- -- --  |orld!");J-------|-Hello.java:5:-00000090:  -- -- -- -- -- -- -- --  -- 20 20 7d 0a -- -- --  |---------  }J---|+Hello.java-5-+00000070-  -- -- 20 20 7b 20 53 79  73 74 65 6d 2e 6f 75 74  |--  { System.out|+00000080-  2e 70 72 69 6e 74 6c 6e  28 22 48 65 6c 6c 6f 20  |.println("Hello |+00000090-  57 6f 72 6c 64 21 22 29  3b 0a -- -- -- -- -- --  |World!");J------| Hello.java:6:-00000090:  -- -- -- -- -- -- -- --  -- -- -- -- -- 7d 0a --  |-------------}J-|+00000090:  -- -- -- -- -- -- -- --  -- -- 20 20 7d 0a -- --  |----------  }J--|+Hello.java:7:+00000090:  -- -- -- -- -- -- -- --  -- -- -- -- -- -- 7d 0a  |--------------}J| Hello.pdf:1: 00000000:  25 50 44 46 2d 31 2e 33  0a -- -- -- -- -- -- --  |%PDF-1.3J-------| Hello.pdf:2:

tests/out/Hello_Hello-X-nvy.out

@@ -37,19 +37,21 @@ 00000190:  00 04 00 08 00 05 00 01  00 0d 00 00 00 02 00 0e  |@D@H@E@A@M@@@B@N| Hello.java:1: 00000000:  69 6d 70 6f 72 74 20 6a  61 76 61 2e 6c 61 6e 67  |import java.lang|-Hello.java-2--00000010-  2e 2a 3b 0a 70 75 62 6c  69 63 20 63 6c 61 73 73  |.*;Jpublic class|-00000020-  20 48 65 6c 6c 6f 20 2f  2f 20 70 72 69 6e 74 73  | Hello // prints|-00000030-  20 61 20 48 65 6c 6c 6f  20 57 6f 72 6c 64 21 20  | a Hello World! |-Hello.java:3:-00000040:  67 72 65 65 74 69 6e 67  0a 7b 20 70 75 62 6c 69  |greetingJ{ publi|-00000050:  63 20 73 74 61 74 69 63  20 76 6f 69 64 20 6d 61  |c static void ma|-00000060:  69 6e 28 53 74 72 69 6e  67 5b 5d 20 61 72 67 29  |in(String[] arg)|-Hello.java-4--00000070-  0a 20 20 7b 20 53 79 73  74 65 6d 2e 6f 75 74 2e  |J  { System.out.|-00000080-  70 72 69 6e 74 6c 6e 28  22 48 65 6c 6c 6f 20 57  |println("Hello W|-Hello.java:5:+Hello.java:2:+Hello.java-3-+00000010-  2e 2a 3b 0a 0a 70 75 62  6c 69 63 20 63 6c 61 73  |.*;JJpublic clas|+00000020-  73 20 48 65 6c 6c 6f 20  2f 2f 20 70 72 69 6e 74  |s Hello // print|+00000030-  73 20 61 20 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |s a Hello World!|+Hello.java:4:+00000040:  20 67 72 65 65 74 69 6e  67 0a 7b 20 70 75 62 6c  | greetingJ{ publ|+00000050:  69 63 20 73 74 61 74 69  63 20 76 6f 69 64 20 6d  |ic static void m|+00000060:  61 69 6e 28 53 74 72 69  6e 67 5b 5d 20 61 72 67  |ain(String[] arg|+Hello.java-5-+00000070-  29 0a 20 20 7b 20 53 79  73 74 65 6d 2e 6f 75 74  |)J  { System.out|+00000080-  2e 70 72 69 6e 74 6c 6e  28 22 48 65 6c 6c 6f 20  |.println("Hello | Hello.java:6:+Hello.java:7:+00000090:  57 6f 72 6c 64 21 22 29  3b 0a 20 20 7d 0a 7d 0a  |World!");J  }J}J| Hello.pdf:1: Hello.pdf:2: 00000000:  25 50 44 46 2d 31 2e 33  0a 25 c4 e5 f2 e5 eb a7  |%PDF-1.3J%......|

tests/out/Hello_Hello-X-ny.out

@@ -37,19 +37,21 @@ 00000190-  00 04 00 08 00 05 00 01  00 0d 00 00 00 02 00 0e  |@D@H@E@A@M@@@B@N| Hello.java-1- 00000000-  69 6d 70 6f 72 74 20 6a  61 76 61 2e 6c 61 6e 67  |import java.lang|-Hello.java:2:-00000010:  2e 2a 3b 0a 70 75 62 6c  69 63 20 63 6c 61 73 73  |.*;Jpublic class|-00000020:  20 48 65 6c 6c 6f 20 2f  2f 20 70 72 69 6e 74 73  | Hello // prints|-00000030:  20 61 20 48 65 6c 6c 6f  20 57 6f 72 6c 64 21 20  | a Hello World! |-Hello.java-3--00000040-  67 72 65 65 74 69 6e 67  0a 7b 20 70 75 62 6c 69  |greetingJ{ publi|-00000050-  63 20 73 74 61 74 69 63  20 76 6f 69 64 20 6d 61  |c static void ma|-00000060-  69 6e 28 53 74 72 69 6e  67 5b 5d 20 61 72 67 29  |in(String[] arg)|-Hello.java:4:-00000070:  0a 20 20 7b 20 53 79 73  74 65 6d 2e 6f 75 74 2e  |J  { System.out.|-00000080:  70 72 69 6e 74 6c 6e 28  22 48 65 6c 6c 6f 20 57  |println("Hello W|-Hello.java-5-+Hello.java-2-+Hello.java:3:+00000010:  2e 2a 3b 0a 0a 70 75 62  6c 69 63 20 63 6c 61 73  |.*;JJpublic clas|+00000020:  73 20 48 65 6c 6c 6f 20  2f 2f 20 70 72 69 6e 74  |s Hello // print|+00000030:  73 20 61 20 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |s a Hello World!|+Hello.java-4-+00000040-  20 67 72 65 65 74 69 6e  67 0a 7b 20 70 75 62 6c  | greetingJ{ publ|+00000050-  69 63 20 73 74 61 74 69  63 20 76 6f 69 64 20 6d  |ic static void m|+00000060-  61 69 6e 28 53 74 72 69  6e 67 5b 5d 20 61 72 67  |ain(String[] arg|+Hello.java:5:+00000070:  29 0a 20 20 7b 20 53 79  73 74 65 6d 2e 6f 75 74  |)J  { System.out|+00000080:  2e 70 72 69 6e 74 6c 6e  28 22 48 65 6c 6c 6f 20  |.println("Hello | Hello.java-6-+Hello.java-7-+00000090-  57 6f 72 6c 64 21 22 29  3b 0a 20 20 7d 0a 7d 0a  |World!");J  }J}J| Hello.pdf-1- Hello.pdf-2- 00000000-  25 50 44 46 2d 31 2e 33  0a 25 c4 e5 f2 e5 eb a7  |%PDF-1.3J%......|

tests/out/Hello_Hello-X-o.out

@@ -5,10 +5,10 @@ 00000090:  -- -- -- -- 48 65 6c 6c  6f -- -- -- -- -- -- --  |----Hello-------| 000000a0:  -- -- -- -- -- -- -- --  -- -- -- 48 65 6c 6c 6f  |-----------Hello| Hello.java:-00000020:  -- 48 65 6c 6c 6f -- --  -- -- -- -- -- -- -- --  |-Hello----------|-00000030:  -- -- -- 48 65 6c 6c 6f  -- -- -- -- -- -- -- --  |---Hello--------|+00000020:  -- -- 48 65 6c 6c 6f --  -- -- -- -- -- -- -- --  |--Hello---------|+00000030:  -- -- -- -- 48 65 6c 6c  6f -- -- -- -- -- -- --  |----Hello-------| Hello.java:-00000080:  -- -- -- -- -- -- -- --  -- 48 65 6c 6c 6f -- --  |---------Hello--|+00000080:  -- -- -- -- -- -- -- --  -- -- 48 65 6c 6c 6f --  |----------Hello-| Hello.pdf: 00001460:  -- 48 65 6c 6c 6f -- --  -- -- -- -- -- -- -- --  |-Hello----------| Hello.sh:

tests/out/Hello_Hello-X-on.out

@@ -4,11 +4,11 @@ 00000070:  -- -- -- -- -- -- -- --  -- -- 48 65 6c 6c 6f --  |----------Hello-| 00000090:  -- -- -- -- 48 65 6c 6c  6f -- -- -- -- -- -- --  |----Hello-------| 000000a0:  -- -- -- -- -- -- -- --  -- -- -- 48 65 6c 6c 6f  |-----------Hello|-Hello.java:2:-00000020:  -- 48 65 6c 6c 6f -- --  -- -- -- -- -- -- -- --  |-Hello----------|-00000030:  -- -- -- 48 65 6c 6c 6f  -- -- -- -- -- -- -- --  |---Hello--------|-Hello.java:4:-00000080:  -- -- -- -- -- -- -- --  -- 48 65 6c 6c 6f -- --  |---------Hello--|+Hello.java:3:+00000020:  -- -- 48 65 6c 6c 6f --  -- -- -- -- -- -- -- --  |--Hello---------|+00000030:  -- -- -- -- 48 65 6c 6c  6f -- -- -- -- -- -- --  |----Hello-------|+Hello.java:5:+00000080:  -- -- -- -- -- -- -- --  -- -- 48 65 6c 6c 6f --  |----------Hello-| Hello.pdf:85: 00001460:  -- 48 65 6c 6c 6f -- --  -- -- -- -- -- -- -- --  |-Hello----------| Hello.sh:2:

tests/out/Hello_Hello-X-onkbT.out

@@ -4,11 +4,11 @@ 00000070:  -- -- -- -- -- -- -- --  -- -- 48 65 6c 6c 6f --  |----------Hello-| 00000090:  -- -- -- -- 48 65 6c 6c  6f -- -- -- -- -- -- --  |----Hello-------| 000000a0:  -- -- -- -- -- -- -- --  -- -- -- 48 65 6c 6c 6f  |-----------Hello|-Hello.java:     2: 14:     33:	-00000020:  -- 48 65 6c 6c 6f -- --  -- -- -- -- -- -- -- --  |-Hello----------|-00000030:  -- -- -- 48 65 6c 6c 6f  -- -- -- -- -- -- -- --  |---Hello--------|-Hello.java:     4: 25:    137:	-00000080:  -- -- -- -- -- -- -- --  -- 48 65 6c 6c 6f -- --  |---------Hello--|+Hello.java:     3: 14:     34:	+00000020:  -- -- 48 65 6c 6c 6f --  -- -- -- -- -- -- -- --  |--Hello---------|+00000030:  -- -- -- -- 48 65 6c 6c  6f -- -- -- -- -- -- --  |----Hello-------|+Hello.java:     5: 25:    138:	+00000080:  -- -- -- -- -- -- -- --  -- -- 48 65 6c 6c 6f --  |----------Hello-| Hello.pdf:    85:  2:   5217:	 00001460:  -- 48 65 6c 6c 6f -- --  -- -- -- -- -- -- -- --  |-Hello----------| Hello.sh:     2:  7:     16:	

tests/out/Hello_Hello-X-ounkbT.out

@@ -6,12 +6,12 @@ 00000090:  -- -- -- -- 48 65 6c 6c  6f -- -- -- -- -- -- --  |----Hello-------| Hello.class+     5+ 50+    171+	 000000a0:  -- -- -- -- -- -- -- --  -- -- -- 48 65 6c 6c 6f  |-----------Hello|-Hello.java:     2: 14:     33:	-00000020:  -- 48 65 6c 6c 6f -- --  -- -- -- -- -- -- -- --  |-Hello----------|-Hello.java+     2+ 32+     51+	-00000030:  -- -- -- 48 65 6c 6c 6f  -- -- -- -- -- -- -- --  |---Hello--------|-Hello.java:     4: 25:    137:	-00000080:  -- -- -- -- -- -- -- --  -- 48 65 6c 6c 6f -- --  |---------Hello--|+Hello.java:     3: 14:     34:	+00000020:  -- -- 48 65 6c 6c 6f --  -- -- -- -- -- -- -- --  |--Hello---------|+Hello.java+     3+ 32+     52+	+00000030:  -- -- -- -- 48 65 6c 6c  6f -- -- -- -- -- -- --  |----Hello-------|+Hello.java:     5: 25:    138:	+00000080:  -- -- -- -- -- -- -- --  -- -- 48 65 6c 6c 6f --  |----------Hello-| Hello.pdf:    85:  2:   5217:	 00001460:  -- 48 65 6c 6c 6f -- --  -- -- -- -- -- -- -- --  |-Hello----------| Hello.sh:     2:  7:     16:	

tests/out/Hello_Hello-X-unkbT.out

@@ -49,20 +49,20 @@ 00000130:  00 06 00 00 00 00 00 02  00 01 00 07 00 08 00 01  |@F@@@@@B@A@G@H@A| 00000140:  00 09 00 00 00 1d 00 01  00 01 00 00 00 05 2a b7  |@I@@@]@A@A@@@E*.| 00000150:  00 01 b1 00 00 00 01 00  0a -- -- -- -- -- -- --  |@A.@@@A@J-------|-Hello.java:     2: 14:     33:	-00000010:  -- -- -- -- 70 75 62 6c  69 63 20 63 6c 61 73 73  |----public class|-00000020:  20 48 65 6c 6c 6f 20 2f  2f 20 70 72 69 6e 74 73  | Hello // prints|-00000030:  20 61 20 48 65 6c 6c 6f  20 57 6f 72 6c 64 21 20  | a Hello World! |-00000040:  67 72 65 65 74 69 6e 67  0a -- -- -- -- -- -- --  |greetingJ-------|-Hello.java+     2+ 32+     51+	-00000010:  -- -- -- -- 70 75 62 6c  69 63 20 63 6c 61 73 73  |----public class|-00000020:  20 48 65 6c 6c 6f 20 2f  2f 20 70 72 69 6e 74 73  | Hello // prints|-00000030:  20 61 20 48 65 6c 6c 6f  20 57 6f 72 6c 64 21 20  | a Hello World! |-00000040:  67 72 65 65 74 69 6e 67  0a -- -- -- -- -- -- --  |greetingJ-------|-Hello.java:     4: 25:    137:	-00000070:  -- 20 20 7b 20 53 79 73  74 65 6d 2e 6f 75 74 2e  |-  { System.out.|-00000080:  70 72 69 6e 74 6c 6e 28  22 48 65 6c 6c 6f 20 57  |println("Hello W|-00000090:  6f 72 6c 64 21 22 29 3b  0a -- -- -- -- -- -- --  |orld!");J-------|+Hello.java:     3: 14:     34:	+00000010:  -- -- -- -- -- 70 75 62  6c 69 63 20 63 6c 61 73  |-----public clas|+00000020:  73 20 48 65 6c 6c 6f 20  2f 2f 20 70 72 69 6e 74  |s Hello // print|+00000030:  73 20 61 20 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |s a Hello World!|+00000040:  20 67 72 65 65 74 69 6e  67 0a -- -- -- -- -- --  | greetingJ------|+Hello.java+     3+ 32+     52+	+00000010:  -- -- -- -- -- 70 75 62  6c 69 63 20 63 6c 61 73  |-----public clas|+00000020:  73 20 48 65 6c 6c 6f 20  2f 2f 20 70 72 69 6e 74  |s Hello // print|+00000030:  73 20 61 20 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |s a Hello World!|+00000040:  20 67 72 65 65 74 69 6e  67 0a -- -- -- -- -- --  | greetingJ------|+Hello.java:     5: 25:    138:	+00000070:  -- -- 20 20 7b 20 53 79  73 74 65 6d 2e 6f 75 74  |--  { System.out|+00000080:  2e 70 72 69 6e 74 6c 6e  28 22 48 65 6c 6c 6f 20  |.println("Hello |+00000090:  57 6f 72 6c 64 21 22 29  3b 0a -- -- -- -- -- --  |World!");J------| Hello.pdf:    85:  2:   5217:	 00001460:  28 48 65 6c 6c 6f 29 0a  -- -- -- -- -- -- -- --  |(Hello)J--------| Hello.sh:     2:  7:     16:	

tests/out/Hello_Hello-X.out

@@ -18,14 +18,14 @@ 00000140:  00 09 00 00 00 1d 00 01  00 01 00 00 00 05 2a b7  |@I@@@]@A@A@@@E*.| 00000150:  00 01 b1 00 00 00 01 00  0a -- -- -- -- -- -- --  |@A.@@@A@J-------| Hello.java:-00000010:  -- -- -- -- 70 75 62 6c  69 63 20 63 6c 61 73 73  |----public class|-00000020:  20 48 65 6c 6c 6f 20 2f  2f 20 70 72 69 6e 74 73  | Hello // prints|-00000030:  20 61 20 48 65 6c 6c 6f  20 57 6f 72 6c 64 21 20  | a Hello World! |-00000040:  67 72 65 65 74 69 6e 67  0a -- -- -- -- -- -- --  |greetingJ-------|+00000010:  -- -- -- -- -- 70 75 62  6c 69 63 20 63 6c 61 73  |-----public clas|+00000020:  73 20 48 65 6c 6c 6f 20  2f 2f 20 70 72 69 6e 74  |s Hello // print|+00000030:  73 20 61 20 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |s a Hello World!|+00000040:  20 67 72 65 65 74 69 6e  67 0a -- -- -- -- -- --  | greetingJ------| Hello.java:-00000070:  -- 20 20 7b 20 53 79 73  74 65 6d 2e 6f 75 74 2e  |-  { System.out.|-00000080:  70 72 69 6e 74 6c 6e 28  22 48 65 6c 6c 6f 20 57  |println("Hello W|-00000090:  6f 72 6c 64 21 22 29 3b  0a -- -- -- -- -- -- --  |orld!");J-------|+00000070:  -- -- 20 20 7b 20 53 79  73 74 65 6d 2e 6f 75 74  |--  { System.out|+00000080:  2e 70 72 69 6e 74 6c 6e  28 22 48 65 6c 6c 6f 20  |.println("Hello |+00000090:  57 6f 72 6c 64 21 22 29  3b 0a -- -- -- -- -- --  |World!");J------| Hello.pdf: 00001460:  28 48 65 6c 6c 6f 29 0a  -- -- -- -- -- -- -- --  |(Hello)J--------| Hello.sh:

tests/out/Hello_Hello-ci.out

new file mode 100644@@ -0,0 +1,6 @@+Hello.bat:1+Hello.class:1+Hello.java:2+Hello.pdf:1+Hello.sh:1+Hello.txt:1

tests/out/Hello_Hello-cj.out

new file mode 100644@@ -0,0 +1,6 @@+Hello.bat:1+Hello.class:1+Hello.java:2+Hello.pdf:1+Hello.sh:1+Hello.txt:1

tests/out/Hello_Hello-cv.out

@@ -1,6 +1,6 @@ Hello.bat:1 Hello.class:6-Hello.java:4+Hello.java:5 Hello.pdf:133 Hello.sh:1 Hello.txt:0

tests/out/Hello_Hello-n.out

@@ -1,7 +1,7 @@ Hello.bat:2:echo "Hello World!" Binary file Hello.class matches-Hello.java:2:public class Hello // prints a Hello World! greeting-Hello.java:4:  { System.out.println("Hello World!");+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java:5:  { System.out.println("Hello World!"); Hello.pdf:85:(Hello) Hello.sh:2:echo "Hello World!" Hello.txt:1:Hello

tests/out/Hello_Hello-nC1.out

@@ -1,14 +1,14 @@ Hello.bat-1-#!/bin/sh Hello.bat:2:echo "Hello World!" Binary file Hello.class matches-Hello.java-1-import java.lang.*;-Hello.java:2:public class Hello // prints a Hello World! greeting-Hello.java-3-{ public static void main(String[] arg)+Hello.java-2-+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java-4-{ public static void main(String[] arg) -- ---Hello.java-3-{ public static void main(String[] arg)-Hello.java:4:  { System.out.println("Hello World!");-Hello.java-5-  }+Hello.java-4-{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!");+Hello.java-6-  } Hello.pdf-84-15 0 obj Hello.pdf:85:(Hello) Hello.pdf-86-endobj

tests/out/Hello_Hello-nkbT.out

@@ -1,7 +1,7 @@ Hello.bat:     2:  7:     16:	echo "Hello World!" Binary file Hello.class matches-Hello.java:     2: 14:     33:	public class Hello // prints a Hello World! greeting-Hello.java:     4: 25:    137:	  { System.out.println("Hello World!");+Hello.java:     3: 14:     34:	public class Hello // prints a Hello World! greeting+Hello.java:     5: 25:    138:	  { System.out.println("Hello World!"); Hello.pdf:    85:  2:   5217:	(Hello) Hello.sh:     2:  7:     16:	echo "Hello World!" Hello.txt:     1:  1:      0:	Hello

tests/out/Hello_Hello-nv.out

@@ -1,9 +1,10 @@ Hello.bat:1:#!/bin/sh Binary file Hello.class matches Hello.java:1:import java.lang.*;-Hello.java:3:{ public static void main(String[] arg)-Hello.java:5:  }-Hello.java:6:}+Hello.java:2:+Hello.java:4:{ public static void main(String[] arg)+Hello.java:6:  }+Hello.java:7:} Hello.pdf:1:%PDF-1.3 Binary file Hello.pdf matches Hello.sh:1:#!/bin/sh

tests/out/Hello_Hello-nvC1.out

@@ -2,17 +2,18 @@ Hello.bat-2-echo "Hello World!" Binary file Hello.class matches Hello.java:1:import java.lang.*;-Hello.java-2-public class Hello // prints a Hello World! greeting+Hello.java:2:+Hello.java-3-public class Hello // prints a Hello World! greeting -- ---Hello.java-2-public class Hello // prints a Hello World! greeting-Hello.java:3:{ public static void main(String[] arg)-Hello.java-4-  { System.out.println("Hello World!");+Hello.java-3-public class Hello // prints a Hello World! greeting+Hello.java:4:{ public static void main(String[] arg)+Hello.java-5-  { System.out.println("Hello World!"); -- ---Hello.java-4-  { System.out.println("Hello World!");-Hello.java:5:  }-Hello.java:6:}+Hello.java-5-  { System.out.println("Hello World!");+Hello.java:6:  }+Hello.java:7:} Hello.pdf:1:%PDF-1.3 Binary file Hello.pdf matches Hello.sh:1:#!/bin/sh

tests/out/Hello_Hello-nvy.out

@@ -2,11 +2,12 @@ Hello.bat-2-echo "Hello World!" Binary file Hello.class matches Hello.java:1:import java.lang.*;-Hello.java-2-public class Hello // prints a Hello World! greeting-Hello.java:3:{ public static void main(String[] arg)-Hello.java-4-  { System.out.println("Hello World!");-Hello.java:5:  }-Hello.java:6:}+Hello.java:2:+Hello.java-3-public class Hello // prints a Hello World! greeting+Hello.java:4:{ public static void main(String[] arg)+Hello.java-5-  { System.out.println("Hello World!");+Hello.java:6:  }+Hello.java:7:} Hello.pdf:1:%PDF-1.3 Binary file Hello.pdf matches Hello.sh:1:#!/bin/sh

tests/out/Hello_Hello-ny.out

@@ -2,11 +2,12 @@ Hello.bat:2:echo "Hello World!" Binary file Hello.class matches Hello.java-1-import java.lang.*;-Hello.java:2:public class Hello // prints a Hello World! greeting-Hello.java-3-{ public static void main(String[] arg)-Hello.java:4:  { System.out.println("Hello World!");-Hello.java-5-  }-Hello.java-6-}+Hello.java-2-+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java-4-{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!");+Hello.java-6-  }+Hello.java-7-} Hello.pdf-1-%PDF-1.3 Hello.pdf-3-4 0 obj Hello.pdf-4-<< /Length 5 0 R /Filter /FlateDecode >>

tests/out/Hello_Hello-on.out

@@ -2,9 +2,9 @@ Hello.class:5:Hello Hello Hello-Hello.java:2:Hello+Hello.java:3:Hello Hello-Hello.java:4:Hello+Hello.java:5:Hello Hello.pdf:85:Hello Hello.sh:2:Hello Hello.txt:1:Hello

tests/out/Hello_Hello-onkbT.out

@@ -2,9 +2,9 @@ Hello.class:     5:  1:    122:	Hello Hello Hello-Hello.java:     2: 14:     33:	Hello+Hello.java:     3: 14:     34:	Hello Hello-Hello.java:     4: 25:    137:	Hello+Hello.java:     5: 25:    138:	Hello Hello.pdf:    85:  2:   5217:	Hello Hello.sh:     2:  7:     16:	Hello Hello.txt:     1:  1:      0:	Hello

tests/out/Hello_Hello-ounkbT.out

@@ -2,9 +2,9 @@ Hello.class:     5:  1:    122:	Hello Hello.class+     5+ 27+    148+	Hello Hello.class+     5+ 50+    171+	Hello-Hello.java:     2: 14:     33:	Hello-Hello.java+     2+ 32+     51+	Hello-Hello.java:     4: 25:    137:	Hello+Hello.java:     3: 14:     34:	Hello+Hello.java+     3+ 32+     52+	Hello+Hello.java:     5: 25:    138:	Hello Hello.pdf:    85:  2:   5217:	Hello Hello.sh:     2:  7:     16:	Hello Hello.txt:     1:  1:      0:	Hello

tests/out/Hello_Hello-unkbT.out

@@ -1,8 +1,8 @@ Hello.bat:     2:  7:     16:	echo "Hello World!" Binary file Hello.class matches-Hello.java:     2: 14:     33:	public class Hello // prints a Hello World! greeting-Hello.java+     2+ 32+     51+	public class Hello // prints a Hello World! greeting-Hello.java:     4: 25:    137:	  { System.out.println("Hello World!");+Hello.java:     3: 14:     34:	public class Hello // prints a Hello World! greeting+Hello.java+     3+ 32+     52+	public class Hello // prints a Hello World! greeting+Hello.java:     5: 25:    138:	  { System.out.println("Hello World!"); Hello.pdf:    85:  2:   5217:	(Hello) Hello.sh:     2:  7:     16:	echo "Hello World!" Hello.txt:     1:  1:      0:	Hello

tests/out/Hello_nomatch--csv-c.out

@@ -1,6 +1,5 @@ "Hello.bat",0 "Hello.class",0-"Hello.java",0 "Hello.pdf",0 "Hello.sh",0 "Hello.txt",0

tests/out/Hello_nomatch--csv-co.out

@@ -1,6 +1,5 @@ "Hello.bat",0 "Hello.class",0-"Hello.java",0 "Hello.pdf",0 "Hello.sh",0 "Hello.txt",0

tests/out/Hello_nomatch--csv-cv.out

@@ -1,6 +1,5 @@ "Hello.bat",2 "Hello.class",7-"Hello.java",6 "Hello.pdf",134 "Hello.sh",2 "Hello.txt",0

tests/out/Hello_nomatch--csv-lv.out

@@ -1,6 +1,5 @@ "Hello.bat",false "Hello.class",false-"Hello.java",false "Hello.pdf",false "Hello.sh",false "Hello.txt",false

tests/out/Hello_nomatch--format.out

new file mode 100644

tests/out/Hello_nomatch--json-cv.out

@@ -14,7 +14,7 @@   {     "file": "Hello.java",     "matches": [,-      { "match": 6 }+      { "match": 7 }     ]   },   {

tests/out/Hello_nomatch--xml-cv.out

@@ -6,7 +6,7 @@     <match>7</match>   </file>   <file name="Hello.java">-    <match>6</match>+    <match>7</match>   </file>   <file name="Hello.pdf">     <match>134</match>

tests/out/Hello_nomatch-F.out

new file mode 100644

tests/out/Hello_nomatch-Fw.out

new file mode 100644

tests/out/Hello_nomatch-Fx.out

new file mode 100644

tests/out/Hello_nomatch-G.out

new file mode 100644

tests/out/Hello_nomatch-I-cv.out

@@ -1,6 +1,6 @@ Hello.bat:2 Hello.class:0-Hello.java:6+Hello.java:7 Hello.pdf:134 Hello.sh:2 Hello.txt:0

tests/out/Hello_nomatch-I-nv.out

@@ -1,11 +1,12 @@ Hello.bat:1:#!/bin/sh Hello.bat:2:echo "Hello World!" Hello.java:1:import java.lang.*;-Hello.java:2:public class Hello // prints a Hello World! greeting-Hello.java:3:{ public static void main(String[] arg)-Hello.java:4:  { System.out.println("Hello World!");-Hello.java:5:  }-Hello.java:6:}+Hello.java:2:+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java:4:{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!");+Hello.java:6:  }+Hello.java:7:} Hello.pdf:1:%PDF-1.3 Hello.sh:1:#!/bin/sh Hello.sh:2:echo "Hello World!"

tests/out/Hello_nomatch-I-nvC1.out

@@ -1,11 +1,12 @@ Hello.bat:1:#!/bin/sh Hello.bat:2:echo "Hello World!" Hello.java:1:import java.lang.*;-Hello.java:2:public class Hello // prints a Hello World! greeting-Hello.java:3:{ public static void main(String[] arg)-Hello.java:4:  { System.out.println("Hello World!");-Hello.java:5:  }-Hello.java:6:}+Hello.java:2:+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java:4:{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!");+Hello.java:6:  }+Hello.java:7:} Hello.pdf:1:%PDF-1.3 Hello.sh:1:#!/bin/sh Hello.sh:2:echo "Hello World!"

tests/out/Hello_nomatch-I-nvy.out

@@ -1,11 +1,12 @@ Hello.bat:1:#!/bin/sh Hello.bat:2:echo "Hello World!" Hello.java:1:import java.lang.*;-Hello.java:2:public class Hello // prints a Hello World! greeting-Hello.java:3:{ public static void main(String[] arg)-Hello.java:4:  { System.out.println("Hello World!");-Hello.java:5:  }-Hello.java:6:}+Hello.java:2:+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java:4:{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!");+Hello.java:6:  }+Hello.java:7:} Hello.pdf:1:%PDF-1.3 Hello.sh:1:#!/bin/sh Hello.sh:2:echo "Hello World!"

tests/out/Hello_nomatch-I-ny.out

@@ -1,11 +1,12 @@ Hello.bat-1-#!/bin/sh Hello.bat-2-echo "Hello World!" Hello.java-1-import java.lang.*;-Hello.java-2-public class Hello // prints a Hello World! greeting-Hello.java-3-{ public static void main(String[] arg)-Hello.java-4-  { System.out.println("Hello World!");-Hello.java-5-  }-Hello.java-6-}+Hello.java-2-+Hello.java-3-public class Hello // prints a Hello World! greeting+Hello.java-4-{ public static void main(String[] arg)+Hello.java-5-  { System.out.println("Hello World!");+Hello.java-6-  }+Hello.java-7-} Hello.pdf-1-%PDF-1.3 Hello.sh-1-#!/bin/sh Hello.sh-2-echo "Hello World!"

tests/out/Hello_nomatch-Iw.out

new file mode 100644

tests/out/Hello_nomatch-Ix.out

new file mode 100644

tests/out/Hello_nomatch-P.out

new file mode 100644

tests/out/Hello_nomatch-Pw.out

new file mode 100644

tests/out/Hello_nomatch-Px.out

new file mode 100644

tests/out/Hello_nomatch-W-cv.out

@@ -1,6 +1,6 @@ Hello.bat:2 Hello.class:7-Hello.java:6+Hello.java:7 Hello.pdf:134 Hello.sh:2 Hello.txt:0

tests/out/Hello_nomatch-W-nv.out

@@ -42,11 +42,12 @@ 00000180:  -- -- -- -- -- -- -- --  -- -- -- -- 00 02 00 00  |------------@B@@| 00000190:  00 04 00 08 00 05 00 01  00 0d 00 00 00 02 00 0e  |@D@H@E@A@M@@@B@N| Hello.java:1:import java.lang.*;-Hello.java:2:public class Hello // prints a Hello World! greeting-Hello.java:3:{ public static void main(String[] arg)-Hello.java:4:  { System.out.println("Hello World!");-Hello.java:5:  }-Hello.java:6:}+Hello.java:2:+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java:4:{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!");+Hello.java:6:  }+Hello.java:7:} Hello.pdf:1:%PDF-1.3 Hello.pdf:2: 00000000:  -- -- -- -- -- -- -- --  -- 25 c4 e5 f2 e5 eb a7  |---------%......|

tests/out/Hello_nomatch-W-nvC1.out

@@ -42,11 +42,12 @@ 00000180:  -- -- -- -- -- -- -- --  -- -- -- -- 00 02 00 00  |------------@B@@| 00000190:  00 04 00 08 00 05 00 01  00 0d 00 00 00 02 00 0e  |@D@H@E@A@M@@@B@N| Hello.java:1:import java.lang.*;-Hello.java:2:public class Hello // prints a Hello World! greeting-Hello.java:3:{ public static void main(String[] arg)-Hello.java:4:  { System.out.println("Hello World!");-Hello.java:5:  }-Hello.java:6:}+Hello.java:2:+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java:4:{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!");+Hello.java:6:  }+Hello.java:7:} Hello.pdf:1:%PDF-1.3 Hello.pdf:2: 00000000:  -- -- -- -- -- -- -- --  -- 25 c4 e5 f2 e5 eb a7  |---------%......|

tests/out/Hello_nomatch-W-nvy.out

@@ -35,11 +35,12 @@ 00000180:  04 b1 00 00 00 01 00 0a  00 00 00 0a 00 02 00 00  |D.@@@A@J@@@J@B@@| 00000190:  00 04 00 08 00 05 00 01  00 0d 00 00 00 02 00 0e  |@D@H@E@A@M@@@B@N| Hello.java:1:import java.lang.*;-Hello.java:2:public class Hello // prints a Hello World! greeting-Hello.java:3:{ public static void main(String[] arg)-Hello.java:4:  { System.out.println("Hello World!");-Hello.java:5:  }-Hello.java:6:}+Hello.java:2:+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java:4:{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!");+Hello.java:6:  }+Hello.java:7:} Hello.pdf:1:%PDF-1.3 Hello.pdf:2: 00000000:  -- -- -- -- -- -- -- --  -- 25 c4 e5 f2 e5 eb a7  |---------%......|

tests/out/Hello_nomatch-W-ny.out

@@ -35,11 +35,12 @@ 00000180-  04 b1 00 00 00 01 00 0a  00 00 00 0a 00 02 00 00  |D.@@@A@J@@@J@B@@| 00000190-  00 04 00 08 00 05 00 01  00 0d 00 00 00 02 00 0e  |@D@H@E@A@M@@@B@N| Hello.java-1-import java.lang.*;-Hello.java-2-public class Hello // prints a Hello World! greeting-Hello.java-3-{ public static void main(String[] arg)-Hello.java-4-  { System.out.println("Hello World!");-Hello.java-5-  }-Hello.java-6-}+Hello.java-2-+Hello.java-3-public class Hello // prints a Hello World! greeting+Hello.java-4-{ public static void main(String[] arg)+Hello.java-5-  { System.out.println("Hello World!");+Hello.java-6-  }+Hello.java-7-} Hello.pdf-1-%PDF-1.3 Hello.pdf-2- 00000000-  -- -- -- -- -- -- -- --  -- 25 c4 e5 f2 e5 eb a7  |---------%......|

tests/out/Hello_nomatch-X-cv.out

@@ -1,6 +1,6 @@ Hello.bat:2 Hello.class:7-Hello.java:6+Hello.java:7 Hello.pdf:134 Hello.sh:2 Hello.txt:0

tests/out/Hello_nomatch-X-nv.out

@@ -48,23 +48,25 @@ 00000000:  69 6d 70 6f 72 74 20 6a  61 76 61 2e 6c 61 6e 67  |import java.lang| 00000010:  2e 2a 3b 0a -- -- -- --  -- -- -- -- -- -- -- --  |.*;J------------| Hello.java:2:-00000010:  -- -- -- -- 70 75 62 6c  69 63 20 63 6c 61 73 73  |----public class|-00000020:  20 48 65 6c 6c 6f 20 2f  2f 20 70 72 69 6e 74 73  | Hello // prints|-00000030:  20 61 20 48 65 6c 6c 6f  20 57 6f 72 6c 64 21 20  | a Hello World! |-00000040:  67 72 65 65 74 69 6e 67  0a -- -- -- -- -- -- --  |greetingJ-------|+00000010:  -- -- -- -- 0a -- -- --  -- -- -- -- -- -- -- --  |----J-----------| Hello.java:3:-00000040:  -- -- -- -- -- -- -- --  -- 7b 20 70 75 62 6c 69  |---------{ publi|-00000050:  63 20 73 74 61 74 69 63  20 76 6f 69 64 20 6d 61  |c static void ma|-00000060:  69 6e 28 53 74 72 69 6e  67 5b 5d 20 61 72 67 29  |in(String[] arg)|-00000070:  0a -- -- -- -- -- -- --  -- -- -- -- -- -- -- --  |J---------------|+00000010:  -- -- -- -- -- 70 75 62  6c 69 63 20 63 6c 61 73  |-----public clas|+00000020:  73 20 48 65 6c 6c 6f 20  2f 2f 20 70 72 69 6e 74  |s Hello // print|+00000030:  73 20 61 20 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |s a Hello World!|+00000040:  20 67 72 65 65 74 69 6e  67 0a -- -- -- -- -- --  | greetingJ------| Hello.java:4:-00000070:  -- 20 20 7b 20 53 79 73  74 65 6d 2e 6f 75 74 2e  |-  { System.out.|-00000080:  70 72 69 6e 74 6c 6e 28  22 48 65 6c 6c 6f 20 57  |println("Hello W|-00000090:  6f 72 6c 64 21 22 29 3b  0a -- -- -- -- -- -- --  |orld!");J-------|+00000040:  -- -- -- -- -- -- -- --  -- -- 7b 20 70 75 62 6c  |----------{ publ|+00000050:  69 63 20 73 74 61 74 69  63 20 76 6f 69 64 20 6d  |ic static void m|+00000060:  61 69 6e 28 53 74 72 69  6e 67 5b 5d 20 61 72 67  |ain(String[] arg|+00000070:  29 0a -- -- -- -- -- --  -- -- -- -- -- -- -- --  |)J--------------| Hello.java:5:-00000090:  -- -- -- -- -- -- -- --  -- 20 20 7d 0a -- -- --  |---------  }J---|+00000070:  -- -- 20 20 7b 20 53 79  73 74 65 6d 2e 6f 75 74  |--  { System.out|+00000080:  2e 70 72 69 6e 74 6c 6e  28 22 48 65 6c 6c 6f 20  |.println("Hello |+00000090:  57 6f 72 6c 64 21 22 29  3b 0a -- -- -- -- -- --  |World!");J------| Hello.java:6:-00000090:  -- -- -- -- -- -- -- --  -- -- -- -- -- 7d 0a --  |-------------}J-|+00000090:  -- -- -- -- -- -- -- --  -- -- 20 20 7d 0a -- --  |----------  }J--|+Hello.java:7:+00000090:  -- -- -- -- -- -- -- --  -- -- -- -- -- -- 7d 0a  |--------------}J| Hello.pdf:1: 00000000:  25 50 44 46 2d 31 2e 33  0a -- -- -- -- -- -- --  |%PDF-1.3J-------| Hello.pdf:2:

tests/out/Hello_nomatch-X-nvC1.out

@@ -48,23 +48,25 @@ 00000000:  69 6d 70 6f 72 74 20 6a  61 76 61 2e 6c 61 6e 67  |import java.lang| 00000010:  2e 2a 3b 0a -- -- -- --  -- -- -- -- -- -- -- --  |.*;J------------| Hello.java:2:-00000010:  -- -- -- -- 70 75 62 6c  69 63 20 63 6c 61 73 73  |----public class|-00000020:  20 48 65 6c 6c 6f 20 2f  2f 20 70 72 69 6e 74 73  | Hello // prints|-00000030:  20 61 20 48 65 6c 6c 6f  20 57 6f 72 6c 64 21 20  | a Hello World! |-00000040:  67 72 65 65 74 69 6e 67  0a -- -- -- -- -- -- --  |greetingJ-------|+00000010:  -- -- -- -- 0a -- -- --  -- -- -- -- -- -- -- --  |----J-----------| Hello.java:3:-00000040:  -- -- -- -- -- -- -- --  -- 7b 20 70 75 62 6c 69  |---------{ publi|-00000050:  63 20 73 74 61 74 69 63  20 76 6f 69 64 20 6d 61  |c static void ma|-00000060:  69 6e 28 53 74 72 69 6e  67 5b 5d 20 61 72 67 29  |in(String[] arg)|-00000070:  0a -- -- -- -- -- -- --  -- -- -- -- -- -- -- --  |J---------------|+00000010:  -- -- -- -- -- 70 75 62  6c 69 63 20 63 6c 61 73  |-----public clas|+00000020:  73 20 48 65 6c 6c 6f 20  2f 2f 20 70 72 69 6e 74  |s Hello // print|+00000030:  73 20 61 20 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |s a Hello World!|+00000040:  20 67 72 65 65 74 69 6e  67 0a -- -- -- -- -- --  | greetingJ------| Hello.java:4:-00000070:  -- 20 20 7b 20 53 79 73  74 65 6d 2e 6f 75 74 2e  |-  { System.out.|-00000080:  70 72 69 6e 74 6c 6e 28  22 48 65 6c 6c 6f 20 57  |println("Hello W|-00000090:  6f 72 6c 64 21 22 29 3b  0a -- -- -- -- -- -- --  |orld!");J-------|+00000040:  -- -- -- -- -- -- -- --  -- -- 7b 20 70 75 62 6c  |----------{ publ|+00000050:  69 63 20 73 74 61 74 69  63 20 76 6f 69 64 20 6d  |ic static void m|+00000060:  61 69 6e 28 53 74 72 69  6e 67 5b 5d 20 61 72 67  |ain(String[] arg|+00000070:  29 0a -- -- -- -- -- --  -- -- -- -- -- -- -- --  |)J--------------| Hello.java:5:-00000090:  -- -- -- -- -- -- -- --  -- 20 20 7d 0a -- -- --  |---------  }J---|+00000070:  -- -- 20 20 7b 20 53 79  73 74 65 6d 2e 6f 75 74  |--  { System.out|+00000080:  2e 70 72 69 6e 74 6c 6e  28 22 48 65 6c 6c 6f 20  |.println("Hello |+00000090:  57 6f 72 6c 64 21 22 29  3b 0a -- -- -- -- -- --  |World!");J------| Hello.java:6:-00000090:  -- -- -- -- -- -- -- --  -- -- -- -- -- 7d 0a --  |-------------}J-|+00000090:  -- -- -- -- -- -- -- --  -- -- 20 20 7d 0a -- --  |----------  }J--|+Hello.java:7:+00000090:  -- -- -- -- -- -- -- --  -- -- -- -- -- -- 7d 0a  |--------------}J| Hello.pdf:1: 00000000:  25 50 44 46 2d 31 2e 33  0a -- -- -- -- -- -- --  |%PDF-1.3J-------| Hello.pdf:2:

tests/out/Hello_nomatch-X-nvy.out

@@ -38,18 +38,20 @@ Hello.java:1: 00000000:  69 6d 70 6f 72 74 20 6a  61 76 61 2e 6c 61 6e 67  |import java.lang| Hello.java:2:-00000010:  2e 2a 3b 0a 70 75 62 6c  69 63 20 63 6c 61 73 73  |.*;Jpublic class|-00000020:  20 48 65 6c 6c 6f 20 2f  2f 20 70 72 69 6e 74 73  | Hello // prints|-00000030:  20 61 20 48 65 6c 6c 6f  20 57 6f 72 6c 64 21 20  | a Hello World! | Hello.java:3:-00000040:  67 72 65 65 74 69 6e 67  0a 7b 20 70 75 62 6c 69  |greetingJ{ publi|-00000050:  63 20 73 74 61 74 69 63  20 76 6f 69 64 20 6d 61  |c static void ma|-00000060:  69 6e 28 53 74 72 69 6e  67 5b 5d 20 61 72 67 29  |in(String[] arg)|+00000010:  2e 2a 3b 0a 0a 70 75 62  6c 69 63 20 63 6c 61 73  |.*;JJpublic clas|+00000020:  73 20 48 65 6c 6c 6f 20  2f 2f 20 70 72 69 6e 74  |s Hello // print|+00000030:  73 20 61 20 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |s a Hello World!| Hello.java:4:-00000070:  0a 20 20 7b 20 53 79 73  74 65 6d 2e 6f 75 74 2e  |J  { System.out.|-00000080:  70 72 69 6e 74 6c 6e 28  22 48 65 6c 6c 6f 20 57  |println("Hello W|+00000040:  20 67 72 65 65 74 69 6e  67 0a 7b 20 70 75 62 6c  | greetingJ{ publ|+00000050:  69 63 20 73 74 61 74 69  63 20 76 6f 69 64 20 6d  |ic static void m|+00000060:  61 69 6e 28 53 74 72 69  6e 67 5b 5d 20 61 72 67  |ain(String[] arg| Hello.java:5:+00000070:  29 0a 20 20 7b 20 53 79  73 74 65 6d 2e 6f 75 74  |)J  { System.out|+00000080:  2e 70 72 69 6e 74 6c 6e  28 22 48 65 6c 6c 6f 20  |.println("Hello | Hello.java:6:+Hello.java:7:+00000090:  57 6f 72 6c 64 21 22 29  3b 0a 20 20 7d 0a 7d 0a  |World!");J  }J}J| Hello.pdf:1: Hello.pdf:2: 00000000:  25 50 44 46 2d 31 2e 33  0a 25 c4 e5 f2 e5 eb a7  |%PDF-1.3J%......|

tests/out/Hello_nomatch-X-ny.out

@@ -38,18 +38,20 @@ Hello.java-1- 00000000-  69 6d 70 6f 72 74 20 6a  61 76 61 2e 6c 61 6e 67  |import java.lang| Hello.java-2--00000010-  2e 2a 3b 0a 70 75 62 6c  69 63 20 63 6c 61 73 73  |.*;Jpublic class|-00000020-  20 48 65 6c 6c 6f 20 2f  2f 20 70 72 69 6e 74 73  | Hello // prints|-00000030-  20 61 20 48 65 6c 6c 6f  20 57 6f 72 6c 64 21 20  | a Hello World! | Hello.java-3--00000040-  67 72 65 65 74 69 6e 67  0a 7b 20 70 75 62 6c 69  |greetingJ{ publi|-00000050-  63 20 73 74 61 74 69 63  20 76 6f 69 64 20 6d 61  |c static void ma|-00000060-  69 6e 28 53 74 72 69 6e  67 5b 5d 20 61 72 67 29  |in(String[] arg)|+00000010-  2e 2a 3b 0a 0a 70 75 62  6c 69 63 20 63 6c 61 73  |.*;JJpublic clas|+00000020-  73 20 48 65 6c 6c 6f 20  2f 2f 20 70 72 69 6e 74  |s Hello // print|+00000030-  73 20 61 20 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |s a Hello World!| Hello.java-4--00000070-  0a 20 20 7b 20 53 79 73  74 65 6d 2e 6f 75 74 2e  |J  { System.out.|-00000080-  70 72 69 6e 74 6c 6e 28  22 48 65 6c 6c 6f 20 57  |println("Hello W|+00000040-  20 67 72 65 65 74 69 6e  67 0a 7b 20 70 75 62 6c  | greetingJ{ publ|+00000050-  69 63 20 73 74 61 74 69  63 20 76 6f 69 64 20 6d  |ic static void m|+00000060-  61 69 6e 28 53 74 72 69  6e 67 5b 5d 20 61 72 67  |ain(String[] arg| Hello.java-5-+00000070-  29 0a 20 20 7b 20 53 79  73 74 65 6d 2e 6f 75 74  |)J  { System.out|+00000080-  2e 70 72 69 6e 74 6c 6e  28 22 48 65 6c 6c 6f 20  |.println("Hello | Hello.java-6-+Hello.java-7-+00000090-  57 6f 72 6c 64 21 22 29  3b 0a 20 20 7d 0a 7d 0a  |World!");J  }J}J| Hello.pdf-1- Hello.pdf-2- 00000000-  25 50 44 46 2d 31 2e 33  0a 25 c4 e5 f2 e5 eb a7  |%PDF-1.3J%......|

tests/out/Hello_nomatch-cv.out

@@ -1,6 +1,6 @@ Hello.bat:2 Hello.class:7-Hello.java:6+Hello.java:7 Hello.pdf:134 Hello.sh:2 Hello.txt:0

tests/out/Hello_nomatch-nv.out

@@ -2,11 +2,12 @@ Hello.bat:2:echo "Hello World!" Binary file Hello.class matches Hello.java:1:import java.lang.*;-Hello.java:2:public class Hello // prints a Hello World! greeting-Hello.java:3:{ public static void main(String[] arg)-Hello.java:4:  { System.out.println("Hello World!");-Hello.java:5:  }-Hello.java:6:}+Hello.java:2:+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java:4:{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!");+Hello.java:6:  }+Hello.java:7:} Hello.pdf:1:%PDF-1.3 Binary file Hello.pdf matches Hello.sh:1:#!/bin/sh

tests/out/Hello_nomatch-nvC1.out

@@ -2,11 +2,12 @@ Hello.bat:2:echo "Hello World!" Binary file Hello.class matches Hello.java:1:import java.lang.*;-Hello.java:2:public class Hello // prints a Hello World! greeting-Hello.java:3:{ public static void main(String[] arg)-Hello.java:4:  { System.out.println("Hello World!");-Hello.java:5:  }-Hello.java:6:}+Hello.java:2:+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java:4:{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!");+Hello.java:6:  }+Hello.java:7:} Hello.pdf:1:%PDF-1.3 Binary file Hello.pdf matches Hello.sh:1:#!/bin/sh

tests/out/Hello_nomatch-nvy.out

@@ -2,11 +2,12 @@ Hello.bat:2:echo "Hello World!" Binary file Hello.class matches Hello.java:1:import java.lang.*;-Hello.java:2:public class Hello // prints a Hello World! greeting-Hello.java:3:{ public static void main(String[] arg)-Hello.java:4:  { System.out.println("Hello World!");-Hello.java:5:  }-Hello.java:6:}+Hello.java:2:+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java:4:{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!");+Hello.java:6:  }+Hello.java:7:} Hello.pdf:1:%PDF-1.3 Binary file Hello.pdf matches Hello.sh:1:#!/bin/sh

tests/out/Hello_nomatch-ny.out

@@ -1,11 +1,12 @@ Hello.bat-1-#!/bin/sh Hello.bat-2-echo "Hello World!" Hello.java-1-import java.lang.*;-Hello.java-2-public class Hello // prints a Hello World! greeting-Hello.java-3-{ public static void main(String[] arg)-Hello.java-4-  { System.out.println("Hello World!");-Hello.java-5-  }-Hello.java-6-}+Hello.java-2-+Hello.java-3-public class Hello // prints a Hello World! greeting+Hello.java-4-{ public static void main(String[] arg)+Hello.java-5-  { System.out.println("Hello World!");+Hello.java-6-  }+Hello.java-7-} Hello.pdf-1-%PDF-1.3 Hello.pdf-3-4 0 obj Hello.pdf-4-<< /Length 5 0 R /Filter /FlateDecode >>

tests/out/Hello_wsS--csv-c.out

@@ -1,6 +1,5 @@ "Hello.bat",2 "Hello.class",1-"Hello.java",4 "Hello.pdf",101 "Hello.sh",2 "Hello.txt",0

tests/out/Hello_wsS--csv-co.out

@@ -1,6 +1,5 @@ "Hello.bat",2 "Hello.class",2-"Hello.java",9 "Hello.pdf",210 "Hello.sh",2 "Hello.txt",0

tests/out/Hello_wsS--csv-cv.out

@@ -1,6 +1,5 @@ "Hello.bat",0 "Hello.class",6-"Hello.java",2 "Hello.pdf",33 "Hello.sh",0 "Hello.txt",0

tests/out/Hello_wsS--csv-n.out

@@ -2,10 +2,10 @@ "Hello.bat",2,"echo ""Hello World!""" "Hello.class",5,"Hello.java\f\x00\x07\x00\b\x07\x00\x17\f\x00\x18\x00\x19\x01\x00\fHello World!\x07\x00\x1a\f\x00\x1b\x00\x1c\x01\x00\x05Hello\x01\x00\x10java/lang/Object\x01\x00\x10java/lang/System\x01\x00\x03out\x01\x00\x15Ljava/io/PrintStream;\x01\x00\x13java/io/PrintStream\x01\x00\x07println\x01\x00\x15(Ljava/lang/String;)V\x00!\x00\x05\x00\x06\x00\x00\x00\x00\x00\x02\x00\x01\x00\x07\x00\b\x00\x01\x00	\x00\x00\x00\x1d\x00\x01\x00\x01\x00\x00\x00\x05*·\x00\x01±\x00\x00\x00\x01\x00" "Hello.java",1,"import java.lang.*;"-"Hello.java",2,"public class Hello // prints a Hello World! greeting"-"Hello.java",2,"public class Hello // prints a Hello World! greeting\n{ public static void main(String[] arg)"-"Hello.java",3,"{ public static void main(String[] arg)"-"Hello.java",4,"  { System.out.println(""Hello World!"");"+"Hello.java",3,"public class Hello // prints a Hello World! greeting"+"Hello.java",3,"public class Hello // prints a Hello World! greeting\n{ public static void main(String[] arg)"+"Hello.java",4,"{ public static void main(String[] arg)"+"Hello.java",5,"  { System.out.println(""Hello World!"");" "Hello.pdf",1,"%PDF-1.3\n%Äåòåë§ó ÐÄÆ" "Hello.pdf",3,"4 0 obj" "Hello.pdf",3,"4 0 obj\n<< /Length 5 0 R /Filter /FlateDecode >>"

tests/out/Hello_wsS--csv-nkb.out

@@ -2,10 +2,10 @@ "Hello.bat",2,7,16,"echo ""Hello World!""" "Hello.class",5,7,128,"Hello.java\f\x00\x07\x00\b\x07\x00\x17\f\x00\x18\x00\x19\x01\x00\fHello World!\x07\x00\x1a\f\x00\x1b\x00\x1c\x01\x00\x05Hello\x01\x00\x10java/lang/Object\x01\x00\x10java/lang/System\x01\x00\x03out\x01\x00\x15Ljava/io/PrintStream;\x01\x00\x13java/io/PrintStream\x01\x00\x07println\x01\x00\x15(Ljava/lang/String;)V\x00!\x00\x05\x00\x06\x00\x00\x00\x00\x00\x02\x00\x01\x00\x07\x00\b\x00\x01\x00	\x00\x00\x00\x1d\x00\x01\x00\x01\x00\x00\x00\x05*·\x00\x01±\x00\x00\x00\x01\x00" "Hello.java",1,1,0,"import java.lang.*;"-"Hello.java",2,1,20,"public class Hello // prints a Hello World! greeting"-"Hello.java",2,45,64,"public class Hello // prints a Hello World! greeting\n{ public static void main(String[] arg)"-"Hello.java",3,3,75,"{ public static void main(String[] arg)"-"Hello.java",4,25,137,"  { System.out.println(""Hello World!"");"+"Hello.java",3,1,21,"public class Hello // prints a Hello World! greeting"+"Hello.java",3,45,65,"public class Hello // prints a Hello World! greeting\n{ public static void main(String[] arg)"+"Hello.java",4,3,76,"{ public static void main(String[] arg)"+"Hello.java",5,25,138,"  { System.out.println(""Hello World!"");" "Hello.pdf",1,8,7,"%PDF-1.3\n%Äåòåë§ó ÐÄÆ" "Hello.pdf",3,1,22,"4 0 obj" "Hello.pdf",3,5,26,"4 0 obj\n<< /Length 5 0 R /Filter /FlateDecode >>"

tests/out/Hello_wsS--csv-on.out

@@ -2,10 +2,10 @@ "Hello.bat",2,"Hello World!""" "Hello.class",5,"java\f\x00\x07\x00\b\x07\x00\x17" "Hello.java",1,"import java.lang.*;"-"Hello.java",2,"public class"-"Hello.java",2,"greeting\n{"-"Hello.java",3,"public static"-"Hello.java",4,"Hello World!"");"+"Hello.java",3,"public class"+"Hello.java",3,"greeting\n{"+"Hello.java",4,"public static"+"Hello.java",5,"Hello World!"");" "Hello.pdf",1,"3\n%Äåòåë§ó ÐÄÆ" "Hello.pdf",3,"4 0" "Hello.pdf",3,"obj\n<<"

tests/out/Hello_wsS--csv-onkb.out

@@ -2,10 +2,10 @@ "Hello.bat",2,7,16,"Hello World!""" "Hello.class",5,7,128,"java\f\x00\x07\x00\b\x07\x00\x17" "Hello.java",1,1,0,"import java.lang.*;"-"Hello.java",2,1,20,"public class"-"Hello.java",2,45,64,"greeting\n{"-"Hello.java",3,3,75,"public static"-"Hello.java",4,25,137,"Hello World!"");"+"Hello.java",3,1,21,"public class"+"Hello.java",3,45,65,"greeting\n{"+"Hello.java",4,3,76,"public static"+"Hello.java",5,25,138,"Hello World!"");" "Hello.pdf",1,8,7,"3\n%Äåòåë§ó ÐÄÆ" "Hello.pdf",3,1,22,"4 0" "Hello.pdf",3,5,26,"obj\n<<"

tests/out/Hello_wsS--csv-ounkb.out

@@ -3,14 +3,14 @@ "Hello.class",5,7,128,"java\f\x00\x07\x00\b\x07\x00\x17" "Hello.class",5,27,148,"Hello World!\x07\x00\x1a" "Hello.java",1,1,0,"import java.lang.*;"-"Hello.java",2,1,20,"public class"-"Hello.java",2,14,33,"Hello //"-"Hello.java",2,23,42,"prints a"-"Hello.java",2,32,51,"Hello World!"-"Hello.java",2,45,64,"greeting\n{"-"Hello.java",3,3,75,"public static"-"Hello.java",3,17,89,"void main(String[]"-"Hello.java",4,25,137,"Hello World!"");"+"Hello.java",3,1,21,"public class"+"Hello.java",3,14,34,"Hello //"+"Hello.java",3,23,43,"prints a"+"Hello.java",3,32,52,"Hello World!"+"Hello.java",3,45,65,"greeting\n{"+"Hello.java",4,3,76,"public static"+"Hello.java",4,17,90,"void main(String[]"+"Hello.java",5,25,138,"Hello World!"");" "Hello.pdf",1,8,7,"3\n%Äåòåë§ó ÐÄÆ" "Hello.pdf",3,1,22,"4 0" "Hello.pdf",3,5,26,"obj\n<<"

tests/out/Hello_wsS--csv-unkb.out

@@ -3,14 +3,14 @@ "Hello.class",5,7,128,"Hello.java\f\x00\x07\x00\b\x07\x00\x17\f\x00\x18\x00\x19\x01\x00\fHello World!\x07\x00\x1a\f\x00\x1b\x00\x1c\x01\x00\x05Hello\x01\x00\x10java/lang/Object\x01\x00\x10java/lang/System\x01\x00\x03out\x01\x00\x15Ljava/io/PrintStream;\x01\x00\x13java/io/PrintStream\x01\x00\x07println\x01\x00\x15(Ljava/lang/String;)V\x00!\x00\x05\x00\x06\x00\x00\x00\x00\x00\x02\x00\x01\x00\x07\x00\b\x00\x01\x00	\x00\x00\x00\x1d\x00\x01\x00\x01\x00\x00\x00\x05*·\x00\x01±\x00\x00\x00\x01\x00" "Hello.class",5,27,148,"Hello.java\f\x00\x07\x00\b\x07\x00\x17\f\x00\x18\x00\x19\x01\x00\fHello World!\x07\x00\x1a\f\x00\x1b\x00\x1c\x01\x00\x05Hello\x01\x00\x10java/lang/Object\x01\x00\x10java/lang/System\x01\x00\x03out\x01\x00\x15Ljava/io/PrintStream;\x01\x00\x13java/io/PrintStream\x01\x00\x07println\x01\x00\x15(Ljava/lang/String;)V\x00!\x00\x05\x00\x06\x00\x00\x00\x00\x00\x02\x00\x01\x00\x07\x00\b\x00\x01\x00	\x00\x00\x00\x1d\x00\x01\x00\x01\x00\x00\x00\x05*·\x00\x01±\x00\x00\x00\x01\x00" "Hello.java",1,1,0,"import java.lang.*;"-"Hello.java",2,1,20,"public class Hello // prints a Hello World! greeting"-"Hello.java",2,14,33,"public class Hello // prints a Hello World! greeting"-"Hello.java",2,23,42,"public class Hello // prints a Hello World! greeting"-"Hello.java",2,32,51,"public class Hello // prints a Hello World! greeting"-"Hello.java",2,45,64,"public class Hello // prints a Hello World! greeting\n{ public static void main(String[] arg)"-"Hello.java",3,3,75,"{ public static void main(String[] arg)"-"Hello.java",3,17,89,"{ public static void main(String[] arg)"-"Hello.java",4,25,137,"  { System.out.println(""Hello World!"");"+"Hello.java",3,1,21,"public class Hello // prints a Hello World! greeting"+"Hello.java",3,14,34,"public class Hello // prints a Hello World! greeting"+"Hello.java",3,23,43,"public class Hello // prints a Hello World! greeting"+"Hello.java",3,32,52,"public class Hello // prints a Hello World! greeting"+"Hello.java",3,45,65,"public class Hello // prints a Hello World! greeting\n{ public static void main(String[] arg)"+"Hello.java",4,3,76,"{ public static void main(String[] arg)"+"Hello.java",4,17,90,"{ public static void main(String[] arg)"+"Hello.java",5,25,138,"  { System.out.println(""Hello World!"");" "Hello.pdf",1,8,7,"%PDF-1.3\n%Äåòåë§ó ÐÄÆ" "Hello.pdf",3,1,22,"4 0 obj" "Hello.pdf",3,5,26,"4 0 obj\n<< /Length 5 0 R /Filter /FlateDecode >>"

tests/out/Hello_wsS--format.out

new file mode 100644@@ -0,0 +1,235 @@+1) Hello.bat:+  1) 1,8 7-7+  2) 2,7 13-13++2) Hello.class:+  1) 5,7 12-12+  2) 5,27 15-15++3) Hello.java:+  1) 1,1 19-19+  2) 3,1 12-12+  3) 3,14 8-8+  4) 3,23 8-8+  5) 3,32 12-12+  6) 3,45 10-10+  7) 4,3 13-13+  8) 4,17 18-18+  9) 5,25 15-15++4) Hello.pdf:+  1) 1,8 12-14+  2) 3,1 3-3+  3) 3,5 6-6+  4) 4,5 8-8+  5) 4,14 3-3+  6) 4,19 19-19+  7) 5,1 10-12+  8) 7,25 12-19+  9) 9,1 16-16+  10) 11,1 3-3+  11) 11,5 7-7+  12) 13,1 8-8+  13) 14,3 5-5+  14) 15,5 10-10+  15) 15,17 8-8+  16) 15,26 3-3+  17) 15,31 11-11+  18) 15,43 3-3+  19) 15,48 10-10+  20) 15,59 3-3+  21) 15,64 11-11+  22) 15,76 5-5+  23) 17,1 8-8+  24) 18,3 5-5+  25) 19,5 9-9+  26) 19,16 9-9+  27) 19,29 13-13+  28) 19,44 5-5+  29) 19,50 3-3+  30) 19,58 7-7+  31) 19,67 5-5+  32) 19,73 3-3+  33) 21,1 8-8+  34) 22,3 5-5+  35) 23,5 9-9+  36) 23,15 3-3+  37) 23,20 3-3+  38) 23,25 21-21+  39) 23,48 19-19+  40) 24,1 22-25+  41) 25,19 40-58+  42) 26,307 7-9+  43) 27,70 9-11+  44) 30,29 11-11+  45) 32,1 9-9+  46) 33,4 5-5+  47) 34,1 11-11+  48) 36,1 3-3+  49) 36,5 5-5+  50) 37,4 10-10+  51) 37,15 3-3+  52) 38,1 8-8+  53) 39,3 5-5+  54) 40,5 11-11+  55) 40,18 11-11+  56) 40,30 5-5+  57) 40,42 7-7+  58) 40,51 6-6+  59) 40,58 3-3+  60) 40,62 3-3+  61) 41,1 9-9+  62) 42,4 5-5+  63) 43,5 13-13+  64) 43,20 7-7+  65) 43,28 3-3+  66) 44,1 8-8+  67) 45,3 5-5+  68) 46,5 10-10+  69) 46,17 17-17+  70) 46,36 30-30+  71) 46,68 17-17+  72) 47,4 3-3+  73) 47,9 26-26+  74) 47,37 12-12+  75) 47,51 12-12+  76) 47,65 8-8+  77) 47,74 5-5+  78) 48,3 3-3+  79) 48,7 3-3+  80) 48,11 3-3+  81) 48,15 3-3+  82) 48,19 3-3+  83) 48,23 3-3+  84) 48,27 3-3+  85) 48,31 3-3+  86) 48,35 3-3+  87) 48,39 3-3+  88) 48,43 3-3+  89) 48,47 3-3+  90) 48,51 3-3+  91) 48,55 5-5+  92) 48,61 3-3+  93) 48,65 3-3+  94) 48,69 3-3+  95) 48,73 5-5+  96) 49,3 5-5+  97) 50,1 9-9+  98) 51,4 5-5+  99) 52,5 20-20+  100) 52,27 30-30+  101) 52,59 8-8+  102) 52,69 14-14+  103) 53,8 7-7+  104) 53,23 13-13+  105) 53,38 10-10+  106) 53,50 12-12+  107) 53,64 13-13+  108) 54,2 8-8+  109) 54,12 11-11+  110) 54,25 8-8+  111) 54,35 12-12+  112) 54,49 12-12+  113) 54,63 12-12+  114) 54,76 3-3+  115) 56,1 9-9+  116) 57,4 5-5+  117) 58,5 9-9+  118) 58,15 3-3+  119) 58,20 12-12+  120) 58,34 19-19+  121) 59,1 34-42+  122) 60,33 9-11+  123) 61,187 30-41+  124) 61,258 55-73+  125) 61,356 40-48+  126) 64,26 23-29+  127) 66,95 19-23+  128) 70,35 107-144+  129) 71,146 10-16+  130) 74,33 4-4+  131) 75,2 6-7+  132) 77,50 63-84+  133) 77,290 55-72+  134) 78,186 57-82+  135) 78,303 71-93+  136) 79,1 16-16+  137) 81,1 4-4+  138) 81,6 8-8+  139) 83,1 9-9+  140) 84,4 5-5+  141) 86,1 9-9+  142) 87,4 5-5+  143) 88,2 6-6+  144) 88,9 9-9+  145) 88,19 18-18+  146) 89,1 9-9+  147) 90,4 5-5+  148) 92,1 9-9+  149) 93,4 5-5+  150) 95,1 9-9+  151) 96,4 5-5+  152) 98,1 9-9+  153) 99,4 5-5+  154) 101,1 8-8+  155) 102,3 5-5+  156) 103,5 8-8+  157) 103,14 3-3+  158) 103,19 11-11+  159) 103,31 3-3+  160) 103,36 10-10+  161) 103,47 3-3+  162) 103,52 15-15+  163) 103,68 3-3+  164) 103,73 10-10+  165) 104,4 3-3+  166) 104,9 11-11+  167) 104,21 3-3+  168) 104,31 11-11+  169) 104,43 3-3+  170) 105,1 11-11+  171) 107,1 4-4+  172) 108,1 16-16+  173) 108,18 13-13+  174) 109,12 7-7+  175) 110,1 16-16+  176) 110,18 13-13+  177) 111,12 7-7+  178) 112,1 16-16+  179) 112,18 13-13+  180) 113,12 7-7+  181) 114,1 16-16+  182) 114,18 13-13+  183) 115,12 7-7+  184) 116,1 16-16+  185) 116,18 13-13+  186) 117,12 7-7+  187) 118,1 16-16+  188) 118,18 13-13+  189) 119,12 7-7+  190) 120,1 16-16+  191) 120,18 13-13+  192) 121,12 7-7+  193) 122,1 16-16+  194) 122,18 13-13+  195) 123,12 7-7+  196) 124,1 16-16+  197) 124,18 13-13+  198) 125,12 7-7+  199) 126,1 16-16+  200) 126,18 13-13+  201) 127,12 7-7+  202) 128,1 16-16+  203) 128,18 10-10+  204) 130,5 7-7+  205) 130,14 7-7+  206) 130,22 3-3+  207) 130,27 6-6+  208) 130,34 3-3+  209) 130,39 4-4+  210) 132,1 14-14++5) Hello.sh:+  1) 1,8 7-7+  2) 2,7 13-13+

tests/out/Hello_wsS--json-cv.out

@@ -14,7 +14,7 @@   {     "file": "Hello.java",     "matches": [,-      { "match": 2 }+      { "match": 3 }     ]   },   {

tests/out/Hello_wsS--json-n.out

@@ -16,10 +16,10 @@     "file": "Hello.java",     "matches": [       { "line": 1, "match": "import java.lang.*;" },-      { "line": 2, "match": "public class Hello // prints a Hello World! greeting" },-      { "line": 2, "match": "public class Hello // prints a Hello World! greeting\n{ public static void main(String[] arg)" },-      { "line": 3, "match": "{ public static void main(String[] arg)" },-      { "line": 4, "match": "  { System.out.println(\"Hello World!\");" }+      { "line": 3, "match": "public class Hello // prints a Hello World! greeting" },+      { "line": 3, "match": "public class Hello // prints a Hello World! greeting\n{ public static void main(String[] arg)" },+      { "line": 4, "match": "{ public static void main(String[] arg)" },+      { "line": 5, "match": "  { System.out.println(\"Hello World!\");" }     ]   },   {

tests/out/Hello_wsS--json-nkb.out

@@ -16,10 +16,10 @@     "file": "Hello.java",     "matches": [       { "line": 1, "column": 1, "offset": 0, "match": "import java.lang.*;" },-      { "line": 2, "column": 1, "offset": 20, "match": "public class Hello // prints a Hello World! greeting" },-      { "line": 2, "column": 45, "offset": 64, "match": "public class Hello // prints a Hello World! greeting\n{ public static void main(String[] arg)" },-      { "line": 3, "column": 3, "offset": 75, "match": "{ public static void main(String[] arg)" },-      { "line": 4, "column": 25, "offset": 137, "match": "  { System.out.println(\"Hello World!\");" }+      { "line": 3, "column": 1, "offset": 21, "match": "public class Hello // prints a Hello World! greeting" },+      { "line": 3, "column": 45, "offset": 65, "match": "public class Hello // prints a Hello World! greeting\n{ public static void main(String[] arg)" },+      { "line": 4, "column": 3, "offset": 76, "match": "{ public static void main(String[] arg)" },+      { "line": 5, "column": 25, "offset": 138, "match": "  { System.out.println(\"Hello World!\");" }     ]   },   {

tests/out/Hello_wsS--json-on.out

@@ -16,10 +16,10 @@     "file": "Hello.java",     "matches": [       { "line": 1, "match": "import java.lang.*;" },-      { "line": 2, "match": "public class" },-      { "line": 2, "match": "greeting\n{" },-      { "line": 3, "match": "public static" },-      { "line": 4, "match": "Hello World!\");" }+      { "line": 3, "match": "public class" },+      { "line": 3, "match": "greeting\n{" },+      { "line": 4, "match": "public static" },+      { "line": 5, "match": "Hello World!\");" }     ]   },   {

tests/out/Hello_wsS--json-onkb.out

@@ -16,10 +16,10 @@     "file": "Hello.java",     "matches": [       { "line": 1, "column": 1, "offset": 0, "match": "import java.lang.*;" },-      { "line": 2, "column": 1, "offset": 20, "match": "public class" },-      { "line": 2, "column": 45, "offset": 64, "match": "greeting\n{" },-      { "line": 3, "column": 3, "offset": 75, "match": "public static" },-      { "line": 4, "column": 25, "offset": 137, "match": "Hello World!\");" }+      { "line": 3, "column": 1, "offset": 21, "match": "public class" },+      { "line": 3, "column": 45, "offset": 65, "match": "greeting\n{" },+      { "line": 4, "column": 3, "offset": 76, "match": "public static" },+      { "line": 5, "column": 25, "offset": 138, "match": "Hello World!\");" }     ]   },   {

tests/out/Hello_wsS--json-ounkb.out

@@ -17,14 +17,14 @@     "file": "Hello.java",     "matches": [       { "line": 1, "column": 1, "offset": 0, "match": "import java.lang.*;" },-      { "line": 2, "column": 1, "offset": 20, "match": "public class" },-      { "line": 2, "column": 14, "offset": 33, "match": "Hello //" },-      { "line": 2, "column": 23, "offset": 42, "match": "prints a" },-      { "line": 2, "column": 32, "offset": 51, "match": "Hello World!" },-      { "line": 2, "column": 45, "offset": 64, "match": "greeting\n{" },-      { "line": 3, "column": 3, "offset": 75, "match": "public static" },-      { "line": 3, "column": 17, "offset": 89, "match": "void main(String[]" },-      { "line": 4, "column": 25, "offset": 137, "match": "Hello World!\");" }+      { "line": 3, "column": 1, "offset": 21, "match": "public class" },+      { "line": 3, "column": 14, "offset": 34, "match": "Hello //" },+      { "line": 3, "column": 23, "offset": 43, "match": "prints a" },+      { "line": 3, "column": 32, "offset": 52, "match": "Hello World!" },+      { "line": 3, "column": 45, "offset": 65, "match": "greeting\n{" },+      { "line": 4, "column": 3, "offset": 76, "match": "public static" },+      { "line": 4, "column": 17, "offset": 90, "match": "void main(String[]" },+      { "line": 5, "column": 25, "offset": 138, "match": "Hello World!\");" }     ]   },   {

tests/out/Hello_wsS--json-unkb.out

@@ -17,14 +17,14 @@     "file": "Hello.java",     "matches": [       { "line": 1, "column": 1, "offset": 0, "match": "import java.lang.*;" },-      { "line": 2, "column": 1, "offset": 20, "match": "public class Hello // prints a Hello World! greeting" },-      { "line": 2, "column": 14, "offset": 33, "match": "public class Hello // prints a Hello World! greeting" },-      { "line": 2, "column": 23, "offset": 42, "match": "public class Hello // prints a Hello World! greeting" },-      { "line": 2, "column": 32, "offset": 51, "match": "public class Hello // prints a Hello World! greeting" },-      { "line": 2, "column": 45, "offset": 64, "match": "public class Hello // prints a Hello World! greeting\n{ public static void main(String[] arg)" },-      { "line": 3, "column": 3, "offset": 75, "match": "{ public static void main(String[] arg)" },-      { "line": 3, "column": 17, "offset": 89, "match": "{ public static void main(String[] arg)" },-      { "line": 4, "column": 25, "offset": 137, "match": "  { System.out.println(\"Hello World!\");" }+      { "line": 3, "column": 1, "offset": 21, "match": "public class Hello // prints a Hello World! greeting" },+      { "line": 3, "column": 14, "offset": 34, "match": "public class Hello // prints a Hello World! greeting" },+      { "line": 3, "column": 23, "offset": 43, "match": "public class Hello // prints a Hello World! greeting" },+      { "line": 3, "column": 32, "offset": 52, "match": "public class Hello // prints a Hello World! greeting" },+      { "line": 3, "column": 45, "offset": 65, "match": "public class Hello // prints a Hello World! greeting\n{ public static void main(String[] arg)" },+      { "line": 4, "column": 3, "offset": 76, "match": "{ public static void main(String[] arg)" },+      { "line": 4, "column": 17, "offset": 90, "match": "{ public static void main(String[] arg)" },+      { "line": 5, "column": 25, "offset": 138, "match": "  { System.out.println(\"Hello World!\");" }     ]   },   {

tests/out/Hello_wsS--xml-cv.out

@@ -6,7 +6,7 @@     <match>6</match>   </file>   <file name="Hello.java">-    <match>2</match>+    <match>3</match>   </file>   <file name="Hello.pdf">     <match>33</match>

tests/out/Hello_wsS--xml-n.out

@@ -8,10 +8,10 @@   </file>   <file name="Hello.java">     <match line="1">import java.lang.*;</match>-    <match line="2">public class Hello // prints a Hello World! greeting</match>-    <match line="2">public class Hello // prints a Hello World! greeting&#10;{ public static void main(String[] arg)</match>-    <match line="3">{ public static void main(String[] arg)</match>-    <match line="4">  { System.out.println(&quot;Hello World!&quot;);</match>+    <match line="3">public class Hello // prints a Hello World! greeting</match>+    <match line="3">public class Hello // prints a Hello World! greeting&#10;{ public static void main(String[] arg)</match>+    <match line="4">{ public static void main(String[] arg)</match>+    <match line="5">  { System.out.println(&quot;Hello World!&quot;);</match>   </file>   <file name="Hello.pdf">     <match line="1">%PDF-1.3&#10;%Äåòåë§ó ÐÄÆ</match>

tests/out/Hello_wsS--xml-nkb.out

@@ -8,10 +8,10 @@   </file>   <file name="Hello.java">     <match line="1" column="1" offset="0">import java.lang.*;</match>-    <match line="2" column="1" offset="20">public class Hello // prints a Hello World! greeting</match>-    <match line="2" column="45" offset="64">public class Hello // prints a Hello World! greeting&#10;{ public static void main(String[] arg)</match>-    <match line="3" column="3" offset="75">{ public static void main(String[] arg)</match>-    <match line="4" column="25" offset="137">  { System.out.println(&quot;Hello World!&quot;);</match>+    <match line="3" column="1" offset="21">public class Hello // prints a Hello World! greeting</match>+    <match line="3" column="45" offset="65">public class Hello // prints a Hello World! greeting&#10;{ public static void main(String[] arg)</match>+    <match line="4" column="3" offset="76">{ public static void main(String[] arg)</match>+    <match line="5" column="25" offset="138">  { System.out.println(&quot;Hello World!&quot;);</match>   </file>   <file name="Hello.pdf">     <match line="1" column="8" offset="7">%PDF-1.3&#10;%Äåòåë§ó ÐÄÆ</match>

tests/out/Hello_wsS--xml-on.out

@@ -8,10 +8,10 @@   </file>   <file name="Hello.java">     <match line="1">import java.lang.*;</match>-    <match line="2">public class</match>-    <match line="2">greeting&#10;{</match>-    <match line="3">public static</match>-    <match line="4">Hello World!&quot;);</match>+    <match line="3">public class</match>+    <match line="3">greeting&#10;{</match>+    <match line="4">public static</match>+    <match line="5">Hello World!&quot;);</match>   </file>   <file name="Hello.pdf">     <match line="1">3&#10;%Äåòåë§ó ÐÄÆ</match>

tests/out/Hello_wsS--xml-onkb.out

@@ -8,10 +8,10 @@   </file>   <file name="Hello.java">     <match line="1" column="1" offset="0">import java.lang.*;</match>-    <match line="2" column="1" offset="20">public class</match>-    <match line="2" column="45" offset="64">greeting&#10;{</match>-    <match line="3" column="3" offset="75">public static</match>-    <match line="4" column="25" offset="137">Hello World!&quot;);</match>+    <match line="3" column="1" offset="21">public class</match>+    <match line="3" column="45" offset="65">greeting&#10;{</match>+    <match line="4" column="3" offset="76">public static</match>+    <match line="5" column="25" offset="138">Hello World!&quot;);</match>   </file>   <file name="Hello.pdf">     <match line="1" column="8" offset="7">3&#10;%Äåòåë§ó ÐÄÆ</match>

tests/out/Hello_wsS--xml-ounkb.out

@@ -9,14 +9,14 @@   </file>   <file name="Hello.java">     <match line="1" column="1" offset="0">import java.lang.*;</match>-    <match line="2" column="1" offset="20">public class</match>-    <match line="2" column="14" offset="33">Hello //</match>-    <match line="2" column="23" offset="42">prints a</match>-    <match line="2" column="32" offset="51">Hello World!</match>-    <match line="2" column="45" offset="64">greeting&#10;{</match>-    <match line="3" column="3" offset="75">public static</match>-    <match line="3" column="17" offset="89">void main(String[]</match>-    <match line="4" column="25" offset="137">Hello World!&quot;);</match>+    <match line="3" column="1" offset="21">public class</match>+    <match line="3" column="14" offset="34">Hello //</match>+    <match line="3" column="23" offset="43">prints a</match>+    <match line="3" column="32" offset="52">Hello World!</match>+    <match line="3" column="45" offset="65">greeting&#10;{</match>+    <match line="4" column="3" offset="76">public static</match>+    <match line="4" column="17" offset="90">void main(String[]</match>+    <match line="5" column="25" offset="138">Hello World!&quot;);</match>   </file>   <file name="Hello.pdf">     <match line="1" column="8" offset="7">3&#10;%Äåòåë§ó ÐÄÆ</match>

tests/out/Hello_wsS--xml-unkb.out

@@ -9,14 +9,14 @@   </file>   <file name="Hello.java">     <match line="1" column="1" offset="0">import java.lang.*;</match>-    <match line="2" column="1" offset="20">public class Hello // prints a Hello World! greeting</match>-    <match line="2" column="14" offset="33">public class Hello // prints a Hello World! greeting</match>-    <match line="2" column="23" offset="42">public class Hello // prints a Hello World! greeting</match>-    <match line="2" column="32" offset="51">public class Hello // prints a Hello World! greeting</match>-    <match line="2" column="45" offset="64">public class Hello // prints a Hello World! greeting&#10;{ public static void main(String[] arg)</match>-    <match line="3" column="3" offset="75">{ public static void main(String[] arg)</match>-    <match line="3" column="17" offset="89">{ public static void main(String[] arg)</match>-    <match line="4" column="25" offset="137">  { System.out.println(&quot;Hello World!&quot;);</match>+    <match line="3" column="1" offset="21">public class Hello // prints a Hello World! greeting</match>+    <match line="3" column="14" offset="34">public class Hello // prints a Hello World! greeting</match>+    <match line="3" column="23" offset="43">public class Hello // prints a Hello World! greeting</match>+    <match line="3" column="32" offset="52">public class Hello // prints a Hello World! greeting</match>+    <match line="3" column="45" offset="65">public class Hello // prints a Hello World! greeting&#10;{ public static void main(String[] arg)</match>+    <match line="4" column="3" offset="76">{ public static void main(String[] arg)</match>+    <match line="4" column="17" offset="90">{ public static void main(String[] arg)</match>+    <match line="5" column="25" offset="138">  { System.out.println(&quot;Hello World!&quot;);</match>   </file>   <file name="Hello.pdf">     <match line="1" column="8" offset="7">%PDF-1.3&#10;%Äåòåë§ó ÐÄÆ</match>

tests/out/Hello_wsS-F.out

new file mode 100644

tests/out/Hello_wsS-Fw.out

new file mode 100644

tests/out/Hello_wsS-Fx.out

new file mode 100644

tests/out/Hello_wsS-G.out

new file mode 100644@@ -0,0 +1,10 @@+Hello.bat:#!/bin/sh+Hello.bat|echo "Hello World!"+Binary file Hello.class matches+Hello.java:import java.lang.*;+Hello.java:public class Hello // prints a Hello World! greeting+Hello.java|{ public static void main(String[] arg)+Hello.java:  { System.out.println("Hello World!");+Binary file Hello.pdf matches+Hello.sh:#!/bin/sh+Hello.sh|echo "Hello World!"

tests/out/Hello_wsS-I-cv.out

@@ -1,6 +1,6 @@ Hello.bat:0 Hello.class:0-Hello.java:2+Hello.java:3 Hello.pdf:33 Hello.sh:0 Hello.txt:0

tests/out/Hello_wsS-I-n.out

@@ -1,8 +1,8 @@ Hello.bat:1:#!/bin/sh Hello.bat|2|echo "Hello World!" Hello.java:1:import java.lang.*;-Hello.java:2:public class Hello // prints a Hello World! greeting-Hello.java|3|{ public static void main(String[] arg)-Hello.java:4:  { System.out.println("Hello World!");+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java|4|{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!"); Hello.sh:1:#!/bin/sh Hello.sh|2|echo "Hello World!"

tests/out/Hello_wsS-I-nC1.out

@@ -1,9 +1,13 @@ Hello.bat-1-#!/bin/sh Hello.bat:2:echo "Hello World!" Hello.java:1:import java.lang.*;-Hello.java:2:public class Hello // prints a Hello World! greeting-Hello.java:3:{ public static void main(String[] arg)-Hello.java:4:  { System.out.println("Hello World!");-Hello.java-5-  }+Hello.java-2-+--+--+Hello.java-2-+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java:4:{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!");+Hello.java-6-  } Hello.sh-1-#!/bin/sh Hello.sh:2:echo "Hello World!"

tests/out/Hello_wsS-I-nkbT.out

@@ -1,8 +1,8 @@ Hello.bat:     1:  8:      7:	#!/bin/sh Hello.bat|     2|  1|     10|	echo "Hello World!" Hello.java:     1:  1:      0:	import java.lang.*;-Hello.java:     2:  1:     20:	public class Hello // prints a Hello World! greeting-Hello.java|     3|  1|     73|	{ public static void main(String[] arg)-Hello.java:     4: 25:    137:	  { System.out.println("Hello World!");+Hello.java:     3:  1:     21:	public class Hello // prints a Hello World! greeting+Hello.java|     4|  1|     74|	{ public static void main(String[] arg)+Hello.java:     5: 25:    138:	  { System.out.println("Hello World!"); Hello.sh:     1:  8:      7:	#!/bin/sh Hello.sh|     2|  1|     10|	echo "Hello World!"

tests/out/Hello_wsS-I-nv.out

@@ -1,6 +1,7 @@ Hello.bat:1:#!/bin/sh-Hello.java:5:  }-Hello.java:6:}+Hello.java:2:+Hello.java:6:  }+Hello.java:7:} Hello.pdf:1:%PDF-1.3 Hello.sh:1:#!/bin/sh Hello.txt:1:Hello

tests/out/Hello_wsS-I-nvC1.out

@@ -1,8 +1,13 @@ Hello.bat:1:#!/bin/sh Hello.bat-2-echo "Hello World!"-Hello.java-4-  { System.out.println("Hello World!");-Hello.java:5:  }-Hello.java:6:}+Hello.java-1-import java.lang.*;+Hello.java:2:+Hello.java-3-public class Hello // prints a Hello World! greeting+--+--+Hello.java-5-  { System.out.println("Hello World!");+Hello.java:6:  }+Hello.java:7:} Hello.pdf:1:%PDF-1.3 Hello.sh:1:#!/bin/sh Hello.sh-2-echo "Hello World!"

tests/out/Hello_wsS-I-nvy.out

@@ -1,11 +1,12 @@ Hello.bat:1:#!/bin/sh Hello.bat-2-echo "Hello World!" Hello.java-1-import java.lang.*;-Hello.java-2-public class Hello // prints a Hello World! greeting-Hello.java-3-{ public static void main(String[] arg)-Hello.java-4-  { System.out.println("Hello World!");-Hello.java:5:  }-Hello.java:6:}+Hello.java:2:+Hello.java-3-public class Hello // prints a Hello World! greeting+Hello.java-4-{ public static void main(String[] arg)+Hello.java-5-  { System.out.println("Hello World!");+Hello.java:6:  }+Hello.java:7:} Hello.pdf:1:%PDF-1.3 Hello.sh:1:#!/bin/sh Hello.sh-2-echo "Hello World!"

tests/out/Hello_wsS-I-ny.out

@@ -1,11 +1,12 @@ Hello.bat-1-#!/bin/sh Hello.bat:2:echo "Hello World!" Hello.java:1:import java.lang.*;-Hello.java:2:public class Hello // prints a Hello World! greeting-Hello.java:3:{ public static void main(String[] arg)-Hello.java:4:  { System.out.println("Hello World!");-Hello.java-5-  }-Hello.java-6-}+Hello.java-2-+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java:4:{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!");+Hello.java-6-  }+Hello.java-7-} Hello.pdf-1-%PDF-1.3 Hello.sh-1-#!/bin/sh Hello.sh:2:echo "Hello World!"

tests/out/Hello_wsS-I-on.out

@@ -2,15 +2,15 @@ Hello.bat|2|echo Hello World!" Hello.java:1:import java.lang.*;-Hello.java:2:public class+Hello.java:3:public class Hello // prints a Hello World! greeting-Hello.java|3|{+Hello.java|4|{ public static void main(String[]-Hello.java:4:Hello World!");+Hello.java:5:Hello World!"); Hello.sh:1:sh Hello.sh|2|echo Hello World!"

tests/out/Hello_wsS-I-onkbT.out

@@ -2,15 +2,15 @@ Hello.bat|     2|  1|     10|	echo Hello World!" Hello.java:     1:  1:      0:	import java.lang.*;-Hello.java:     2:  1:     20:	public class+Hello.java:     3:  1:     21:	public class Hello // prints a Hello World! greeting-Hello.java|     3|  1|     73|	{+Hello.java|     4|  1|     74|	{ public static void main(String[]-Hello.java:     4: 25:    137:	Hello World!");+Hello.java:     5: 25:    138:	Hello World!"); Hello.sh:     1:  8:      7:	sh Hello.sh|     2|  1|     10|	echo Hello World!"

tests/out/Hello_wsS-I-ounkbT.out

@@ -2,15 +2,15 @@ Hello.bat|     2|  1|     10|	echo Hello.bat+     2+  7+     16+	Hello World!" Hello.java:     1:  1:      0:	import java.lang.*;-Hello.java:     2:  1:     20:	public class-Hello.java+     2+ 14+     33+	Hello //-Hello.java+     2+ 23+     42+	prints a-Hello.java+     2+ 32+     51+	Hello World!-Hello.java+     2+ 45+     64+	greeting-Hello.java|     3|  1|     73|	{-Hello.java+     3+  3+     75+	public static-Hello.java+     3+ 17+     89+	void main(String[]-Hello.java:     4: 25:    137:	Hello World!");+Hello.java:     3:  1:     21:	public class+Hello.java+     3+ 14+     34+	Hello //+Hello.java+     3+ 23+     43+	prints a+Hello.java+     3+ 32+     52+	Hello World!+Hello.java+     3+ 45+     65+	greeting+Hello.java|     4|  1|     74|	{+Hello.java+     4+  3+     76+	public static+Hello.java+     4+ 17+     90+	void main(String[]+Hello.java:     5: 25:    138:	Hello World!"); Hello.sh:     1:  8:      7:	sh Hello.sh|     2|  1|     10|	echo Hello.sh+     2+  7+     16+	Hello World!"

tests/out/Hello_wsS-I-unkbT.out

@@ -2,15 +2,15 @@ Hello.bat|     2|  1|     10|	echo "Hello World!" Hello.bat+     2+  7+     16+	echo "Hello World!" Hello.java:     1:  1:      0:	import java.lang.*;-Hello.java:     2:  1:     20:	public class Hello // prints a Hello World! greeting-Hello.java+     2+ 14+     33+	public class Hello // prints a Hello World! greeting-Hello.java+     2+ 23+     42+	public class Hello // prints a Hello World! greeting-Hello.java+     2+ 32+     51+	public class Hello // prints a Hello World! greeting-Hello.java+     2+ 45+     64+	public class Hello // prints a Hello World! greeting-Hello.java|     3|  1|     73|	{ public static void main(String[] arg)-Hello.java+     3+  3+     75+	{ public static void main(String[] arg)-Hello.java+     3+ 17+     89+	{ public static void main(String[] arg)-Hello.java:     4: 25:    137:	  { System.out.println("Hello World!");+Hello.java:     3:  1:     21:	public class Hello // prints a Hello World! greeting+Hello.java+     3+ 14+     34+	public class Hello // prints a Hello World! greeting+Hello.java+     3+ 23+     43+	public class Hello // prints a Hello World! greeting+Hello.java+     3+ 32+     52+	public class Hello // prints a Hello World! greeting+Hello.java+     3+ 45+     65+	public class Hello // prints a Hello World! greeting+Hello.java|     4|  1|     74|	{ public static void main(String[] arg)+Hello.java+     4+  3+     76+	{ public static void main(String[] arg)+Hello.java+     4+ 17+     90+	{ public static void main(String[] arg)+Hello.java:     5: 25:    138:	  { System.out.println("Hello World!"); Hello.sh:     1:  8:      7:	#!/bin/sh Hello.sh|     2|  1|     10|	echo "Hello World!" Hello.sh+     2+  7+     16+	echo "Hello World!"

tests/out/Hello_wsS-Iw.out

new file mode 100644@@ -0,0 +1,10 @@+Hello.bat:#!/bin/sh+Hello.bat|echo "Hello World!"+Hello.java:import java.lang.*;+Hello.java:public class Hello // prints a Hello World! greeting+Hello.java:{ public static void main(String[] arg)+Hello.java:  { System.out.println("Hello World!");+Hello.pdf:4 0 obj+Hello.pdf:<< /Length 5 0 R /Filter /FlateDecode >>+Hello.sh:#!/bin/sh+Hello.sh|echo "Hello World!"

tests/out/Hello_wsS-Ix.out

new file mode 100644@@ -0,0 +1 @@+Hello.java:import java.lang.*;

tests/out/Hello_wsS-P.out

new file mode 100644@@ -0,0 +1,10 @@+Hello.bat:#!/bin/sh+Hello.bat|echo "Hello World!"+Binary file Hello.class matches+Hello.java:import java.lang.*;+Hello.java:public class Hello // prints a Hello World! greeting+Hello.java|{ public static void main(String[] arg)+Hello.java:  { System.out.println("Hello World!");+Binary file Hello.pdf matches+Hello.sh:#!/bin/sh+Hello.sh|echo "Hello World!"

tests/out/Hello_wsS-Pw.out

new file mode 100644@@ -0,0 +1,12 @@+Hello.bat:#!/bin/sh+Hello.bat|echo "Hello World!"+Binary file Hello.class matches+Hello.java:import java.lang.*;+Hello.java:public class Hello // prints a Hello World! greeting+Hello.java:{ public static void main(String[] arg)+Hello.java:  { System.out.println("Hello World!");+Hello.pdf:4 0 obj+Hello.pdf:<< /Length 5 0 R /Filter /FlateDecode >>+Binary file Hello.pdf matches+Hello.sh:#!/bin/sh+Hello.sh|echo "Hello World!"

tests/out/Hello_wsS-Px.out

new file mode 100644@@ -0,0 +1,3 @@+Binary file Hello.class matches+Hello.java:import java.lang.*;+Binary file Hello.pdf matches

tests/out/Hello_wsS-W-cv.out

@@ -1,6 +1,6 @@ Hello.bat:0 Hello.class:6-Hello.java:2+Hello.java:3 Hello.pdf:33 Hello.sh:0 Hello.txt:0

tests/out/Hello_wsS-W-n.out

@@ -17,9 +17,9 @@ 00000140:  00 09 00 00 00 1d 00 01  00 01 00 00 00 05 2a b7  |@I@@@]@A@A@@@E*.| 00000150:  00 01 b1 00 00 00 01 00  0a -- -- -- -- -- -- --  |@A.@@@A@J-------| Hello.java:1:import java.lang.*;-Hello.java:2:public class Hello // prints a Hello World! greeting-Hello.java|3|{ public static void main(String[] arg)-Hello.java:4:  { System.out.println("Hello World!");+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java|4|{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!"); Hello.pdf:1: 00000000:  25 50 44 46 2d 31 2e 33  0a 25 c4 e5 f2 e5 eb a7  |%PDF-1.3J%......| 00000010:  f3 a0 d0 c4 c6 0a -- --  -- -- -- -- -- -- -- --  |.....J----------|

tests/out/Hello_wsS-W-nC1.out

@@ -25,10 +25,14 @@ 00000170-  25 00 02 00 01 00 00 00  09 b2 00 02 12 03 b6 00  |%@B@A@@@I.@BRC.@| 00000180-  04 b1 00 00 00 01 00 0a  -- -- -- -- -- -- -- --  |D.@@@A@J--------| Hello.java:1:import java.lang.*;-Hello.java:2:public class Hello // prints a Hello World! greeting-Hello.java:3:{ public static void main(String[] arg)-Hello.java:4:  { System.out.println("Hello World!");-Hello.java-5-  }+Hello.java-2-+--+--+Hello.java-2-+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java:4:{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!");+Hello.java-6-  } Hello.pdf-2- 00000000-  -- -- -- -- -- -- -- --  -- 25 c4 e5 f2 e5 eb a7  |---------%......| 00000010-  f3 a0 d0 c4 c6 0a -- --  -- -- -- -- -- -- -- --  |.....J----------|

tests/out/Hello_wsS-W-nkbT.out

@@ -17,9 +17,9 @@ 00000140:  00 09 00 00 00 1d 00 01  00 01 00 00 00 05 2a b7  |@I@@@]@A@A@@@E*.| 00000150:  00 01 b1 00 00 00 01 00  0a -- -- -- -- -- -- --  |@A.@@@A@J-------| Hello.java:     1:  1:      0:	import java.lang.*;-Hello.java:     2:  1:     20:	public class Hello // prints a Hello World! greeting-Hello.java|     3|  1|     73|	{ public static void main(String[] arg)-Hello.java:     4: 25:    137:	  { System.out.println("Hello World!");+Hello.java:     3:  1:     21:	public class Hello // prints a Hello World! greeting+Hello.java|     4|  1|     74|	{ public static void main(String[] arg)+Hello.java:     5: 25:    138:	  { System.out.println("Hello World!"); Hello.pdf:     1:  8:      7:	 00000000:  25 50 44 46 2d 31 2e 33  0a 25 c4 e5 f2 e5 eb a7  |%PDF-1.3J%......| 00000010:  f3 a0 d0 c4 c6 0a -- --  -- -- -- -- -- -- -- --  |.....J----------|

tests/out/Hello_wsS-W-nv.out

@@ -24,8 +24,9 @@ Hello.class:8: 00000180:  -- -- -- -- -- -- -- --  -- -- -- -- 00 02 00 00  |------------@B@@| 00000190:  00 04 00 08 00 05 00 01  00 0d 00 00 00 02 00 0e  |@D@H@E@A@M@@@B@N|-Hello.java:5:  }-Hello.java:6:}+Hello.java:2:+Hello.java:6:  }+Hello.java:7:} Hello.pdf:1:%PDF-1.3 Hello.pdf:2: 00000000:  -- -- -- -- -- -- -- --  -- 25 c4 e5 f2 e5 eb a7  |---------%......|

tests/out/Hello_wsS-W-nvC1.out

@@ -59,9 +59,14 @@ Hello.class:8: 00000180:  -- -- -- -- -- -- -- --  -- -- -- -- 00 02 00 00  |------------@B@@| 00000190:  00 04 00 08 00 05 00 01  00 0d 00 00 00 02 00 0e  |@D@H@E@A@M@@@B@N|-Hello.java-4-  { System.out.println("Hello World!");-Hello.java:5:  }-Hello.java:6:}+Hello.java-1-import java.lang.*;+Hello.java:2:+Hello.java-3-public class Hello // prints a Hello World! greeting+--+--+Hello.java-5-  { System.out.println("Hello World!");+Hello.java:6:  }+Hello.java:7:} Hello.pdf:1:%PDF-1.3 Hello.pdf:2: 00000000:  -- -- -- -- -- -- -- --  -- 25 c4 e5 f2 e5 eb a7  |---------%......|

tests/out/Hello_wsS-W-nvy.out

@@ -35,11 +35,12 @@ 00000180:  04 b1 00 00 00 01 00 0a  00 00 00 0a 00 02 00 00  |D.@@@A@J@@@J@B@@| 00000190:  00 04 00 08 00 05 00 01  00 0d 00 00 00 02 00 0e  |@D@H@E@A@M@@@B@N| Hello.java-1-import java.lang.*;-Hello.java-2-public class Hello // prints a Hello World! greeting-Hello.java-3-{ public static void main(String[] arg)-Hello.java-4-  { System.out.println("Hello World!");-Hello.java:5:  }-Hello.java:6:}+Hello.java:2:+Hello.java-3-public class Hello // prints a Hello World! greeting+Hello.java-4-{ public static void main(String[] arg)+Hello.java-5-  { System.out.println("Hello World!");+Hello.java:6:  }+Hello.java:7:} Hello.pdf:1:%PDF-1.3 Hello.pdf:2: 00000000:  -- -- -- -- -- -- -- --  -- 25 c4 e5 f2 e5 eb a7  |---------%......|

tests/out/Hello_wsS-W-ny.out

@@ -35,11 +35,12 @@ 00000180-  04 b1 00 00 00 01 00 0a  00 00 00 0a 00 02 00 00  |D.@@@A@J@@@J@B@@| 00000190-  00 04 00 08 00 05 00 01  00 0d 00 00 00 02 00 0e  |@D@H@E@A@M@@@B@N| Hello.java:1:import java.lang.*;-Hello.java:2:public class Hello // prints a Hello World! greeting-Hello.java:3:{ public static void main(String[] arg)-Hello.java:4:  { System.out.println("Hello World!");-Hello.java-5-  }-Hello.java-6-}+Hello.java-2-+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java:4:{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!");+Hello.java-6-  }+Hello.java-7-} Hello.pdf-1-%PDF-1.3 Hello.pdf-2- 00000000-  -- -- -- -- -- -- -- --  -- 25 c4 e5 f2 e5 eb a7  |---------%......|

tests/out/Hello_wsS-W-on.out

@@ -6,15 +6,15 @@ 00000090:  -- -- -- -- 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |----Hello World!| 000000a0:  07 00 1a -- -- -- -- --  -- -- -- -- -- -- -- --  |G@Z-------------| Hello.java:1:import java.lang.*;-Hello.java:2:public class+Hello.java:3:public class Hello // prints a Hello World! greeting-Hello.java|3|{+Hello.java|4|{ public static void main(String[]-Hello.java:4:Hello World!");+Hello.java:5:Hello World!"); Hello.pdf:1: 00000000:  -- -- -- -- -- -- -- 33  0a 25 c4 e5 f2 e5 eb a7  |-------3J%......| 00000010:  f3 a0 d0 c4 c6 -- -- --  -- -- -- -- -- -- -- --  |.....-----------|

tests/out/Hello_wsS-W-onkbT.out

@@ -6,15 +6,15 @@ 00000090:  -- -- -- -- 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |----Hello World!| 000000a0:  07 00 1a -- -- -- -- --  -- -- -- -- -- -- -- --  |G@Z-------------| Hello.java:     1:  1:      0:	import java.lang.*;-Hello.java:     2:  1:     20:	public class+Hello.java:     3:  1:     21:	public class Hello // prints a Hello World! greeting-Hello.java|     3|  1|     73|	{+Hello.java|     4|  1|     74|	{ public static void main(String[]-Hello.java:     4: 25:    137:	Hello World!");+Hello.java:     5: 25:    138:	Hello World!"); Hello.pdf:     1:  8:      7:	 00000000:  -- -- -- -- -- -- -- 33  0a 25 c4 e5 f2 e5 eb a7  |-------3J%......| 00000010:  f3 a0 d0 c4 c6 -- -- --  -- -- -- -- -- -- -- --  |.....-----------|

tests/out/Hello_wsS-W-ounkbT.out

@@ -7,15 +7,15 @@ 00000090:  -- -- -- -- 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |----Hello World!| 000000a0:  07 00 1a -- -- -- -- --  -- -- -- -- -- -- -- --  |G@Z-------------| Hello.java:     1:  1:      0:	import java.lang.*;-Hello.java:     2:  1:     20:	public class-Hello.java+     2+ 14+     33+	Hello //-Hello.java+     2+ 23+     42+	prints a-Hello.java+     2+ 32+     51+	Hello World!-Hello.java+     2+ 45+     64+	greeting-Hello.java|     3|  1|     73|	{-Hello.java+     3+  3+     75+	public static-Hello.java+     3+ 17+     89+	void main(String[]-Hello.java:     4: 25:    137:	Hello World!");+Hello.java:     3:  1:     21:	public class+Hello.java+     3+ 14+     34+	Hello //+Hello.java+     3+ 23+     43+	prints a+Hello.java+     3+ 32+     52+	Hello World!+Hello.java+     3+ 45+     65+	greeting+Hello.java|     4|  1|     74|	{+Hello.java+     4+  3+     76+	public static+Hello.java+     4+ 17+     90+	void main(String[]+Hello.java:     5: 25:    138:	Hello World!"); Hello.pdf:     1:  8:      7:	 00000000:  -- -- -- -- -- -- -- 33  0a 25 c4 e5 f2 e5 eb a7  |-------3J%......| 00000010:  f3 a0 d0 c4 c6 -- -- --  -- -- -- -- -- -- -- --  |.....-----------|

tests/out/Hello_wsS-W-unkbT.out

@@ -34,15 +34,15 @@ 00000140:  00 09 00 00 00 1d 00 01  00 01 00 00 00 05 2a b7  |@I@@@]@A@A@@@E*.| 00000150:  00 01 b1 00 00 00 01 00  0a -- -- -- -- -- -- --  |@A.@@@A@J-------| Hello.java:     1:  1:      0:	import java.lang.*;-Hello.java:     2:  1:     20:	public class Hello // prints a Hello World! greeting-Hello.java+     2+ 14+     33+	public class Hello // prints a Hello World! greeting-Hello.java+     2+ 23+     42+	public class Hello // prints a Hello World! greeting-Hello.java+     2+ 32+     51+	public class Hello // prints a Hello World! greeting-Hello.java+     2+ 45+     64+	public class Hello // prints a Hello World! greeting-Hello.java|     3|  1|     73|	{ public static void main(String[] arg)-Hello.java+     3+  3+     75+	{ public static void main(String[] arg)-Hello.java+     3+ 17+     89+	{ public static void main(String[] arg)-Hello.java:     4: 25:    137:	  { System.out.println("Hello World!");+Hello.java:     3:  1:     21:	public class Hello // prints a Hello World! greeting+Hello.java+     3+ 14+     34+	public class Hello // prints a Hello World! greeting+Hello.java+     3+ 23+     43+	public class Hello // prints a Hello World! greeting+Hello.java+     3+ 32+     52+	public class Hello // prints a Hello World! greeting+Hello.java+     3+ 45+     65+	public class Hello // prints a Hello World! greeting+Hello.java|     4|  1|     74|	{ public static void main(String[] arg)+Hello.java+     4+  3+     76+	{ public static void main(String[] arg)+Hello.java+     4+ 17+     90+	{ public static void main(String[] arg)+Hello.java:     5: 25:    138:	  { System.out.println("Hello World!"); Hello.pdf:     1:  8:      7:	 00000000:  25 50 44 46 2d 31 2e 33  0a 25 c4 e5 f2 e5 eb a7  |%PDF-1.3J%......| 00000010:  f3 a0 d0 c4 c6 0a -- --  -- -- -- -- -- -- -- --  |.....J----------|

tests/out/Hello_wsS-X-cv.out

@@ -1,6 +1,6 @@ Hello.bat:0 Hello.class:6-Hello.java:2+Hello.java:3 Hello.pdf:33 Hello.sh:0 Hello.txt:0

tests/out/Hello_wsS-X-n.out

@@ -20,18 +20,18 @@ Hello.java:1: 00000000:  69 6d 70 6f 72 74 20 6a  61 76 61 2e 6c 61 6e 67  |import java.lang| 00000010:  2e 2a 3b 0a -- -- -- --  -- -- -- -- -- -- -- --  |.*;J------------|-Hello.java:2:-00000010:  -- -- -- -- 70 75 62 6c  69 63 20 63 6c 61 73 73  |----public class|-00000020:  20 48 65 6c 6c 6f 20 2f  2f 20 70 72 69 6e 74 73  | Hello // prints|-00000030:  20 61 20 48 65 6c 6c 6f  20 57 6f 72 6c 64 21 20  | a Hello World! |-00000040:  67 72 65 65 74 69 6e 67  0a 7b 20 70 75 62 6c 69  |greetingJ{ publi|-00000050:  63 20 73 74 61 74 69 63  20 76 6f 69 64 20 6d 61  |c static void ma|-00000060:  69 6e 28 53 74 72 69 6e  67 5b 5d 20 61 72 67 29  |in(String[] arg)|-00000070:  0a -- -- -- -- -- -- --  -- -- -- -- -- -- -- --  |J---------------|-Hello.java:4:-00000070:  -- 20 20 7b 20 53 79 73  74 65 6d 2e 6f 75 74 2e  |-  { System.out.|-00000080:  70 72 69 6e 74 6c 6e 28  22 48 65 6c 6c 6f 20 57  |println("Hello W|-00000090:  6f 72 6c 64 21 22 29 3b  0a -- -- -- -- -- -- --  |orld!");J-------|+Hello.java:3:+00000010:  -- -- -- -- -- 70 75 62  6c 69 63 20 63 6c 61 73  |-----public clas|+00000020:  73 20 48 65 6c 6c 6f 20  2f 2f 20 70 72 69 6e 74  |s Hello // print|+00000030:  73 20 61 20 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |s a Hello World!|+00000040:  20 67 72 65 65 74 69 6e  67 0a 7b 20 70 75 62 6c  | greetingJ{ publ|+00000050:  69 63 20 73 74 61 74 69  63 20 76 6f 69 64 20 6d  |ic static void m|+00000060:  61 69 6e 28 53 74 72 69  6e 67 5b 5d 20 61 72 67  |ain(String[] arg|+00000070:  29 0a -- -- -- -- -- --  -- -- -- -- -- -- -- --  |)J--------------|+Hello.java:5:+00000070:  -- -- 20 20 7b 20 53 79  73 74 65 6d 2e 6f 75 74  |--  { System.out|+00000080:  2e 70 72 69 6e 74 6c 6e  28 22 48 65 6c 6c 6f 20  |.println("Hello |+00000090:  57 6f 72 6c 64 21 22 29  3b 0a -- -- -- -- -- --  |World!");J------| Hello.pdf:1: 00000000:  25 50 44 46 2d 31 2e 33  0a 25 c4 e5 f2 e5 eb a7  |%PDF-1.3J%......| 00000010:  f3 a0 d0 c4 c6 0a -- --  -- -- -- -- -- -- -- --  |.....J----------|

tests/out/Hello_wsS-X-nC1.out

@@ -30,22 +30,28 @@ Hello.java:1: 00000000:  69 6d 70 6f 72 74 20 6a  61 76 61 2e 6c 61 6e 67  |import java.lang| 00000010:  2e 2a 3b 0a -- -- -- --  -- -- -- -- -- -- -- --  |.*;J------------|-Hello.java:2:-00000010:  -- -- -- -- 70 75 62 6c  69 63 20 63 6c 61 73 73  |----public class|-00000020:  20 48 65 6c 6c 6f 20 2f  2f 20 70 72 69 6e 74 73  | Hello // prints|-00000030:  20 61 20 48 65 6c 6c 6f  20 57 6f 72 6c 64 21 20  | a Hello World! |-00000040:  67 72 65 65 74 69 6e 67  0a -- -- -- -- -- -- --  |greetingJ-------|+Hello.java-2-+00000010-  -- -- -- -- 0a -- -- --  -- -- -- -- -- -- -- --  |----J-----------|+--+--+Hello.java-2-+00000010-  -- -- -- -- 0a -- -- --  -- -- -- -- -- -- -- --  |----J-----------| Hello.java:3:-00000040:  -- -- -- -- -- -- -- --  -- 7b 20 70 75 62 6c 69  |---------{ publi|-00000050:  63 20 73 74 61 74 69 63  20 76 6f 69 64 20 6d 61  |c static void ma|-00000060:  69 6e 28 53 74 72 69 6e  67 5b 5d 20 61 72 67 29  |in(String[] arg)|-00000070:  0a -- -- -- -- -- -- --  -- -- -- -- -- -- -- --  |J---------------|+00000010:  -- -- -- -- -- 70 75 62  6c 69 63 20 63 6c 61 73  |-----public clas|+00000020:  73 20 48 65 6c 6c 6f 20  2f 2f 20 70 72 69 6e 74  |s Hello // print|+00000030:  73 20 61 20 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |s a Hello World!|+00000040:  20 67 72 65 65 74 69 6e  67 0a -- -- -- -- -- --  | greetingJ------| Hello.java:4:-00000070:  -- 20 20 7b 20 53 79 73  74 65 6d 2e 6f 75 74 2e  |-  { System.out.|-00000080:  70 72 69 6e 74 6c 6e 28  22 48 65 6c 6c 6f 20 57  |println("Hello W|-00000090:  6f 72 6c 64 21 22 29 3b  0a -- -- -- -- -- -- --  |orld!");J-------|-Hello.java-5--00000090-  -- -- -- -- -- -- -- --  -- 20 20 7d 0a -- -- --  |---------  }J---|+00000040:  -- -- -- -- -- -- -- --  -- -- 7b 20 70 75 62 6c  |----------{ publ|+00000050:  69 63 20 73 74 61 74 69  63 20 76 6f 69 64 20 6d  |ic static void m|+00000060:  61 69 6e 28 53 74 72 69  6e 67 5b 5d 20 61 72 67  |ain(String[] arg|+00000070:  29 0a -- -- -- -- -- --  -- -- -- -- -- -- -- --  |)J--------------|+Hello.java:5:+00000070:  -- -- 20 20 7b 20 53 79  73 74 65 6d 2e 6f 75 74  |--  { System.out|+00000080:  2e 70 72 69 6e 74 6c 6e  28 22 48 65 6c 6c 6f 20  |.println("Hello |+00000090:  57 6f 72 6c 64 21 22 29  3b 0a -- -- -- -- -- --  |World!");J------|+Hello.java-6-+00000090-  -- -- -- -- -- -- -- --  -- -- 20 20 7d 0a -- --  |----------  }J--| Hello.pdf-2- 00000000-  -- -- -- -- -- -- -- --  -- 25 c4 e5 f2 e5 eb a7  |---------%......| 00000010-  f3 a0 d0 c4 c6 0a -- --  -- -- -- -- -- -- -- --  |.....J----------|

tests/out/Hello_wsS-X-nkbT.out

@@ -20,18 +20,18 @@ Hello.java:     1:  1:      0:	 00000000:  69 6d 70 6f 72 74 20 6a  61 76 61 2e 6c 61 6e 67  |import java.lang| 00000010:  2e 2a 3b 0a -- -- -- --  -- -- -- -- -- -- -- --  |.*;J------------|-Hello.java:     2:  1:     20:	-00000010:  -- -- -- -- 70 75 62 6c  69 63 20 63 6c 61 73 73  |----public class|-00000020:  20 48 65 6c 6c 6f 20 2f  2f 20 70 72 69 6e 74 73  | Hello // prints|-00000030:  20 61 20 48 65 6c 6c 6f  20 57 6f 72 6c 64 21 20  | a Hello World! |-00000040:  67 72 65 65 74 69 6e 67  0a 7b 20 70 75 62 6c 69  |greetingJ{ publi|-00000050:  63 20 73 74 61 74 69 63  20 76 6f 69 64 20 6d 61  |c static void ma|-00000060:  69 6e 28 53 74 72 69 6e  67 5b 5d 20 61 72 67 29  |in(String[] arg)|-00000070:  0a -- -- -- -- -- -- --  -- -- -- -- -- -- -- --  |J---------------|-Hello.java:     4: 25:    137:	-00000070:  -- 20 20 7b 20 53 79 73  74 65 6d 2e 6f 75 74 2e  |-  { System.out.|-00000080:  70 72 69 6e 74 6c 6e 28  22 48 65 6c 6c 6f 20 57  |println("Hello W|-00000090:  6f 72 6c 64 21 22 29 3b  0a -- -- -- -- -- -- --  |orld!");J-------|+Hello.java:     3:  1:     21:	+00000010:  -- -- -- -- -- 70 75 62  6c 69 63 20 63 6c 61 73  |-----public clas|+00000020:  73 20 48 65 6c 6c 6f 20  2f 2f 20 70 72 69 6e 74  |s Hello // print|+00000030:  73 20 61 20 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |s a Hello World!|+00000040:  20 67 72 65 65 74 69 6e  67 0a 7b 20 70 75 62 6c  | greetingJ{ publ|+00000050:  69 63 20 73 74 61 74 69  63 20 76 6f 69 64 20 6d  |ic static void m|+00000060:  61 69 6e 28 53 74 72 69  6e 67 5b 5d 20 61 72 67  |ain(String[] arg|+00000070:  29 0a -- -- -- -- -- --  -- -- -- -- -- -- -- --  |)J--------------|+Hello.java:     5: 25:    138:	+00000070:  -- -- 20 20 7b 20 53 79  73 74 65 6d 2e 6f 75 74  |--  { System.out|+00000080:  2e 70 72 69 6e 74 6c 6e  28 22 48 65 6c 6c 6f 20  |.println("Hello |+00000090:  57 6f 72 6c 64 21 22 29  3b 0a -- -- -- -- -- --  |World!");J------| Hello.pdf:     1:  8:      7:	 00000000:  25 50 44 46 2d 31 2e 33  0a 25 c4 e5 f2 e5 eb a7  |%PDF-1.3J%......| 00000010:  f3 a0 d0 c4 c6 0a -- --  -- -- -- -- -- -- -- --  |.....J----------|

tests/out/Hello_wsS-X-nv.out

@@ -25,10 +25,12 @@ Hello.class:8: 00000180:  -- -- -- -- -- -- -- --  -- -- -- -- 00 02 00 00  |------------@B@@| 00000190:  00 04 00 08 00 05 00 01  00 0d 00 00 00 02 00 0e  |@D@H@E@A@M@@@B@N|-Hello.java:5:-00000090:  -- -- -- -- -- -- -- --  -- 20 20 7d 0a -- -- --  |---------  }J---|+Hello.java:2:+00000010:  -- -- -- -- 0a -- -- --  -- -- -- -- -- -- -- --  |----J-----------| Hello.java:6:-00000090:  -- -- -- -- -- -- -- --  -- -- -- -- -- 7d 0a --  |-------------}J-|+00000090:  -- -- -- -- -- -- -- --  -- -- 20 20 7d 0a -- --  |----------  }J--|+Hello.java:7:+00000090:  -- -- -- -- -- -- -- --  -- -- -- -- -- -- 7d 0a  |--------------}J| Hello.pdf:1: 00000000:  25 50 44 46 2d 31 2e 33  0a -- -- -- -- -- -- --  |%PDF-1.3J-------| Hello.pdf:2:

tests/out/Hello_wsS-X-nvC1.out

@@ -62,14 +62,26 @@ Hello.class:8: 00000180:  -- -- -- -- -- -- -- --  -- -- -- -- 00 02 00 00  |------------@B@@| 00000190:  00 04 00 08 00 05 00 01  00 0d 00 00 00 02 00 0e  |@D@H@E@A@M@@@B@N|-Hello.java-4--00000070-  -- 20 20 7b 20 53 79 73  74 65 6d 2e 6f 75 74 2e  |-  { System.out.|-00000080-  70 72 69 6e 74 6c 6e 28  22 48 65 6c 6c 6f 20 57  |println("Hello W|-00000090-  6f 72 6c 64 21 22 29 3b  0a -- -- -- -- -- -- --  |orld!");J-------|-Hello.java:5:-00000090:  -- -- -- -- -- -- -- --  -- 20 20 7d 0a -- -- --  |---------  }J---|+Hello.java-1-+00000000-  69 6d 70 6f 72 74 20 6a  61 76 61 2e 6c 61 6e 67  |import java.lang|+00000010-  2e 2a 3b 0a -- -- -- --  -- -- -- -- -- -- -- --  |.*;J------------|+Hello.java:2:+00000010:  -- -- -- -- 0a -- -- --  -- -- -- -- -- -- -- --  |----J-----------|+Hello.java-3-+00000010-  -- -- -- -- -- 70 75 62  6c 69 63 20 63 6c 61 73  |-----public clas|+00000020-  73 20 48 65 6c 6c 6f 20  2f 2f 20 70 72 69 6e 74  |s Hello // print|+00000030-  73 20 61 20 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |s a Hello World!|+00000040-  20 67 72 65 65 74 69 6e  67 0a -- -- -- -- -- --  | greetingJ------|+--+--+Hello.java-5-+00000070-  -- -- 20 20 7b 20 53 79  73 74 65 6d 2e 6f 75 74  |--  { System.out|+00000080-  2e 70 72 69 6e 74 6c 6e  28 22 48 65 6c 6c 6f 20  |.println("Hello |+00000090-  57 6f 72 6c 64 21 22 29  3b 0a -- -- -- -- -- --  |World!");J------| Hello.java:6:-00000090:  -- -- -- -- -- -- -- --  -- -- -- -- -- 7d 0a --  |-------------}J-|+00000090:  -- -- -- -- -- -- -- --  -- -- 20 20 7d 0a -- --  |----------  }J--|+Hello.java:7:+00000090:  -- -- -- -- -- -- -- --  -- -- -- -- -- -- 7d 0a  |--------------}J| Hello.pdf:1: 00000000:  25 50 44 46 2d 31 2e 33  0a -- -- -- -- -- -- --  |%PDF-1.3J-------| Hello.pdf:2:

tests/out/Hello_wsS-X-nvy.out

@@ -37,19 +37,21 @@ 00000190:  00 04 00 08 00 05 00 01  00 0d 00 00 00 02 00 0e  |@D@H@E@A@M@@@B@N| Hello.java-1- 00000000-  69 6d 70 6f 72 74 20 6a  61 76 61 2e 6c 61 6e 67  |import java.lang|-Hello.java-2--00000010-  2e 2a 3b 0a 70 75 62 6c  69 63 20 63 6c 61 73 73  |.*;Jpublic class|-00000020-  20 48 65 6c 6c 6f 20 2f  2f 20 70 72 69 6e 74 73  | Hello // prints|-00000030-  20 61 20 48 65 6c 6c 6f  20 57 6f 72 6c 64 21 20  | a Hello World! |+Hello.java:2: Hello.java-3--00000040-  67 72 65 65 74 69 6e 67  0a 7b 20 70 75 62 6c 69  |greetingJ{ publi|-00000050-  63 20 73 74 61 74 69 63  20 76 6f 69 64 20 6d 61  |c static void ma|-00000060-  69 6e 28 53 74 72 69 6e  67 5b 5d 20 61 72 67 29  |in(String[] arg)|+00000010-  2e 2a 3b 0a 0a 70 75 62  6c 69 63 20 63 6c 61 73  |.*;JJpublic clas|+00000020-  73 20 48 65 6c 6c 6f 20  2f 2f 20 70 72 69 6e 74  |s Hello // print|+00000030-  73 20 61 20 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |s a Hello World!| Hello.java-4--00000070-  0a 20 20 7b 20 53 79 73  74 65 6d 2e 6f 75 74 2e  |J  { System.out.|-00000080-  70 72 69 6e 74 6c 6e 28  22 48 65 6c 6c 6f 20 57  |println("Hello W|-Hello.java:5:+00000040-  20 67 72 65 65 74 69 6e  67 0a 7b 20 70 75 62 6c  | greetingJ{ publ|+00000050-  69 63 20 73 74 61 74 69  63 20 76 6f 69 64 20 6d  |ic static void m|+00000060-  61 69 6e 28 53 74 72 69  6e 67 5b 5d 20 61 72 67  |ain(String[] arg|+Hello.java-5-+00000070-  29 0a 20 20 7b 20 53 79  73 74 65 6d 2e 6f 75 74  |)J  { System.out|+00000080-  2e 70 72 69 6e 74 6c 6e  28 22 48 65 6c 6c 6f 20  |.println("Hello | Hello.java:6:+Hello.java:7:+00000090:  57 6f 72 6c 64 21 22 29  3b 0a 20 20 7d 0a 7d 0a  |World!");J  }J}J| Hello.pdf:1: Hello.pdf:2: 00000000:  25 50 44 46 2d 31 2e 33  0a 25 c4 e5 f2 e5 eb a7  |%PDF-1.3J%......|

tests/out/Hello_wsS-X-ny.out

@@ -37,19 +37,21 @@ 00000190-  00 04 00 08 00 05 00 01  00 0d 00 00 00 02 00 0e  |@D@H@E@A@M@@@B@N| Hello.java:1: 00000000:  69 6d 70 6f 72 74 20 6a  61 76 61 2e 6c 61 6e 67  |import java.lang|-Hello.java:2:-00000010:  2e 2a 3b 0a 70 75 62 6c  69 63 20 63 6c 61 73 73  |.*;Jpublic class|-00000020:  20 48 65 6c 6c 6f 20 2f  2f 20 70 72 69 6e 74 73  | Hello // prints|-00000030:  20 61 20 48 65 6c 6c 6f  20 57 6f 72 6c 64 21 20  | a Hello World! |+Hello.java-2- Hello.java:3:-00000040:  67 72 65 65 74 69 6e 67  0a 7b 20 70 75 62 6c 69  |greetingJ{ publi|-00000050:  63 20 73 74 61 74 69 63  20 76 6f 69 64 20 6d 61  |c static void ma|-00000060:  69 6e 28 53 74 72 69 6e  67 5b 5d 20 61 72 67 29  |in(String[] arg)|+00000010:  2e 2a 3b 0a 0a 70 75 62  6c 69 63 20 63 6c 61 73  |.*;JJpublic clas|+00000020:  73 20 48 65 6c 6c 6f 20  2f 2f 20 70 72 69 6e 74  |s Hello // print|+00000030:  73 20 61 20 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |s a Hello World!| Hello.java:4:-00000070:  0a 20 20 7b 20 53 79 73  74 65 6d 2e 6f 75 74 2e  |J  { System.out.|-00000080:  70 72 69 6e 74 6c 6e 28  22 48 65 6c 6c 6f 20 57  |println("Hello W|-Hello.java-5-+00000040:  20 67 72 65 65 74 69 6e  67 0a 7b 20 70 75 62 6c  | greetingJ{ publ|+00000050:  69 63 20 73 74 61 74 69  63 20 76 6f 69 64 20 6d  |ic static void m|+00000060:  61 69 6e 28 53 74 72 69  6e 67 5b 5d 20 61 72 67  |ain(String[] arg|+Hello.java:5:+00000070:  29 0a 20 20 7b 20 53 79  73 74 65 6d 2e 6f 75 74  |)J  { System.out|+00000080:  2e 70 72 69 6e 74 6c 6e  28 22 48 65 6c 6c 6f 20  |.println("Hello | Hello.java-6-+Hello.java-7-+00000090-  57 6f 72 6c 64 21 22 29  3b 0a 20 20 7d 0a 7d 0a  |World!");J  }J}J| Hello.pdf-1- Hello.pdf-2- 00000000-  25 50 44 46 2d 31 2e 33  0a 25 c4 e5 f2 e5 eb a7  |%PDF-1.3J%......|

tests/out/Hello_wsS-X-o.out

@@ -10,17 +10,17 @@ 00000000:  69 6d 70 6f 72 74 20 6a  61 76 61 2e 6c 61 6e 67  |import java.lang| 00000010:  2e 2a 3b -- -- -- -- --  -- -- -- -- -- -- -- --  |.*;-------------| Hello.java:-00000010:  -- -- -- -- 70 75 62 6c  69 63 20 63 6c 61 73 73  |----public class|-00000020:  -- 48 65 6c 6c 6f 20 2f  2f -- 70 72 69 6e 74 73  |-Hello //-prints|-00000030:  20 61 -- 48 65 6c 6c 6f  20 57 6f 72 6c 64 21 --  | a-Hello World!-|-00000040:  67 72 65 65 74 69 6e 67  0a 7b -- -- -- -- -- --  |greetingJ{------|+00000010:  -- -- -- -- -- 70 75 62  6c 69 63 20 63 6c 61 73  |-----public clas|+00000020:  73 -- 48 65 6c 6c 6f 20  2f 2f -- 70 72 69 6e 74  |s-Hello //-print|+00000030:  73 20 61 -- 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |s a-Hello World!|+00000040:  -- 67 72 65 65 74 69 6e  67 0a 7b -- -- -- -- --  |-greetingJ{-----| Hello.java:-00000040:  -- -- -- -- -- -- -- --  -- -- -- 70 75 62 6c 69  |-----------publi|-00000050:  63 20 73 74 61 74 69 63  -- 76 6f 69 64 20 6d 61  |c static-void ma|-00000060:  69 6e 28 53 74 72 69 6e  67 5b 5d -- -- -- -- --  |in(String[]-----|+00000040:  -- -- -- -- -- -- -- --  -- -- -- -- 70 75 62 6c  |------------publ|+00000050:  69 63 20 73 74 61 74 69  63 -- 76 6f 69 64 20 6d  |ic static-void m|+00000060:  61 69 6e 28 53 74 72 69  6e 67 5b 5d -- -- -- --  |ain(String[]----| Hello.java:-00000080:  -- -- -- -- -- -- -- --  -- 48 65 6c 6c 6f 20 57  |---------Hello W|-00000090:  6f 72 6c 64 21 22 29 3b  -- -- -- -- -- -- -- --  |orld!");--------|+00000080:  -- -- -- -- -- -- -- --  -- -- 48 65 6c 6c 6f 20  |----------Hello |+00000090:  57 6f 72 6c 64 21 22 29  3b -- -- -- -- -- -- --  |World!");-------| Hello.pdf: 00000000:  -- -- -- -- -- -- -- 33  0a 25 c4 e5 f2 e5 eb a7  |-------3J%......| 00000010:  f3 a0 d0 c4 c6 -- -- --  -- -- -- -- -- -- -- --  |.....-----------|

tests/out/Hello_wsS-X-on.out

@@ -9,18 +9,18 @@ Hello.java:1: 00000000:  69 6d 70 6f 72 74 20 6a  61 76 61 2e 6c 61 6e 67  |import java.lang| 00000010:  2e 2a 3b -- -- -- -- --  -- -- -- -- -- -- -- --  |.*;-------------|-Hello.java:2:-00000010:  -- -- -- -- 70 75 62 6c  69 63 20 63 6c 61 73 73  |----public class|-00000020:  -- 48 65 6c 6c 6f 20 2f  2f -- 70 72 69 6e 74 73  |-Hello //-prints|-00000030:  20 61 -- 48 65 6c 6c 6f  20 57 6f 72 6c 64 21 --  | a-Hello World!-|-00000040:  67 72 65 65 74 69 6e 67  0a 7b -- -- -- -- -- --  |greetingJ{------| Hello.java:3:-00000040:  -- -- -- -- -- -- -- --  -- -- -- 70 75 62 6c 69  |-----------publi|-00000050:  63 20 73 74 61 74 69 63  -- 76 6f 69 64 20 6d 61  |c static-void ma|-00000060:  69 6e 28 53 74 72 69 6e  67 5b 5d -- -- -- -- --  |in(String[]-----|+00000010:  -- -- -- -- -- 70 75 62  6c 69 63 20 63 6c 61 73  |-----public clas|+00000020:  73 -- 48 65 6c 6c 6f 20  2f 2f -- 70 72 69 6e 74  |s-Hello //-print|+00000030:  73 20 61 -- 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |s a-Hello World!|+00000040:  -- 67 72 65 65 74 69 6e  67 0a 7b -- -- -- -- --  |-greetingJ{-----| Hello.java:4:-00000080:  -- -- -- -- -- -- -- --  -- 48 65 6c 6c 6f 20 57  |---------Hello W|-00000090:  6f 72 6c 64 21 22 29 3b  -- -- -- -- -- -- -- --  |orld!");--------|+00000040:  -- -- -- -- -- -- -- --  -- -- -- -- 70 75 62 6c  |------------publ|+00000050:  69 63 20 73 74 61 74 69  63 -- 76 6f 69 64 20 6d  |ic static-void m|+00000060:  61 69 6e 28 53 74 72 69  6e 67 5b 5d -- -- -- --  |ain(String[]----|+Hello.java:5:+00000080:  -- -- -- -- -- -- -- --  -- -- 48 65 6c 6c 6f 20  |----------Hello |+00000090:  57 6f 72 6c 64 21 22 29  3b -- -- -- -- -- -- --  |World!");-------| Hello.pdf:1: 00000000:  -- -- -- -- -- -- -- 33  0a 25 c4 e5 f2 e5 eb a7  |-------3J%......| 00000010:  f3 a0 d0 c4 c6 -- -- --  -- -- -- -- -- -- -- --  |.....-----------|

tests/out/Hello_wsS-X-onkbT.out

@@ -9,18 +9,18 @@ Hello.java:     1:  1:      0:	 00000000:  69 6d 70 6f 72 74 20 6a  61 76 61 2e 6c 61 6e 67  |import java.lang| 00000010:  2e 2a 3b -- -- -- -- --  -- -- -- -- -- -- -- --  |.*;-------------|-Hello.java:     2:  1:     20:	-00000010:  -- -- -- -- 70 75 62 6c  69 63 20 63 6c 61 73 73  |----public class|-00000020:  -- 48 65 6c 6c 6f 20 2f  2f -- 70 72 69 6e 74 73  |-Hello //-prints|-00000030:  20 61 -- 48 65 6c 6c 6f  20 57 6f 72 6c 64 21 --  | a-Hello World!-|-00000040:  67 72 65 65 74 69 6e 67  0a 7b -- -- -- -- -- --  |greetingJ{------|-Hello.java:     3:  3:     75:	-00000040:  -- -- -- -- -- -- -- --  -- -- -- 70 75 62 6c 69  |-----------publi|-00000050:  63 20 73 74 61 74 69 63  -- 76 6f 69 64 20 6d 61  |c static-void ma|-00000060:  69 6e 28 53 74 72 69 6e  67 5b 5d -- -- -- -- --  |in(String[]-----|-Hello.java:     4: 25:    137:	-00000080:  -- -- -- -- -- -- -- --  -- 48 65 6c 6c 6f 20 57  |---------Hello W|-00000090:  6f 72 6c 64 21 22 29 3b  -- -- -- -- -- -- -- --  |orld!");--------|+Hello.java:     3:  1:     21:	+00000010:  -- -- -- -- -- 70 75 62  6c 69 63 20 63 6c 61 73  |-----public clas|+00000020:  73 -- 48 65 6c 6c 6f 20  2f 2f -- 70 72 69 6e 74  |s-Hello //-print|+00000030:  73 20 61 -- 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |s a-Hello World!|+00000040:  -- 67 72 65 65 74 69 6e  67 0a 7b -- -- -- -- --  |-greetingJ{-----|+Hello.java:     4:  3:     76:	+00000040:  -- -- -- -- -- -- -- --  -- -- -- -- 70 75 62 6c  |------------publ|+00000050:  69 63 20 73 74 61 74 69  63 -- 76 6f 69 64 20 6d  |ic static-void m|+00000060:  61 69 6e 28 53 74 72 69  6e 67 5b 5d -- -- -- --  |ain(String[]----|+Hello.java:     5: 25:    138:	+00000080:  -- -- -- -- -- -- -- --  -- -- 48 65 6c 6c 6f 20  |----------Hello |+00000090:  57 6f 72 6c 64 21 22 29  3b -- -- -- -- -- -- --  |World!");-------| Hello.pdf:     1:  8:      7:	 00000000:  -- -- -- -- -- -- -- 33  0a 25 c4 e5 f2 e5 eb a7  |-------3J%......| 00000010:  f3 a0 d0 c4 c6 -- -- --  -- -- -- -- -- -- -- --  |.....-----------|

tests/out/Hello_wsS-X-ounkbT.out

@@ -10,26 +10,27 @@ Hello.java:     1:  1:      0:	 00000000:  69 6d 70 6f 72 74 20 6a  61 76 61 2e 6c 61 6e 67  |import java.lang| 00000010:  2e 2a 3b -- -- -- -- --  -- -- -- -- -- -- -- --  |.*;-------------|-Hello.java:     2:  1:     20:	-00000010:  -- -- -- -- 70 75 62 6c  69 63 20 63 6c 61 73 73  |----public class|-Hello.java+     2+ 14+     33+	-00000020:  -- 48 65 6c 6c 6f 20 2f  2f -- -- -- -- -- -- --  |-Hello //-------|-Hello.java+     2+ 23+     42+	-00000020:  -- -- -- -- -- -- -- --  -- -- 70 72 69 6e 74 73  |----------prints|-00000030:  20 61 -- -- -- -- -- --  -- -- -- -- -- -- -- --  | a--------------|-Hello.java+     2+ 32+     51+	-00000030:  -- -- -- 48 65 6c 6c 6f  20 57 6f 72 6c 64 21 --  |---Hello World!-|-Hello.java+     2+ 45+     64+	-00000040:  67 72 65 65 74 69 6e 67  0a 7b -- -- -- -- -- --  |greetingJ{------|-Hello.java:     3:  3:     75:	-00000040:  -- -- -- -- -- -- -- --  -- -- -- 70 75 62 6c 69  |-----------publi|-00000050:  63 20 73 74 61 74 69 63  -- -- -- -- -- -- -- --  |c static--------|-Hello.java+     3+ 17+     89+	-00000050:  -- -- -- -- -- -- -- --  -- 76 6f 69 64 20 6d 61  |---------void ma|-00000060:  69 6e 28 53 74 72 69 6e  67 5b 5d -- -- -- -- --  |in(String[]-----|-Hello.java:     4: 25:    137:	-00000080:  -- -- -- -- -- -- -- --  -- 48 65 6c 6c 6f 20 57  |---------Hello W|-00000090:  6f 72 6c 64 21 22 29 3b  -- -- -- -- -- -- -- --  |orld!");--------|+Hello.java:     3:  1:     21:	+00000010:  -- -- -- -- -- 70 75 62  6c 69 63 20 63 6c 61 73  |-----public clas|+00000020:  73 -- -- -- -- -- -- --  -- -- -- -- -- -- -- --  |s---------------|+Hello.java+     3+ 14+     34+	+00000020:  -- -- 48 65 6c 6c 6f 20  2f 2f -- -- -- -- -- --  |--Hello //------|+Hello.java+     3+ 23+     43+	+00000020:  -- -- -- -- -- -- -- --  -- -- -- 70 72 69 6e 74  |-----------print|+00000030:  73 20 61 -- -- -- -- --  -- -- -- -- -- -- -- --  |s a-------------|+Hello.java+     3+ 32+     52+	+00000030:  -- -- -- -- 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |----Hello World!|+Hello.java+     3+ 45+     65+	+00000040:  -- 67 72 65 65 74 69 6e  67 0a 7b -- -- -- -- --  |-greetingJ{-----|+Hello.java:     4:  3:     76:	+00000040:  -- -- -- -- -- -- -- --  -- -- -- -- 70 75 62 6c  |------------publ|+00000050:  69 63 20 73 74 61 74 69  63 -- -- -- -- -- -- --  |ic static-------|+Hello.java+     4+ 17+     90+	+00000050:  -- -- -- -- -- -- -- --  -- -- 76 6f 69 64 20 6d  |----------void m|+00000060:  61 69 6e 28 53 74 72 69  6e 67 5b 5d -- -- -- --  |ain(String[]----|+Hello.java:     5: 25:    138:	+00000080:  -- -- -- -- -- -- -- --  -- -- 48 65 6c 6c 6f 20  |----------Hello |+00000090:  57 6f 72 6c 64 21 22 29  3b -- -- -- -- -- -- --  |World!");-------| Hello.pdf:     1:  8:      7:	 00000000:  -- -- -- -- -- -- -- 33  0a 25 c4 e5 f2 e5 eb a7  |-------3J%......| 00000010:  f3 a0 d0 c4 c6 -- -- --  -- -- -- -- -- -- -- --  |.....-----------|

tests/out/Hello_wsS-X-unkbT.out

@@ -39,48 +39,48 @@ Hello.java:     1:  1:      0:	 00000000:  69 6d 70 6f 72 74 20 6a  61 76 61 2e 6c 61 6e 67  |import java.lang| 00000010:  2e 2a 3b 0a -- -- -- --  -- -- -- -- -- -- -- --  |.*;J------------|-Hello.java:     2:  1:     20:	-00000010:  -- -- -- -- 70 75 62 6c  69 63 20 63 6c 61 73 73  |----public class|-00000020:  20 48 65 6c 6c 6f 20 2f  2f 20 70 72 69 6e 74 73  | Hello // prints|-00000030:  20 61 20 48 65 6c 6c 6f  20 57 6f 72 6c 64 21 20  | a Hello World! |-00000040:  67 72 65 65 74 69 6e 67  0a -- -- -- -- -- -- --  |greetingJ-------|-Hello.java+     2+ 14+     33+	-00000010:  -- -- -- -- 70 75 62 6c  69 63 20 63 6c 61 73 73  |----public class|-00000020:  20 48 65 6c 6c 6f 20 2f  2f 20 70 72 69 6e 74 73  | Hello // prints|-00000030:  20 61 20 48 65 6c 6c 6f  20 57 6f 72 6c 64 21 20  | a Hello World! |-00000040:  67 72 65 65 74 69 6e 67  0a -- -- -- -- -- -- --  |greetingJ-------|-Hello.java+     2+ 23+     42+	-00000010:  -- -- -- -- 70 75 62 6c  69 63 20 63 6c 61 73 73  |----public class|-00000020:  20 48 65 6c 6c 6f 20 2f  2f 20 70 72 69 6e 74 73  | Hello // prints|-00000030:  20 61 20 48 65 6c 6c 6f  20 57 6f 72 6c 64 21 20  | a Hello World! |-00000040:  67 72 65 65 74 69 6e 67  0a -- -- -- -- -- -- --  |greetingJ-------|-Hello.java+     2+ 32+     51+	-00000010:  -- -- -- -- 70 75 62 6c  69 63 20 63 6c 61 73 73  |----public class|-00000020:  20 48 65 6c 6c 6f 20 2f  2f 20 70 72 69 6e 74 73  | Hello // prints|-00000030:  20 61 20 48 65 6c 6c 6f  20 57 6f 72 6c 64 21 20  | a Hello World! |-00000040:  67 72 65 65 74 69 6e 67  0a -- -- -- -- -- -- --  |greetingJ-------|-Hello.java+     2+ 45+     64+	-00000010:  -- -- -- -- 70 75 62 6c  69 63 20 63 6c 61 73 73  |----public class|-00000020:  20 48 65 6c 6c 6f 20 2f  2f 20 70 72 69 6e 74 73  | Hello // prints|-00000030:  20 61 20 48 65 6c 6c 6f  20 57 6f 72 6c 64 21 20  | a Hello World! |-00000040:  67 72 65 65 74 69 6e 67  0a 7b 20 70 75 62 6c 69  |greetingJ{ publi|-00000050:  63 20 73 74 61 74 69 63  20 76 6f 69 64 20 6d 61  |c static void ma|-00000060:  69 6e 28 53 74 72 69 6e  67 5b 5d 20 61 72 67 29  |in(String[] arg)|-00000070:  0a -- -- -- -- -- -- --  -- -- -- -- -- -- -- --  |J---------------|-Hello.java+     3+  3+     75+	-00000040:  -- -- -- -- -- -- -- --  -- 7b 20 70 75 62 6c 69  |---------{ publi|-00000050:  63 20 73 74 61 74 69 63  20 76 6f 69 64 20 6d 61  |c static void ma|-00000060:  69 6e 28 53 74 72 69 6e  67 5b 5d 20 61 72 67 29  |in(String[] arg)|-00000070:  0a -- -- -- -- -- -- --  -- -- -- -- -- -- -- --  |J---------------|-Hello.java+     3+ 17+     89+	-00000040:  -- -- -- -- -- -- -- --  -- 7b 20 70 75 62 6c 69  |---------{ publi|-00000050:  63 20 73 74 61 74 69 63  20 76 6f 69 64 20 6d 61  |c static void ma|-00000060:  69 6e 28 53 74 72 69 6e  67 5b 5d 20 61 72 67 29  |in(String[] arg)|-00000070:  0a -- -- -- -- -- -- --  -- -- -- -- -- -- -- --  |J---------------|-Hello.java:     4: 25:    137:	-00000070:  -- 20 20 7b 20 53 79 73  74 65 6d 2e 6f 75 74 2e  |-  { System.out.|-00000080:  70 72 69 6e 74 6c 6e 28  22 48 65 6c 6c 6f 20 57  |println("Hello W|-00000090:  6f 72 6c 64 21 22 29 3b  0a -- -- -- -- -- -- --  |orld!");J-------|+Hello.java:     3:  1:     21:	+00000010:  -- -- -- -- -- 70 75 62  6c 69 63 20 63 6c 61 73  |-----public clas|+00000020:  73 20 48 65 6c 6c 6f 20  2f 2f 20 70 72 69 6e 74  |s Hello // print|+00000030:  73 20 61 20 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |s a Hello World!|+00000040:  20 67 72 65 65 74 69 6e  67 0a -- -- -- -- -- --  | greetingJ------|+Hello.java+     3+ 14+     34+	+00000010:  -- -- -- -- -- 70 75 62  6c 69 63 20 63 6c 61 73  |-----public clas|+00000020:  73 20 48 65 6c 6c 6f 20  2f 2f 20 70 72 69 6e 74  |s Hello // print|+00000030:  73 20 61 20 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |s a Hello World!|+00000040:  20 67 72 65 65 74 69 6e  67 0a -- -- -- -- -- --  | greetingJ------|+Hello.java+     3+ 23+     43+	+00000010:  -- -- -- -- -- 70 75 62  6c 69 63 20 63 6c 61 73  |-----public clas|+00000020:  73 20 48 65 6c 6c 6f 20  2f 2f 20 70 72 69 6e 74  |s Hello // print|+00000030:  73 20 61 20 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |s a Hello World!|+00000040:  20 67 72 65 65 74 69 6e  67 0a -- -- -- -- -- --  | greetingJ------|+Hello.java+     3+ 32+     52+	+00000010:  -- -- -- -- -- 70 75 62  6c 69 63 20 63 6c 61 73  |-----public clas|+00000020:  73 20 48 65 6c 6c 6f 20  2f 2f 20 70 72 69 6e 74  |s Hello // print|+00000030:  73 20 61 20 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |s a Hello World!|+00000040:  20 67 72 65 65 74 69 6e  67 0a -- -- -- -- -- --  | greetingJ------|+Hello.java+     3+ 45+     65+	+00000010:  -- -- -- -- -- 70 75 62  6c 69 63 20 63 6c 61 73  |-----public clas|+00000020:  73 20 48 65 6c 6c 6f 20  2f 2f 20 70 72 69 6e 74  |s Hello // print|+00000030:  73 20 61 20 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |s a Hello World!|+00000040:  20 67 72 65 65 74 69 6e  67 0a 7b 20 70 75 62 6c  | greetingJ{ publ|+00000050:  69 63 20 73 74 61 74 69  63 20 76 6f 69 64 20 6d  |ic static void m|+00000060:  61 69 6e 28 53 74 72 69  6e 67 5b 5d 20 61 72 67  |ain(String[] arg|+00000070:  29 0a -- -- -- -- -- --  -- -- -- -- -- -- -- --  |)J--------------|+Hello.java+     4+  3+     76+	+00000040:  -- -- -- -- -- -- -- --  -- -- 7b 20 70 75 62 6c  |----------{ publ|+00000050:  69 63 20 73 74 61 74 69  63 20 76 6f 69 64 20 6d  |ic static void m|+00000060:  61 69 6e 28 53 74 72 69  6e 67 5b 5d 20 61 72 67  |ain(String[] arg|+00000070:  29 0a -- -- -- -- -- --  -- -- -- -- -- -- -- --  |)J--------------|+Hello.java+     4+ 17+     90+	+00000040:  -- -- -- -- -- -- -- --  -- -- 7b 20 70 75 62 6c  |----------{ publ|+00000050:  69 63 20 73 74 61 74 69  63 20 76 6f 69 64 20 6d  |ic static void m|+00000060:  61 69 6e 28 53 74 72 69  6e 67 5b 5d 20 61 72 67  |ain(String[] arg|+00000070:  29 0a -- -- -- -- -- --  -- -- -- -- -- -- -- --  |)J--------------|+Hello.java:     5: 25:    138:	+00000070:  -- -- 20 20 7b 20 53 79  73 74 65 6d 2e 6f 75 74  |--  { System.out|+00000080:  2e 70 72 69 6e 74 6c 6e  28 22 48 65 6c 6c 6f 20  |.println("Hello |+00000090:  57 6f 72 6c 64 21 22 29  3b 0a -- -- -- -- -- --  |World!");J------| Hello.pdf:     1:  8:      7:	 00000000:  25 50 44 46 2d 31 2e 33  0a 25 c4 e5 f2 e5 eb a7  |%PDF-1.3J%......| 00000010:  f3 a0 d0 c4 c6 0a -- --  -- -- -- -- -- -- -- --  |.....J----------|

tests/out/Hello_wsS-X.out

@@ -21,17 +21,17 @@ 00000000:  69 6d 70 6f 72 74 20 6a  61 76 61 2e 6c 61 6e 67  |import java.lang| 00000010:  2e 2a 3b 0a -- -- -- --  -- -- -- -- -- -- -- --  |.*;J------------| Hello.java:-00000010:  -- -- -- -- 70 75 62 6c  69 63 20 63 6c 61 73 73  |----public class|-00000020:  20 48 65 6c 6c 6f 20 2f  2f 20 70 72 69 6e 74 73  | Hello // prints|-00000030:  20 61 20 48 65 6c 6c 6f  20 57 6f 72 6c 64 21 20  | a Hello World! |-00000040:  67 72 65 65 74 69 6e 67  0a 7b 20 70 75 62 6c 69  |greetingJ{ publi|-00000050:  63 20 73 74 61 74 69 63  20 76 6f 69 64 20 6d 61  |c static void ma|-00000060:  69 6e 28 53 74 72 69 6e  67 5b 5d 20 61 72 67 29  |in(String[] arg)|-00000070:  0a -- -- -- -- -- -- --  -- -- -- -- -- -- -- --  |J---------------|+00000010:  -- -- -- -- -- 70 75 62  6c 69 63 20 63 6c 61 73  |-----public clas|+00000020:  73 20 48 65 6c 6c 6f 20  2f 2f 20 70 72 69 6e 74  |s Hello // print|+00000030:  73 20 61 20 48 65 6c 6c  6f 20 57 6f 72 6c 64 21  |s a Hello World!|+00000040:  20 67 72 65 65 74 69 6e  67 0a 7b 20 70 75 62 6c  | greetingJ{ publ|+00000050:  69 63 20 73 74 61 74 69  63 20 76 6f 69 64 20 6d  |ic static void m|+00000060:  61 69 6e 28 53 74 72 69  6e 67 5b 5d 20 61 72 67  |ain(String[] arg|+00000070:  29 0a -- -- -- -- -- --  -- -- -- -- -- -- -- --  |)J--------------| Hello.java:-00000070:  -- 20 20 7b 20 53 79 73  74 65 6d 2e 6f 75 74 2e  |-  { System.out.|-00000080:  70 72 69 6e 74 6c 6e 28  22 48 65 6c 6c 6f 20 57  |println("Hello W|-00000090:  6f 72 6c 64 21 22 29 3b  0a -- -- -- -- -- -- --  |orld!");J-------|+00000070:  -- -- 20 20 7b 20 53 79  73 74 65 6d 2e 6f 75 74  |--  { System.out|+00000080:  2e 70 72 69 6e 74 6c 6e  28 22 48 65 6c 6c 6f 20  |.println("Hello |+00000090:  57 6f 72 6c 64 21 22 29  3b 0a -- -- -- -- -- --  |World!");J------| Hello.pdf: 00000000:  25 50 44 46 2d 31 2e 33  0a 25 c4 e5 f2 e5 eb a7  |%PDF-1.3J%......| 00000010:  f3 a0 d0 c4 c6 0a -- --  -- -- -- -- -- -- -- --  |.....J----------|

tests/out/Hello_wsS-cv.out

@@ -1,6 +1,6 @@ Hello.bat:0 Hello.class:6-Hello.java:2+Hello.java:3 Hello.pdf:33 Hello.sh:0 Hello.txt:0

tests/out/Hello_wsS-n.out

@@ -2,9 +2,9 @@ Hello.bat|2|echo "Hello World!" Binary file Hello.class matches Hello.java:1:import java.lang.*;-Hello.java:2:public class Hello // prints a Hello World! greeting-Hello.java|3|{ public static void main(String[] arg)-Hello.java:4:  { System.out.println("Hello World!");+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java|4|{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!"); Binary file Hello.pdf matches Hello.sh:1:#!/bin/sh Hello.sh|2|echo "Hello World!"

tests/out/Hello_wsS-nC1.out

@@ -2,10 +2,14 @@ Hello.bat:2:echo "Hello World!" Binary file Hello.class matches Hello.java:1:import java.lang.*;-Hello.java:2:public class Hello // prints a Hello World! greeting-Hello.java:3:{ public static void main(String[] arg)-Hello.java:4:  { System.out.println("Hello World!");-Hello.java-5-  }+Hello.java-2-+--+--+Hello.java-2-+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java:4:{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!");+Hello.java-6-  } Hello.pdf-2- 00000000-  -- -- -- -- -- -- -- --  -- 25 c4 e5 f2 e5 eb a7  |---------%......| 00000010-  f3 a0 d0 c4 c6 0a -- --  -- -- -- -- -- -- -- --  |.....J----------|

tests/out/Hello_wsS-nkbT.out

@@ -2,9 +2,9 @@ Hello.bat|     2|  1|     10|	echo "Hello World!" Binary file Hello.class matches Hello.java:     1:  1:      0:	import java.lang.*;-Hello.java:     2:  1:     20:	public class Hello // prints a Hello World! greeting-Hello.java|     3|  1|     73|	{ public static void main(String[] arg)-Hello.java:     4: 25:    137:	  { System.out.println("Hello World!");+Hello.java:     3:  1:     21:	public class Hello // prints a Hello World! greeting+Hello.java|     4|  1|     74|	{ public static void main(String[] arg)+Hello.java:     5: 25:    138:	  { System.out.println("Hello World!"); Binary file Hello.pdf matches Hello.sh:     1:  8:      7:	#!/bin/sh Hello.sh|     2|  1|     10|	echo "Hello World!"

tests/out/Hello_wsS-nv.out

@@ -1,7 +1,8 @@ Hello.bat:1:#!/bin/sh Binary file Hello.class matches-Hello.java:5:  }-Hello.java:6:}+Hello.java:2:+Hello.java:6:  }+Hello.java:7:} Hello.pdf:1:%PDF-1.3 Binary file Hello.pdf matches Hello.sh:1:#!/bin/sh

tests/out/Hello_wsS-nvC1.out

@@ -1,9 +1,14 @@ Hello.bat:1:#!/bin/sh Hello.bat-2-echo "Hello World!" Binary file Hello.class matches-Hello.java-4-  { System.out.println("Hello World!");-Hello.java:5:  }-Hello.java:6:}+Hello.java-1-import java.lang.*;+Hello.java:2:+Hello.java-3-public class Hello // prints a Hello World! greeting+--+--+Hello.java-5-  { System.out.println("Hello World!");+Hello.java:6:  }+Hello.java:7:} Hello.pdf:1:%PDF-1.3 Binary file Hello.pdf matches Hello.sh:1:#!/bin/sh

tests/out/Hello_wsS-nvy.out

@@ -2,11 +2,12 @@ Hello.bat-2-echo "Hello World!" Binary file Hello.class matches Hello.java-1-import java.lang.*;-Hello.java-2-public class Hello // prints a Hello World! greeting-Hello.java-3-{ public static void main(String[] arg)-Hello.java-4-  { System.out.println("Hello World!");-Hello.java:5:  }-Hello.java:6:}+Hello.java:2:+Hello.java-3-public class Hello // prints a Hello World! greeting+Hello.java-4-{ public static void main(String[] arg)+Hello.java-5-  { System.out.println("Hello World!");+Hello.java:6:  }+Hello.java:7:} Hello.pdf:1:%PDF-1.3 Binary file Hello.pdf matches Hello.sh:1:#!/bin/sh

tests/out/Hello_wsS-ny.out

@@ -2,11 +2,12 @@ Hello.bat:2:echo "Hello World!" Binary file Hello.class matches Hello.java:1:import java.lang.*;-Hello.java:2:public class Hello // prints a Hello World! greeting-Hello.java:3:{ public static void main(String[] arg)-Hello.java:4:  { System.out.println("Hello World!");-Hello.java-5-  }-Hello.java-6-}+Hello.java-2-+Hello.java:3:public class Hello // prints a Hello World! greeting+Hello.java:4:{ public static void main(String[] arg)+Hello.java:5:  { System.out.println("Hello World!");+Hello.java-6-  }+Hello.java-7-} Hello.pdf-1-%PDF-1.3 Hello.pdf:3:4 0 obj Hello.pdf:4:<< /Length 5 0 R /Filter /FlateDecode >>

tests/out/Hello_wsS-on.out

@@ -3,15 +3,15 @@ Hello World!" Binary file Hello.class matches Hello.java:1:import java.lang.*;-Hello.java:2:public class+Hello.java:3:public class Hello // prints a Hello World! greeting-Hello.java|3|{+Hello.java|4|{ public static void main(String[]-Hello.java:4:Hello World!");+Hello.java:5:Hello World!"); Binary file Hello.pdf matches Hello.sh:1:sh Hello.sh|2|echo

tests/out/Hello_wsS-onkbT.out

@@ -3,15 +3,15 @@ Hello World!" Binary file Hello.class matches Hello.java:     1:  1:      0:	import java.lang.*;-Hello.java:     2:  1:     20:	public class+Hello.java:     3:  1:     21:	public class Hello // prints a Hello World! greeting-Hello.java|     3|  1|     73|	{+Hello.java|     4|  1|     74|	{ public static void main(String[]-Hello.java:     4: 25:    137:	Hello World!");+Hello.java:     5: 25:    138:	Hello World!"); Binary file Hello.pdf matches Hello.sh:     1:  8:      7:	sh Hello.sh|     2|  1|     10|	echo

tests/out/Hello_wsS-ounkbT.out

@@ -3,15 +3,15 @@ Hello.bat+     2+  7+     16+	Hello World!" Binary file Hello.class matches Hello.java:     1:  1:      0:	import java.lang.*;-Hello.java:     2:  1:     20:	public class-Hello.java+     2+ 14+     33+	Hello //-Hello.java+     2+ 23+     42+	prints a-Hello.java+     2+ 32+     51+	Hello World!-Hello.java+     2+ 45+     64+	greeting-Hello.java|     3|  1|     73|	{-Hello.java+     3+  3+     75+	public static-Hello.java+     3+ 17+     89+	void main(String[]-Hello.java:     4: 25:    137:	Hello World!");+Hello.java:     3:  1:     21:	public class+Hello.java+     3+ 14+     34+	Hello //+Hello.java+     3+ 23+     43+	prints a+Hello.java+     3+ 32+     52+	Hello World!+Hello.java+     3+ 45+     65+	greeting+Hello.java|     4|  1|     74|	{+Hello.java+     4+  3+     76+	public static+Hello.java+     4+ 17+     90+	void main(String[]+Hello.java:     5: 25:    138:	Hello World!"); Binary file Hello.pdf matches Hello.sh:     1:  8:      7:	sh Hello.sh|     2|  1|     10|	echo

tests/out/Hello_wsS-unkbT.out

@@ -3,15 +3,15 @@ Hello.bat+     2+  7+     16+	echo "Hello World!" Binary file Hello.class matches Hello.java:     1:  1:      0:	import java.lang.*;-Hello.java:     2:  1:     20:	public class Hello // prints a Hello World! greeting-Hello.java+     2+ 14+     33+	public class Hello // prints a Hello World! greeting-Hello.java+     2+ 23+     42+	public class Hello // prints a Hello World! greeting-Hello.java+     2+ 32+     51+	public class Hello // prints a Hello World! greeting-Hello.java+     2+ 45+     64+	public class Hello // prints a Hello World! greeting-Hello.java|     3|  1|     73|	{ public static void main(String[] arg)-Hello.java+     3+  3+     75+	{ public static void main(String[] arg)-Hello.java+     3+ 17+     89+	{ public static void main(String[] arg)-Hello.java:     4: 25:    137:	  { System.out.println("Hello World!");+Hello.java:     3:  1:     21:	public class Hello // prints a Hello World! greeting+Hello.java+     3+ 14+     34+	public class Hello // prints a Hello World! greeting+Hello.java+     3+ 23+     43+	public class Hello // prints a Hello World! greeting+Hello.java+     3+ 32+     52+	public class Hello // prints a Hello World! greeting+Hello.java+     3+ 45+     65+	public class Hello // prints a Hello World! greeting+Hello.java|     4|  1|     74|	{ public static void main(String[] arg)+Hello.java+     4+  3+     76+	{ public static void main(String[] arg)+Hello.java+     4+ 17+     90+	{ public static void main(String[] arg)+Hello.java:     5: 25:    138:	  { System.out.println("Hello World!"); Binary file Hello.pdf matches Hello.sh:     1:  8:      7:	#!/bin/sh Hello.sh|     2|  1|     10|	echo "Hello World!"

tests/verify.sh

@@ -106,7 +106,16 @@ $UG -Fiwco -f lorem lorem.utf16.txt | $DIFF out/lorem.utf16.out || ERR "-Fiwco - printf . $UG -Fiwco -f lorem lorem.utf32.txt | $DIFF out/lorem.utf32.out || ERR "-Fiwco -f lorem lorem.utf32.txt" printf .-cat lorem | $UG -Fjwco -Q LATIN1 -f - lorem.latin1.txt | $DIFF out/lorem.latin1.out || ERR "-Fiwco -Q LATIN1 -f lorem lorem.latin1.txt"+cat lorem | $UG -Fiwco -Q LATIN1 -f - lorem.latin1.txt | $DIFF out/lorem.latin1.out || ERR "-Fiwco -Q LATIN1 -f lorem lorem.latin1.txt"++printf .+$UG -ci hello Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt \+    | $DIFF out/Hello_Hello-ci.out \+    || ERR "-ci hello Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt"+printf .+$UG -cj hello Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt \+    | $DIFF out/Hello_Hello-cj.out \+    || ERR "-cj hello Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt"  printf . $UG -e Hello -e '".*?"' Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt \@@ -132,7 +141,7 @@ $UG --range=1,1   Hello Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hell for PAT in '' 'Hello' '\w+\s+\S+' 'nomatch' ; do   FN=`echo "Hello_$PAT" | tr -Cd '[:alnum:]_'`   for OUT in '' '-I' '-W' '-X' ; do-    for OPS in '' '-l' '-lv' '-c' '-co' '-cv' '-n' '-nkbT' '-unkbT' '-o' '-ounkbT' '-on' '-onkbT' '-nv' '-nC1' '-nvC1' '-ny' '-nvy' ; do+    for OPS in '' '-l' '-lv' '-c' '-co' '-cv' '-n' '-nkbT' '-unkbT' '-o' '-on' '-onkbT' '-ounkbT' '-nv' '-nC1' '-nvC1' '-ny' '-nvy' ; do       printf .       $UG -U $OUT $OPS "$PAT" Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt \         | $DIFF "out/$FN$OUT$OPS.out" \@@ -140,13 +149,61 @@ for PAT in '' 'Hello' '\w+\s+\S+' 'nomatch' ; do     done   done   for OUT in '--csv' '--json' '--xml' ; do-    for OPS in '' '-l' '-lv' '-c' '-co' '-cv' '-n' '-nkb' '-unkb' '-o' '-ounkb' '-on' '-onkb' ; do+    for OPS in '' '-l' '-lv' '-c' '-co' '-cv' '-n' '-nkb' '-unkb' '-o' '-on' '-onkb' '-ounkb' ; do       printf .       $UG -U $OUT $OPS "$PAT" Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt \         | $DIFF "out/$FN$OUT$OPS.out" \         || ERR "$OUT $OPS $PAT Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt"     done   done+  printf .+  $UG -U --format-open='%m) %f:%~' --format='  %m) %n,%k %w-%d%~' --format-close='%~' "$PAT" Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt \+    | $DIFF "out/$FN--format.out" \+    || ERR "--format-open='%m) %f:%~' --format='  %m) %n,%k %w-%d%~' --format-close='%~' $PAT Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt"+  printf .+  $UG -U -Iw  "$PAT" Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt \+    | $DIFF "out/$FN-Iw.out" \+    || ERR "-w $PAT Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt"+  printf .+  $UG -U -Ix  "$PAT" Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt \+    | $DIFF "out/$FN-Ix.out" \+    || ERR "-x $PAT Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt"+  printf .+  $UG -U -F  "$PAT" Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt \+    | $DIFF "out/$FN-F.out" \+    || ERR "-F $PAT Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt"+  printf .+  $UG -U -Fw "$PAT" Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt \+    | $DIFF "out/$FN-Fw.out" \+    || ERR "-Fw $PAT Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt"+  printf .+  $UG -U -Fx "$PAT" Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt \+    | $DIFF "out/$FN-Fx.out" \+    || ERR "-Fx $PAT Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt"+  printf .+  if [ "$PAT" == '\w+\s+\S+' ]; then+    $UG -U -G '\w\+\s\+\S\+' Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt \+      | $DIFF "out/$FN-G.out" \+      || ERR "-G $PAT Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt"+  else+    $UG -U -G "$PAT" Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt \+      | $DIFF "out/$FN-G.out" \+      || ERR "-G $PAT Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt"+  fi+  if [ "$have_boost_regex" == yes ]; then+    printf .+    $UG -U -P  "$PAT" Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt \+      | $DIFF "out/$FN-P.out" \+      || ERR "-P $PAT Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt"+    printf .+    $UG -U -Pw "$PAT" Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt \+      | $DIFF "out/$FN-Pw.out" \+      || ERR "-Pw $PAT Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt"+    printf .+    $UG -U -Px "$PAT" Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt \+      | $DIFF "out/$FN-Px.out" \+      || ERR "-Px $PAT Hello.bat Hello.class Hello.java Hello.pdf Hello.sh Hello.txt"+  fi done  printf .