code: function rangeRequiresFix( range )
  	{
  		function isInlineCt( node )
  		{
  			return node && node.type == CKEDITOR.NODE_ELEMENT
  					&& node.getName() in CKEDITOR.dtd.$removeEmpty;
  		}
  
  		function singletonBlock( node )
  		{
  			var body = range.document.getBody();
  			return !node.is( 'body' ) && body.getChildCount() == 1;
  		}
  
  		var start = range.startContainer,
  			offset = range.startOffset;
  
  		if ( start.type == CKEDITOR.NODE_TEXT )
  			return false;
  
  		// 1. Empty inline element. <span>^</span>
  		// 2. Adjoin to inline element. <p><strong>text</strong>^</p>
  		// 3. The only empty block in document. <body><p>^</p></body> (#7222)
  		return !CKEDITOR.tools.trim( start.getHtml() ) ? isInlineCt( start ) || singletonBlock( start )
  				: isInlineCt( start.getChild( offset - 1 ) ) || isInlineCt( start.getChild( offset ) );
  	}
docs: #### checkSelectionChange : END