code: void mergeContiguousRegions( Collection<AbstractBlock> blocks ) {
  
  		AbstractIgnorableInstruction initialInstr = null;
  		List<AbstractBlock> toRemove = new ArrayList<> ();
  		StringBuilder sb = new StringBuilder();
  
  		// We only merge comments and blank regions to reduce their number
  		for( AbstractBlock block : blocks ) {
  			if( initialInstr == null ) {
  
  				if( block.getInstructionType() == AbstractBlock.COMMENT
  						|| block.getInstructionType() == AbstractBlock.BLANK ) {
  
  					AbstractIgnorableInstruction currentInstr = (AbstractIgnorableInstruction) block;
  					initialInstr = currentInstr;
  					sb = new StringBuilder( currentInstr.getContent());
  				}
  
  			} else if( initialInstr.getInstructionType() == block.getInstructionType()) {
  				toRemove.add( block );
  				sb.append( System.getProperty( "line.separator" ));
  				sb.append(((AbstractIgnorableInstruction) block).getContent());
  
  			} else {
  				initialInstr.setContent( sb.toString());
  				initialInstr = null;
  			}
  		}
  
  		// Remove the blocks that have been merged
  		blocks.removeAll( toRemove );
  
  		// In a second time, we can reduce facets and components too
  		for( AbstractBlock block : blocks ) {
  			if( block.getInstructionType() == AbstractBlock.COMPONENT
  					|| block.getInstructionType() == AbstractBlock.FACET )
  				mergeContiguousRegions(((AbstractBlockHolder) block).getInnerBlocks());
  		}
  	}
docs: Merges the contiguous regions for which it makes sense.
  <p>
  Contiguous comments are merged together, as well as contiguous blank regions.
  This reduces the number of regions.
  </p>
  
  @param blocks