code: function (oContPos, oPopover, oViewport) {
  			this.getPopover().setShowArrow(true);
  			var oPos = {};
  
  			//Popover should appear at the top (if place available)
  			this.getPopover().setPlacement(PlacementType.PreferredTopOrFlip);
  
  			var iBtnWidth = oPopover.width / this._iButtonsVisible;
  			oPos.left = oContPos.x + ((this._iButtonsVisible - 1) * iBtnWidth ) / 2 +  (this._getBaseFontSize() * 1 / 2);
  			oPos.top = oContPos.y - (this._getBaseFontSize() * 1 / 2);
  
  			// adjust positioning if necessary
  			oPos.left = (oPos.left < 32) ? 32 : oPos.left;
  			oPos.top = (oPos.top - oViewport.top < 0) ? oViewport.top : oPos.top;
  
  			// check right border positioning
  			if (oViewport.width - oPos.left < 32) {
  				oPos.left = oViewport.width - 32;
  				this.getPopover().addStyleClass("sapUiDtContextMenuRightArrow");
  			} else {
  				this.getPopover().removeStyleClass("sapUiDtContextMenuRightArrow");
  			}
  
  			// in Cozy mode the context menu is bigger, therefore we need a higher threshold for the top parameter
  			var iCozyFactor = this._bCompactMode ? 0 : 15;
  			if (oPos.top < (100 + iCozyFactor)) {
  				this.getPopover().setPlacement(PlacementType.Bottom);
  				oPos.top += 16;
  			}
  
  			return oPos;
  		}
docs: Works out how the ContextMenu shall be placed
  @param {object} oOverlay the dimensions of the overlay
  @param {object} oPopover the dimensions of the popover
  @param {object} oViewport the dimensions of the viewport
  @return {object} the position of the "fakeDiv"