code: private LineType parseLine(final LineType previousLineType, final String line) throws ExceptionParseException {
          switch (previousLineType) {
              case PRE_START:
                  return this.parseLine(line, LineType.CAUSE, LineType.PRE_START);
              case CAUSE:
              case SUB_CAUSE:
              case PRE_STACK_TRACE:
                  return this.parseLine(line, LineType.STACK_TRACE, LineType.PRE_STACK_TRACE);
              case STACK_TRACE:
                  return this.parseLine(line, LineType.STACK_TRACE, LineType.STACK_TRACE_END, LineType.SUB_CAUSE);
              case STACK_TRACE_END:
                  return this.parseLine(line, LineType.SUB_CAUSE, LineType.POST_END);
              case POST_END:
                  return this.parseLine(line, LineType.POST_END);
              default:
                  throw new IllegalArgumentException("Unsupported line type: " + previousLineType);
          }
      }
docs: Parse one line in the log.
  
  @param previousLineType
  Type of the previous line in the log. (The state the automaton
  is currently in.)
  @param line
  Line in question.
  @return Identified type of this line.
  @throws ExceptionParseException
  If parsing of the log file failed.