code: function()
  		{
  			var startContainer = this.startContainer,
  				startOffset = this.startOffset;
  
  			// If the starting node is a text node, and non-empty before the offset,
  			// then we're surely not at the start of block.
  			if ( startOffset && startContainer.type == CKEDITOR.NODE_TEXT )
  			{
  				var textBefore = CKEDITOR.tools.ltrim( startContainer.substring( 0, startOffset ) );
  				if ( textBefore.length )
  					return false;
  			}
  
  			// Antecipate the trim() call here, so the walker will not make
  			// changes to the DOM, which would not get reflected into this
  			// range otherwise.
  			this.trim();
  
  			// We need to grab the block element holding the start boundary, so
  			// let's use an element path for it.
  			var path = new CKEDITOR.dom.elementPath( this.startContainer );
  
  			// Creates a range starting at the block start until the range start.
  			var walkerRange = this.clone();
  			walkerRange.collapse( true );
  			walkerRange.setStartAt( path.block || path.blockLimit, CKEDITOR.POSITION_AFTER_START );
  
  			var walker = new CKEDITOR.dom.walker( walkerRange );
  			walker.evaluator = getCheckStartEndBlockEvalFunction( true );
  
  			return walker.checkBackward();
  		}
docs: Calls to this function may produce changes to the DOM. The range may be updated to reflect such changes.