docs: function() {
  				var view = that.view,
  					editable = that.editable,
  					trigger = that.trigger,
  					upper = trigger.upper,
  					lower = trigger.lower,
  					any = upper || lower,
  					parent = any.getParent(),
  					styleSet = {};
  
  				// Save recent trigger for further insertion.
  				// It is necessary due to the fact, that that.trigger may
  				// contain different boxTrigger at the moment of insertion
  				// or may be even null.
  				this.trigger = trigger;
  
  				upper && updateSize( that, upper, true );
  				lower && updateSize( that, lower, true );
  				updateSize( that, parent, true );
  
  				// Yeah, that's gonna be useful in inline-mode case.
  				if ( that.inInlineMode )
  					updateEditableSize( that, true );
  
  				// Set X coordinate (left, right, width).
  				if ( parent.equals( editable ) ) {
  					styleSet.left = view.scroll.x;
  					styleSet.right = -view.scroll.x;
  					styleSet.width = '';
  				} else {
  					styleSet.left = any.size.left - any.size.margin.left + view.scroll.x - ( that.inInlineMode ? view.editable.left + view.editable.border.left : 0 );
  					styleSet.width = any.size.outerWidth + any.size.margin.left + any.size.margin.right + view.scroll.x;
  					styleSet.right = '';
  				}
  
  				// Set Y coordinate (top) for trigger consisting of two elements.
  				if ( upper && lower ) {
  					// No margins at all or they're equal. Place box right between.
  					if ( upper.size.margin.bottom === lower.size.margin.top )
  						styleSet.top = 0 | ( upper.size.bottom + upper.size.margin.bottom / 2 );
  					else {
  						// Upper margin < lower margin. Place at lower margin.
  						if ( upper.size.margin.bottom < lower.size.margin.top )
  							styleSet.top = upper.size.bottom + upper.size.margin.bottom;
  						// Upper margin > lower margin. Place at upper margin - lower margin.
  						else
  							styleSet.top = upper.size.bottom + upper.size.margin.bottom - lower.size.margin.top;
  					}
  				}
  				// Set Y coordinate (top) for single-edge trigger.
  				else if ( !upper )
  					styleSet.top = lower.size.top - lower.size.margin.top;
  				else if ( !lower )
  					styleSet.top = upper.size.bottom + upper.size.margin.bottom;
  
  				// Set box button modes if close to the viewport horizontal edge
  				// or look forced by the trigger.
  				if ( trigger.is( LOOK_TOP ) || inBetween( styleSet.top, view.scroll.y - 15, view.scroll.y + 5 ) ) {
  					styleSet.top = that.inInlineMode ? 0 : view.scroll.y;
  					this.look( LOOK_TOP );
  				} else if ( trigger.is( LOOK_BOTTOM ) || inBetween( styleSet.top, view.pane.bottom - 5, view.pane.bottom + 15 ) ) {
  					styleSet.top = that.inInlineMode ?
  							view.editable.height + view.editable.padding.top + view.editable.padding.bottom
  						:
  							view.pane.bottom - 1;
  
  					this.look( LOOK_BOTTOM );
  				} else {
  					if ( that.inInlineMode )
  						styleSet.top -= view.editable.top + view.editable.border.top;
  
  					this.look( LOOK_NORMAL );
  				}
  
  				if ( that.inInlineMode ) {
  					// 1px bug here...
  					styleSet.top--;
  
  					// Consider the editable to be an element with overflow:scroll
  					// and non-zero scrollTop/scrollLeft value.
  					// For example: divarea editable. (#9383)
  					styleSet.top += view.editable.scroll.top;
  					styleSet.left += view.editable.scroll.left;
  				}
  
  				// Append `px` prefixes.
  				for ( var style in styleSet )
  					styleSet[ style ] = CKEDITOR.tools.cssLength( styleSet[ style ] );
  
  				this.setStyles( styleSet );
  			}