anchor.diff:  		class(SumKernels), intent(inout) :: self
   		integer, intent(in) :: k
   		if (k==1) print *, self%kernel1%pars
  -		if (k==2) print *, self%kernel1%pars
  +		if (k==2) print *, self%kernel2%pars
   	end subroutine get_sub_kernel_pars_sum
   
   	subroutine get_sub_kernel_pars_prod(self, k)
  
positive.code: 		allocate(new_GP%cov(N, N))
  		new_GP%cov = cov_matrix
  		new_GP%gp_kernel => kernel_ptr
  
  	end function new_GP
  
  
negative.code: 		real(kind=8), dimension(:, :), allocatable :: cov
  		! the kernel associated with this GP
  		class(Kernel), pointer :: gp_kernel
  		! possible sub-kernels (we only allow one level down for now)
  		class(Kernel), pointer :: sub_kernel1
  		class(Kernel), pointer :: sub_kernel2
  	contains 
  		procedure :: is_posdef
  		procedure :: get_lnlikelihood
  