docs: function stripBlock( element, enterTag, toBeChecked ) {
  		var children = element.children;
  
  		// First, check if element's children may be wrapped with <p/div>.
  		// Ignore that <p/div> may not be allowed in element.parent.
  		// This will be fixed when removing parent or by toBeChecked rule.
  		if ( checkChildren( children, enterTag ) ) {
  			element.name = enterTag;
  			element.attributes = {};
  			// Check if this p/div was put in correct context.
  			// If not - strip parent.
  			toBeChecked.push( { check: 'parent-down', el: element } );
  			return;
  		}
  
  		var parent = element.parent,
  			shouldAutoP = parent.type == CKEDITOR.NODE_DOCUMENT_FRAGMENT || parent.name == 'body',
  			i, child, p;
  
  		for ( i = children.length; i > 0; ) {
  			child = children[ --i ];
  
  			// If parent requires auto paragraphing and child is inline node,
  			// insert this child into newly created paragraph.
  			if ( shouldAutoP && inlineNode( child )  ) {
  				if ( !p ) {
  					p = new CKEDITOR.htmlParser.element( enterTag );
  					p.insertAfter( element );
  
  					// Check if this p/div was put in correct context.
  					// If not - strip parent.
  					toBeChecked.push( { check: 'parent-down', el: p } );
  				}
  				p.add( child, 0 );
  			}
  			// Child which doesn't need to be auto paragraphed.
  			else {
  				p = null;
  				child.insertAfter( element );
  				// If inserted into invalid context, mark it and check
  				// after removing all elements.
  				if ( parent.type != CKEDITOR.NODE_DOCUMENT_FRAGMENT &&
  					child.type == CKEDITOR.NODE_ELEMENT &&
  					!DTD[ parent.name ][ child.name ]
  				)
  					toBeChecked.push( { check: 'el-up', el: child } );
  			}
  		}
  
  		// All children have been moved to element's parent, so remove it.
  		element.remove();
  	}