Dim CS1 As CSBuilder 'need temporary variables for casting from List.Get generic object
Dim CS2 As CSBuilder
Dim DoneFlag As Boolean
Do
DoneFlag = True
For I = 0 to L.Size - 2 'one back from last item because dealing in pairs of elements
CS1 = L.Get(I)
CS2 = L.Get(I+1)
If CS1.ToString > CS2.ToString Then
L.RemoveAt(I)
L.InsertAt(I + 1, CS1)
DoneFlag = False
End If
Next I
Loop Until DoneFlag