function startDrag(dlg, correctPosition) {
  dlg.overrideCorrectDraggedElementInitialPos(correctPosition);
  const fistChildBoundingRect = list.firstChild.getBoundingClientRect();
  // 450px is chosen so the click is always placed outside of the dragged
  // element (which is only 50px wide), but still on an element of the dragged
  // list group (which takes up the whole page width).
  const firstChildClickPositionX = 450;
  const firstChildClickPositionY =
      fistChildBoundingRect.top + fistChildBoundingRect.height / 2;

  const dragStartPosition =
      new Coordinate(firstChildClickPositionX, firstChildClickPositionY);
  testingEvents.fireMouseDownEvent(
      list.firstChild, BrowserEvent.MouseButton.LEFT, dragStartPosition);

  // Firing an additional DragStart event (on top of the one triggered by
  // the mousedown above) is necessary as the test framework interrupts the
  // event handling execution flow by executing the handler methods directly
  // after the event fires, leading to overriding of the initial position
  // computation. This duplication solves the issue.
  const duplicateEvent = new BrowserEvent();
  duplicateEvent.currentTarget = list.firstChild;
  duplicateEvent.clientX = firstChildClickPositionX;
  duplicateEvent.clientY = firstChildClickPositionY;
  dlg.dragger_.fireDragStart_(duplicateEvent);

  const draggedElement = dom.getElementByTagNameAndClass('div', 'cursor_move');
  const firstMovedMousePosition = new Coordinate(
      firstChildClickPositionX + 2, firstChildClickPositionY + 2);
  testingEvents.fireMouseMoveEvent(draggedElement, firstMovedMousePosition);

  const newMovedMousePosition = new Coordinate(
      firstMovedMousePosition.x + 2, firstMovedMousePosition.y + 2);
  testingEvents.fireMouseMoveEvent(draggedElement, newMovedMousePosition);

  return newMovedMousePosition;
}
Method that starts the dragging motion and wait in order for the
event based DragListGroup internal logic to execute.
@param {!DragListGroup|null} dlg The DragListGroup to examine
@param {boolean} correctPosition Whethere to correct draggedEL position
@return {!Coordinate} The mouse cursor position where the dragginig
    started at.
@suppress {visibility,checkTypes} Suppression added to enable type checking