anchor.diff:  
     call tester% print()
   
  -contains
  -
  -  subroutine sort
  -    integer :: i, idx, start, p(3)
  -
  -    call solvent_cells%count_particles(pos)
  -
  -    do i=1, N
  -       p = floor( (pos(:, i) - solvent_cells% origin ) / solvent_cells% a )
  -       idx = compact_p_to_h(p, solvent_cells% M) + 1
  -       start = solvent_cells% cell_start(idx)
  -       pos_old(:, start) = pos(:, i)
  -       solvent_cells% cell_start(idx) = start + 1
  -    end do
  -
  -    pos_pointer => pos
  -    pos => pos_old
  -    pos_old => pos_pointer
  -
  -  end subroutine sort
  +  deallocate(pos1)
  +  deallocate(pos2)
   
   end program try_all
  
positive.code:   type(cell_system_t) :: solvent_cells
    type(tester_t) :: tester
  
    integer, parameter :: N = 2000
    double precision, target :: pos1(3, N), pos2(3, N)
    double precision, pointer :: pos(:,:), pos_old(:,:), pos_pointer(:,:)
  
    integer :: i, L(3), seed_size, clock
    integer, allocatable :: seed(:)
    integer :: h, c1(3), c2(3)
  
    call tester% init()
  
  
negative.code:   pos => pos1
    pos_old => pos2
  
    L = [120, 30, 30]
  
    call random_number(pos)
    do i = 1, 3
  