whole_func_string: function handleEmptyListItem() {
  				function isFirstOrLastLi(first) {
  					var node = containerBlock[first ? 'firstChild' : 'lastChild'];
  
  					// Find first/last element since there might be whitespace there
  					while (node) {
  						if (node.nodeType == 1) {
  							break;
  						}
  
  						node = node[first ? 'nextSibling' : 'previousSibling'];
  					}
  
  					return node === parentBlock;
  				};
  
  				newBlock = newBlockName ? createNewBlock(newBlockName) : dom.create('BR');
  
  				if (isFirstOrLastLi(true) && isFirstOrLastLi()) {
  					// Is first and last list item then replace the OL/UL with a text block
  					dom.replace(newBlock, containerBlock);
  				} else if (isFirstOrLastLi(true)) {
  					// First LI in list then remove LI and add text block before list
  					containerBlock.parentNode.insertBefore(newBlock, containerBlock);
  				} else if (isFirstOrLastLi()) {
  					// Last LI in list then temove LI and add text block after list
  					dom.insertAfter(newBlock, containerBlock);
  					renderBlockOnIE(newBlock);
  				} else {
  					// Middle LI in list the split the list and insert a text block in the middle
  					// Extract after fragment and insert it after the current block
  					tmpRng = rng.cloneRange();
  					tmpRng.setStartAfter(parentBlock);
  					tmpRng.setEndAfter(containerBlock);
  					fragment = tmpRng.extractContents();
  					dom.insertAfter(fragment, containerBlock);
  					dom.insertAfter(newBlock, containerBlock);
  				}
  
  				dom.remove(parentBlock);
  				moveToCaretPosition(newBlock);
  				undoManager.add();
  			}
func_code_string: function handleEmptyListItem() {
  				function isFirstOrLastLi(first) {
  					var node = containerBlock[first ? 'firstChild' : 'lastChild'];
  
  					// Find first/last element since there might be whitespace there
  					while (node) {
  						if (node.nodeType == 1) {
  							break;
  						}
  
  						node = node[first ? 'nextSibling' : 'previousSibling'];
  					}
  
  					return node === parentBlock;
  				};
  
  				newBlock = newBlockName ? createNewBlock(newBlockName) : dom.create('BR');
  
  				if (isFirstOrLastLi(true) && isFirstOrLastLi()) {
  					// Is first and last list item then replace the OL/UL with a text block
  					dom.replace(newBlock, containerBlock);
  				} else if (isFirstOrLastLi(true)) {
  					// First LI in list then remove LI and add text block before list
  					containerBlock.parentNode.insertBefore(newBlock, containerBlock);
  				} else if (isFirstOrLastLi()) {
  					// Last LI in list then temove LI and add text block after list
  					dom.insertAfter(newBlock, containerBlock);
  					renderBlockOnIE(newBlock);
  				} else {
  					// Middle LI in list the split the list and insert a text block in the middle
  					// Extract after fragment and insert it after the current block
  					tmpRng = rng.cloneRange();
  					tmpRng.setStartAfter(parentBlock);
  					tmpRng.setEndAfter(containerBlock);
  					fragment = tmpRng.extractContents();
  					dom.insertAfter(fragment, containerBlock);
  					dom.insertAfter(newBlock, containerBlock);
  				}
  
  				dom.remove(parentBlock);
  				moveToCaretPosition(newBlock);
  				undoManager.add();
  			}
func_documentation_string: Inserts a block or br before/after or in the middle of a split list of the LI is empty