Buggy code:
public class CreateGameEntryParser implements EntryParser { @ Override public boolean isParsable ( final String input ) { } @ Override public LogEntry parse ( final String input , final LineReader lineReader ) throws NotParsableException { <START_BUG> LogReader logReader = LogReaderUtils . fromInputAndExtraLineReader ( lineReader . readNextLine ( ) , lineReader , ( line ) -> true , ( ) -> new HashSet < > ( Arrays . asList ( new GameEntityEntryParser ( ) , new PlayerEntryParser ( ) ) ) ) ; <END_BUG> try { CreateGameLogEntry . Builder builder = new CreateGameLogEntry . Builder ( ) ; GameEntityLogEntry gameEntityLogEntry = ( ( GameEntityLogEntry ) ( logReader . readNextEntry ( ) ) ) ; builder . gameEntityLogEntry ( gameEntityLogEntry ) ; while ( logReader . hasNextEntry ( ) ) { PlayerLogEntry playerLogEntry = ( ( PlayerLogEntry ) ( logReader . readNextEntry ( ) ) ) ; builder . addPlayerLogEntry ( playerLogEntry ) ; } return builder . build ( ) ; } catch ( NotReadableException ex ) { throw new NotParsableException ( ex ) ; } } public static class GameEntityEntryParser implements EntryParser { @ Override public boolean isParsable ( final String input ) { } private static final Pattern EXTRACT_GAME_ENTITY_PATTERN = Pattern . compile ( ( ( "^" + ( Pattern . quote ( "[Power]<seq2seq4repair_space>GameState.DebugPrintPower()<seq2seq4repair_space>-<seq2seq4repair_space>GameEntity<seq2seq4repair_space>EntityID=" ) ) ) + "(.*)$" ) ) ; private static final Pattern EXTRACT_TAG_VALUE_PATTERN = Pattern . compile ( ( ( ( ( "^" + ( Pattern . quote ( "[Power]<seq2seq4repair_space>GameState.DebugPrintPower()<seq2seq4repair_space>-<seq2seq4repair_space>tag=" ) ) ) + "(.*)" ) + ( Pattern . quote ( "<seq2seq4repair_space>value=" ) ) ) + "(.*)$" ) ) ; @ Override public LogEntry parse ( final String input , final LineReader lineReader ) throws NotParsableException { GameEntityLogEntry . Builder builder = new GameEntityLogEntry . Builder ( ) ; Matcher gameEntityMatcher = CreateGameEntryParser . GameEntityEntryParser . EXTRACT_GAME_ENTITY_PATTERN . matcher ( input ) ; if ( ! ( gameEntityMatcher . find ( ) ) ) { throw new NotParsableException ( ) ; } String entityId = gameEntityMatcher . group ( 1 ) ; builder . entityId ( entityId ) ; Predicate < String > readCondition = ( line ) -> ( LogLineUtils . isFromNamedLogger ( line ) ) && ( ( LogLineUtils . countLeadingSpaces ( LogLineUtils . getContentFromLineFromNamedLogger ( line ) ) ) > 4 ) ; while ( lineReader . nextLineMatches ( readCondition ) ) { Matcher tagValueMatcher = CreateGameEntryParser . GameEntityEntryParser . EXTRACT_TAG_VALUE_PATTERN . matcher ( lineReader . readNextLine ( ) ) ; if ( ! ( tagValueMatcher . find ( ) ) ) { throw new NotParsableException ( ) ; } String tag = tagValueMatcher . group ( 1 ) ; String value = tagValueMatcher . group ( 2 ) ; builder . addTagValuePair ( tag , value ) ; } return builder . build ( ) ; } } public static class PlayerEntryParser implements EntryParser { @ Override public boolean isParsable ( final String input ) { } private static final Pattern EXTRACT_PLAYER_PATTERN = Pattern . compile ( ( ( ( ( ( ( ( ( ( ( "^" + ( Pattern . quote ( "[Power]<seq2seq4repair_space>GameState.DebugPrintPower()<seq2seq4repair_space>-<seq2seq4repair_space>Player<seq2seq4repair_space>EntityID=" ) ) ) + "(.*)" ) + ( Pattern . quote ( "<seq2seq4repair_space>PlayerID=" ) ) ) + "(.*)" ) + ( Pattern . quote ( "<seq2seq4repair_space>GameAccountId=[hi=" ) ) ) + "(.*)" ) + ( Pattern . quote ( "<seq2seq4repair_space>lo=" ) ) ) + "(.*)" ) + ( Pattern . quote ( "]" ) ) ) + ".*$" ) ) ; private static final Pattern EXTRACT_TAG_VALUE_PATTERN = Pattern . compile ( ( ( ( ( "^" + ( Pattern . quote ( "[Power]<seq2seq4repair_space>GameState.DebugPrintPower()<seq2seq4repair_space>-<seq2seq4repair_space>tag=" ) ) ) + "(.*)" ) + ( Pattern . quote ( "<seq2seq4repair_space>value=" ) ) ) + "(.*)$" ) ) ; @ Override public LogEntry parse ( final String input , final LineReader lineReader ) throws NotParsableException { PlayerLogEntry . Builder builder = new PlayerLogEntry . Builder ( ) ; Matcher playerMatcher = CreateGameEntryParser . PlayerEntryParser . EXTRACT_PLAYER_PATTERN . matcher ( input ) ; if ( ! ( playerMatcher . find ( ) ) ) { throw new NotParsableException ( ) ; } String entityId = playerMatcher . group ( 1 ) ; String playerId = playerMatcher . group ( 2 ) ; String gameAccountIdHi = playerMatcher . group ( 3 ) ; String gameAccountIdLo = playerMatcher . group ( 4 ) ; GameAccountId gameAccountId = new GameAccountId . Builder ( ) . hi ( gameAccountIdHi ) . lo ( gameAccountIdLo ) . build ( ) ; builder . entityId ( entityId ) ; builder . playerId ( playerId ) ; builder . gameAccountId ( gameAccountId ) ; Predicate < String > readCondition = ( line ) -> ( LogLineUtils . isFromNamedLogger ( line ) ) && ( ( LogLineUtils . countLeadingSpaces ( LogLineUtils . getContentFromLineFromNamedLogger ( line ) ) ) > 4 ) ; while ( lineReader . nextLineMatches ( readCondition ) ) { Matcher tagValueMatcher = CreateGameEntryParser . PlayerEntryParser . EXTRACT_TAG_VALUE_PATTERN . matcher ( lineReader . readNextLine ( ) ) ; if ( ! ( tagValueMatcher . find ( ) ) ) { throw new NotParsableException ( ) ; } String tag = tagValueMatcher . group ( 1 ) ; String value = tagValueMatcher . group ( 2 ) ; builder . addTagValuePair ( tag , value ) ; } return builder . build ( ) ; } } }

Fix:
LogReader logReader = LogReaderUtils . fromInputAndExtraLineReader ( lineReader . readNextLine ( ) , lineReader , ( line ) -> ( LogLineUtils . isFromNamedLogger ( line ) ) && ( ( LogLineUtils . countLeadingSpaces ( LogLineUtils . getContentFromLineFromNamedLogger ( line ) ) ) > 0 ) , ( ) -> new HashSet < > ( Arrays . asList ( new GameEntityEntryParser ( ) , new PlayerEntryParser ( ) ) ) ) ;