anchor.diff:      ! Fortran versions of arguments
       procedure(objective_function_c), pointer :: func_p
       procedure(objective_gradient_c), pointer :: grad_p
  -    integer :: dim, approximation_size
  -    real(dp) :: f_tolerance, g_tolerance
       integer :: bounds_control(dim_c)
       real(dp) :: lower_bounds(dim_c), upper_bounds(dim_c), point(dim_c)
       ! Variables and memory for L-BFGS-B
  
positive.code:        debug_c) &
         result(error_code_c) bind(c)
  
      use, intrinsic :: iso_c_binding
      implicit none
  
      ! Signature
  
negative.code:     ! Convert inputs from C types to Fortran types
      call c_f_procpointer(func, func_p)
      call c_f_procpointer(grad, grad_p)
      ! Array copies (TODO are these necessary? i.e. how compatible are the storage and types?)
      bounds_control = bounds_control_c
      lower_bounds = lower_bounds_c
      upper_bounds = upper_bounds_c
  