code: public String[] getLine() throws IOException {
          String[] ret = EMPTY_STRING_ARRAY;
          record.clear();
          while (true) {
              reusableToken.reset();
              nextToken(reusableToken);
              switch (reusableToken.type) {
                  case TT_TOKEN:
                      record.add(reusableToken.content.toString());
                      break;
                  case TT_EORECORD:
                      record.add(reusableToken.content.toString());
                      break;
                  case TT_EOF:
                      if (reusableToken.isReady) {
                          record.add(reusableToken.content.toString());
                      } else {
                          ret = null;
                      }
                      break;
                  case TT_INVALID:
                  default:
                      // error: throw IOException
                      throw new IOException("(line " + getLineNumber() + ") invalid parse sequence");
                  // unreachable: break;
              }
              if (reusableToken.type != TT_TOKEN) {
                  break;
              }
          }
          if (!record.isEmpty()) {
              ret = (String[]) record.toArray(new String[record.size()]);
          }
          return ret;
      }
docs: Parses from the current point in the stream til
  the end of the current line.
  
  @return array of values til end of line
  ('null' when end of file has been reached)
  @throws IOException on parse error or input read-failure