anchor.diff:    end subroutine
     !====================================================================!
     !====================================================================!
  +  module subroutine allocate_lb_z1D(this, lb, n)
  +    !! Interfaced with [[allocate]]
  +  !====================================================================!
  +    complex(r64), allocatable, intent(inout) :: this(:) !! 1D array
  +    integer(i32), intent(in) :: lb !! Lower index, default = 1.
  +    integer(i32), intent(in) :: n !! Allocation size
  +
  +    integer(i32) :: istat
  +
  +    if(allocated(this)) then
  +      if (n == size(this)) then
  +        if (lbound(this, 1) == lb) then
  +          return ! Don't need to allocate the same size
  +        end if
  +      end if
  +      deallocate(this) ! No need to duplicate memory
  +    end if
  +
  +    allocate(this(lb:lb+n-1), stat=istat); call mErr(istat,'allocate_z1D:this',1)
  +  end subroutine
  +  !====================================================================!
  +  !====================================================================!
  +  module subroutine allocate_lb_z2D(this, lb, n)
  +    !! Interfaced with [[allocate]]
  +  !====================================================================!
  +    complex(r64), allocatable, intent(inout) :: this(:,:) !! 1D array
  +    integer(i32), intent(in) :: lb(2) !! Lower index, default = 1.
  +    integer(i32), intent(in) :: n(2) !! Allocation size
  +
  +    integer(i32) :: istat
  +
  +    if(allocated(this)) then
  +      if (all(n == shape(this))) then
  +        if (all(lbound(this) == lb)) then
  +          return ! Don't need to allocate the same size
  +        end if
  +      end if
  +      deallocate(this) ! No need to duplicate memory
  +    end if
  +    allocate(this(lb(1):lb(1)+n(1)-1, lb(2):lb(2)+n(2)-1), stat=istat); call mErr(istat,'allocate_z2D:this',1)
  +  end subroutine
  +  !====================================================================!
  +  !====================================================================!
  +  module subroutine allocate_lb_z3D(this, lb, n)
  +    !! Interfaced with [[allocate]]
  +  !====================================================================!
  +    complex(r64), allocatable, intent(inout) :: this(:,:,:) !! 1D array
  +    integer(i32), intent(in) :: lb(3) !! Lower index, default = 1.
  +    integer(i32), intent(in) :: n(3) !! Allocation size
  +
  +    integer(i32) :: istat
  +
  +    if(allocated(this)) then
  +      if (all(n == shape(this))) then
  +        if (all(lbound(this) == lb)) then
  +          return ! Don't need to allocate the same size
  +        end if
  +      end if
  +      deallocate(this) ! No need to duplicate memory
  +    end if
  +    allocate(this(lb(1):lb(1)+n(1)-1, lb(2):lb(2)+n(2)-1, lb(3):lb(3)+n(3)-1), stat=istat); call mErr(istat,'allocate_z3D:this',1)
  +  end subroutine
  +  !====================================================================!
  +
  +  !====================================================================!
     module subroutine allocate_l1D(this, n)
       !! Interfaced with [[allocate]]
     !====================================================================!
  
positive.code:     module subroutine allocate_id1D(this, n)
      !====================================================================!
        !!Interfaced with  [[allocate]]
        integer(i64), allocatable, intent(inout) :: this(:) !! 1D array
        integer(i32), intent(in) :: n !! Allocation size
      end subroutine
      !====================================================================!
      !====================================================================!
      module subroutine allocate_id2D(this, n)
      !====================================================================!
        !!Interfaced with  [[allocate]]
        integer(i64), allocatable, intent(inout) :: this(:,:) !! 2D array
        integer(i32), intent(in) :: n(2) !! Allocation size
      end subroutine
      !====================================================================!
      !====================================================================!
      module subroutine allocate_id3D(this, n)
      !====================================================================!
        !!Interfaced with  [[allocate]]
        integer(i64), allocatable, intent(inout) :: this(:,:,:) !! 3D array
        integer(i32), intent(in) :: n(3) !! Allocation size
      end subroutine
      !====================================================================!
  
  
negative.code:   end subroutine
    !====================================================================!
    !====================================================================!
    module subroutine allocate_lb_r1D(this, lb, n)
      !! Interfaced with [[allocate]]
    !====================================================================!
      real(r32), allocatable, intent(inout) :: this(:) !! 1D array
      integer(i32), intent(in) :: lb !! Lower index, default = 1.
      integer(i32), intent(in) :: n !! Allocation size
  
      integer(i32) :: istat
  
      if(allocated(this)) then
        if (n == size(this)) then
          if (lbound(this, 1) == lb) then
            return ! Don't need to allocate the same size
          else
            deallocate(this) ! No need to duplicate memory
          end if
        end if
      end if
  
      allocate(this(lb:lb+n-1), stat=istat); call mErr(istat,'allocate_r1D:this',1)
    end subroutine
    !====================================================================!
    !====================================================================!
    module subroutine allocate_lb_r2D(this, lb, n)
      !! Interfaced with [[allocate]]
    !====================================================================!
      real(r32), allocatable, intent(inout) :: this(:,:) !! 1D array
      integer(i32), intent(in) :: lb(2) !! Lower index, default = 1.
      integer(i32), intent(in) :: n(2) !! Allocation size
  
      integer(i32) :: istat
  
      if(allocated(this)) then
        if (all(n == shape(this))) then
          if (all(lbound(this) == lb)) then
            return ! Don't need to allocate the same size
          end if
        end if
        deallocate(this)
      end if
      allocate(this(lb(1):lb(1)+n(1)-1, lb(2):lb(2)+n(2)-1), stat=istat); call mErr(istat,'allocate_r2D:this',1)
    end subroutine
    !====================================================================!
    !====================================================================!
    module subroutine allocate_lb_r3D(this, lb, n)
      !! Interfaced with [[allocate]]
    !====================================================================!
      real(r32), allocatable, intent(inout) :: this(:,:,:) !! 1D array
      integer(i32), intent(in) :: lb(3) !! Lower index, default = 1.
      integer(i32), intent(in) :: n(3) !! Allocation size
  
      integer(i32) :: istat
  
      if(allocated(this)) then
        if (all(n == shape(this))) then
          if (all(lbound(this) == lb)) then
            return ! Don't need to allocate the same size
          end if
        end if
        deallocate(this)
      end if
      allocate(this(lb(1):lb(1)+n(1)-1, lb(2):lb(2)+n(2)-1, lb(3):lb(3)+n(3)-1), stat=istat); call mErr(istat,'allocate_r3D:this',1)
    end subroutine
    !====================================================================!
  
    !====================================================================!
    module subroutine allocate_d1D(this, n)
      !! Interfaced with [[allocate]]
    !====================================================================!
  