anchor.diff:                  ! degrades if the pivot is always the smallest element.
                   pivot = (lo + hi)/2
                   call swap_states(states(:,pivot), pops(:,pivot), dat(:,pivot), states(:,lo+1), pops(:,lo+1), dat(:,lo+1))
  -                !if (.not.(states(:,lo) .bitstrge. states(:,hi))) then
  -                if (.not.(states(:,lo) .bitstrget. states(:,hi))) then
  +                if (.not.(states(:,lo) .bitstrge. states(:,hi))) then
                       call swap_states(states(:,lo), pops(:,lo), dat(:,lo), states(:,hi), pops(:,hi), dat(:,hi))
                   end if
  -                !if (.not.(states(:,lo+1) .bitstrge. states(:,hi))) then
  -                if (.not.(states(:,lo+1) .bitstrget. states(:,hi))) then
  +                if (.not.(states(:,lo+1) .bitstrge. states(:,hi))) then
                       call swap_states(states(:,lo+1), pops(:,lo+1), dat(:,lo+1), states(:,hi), pops(:,hi), dat(:,hi))
                   end if
  -                !if (.not.(states(:,lo) .bitstrge. states(:,lo+1))) then
  -                if (.not.(states(:,lo) .bitstrget. states(:,lo+1))) then
  +                if (.not.(states(:,lo) .bitstrge. states(:,lo+1))) then
                       call swap_states(states(:,lo), pops(:,lo), dat(:,lo), states(:,lo+1), pops(:,lo+1), dat(:,lo+1))
                   end if
   
  
positive.code:             ! element which doesn't exist yet) the binary search can find either
              ! the element before or after where item should be placed.
              if (hi == lo) then
                  !compare = bit_str_cmp_trot(list(:,hi), item)
                  compare = bit_str_i0_cmp_trot(list(:,hi), item)
                  select case(compare)
                  case (0)
                      ! hit!
  
negative.code:                 ! degrades if the pivot is always the smallest element.
                  pivot = (lo + hi)/2
                  call swap_sublist(list(:,pivot), list(:,lo + 1))
                  if (.not.(list(1:ns,lo) .bitstrge. list(1:ns,hi))) then
                      call swap_sublist(list(:,lo), list(:,hi))
                  end if
                  if (.not.(list(1:ns,lo+1) .bitstrge. list(1:ns,hi))) then
                      call swap_sublist(list(:,lo+1), list(:,hi))
                  end if
                  if (.not.(list(1:ns,lo) .bitstrge. list(1:ns,lo+1))) then
                      call swap_sublist(list(:,lo), list(:,lo+1))
                  end if
  
  