anchor.diff:      n_grid = list_size(list)
       allocate(e_grid(n_grid))
       current => list
  -    do i = 1,n_grid
  +    do i = 1, n_grid
          e_grid(i) = current % data
          current => current % next
       end do
  
positive.code:           nuc => nuclides(mat % nuclide(j))
  
            ! loop over energy points
            n = size(nuc % energy)
            call add_grid_points(list, nuc % energy, n)
         end do
      end do
  
  
negative.code: ! of points already stored from previous arrays.
  !===============================================================================
  
    subroutine add_grid_points(list, energy)
  
      type(ListReal), pointer :: list
      real(8), intent(in) :: energy(:)
  
      integer :: index
      integer :: n
      real(8) :: E
      type(ListReal), pointer :: current => null()
      type(ListReal), pointer :: previous => null()
      type(ListReal), pointer :: head => null()
      type(ListReal), pointer :: tmp => null()
  
      index = 1
      n = size(energy)
  
      ! if the original list is empty, we need to allocate the first element and
      ! store first energy point
      if (list_size(list) == 0) then
         allocate(list)
         current => list
         do index = 1, n
            current % data = energy(index)
            if (index == n) then
               current % next => null()
               return
            end if
  