Source:
<code>public SGLRParseResult actuallyParse(String text, @Nullable String filename, @Nullable JSGLRParserConfiguration parserConfig) throws SGLRException, InterruptedException { if(!parserConfig.implode || config.getImploderSetting() == ImploderImplementation.stratego) { parser.setTreeBuilder(new Asfix2TreeBuilder(termFactory)); } parser.setUseStructureRecovery(parserConfig.recovery); if(parserConfig.cursorPosition == Integer.MAX_VALUE) { parser.setCompletionParse(false, Integer.MAX_VALUE); } else { parser.setCompletionParse(parserConfig.completion, parserConfig.cursorPosition); } parser.setTimeout(parserConfig.timeout); final Disambiguator disambiguator = parser.getDisambiguator(); if(dialect != null) { disambiguator.setHeuristicFilters(true); } else { disambiguator.setHeuristicFilters(false); } String startSymbol = getOrDefaultStartSymbol(parserConfig); SGLRParseResult parseResult; <START> ret: try { <END> parseResult = parser.parse(text, filename, startSymbol); break ret; } catch(FilterException e) { if((e.getCause() == null || e.getCause() instanceof UnsupportedOperationException) && disambiguator.getFilterPriorities()) { disambiguator.setFilterPriorities(false); disambiguator.setFilterAssociativity(false); try { parseResult = parser.parse(text, filename, startSymbol); break ret; } finally { disambiguator.setFilterPriorities(true); } } throw e; } catch(StartSymbolException e) { if(dialect != null) { parseResult = parser.parse(text, filename, null); break ret; } else { throw e; } } if(config.getImploderSetting() == ImploderImplementation.stratego) { final implode_asfix_0_0 imploder = implode_asfix_0_0.instance; final Context strategoContext = new Context(this.termFactory); final IStrategoTerm syntaxTree = (IStrategoTerm) parseResult.output; return new SGLRParseResult(imploder.invoke(strategoContext, syntaxTree)); } else { return parseResult; } }</code><technical_language>This refactored a separate function, labeled breaks confusing</technical_language>

Target:
public SGLRParseResult actuallyParse(String text, @Nullable String filename, @Nullable JSGLRParserConfiguration parserConfig) throws SGLRException, InterruptedException { if(!parserConfig.implode || config.getImploderSetting() == ImploderImplementation.stratego) { parser.setTreeBuilder(new Asfix2TreeBuilder(termFactory)); } parser.setUseStructureRecovery(parserConfig.recovery); if(parserConfig.cursorPosition == Integer.MAX_VALUE) { parser.setCompletionParse(false, Integer.MAX_VALUE); } else { parser.setCompletionParse(parserConfig.completion, parserConfig.cursorPosition); } parser.setTimeout(parserConfig.timeout); final Disambiguator disambiguator = parser.getDisambiguator(); if(dialect != null) { disambiguator.setHeuristicFilters(true); } else { disambiguator.setHeuristicFilters(false); } SGLRParseResult parseResult = parseAndRecover(text, filename, disambiguator, getOrDefaultStartSymbol(parserConfig)); if(config.getImploderSetting() == ImploderImplementation.stratego) { final implode_asfix_0_0 imploder = implode_asfix_0_0.instance; final Context strategoContext = new Context(this.termFactory); final IStrategoTerm syntaxTree = (IStrategoTerm) parseResult.output; return new SGLRParseResult(imploder.invoke(strategoContext, syntaxTree)); } else { return parseResult; } }