boolean (GrIfStatement ifStatement, Collection<GrStatement> returnStatements) { GrStatement thenBranch = ifStatement.getThenBranch(); GrStatement elseBranch = ifStatement.getElseBranch(); if (elseBranch == null) return false; boolean tb = false; boolean eb = false; if (thenBranch instanceof GrReturnStatement) { tb = returnStatements.remove(thenBranch); } else if (thenBranch instanceof GrBlockStatement) { tb = checkTailOpenBlock(((GrBlockStatement) thenBranch).getBlock(), returnStatements); } if (elseBranch instanceof GrReturnStatement) { eb = returnStatements.remove(elseBranch); } else if (elseBranch instanceof GrBlockStatement) { eb = checkTailOpenBlock(((GrBlockStatement) elseBranch).getBlock(), returnStatements); } return tb && eb; }