anchor.diff:              integer :: i0_length_restart
               type(c_ptr) :: ptr
               integer :: ierr
  -            character(10) :: proc_suf
               real(p), target :: tmp(1)
   
               integer(HSIZE_T) :: dims(size(shape(walker_dets))), maxdims(size(shape(walker_dets)))
   
   ! [review] -  AJWT: This seems like needless duplication of what happens in dump_restart_hdf5 which could be put in a procedure
  -            ! Figure out filename.
  -            write (proc_suf,'(".p",'//int_fmt(iproc,0)//')') iproc
  -            if (ri%read_id < 0) then
  -                call get_unique_filename(trim(ri%restart_stem), trim(proc_suf), .false., ri%read_id, restart_file)
  -            else
  -                call get_unique_filename(trim(ri%restart_stem), trim(proc_suf), .false., 0, restart_file)
  -            end if
  -
  -            if (parent) then
  -                if (nprocs > 1) then
  -                    write (6,'(1X,"Reading restart file from the",1X,a,1X,"family."/)') trim(restart_file)
  -                else
  -                    write (6,'(1X,"Reading restart file from",1X,a,/)') trim(restart_file)//'.'
  -                end if
  -            end if
  +! [reply] - JSS: abstracted into a common init procedure.
   
               ! Initialise HDF5 and open file.
               call h5open_f(ierr)
  +            call init_restart_hdf5(ri, .false., restart_file, kinds)
               call h5fopen_f(restart_file, H5F_ACC_RDONLY_F, file_id, ierr)
  -
  -            ! i0 kind?  What a nice interface!
  -            h5_i0 = h5kind_to_type(i0, H5_INTEGER_KIND)
  -            h5_p = h5kind_to_type(p, H5_REAL_KIND)
  -            h5_lint = h5kind_to_type(lint, H5_INTEGER_KIND)
   
   ! [review] -  AJWT: Here endeth the duplication
               ! --- metadata group ---
  
positive.code:                     call read_integer(subgroup_id, dncycles, mc_cycles_done)
  
                      ptr = c_loc(shift)
                      call read_ptr(subgroup_id, dshift, h5_p, ptr)
  
                  call h5gclose_f(subgroup_id, ierr)
  
  
negative.code:                 tot_walkers = dims(size(dims))
  
                  ptr = c_loc(walker_dets)
                  call read_ptr(subgroup_id, ddets, kinds%i0, ptr)
  
                  ptr = c_loc(walker_population)
                  call read_ptr(subgroup_id, dpops, H5T_NATIVE_INTEGER, ptr)
  
                  ptr = c_loc(walker_data)
                  call read_ptr(subgroup_id, ddata, kinds%p, ptr)
  
                  ptr = c_loc(tot_nparticles)
                  call read_ptr(subgroup_id, dtot_pop, kinds%lint, ptr)
  
                  call h5gclose_f(subgroup_id, ierr)
  
  