@Override
  public boolean parse(String line, BuildOutputInstantReader reader, Consumer<? super BuildEvent> messageConsumer) {
    if (myParsingContext.getSessionEnded()) {
      checkErrorAfterMavenSessionEnded(line, messageConsumer);
      return false;
    }

    if (line == null || StringUtil.isEmptyOrSpaces(line)) {
      return false;
    }
    if (MavenSpyOutputParser.isSpyLog(line)) {
      mavenSpyOutputParser.processLine(line, messageConsumer);
      if (myParsingContext.getSessionEnded()) completeParsers(messageConsumer);
      return true;
    }
    else {
      sendMessageToAllParents(line, messageConsumer);
      MavenLogEntryReader.MavenLogEntry logLine = nextLine(line);

      MavenLogEntryReader mavenLogReader = wrapReader(reader);

      for (MavenLoggedEventParser event : myRegisteredEvents) {
        if (!event.supportsType(logLine.myType)) {
          continue;
        }
        if (event.checkLogLine(myParsingContext.getLastId(), myParsingContext, logLine, mavenLogReader, messageConsumer)) {
          return true;
        }
      }
    }
    return false;
  }
@Override
  public boolean parse(String line, BuildOutputInstantReader reader, Consumer<? super BuildEvent> messageConsumer)