anchor.diff:      A%nsubsolves=0
     end subroutine free_spmtx_subsolves
   
  -  subroutine sparse_multisolve(sol,A,rhs,A_interf_,AC,refactor,Restrict)
  +  subroutine sparse_multisolve(sol,A,M,rhs,res,A_interf_,AC,refactor,Restrict)
       use SpMtx_class
       use SpMtx_arrangement
  -    type(SpMtx) :: A
  +    type(SpMtx),intent(inout) :: A
  +    type(Mesh),intent(in)              :: M ! Mesh
       type(SpMtx),optional :: Restrict
  -    real(kind=rk),dimension(:),pointer :: sol,rhs
  +    real(kind=rk),dimension(:),pointer :: sol,rhs,res
       type(SpMtx),optional :: A_interf_ ! 
       type(SpMtx),optional :: AC ! is supplied to indicate coarse aggregates
       logical,intent(in),optional :: refactor
  
positive.code:              subd=A%subd)
      endif
    end subroutine sparse_multisolve
  
    subroutine exact_sparse_multismoother(sol,A,rhs)
      use SpMtx_class
  
negative.code:                  val_interf=A_interf_%val)
          else
            if (A%arrange_type==D_SpMtx_ARRNG_ROWS) then
              call multi_subsolve(               &
                     nids=A%nsubsolves,          &
                     ids=A%subsolve_ids,         &
  