code: function(offset, baseOffset) {
  			var projections = this._projections, delta = 0, i, projection;
  			if (baseOffset) {
  				for (i = 0; i < projections.length; i++) {
  					projection = projections[i];
  					if (projection.start > offset) { break; }
  					if (projection.end > offset) { return -1; }
  					delta += projection._model.getCharCount() - (projection.end - projection.start);
  				}
  				return offset + delta;
  			}
  			for (i = 0; i < projections.length; i++) {
  				projection = projections[i];
  				if (projection.start > offset - delta) { break; }
  				var charCount = projection._model.getCharCount();
  				if (projection.start + charCount > offset - delta) {
  					return -1;
  				}
  				delta += charCount - (projection.end - projection.start);
  			}
  			return offset - delta;
  		}
docs: Maps offsets between the projection model and its base model.
  
  @param {Number} offset The offset to be mapped.
  @param {Boolean} [baseOffset=false] <code>true</code> if <code>offset</code> is in base model and
  should be mapped to the projection model.
  @return {Number} The mapped offset