@Override
	public ControlFlow visitBlock(Stmt.Block block, DefinitelyAssignedSet environment) {
		DefinitelyAssignedSet nextEnvironment = environment;
		DefinitelyAssignedSet breakEnvironment = null;
		for(int i=0;i!=block.size();++i) {
			Stmt s = block.get(i);
			ControlFlow nf = visitStatement(s, nextEnvironment);
			nextEnvironment = nf.nextEnvironment;
			breakEnvironment = join(breakEnvironment,nf.breakEnvironment);
			// NOTE: following can arise when block contains unreachable code.
			if(nextEnvironment == null) {
				break;
			}
		}
		return new ControlFlow(nextEnvironment,breakEnvironment);
	}
@ Override public ControlFlow visitBlock ( Stmt . Block block , DefinitelyAssignedSet environment ) { DefinitelyAssignedSet nextEnvironment = environment ; DefinitelyAssignedSet breakEnvironment = null ; for ( int i = 0 ; i != block . size ( ) ; ++ i ) { Stmt s = block . get ( i ) ; ControlFlow nf = visitStatement ( s , nextEnvironment ) ; nextEnvironment = nf . nextEnvironment ; breakEnvironment = join ( breakEnvironment , nf . breakEnvironment ) ; if ( nextEnvironment == null ) { break ; } } return new ControlFlow ( nextEnvironment , breakEnvironment ) ; }
Check that all variables used in a given list of statements are
definitely assigned. Furthermore, update the set of definitely assigned
variables to include any which are definitely assigned at the end of
these statements.

@param block
The list of statements to visit.
@param environment
The set of variables which are definitely assigned.