anchor.diff:          let evalFoldi evalApply fnOriginOpt fnName evaledArgs world =
               match evaledArgs with
               | [folder; state; String str] -> Seq.foldi (fun i (state, world) elem -> evalApply [folder; Int i; state; String (string elem)] fnOriginOpt world) (state, world) str
  +            | [folder; state; Codata codata] ->
  +                match evalFoldiCodata evalApply fnOriginOpt fnName 0 folder state codata world with
  +                | Right (_, state, world) -> (state, world)
  +                | Left error -> error
               | [folder; state; List list] -> Seq.foldi (fun i (state, world) elem -> evalApply [folder; Int i; state; elem] fnOriginOpt world) (state, world) list
               | [folder; state; Ring set] -> Seq.foldi (fun i (state, world) elem -> evalApply [folder; Int i; state; elem] fnOriginOpt world) (state, world) set
               | [folder; state; Table map] ->
  
positive.code:                         (state, [], world)
                          str
                  (List (List.rev states), world)
              | [scanner; state; List list] ->
                  let (_, states, world) =
                      Seq.fold (fun (state, states, world) elem ->
  
negative.code:                     (Right (state, [], world))
                      list
  
          let rec evalScaniCodata evalApply fnOriginOpt fnName i scanner state codata world =
              match codata with
              | Empty ->
                  Right (i, state, [], world)
              | Add (left, right) ->
                  match evalScaniCodata evalApply fnOriginOpt fnName (inc i) scanner state left world with
                  | Right (i, state, statesLeft, world) ->
                      match evalScaniCodata evalApply fnOriginOpt fnName (inc i) scanner state right world with
                      | Right (i, state, statesRight, world) -> Right (i, state, statesRight @ statesLeft, world)
                      | error -> error
                  | error -> error
              | Unfold (unfolder, costate) ->
                  match evalApply [unfolder; costate] fnOriginOpt world with
                  | (Option (Some costate), world) ->
                      match evalApply [scanner; Int i; state; costate] fnOriginOpt world with
                      | (Violation _, _) as error -> Left error
                      | (state, world) -> evalScaniCodata evalApply fnOriginOpt fnName (inc i) scanner state (Unfold (unfolder, costate)) world
                  | (Option None, world) -> Right (i, state, [], world)
                  | (Violation _, _) as error -> Left error
                  | (_, world) -> Left (Violation ([!!"InvalidResult"; !!"Container"; !!(String.capitalize fnName)], "Function " + fnName + "'s unfolder must return an option.", fnOriginOpt), world)
              | Conversion list ->
                  Seq.foldWhileRight (fun (i, state, states, world) elem ->
                      match evalApply [scanner; Int i; state; elem] fnOriginOpt world with
                      | (Option (Some state), world) -> (Right (inc i, state, state :: states, world))
                      | (Option None, world) -> Left (List states, world)
                      | (Violation _, _) as error -> Left error
                      | _ -> Left (Violation ([!!"InvalidResult"; !!"Container"; !!(String.capitalize fnName)], "Function " + fnName + "'s scanner must return an option.", fnOriginOpt), world))
                      (Right (i, state, [], world))
                      list
  
          let rec evalScanCodata evalApply fnOriginOpt fnName scanner state codata world =
              match codata with
              | Empty ->
                  Right (state, [], world)
              | Add (left, right) ->
                  match evalScanCodata evalApply fnOriginOpt fnName scanner state left world with
                  | Right (state, statesLeft, world) ->
                      match evalScanCodata evalApply fnOriginOpt fnName scanner state right world with
                      | Right (state, statesRight, world) -> Right (state, statesRight @ statesLeft, world)
                      | error -> error
                  | error -> error
              | Unfold (unfolder, costate) ->
                  match evalApply [unfolder; costate] fnOriginOpt world with
                  | (Option (Some costate), world) ->
                      match evalApply [scanner; state; costate] fnOriginOpt world with
                      | (Violation _, _) as error -> Left error
                      | (state, world) -> evalScanCodata evalApply fnOriginOpt fnName scanner state (Unfold (unfolder, costate)) world
                  | (Option None, world) -> Right (state, [], world)
                  | (Violation _, _) as error -> Left error
                  | (_, world) -> Left (Violation ([!!"InvalidResult"; !!"Container"; !!(String.capitalize fnName)], "Function " + fnName + "'s unfolder must return an option.", fnOriginOpt), world)
              | Conversion list ->
                  Seq.foldWhileRight (fun (state, states, world) elem ->
                      match evalApply [scanner; state; elem] fnOriginOpt world with
                      | (Option (Some state), world) -> (Right (state, state :: states, world))
                      | (Option None, world) -> Left (List states, world)
                      | (Violation _, _) as error -> Left error
                      | _ -> Left (Violation ([!!"InvalidResult"; !!"Container"; !!(String.capitalize fnName)], "Function " + fnName + "'s scanner must return an option.", fnOriginOpt), world))
                      (Right (state, [], world))
                      list
  
          let evalScanWhile evalApply fnOriginOpt fnName evaledArgs world =
              match evaledArgs with
  