docs: void setResponsePanelPosition(ResponsePanelPosition position) {
  		validateNotNull(position, "position");
  
  		requestTabIndex = getCurrentRequestTabIndex();
  
  		responsePanelPosition = position;
  		if (layout == Layout.FULL) {
  			updateFullLayout();
  			return;
  		}
  
  		Component currentTabbedPanel = componentMaximiser.getMaximisedComponent();
  		if (componentMaximiser.isComponentMaximised()) {
  			componentMaximiser.unmaximiseComponent();
  		}
  
  		boolean selectRequest = removeSplitRequestAndResponsePanel(tabbedWork);
  
  		switch (position) {
  		case PANEL_ABOVE:
  			splitResponsePanelWithWorkTabbedPanel(JSplitPane.VERTICAL_SPLIT);
  			break;
  		case PANELS_SIDE_BY_SIDE:
  			splitResponsePanelWithWorkTabbedPanel(JSplitPane.HORIZONTAL_SPLIT);
  			break;
  		case TAB_SIDE_BY_SIDE:
  			splitResponsePanelWithRequestPanel(JSplitPane.HORIZONTAL_SPLIT, tabbedWork);
  
  			getPaneWork().removeAll();
  			getPaneWork().add(getTabbedWork());
  			getPaneWork().validate();
  			break;
  		case TABS_SIDE_BY_SIDE:
  		default:
  			if (currentTabbedPanel == responseTabbedPanel) {
  				currentTabbedPanel = tabbedWork;
  			}
  			insertResponseTab(tabbedWork);
  
  			getPaneWork().removeAll();
  			getPaneWork().add(getTabbedWork());
  			getPaneWork().validate();
  		}
  
  		if (selectRequest || getTabbedWork().getSelectedComponent() == null) {
  			getTabbedWork().setSelectedComponent(
  					responsePanelPosition == ResponsePanelPosition.TAB_SIDE_BY_SIDE
  							? splitRequestAndResponsePanel
  							: requestPanel);
  		}
  
  		if (currentTabbedPanel != null) {
  			componentMaximiser.maximiseComponent(currentTabbedPanel);
  		}
  	}