// Insert sort
 // Similar to the selection sort above, this creates an entirely new list and fills it with the nodes from the original list
 public void InsertSort( Comparison< Drug > UsersDrugComparer )
 {
     //Create new "sorted" list
     DrugList sorted = new DrugList( );
     
     //While there are still nodes in the original list...
     while( this.count > 0 )
     {
         Node previous, current, removed;
         
         //Remove the head node from the original list and store it in the variable "removed"
         removed = this.RemoveNode( null, this.head );
         
         //Find the first node larger than "removed" in the sorted list using the comparison method and return it and the one before it
         sorted.FindFirstLargerNode( removed, out previous, out current, UsersDrugComparer );
         
         //Insert "removed" in the correct position in the sorted list
         sorted.InsertNode( removed, previous, current );
     }
     
     this.count = sorted.count;
     this.tail = sorted.tail;
     this.head = sorted.head;
 }