docs: public List<String> readFile(Reader reader) throws Exception {
          try {
              if (characteristics.doIgnoreCase()) {
                  if (characteristics.aloneOnLine()) {
                      // Batch separator is located alone on a line
                      // beginning at first position. Ignore case.
                      //
                      // Example with separator "GO":
                      //
                      //   create index blipp ( blopp )
                      //   go
                      //
                      // -or-
                      //
                      //   CREATE INDEX blipp ( blopp )
                      //   GO
                      //
                      return readFileIgnoreCaseAloneOnLine(reader);
                  } else {
                      // Batch separator may be located anywhere on a
                      // line. Ignore case.
                      //
                      // Example with separator ";":
                      //
                      //   CREATE INDEX blipp ( blopp );
                      //
                      // Beware of case (separator "GO"):
                      //
                      //   CREATE TABLE blipp (
                      //     pogopop INTEGER
                      //   )
                      //
                      // which will accept "go" in pogopop as separator.
                      //
                      // Since this is a "dangerous" case we do not support it!
                      throw new Exception("Batch separator detection scheme not implemented");
                  }
              } else {
                  if (characteristics.aloneOnLine()) {
                      // Batch separator is located alone on a line
                      // beginning at first position. Consider case.
                      //
                      // Example with separator "GO":
                      //
                      //   CREATE INDEX blipp ( blopp )
                      //   GO
                      //
                      // is handled while
                      //
                      //   create index blipp ( blopp )
                      //   go
                      //
                      // is not handled
                      //
                      return readFileConsiderCaseAloneOnLine(reader);
                  } else {
                      // Batch separator may be located anywhere on a
                      // line. Consider case.
                      //
                      // Example with separator ";":
                      //
                      //   CREATE INDEX blipp ( blopp );
                      //
                      // If we follow our coding standards (keeping SQL uppercased
                      // and identifiers/names lowercased) the following
                      // is also handled correctly (separator "GO"):
                      //
                      //   CREATE TABLE blipp (
                      //     pogopop INTEGER
                      //   )
                      //   GO
                      //
                      // which will -NOT- accidentaly accept "go" in pogopop as separator.
                      // In the latter case it would be better still to use the alone-on-line
                      // model.
                      //
                      return readFileConsiderCase(reader);
                  }
              }
          } catch (Exception e) {
              throw new Exception("Failed to read file: " + e.getMessage());
  
          } finally {
              if (options.debug) System.out.println("Done reading");
          }
      }