anchor.diff:  
           end subroutine write_integer
   
  +!REVIEW-AJWT: This looks potentially dangerous - if dtype differs from the actual type of arr_ptr
  +!              Might an overloaded interface not be better?
           subroutine write_ptr(id, dset, dtype, arr_rank, arr_dim, arr_ptr)
   
               ! Write an array to an open HDF5 file/group.
  
positive.code: 
      ! Version id of the restart file *produced*.  Please increment if you add
      ! anything to dump_restart_hdf5!
      integer, parameter :: restart_version = 1
  
      ! Group names...
  
negative.code: 
              ! Initialise HDF5 and open file.
              ! NOTE: if file exists, then it is overwritten.
  !REVIEW-AJWT: But the get_unique_filename above ensures this doesn't happen?
              call h5open_f(ierr)
              call h5fcreate_f(restart_file, H5F_ACC_TRUNC_F, file_id, ierr)
  
  !REVIEW-AJWT: I don't immediately see what these are used for.
  !REVIEW-AJWT:  These kinds are used in the write_* functions.
              ! 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:  This is getting a bit cryptic (but ok if you bear with it)
              ! --- metadata group ---
              call h5gcreate_f(file_id, gmetadata, group_id, ierr)
              call h5gopen_f(file_id, gmetadata, group_id, ierr)
  
                  call write_string(group_id, dhande, VCS_VERSION)
  
  !REVIEW-AJWT: This doesn't appear to agree with the comments at the top
                  call write_string(group_id, duuid, GLOBAL_UUID)
  
                  call date_and_time(values=date_time)
  !REVIEW-AJWT:  What does this actually look like?
                  write (date_str,'(2(i0.2,":"),i0.2,1X,2(i0.2,"/"),i4)') date_time(5:7), date_time(3:1:-1)
                  call write_string(group_id, ddate, date_str)
  
  