anchor.diff:          | Int i -> i |> tliftToIntSrc sub ctx |> lift (pairMap id Int)
           | Array (eltype, length, a) ->
               lift
  -                (fun (ctx', ela) -> (ctx', Array ela))
  +                (fun (ctx', a') -> (ctx', Array (eltype, length, a')))
                   (tliftToArraySrc sub ctx (eltype, length, a))
   
   /// <summary>
  
positive.code: 
              (* Ensure the traversal doesn't change eltype or length to something
                 we're not expecting. *)
              let assemble ((eltype', length', arr'), ix') =
                  let newType = Array (eltype', length', ())
                  if typesCompatible originalType newType
                  then ok (BIdx (eltype, length, arr', ix'))
                  else fail (BadType (expected = originalType, got = newType))
              let tResult =
                  tchain2 asv (Context.inIndex isv) assemble ctx ((eltype, length, arr), ix)
  
  
negative.code: 
              (* Ensure the traversal doesn't change eltype or length to something
                 we're not expecting. *)
              let assemble (arr', ix') =
                  ok (IIdx (eltype, length, arr', ix'))
              let tResult =
                  tchain2 asv (Context.inIndex isv) assemble ctx ((eltype, length, arr), ix)
  
  