private static void merge(myLinkedList left, myLinkedList right)
  {
    Node currentLeft = left.head; //The first possible insertion position
    Node currentRight = right.head.next; //First node
    
    //Merge the right list into the left list (in place)
    while (currentLeft.next != null && currentRight != null) //both are not null, we can compare them
    {
      if (currentLeft.next.data < currentRight.data)
      {
        currentLeft = currentLeft.next; //move it forward to get the next insertion position
      }
      else //insert the currentRight into the left
      {
        Node nextRight = currentRight.next;
        currentRight.next = currentLeft.next;
        currentLeft.next = currentRight;
        currentLeft = currentRight;
        currentRight = nextRight;
      }
    }
    
    //we quite the while loop, so at least one of them is null.
    if (currentLeft.next == null && currentRight != null)
    {
      currentLeft.next = currentRight;
    }
    
    //Update the size after the merge
    left.size += right.size;
    right.head = null; //"discard" the right one, so that it does not points to any Node in order to avoid memory leakage
    right.size = 0;
  }