anchor.diff:                  (LowType.debug right)
                   (List.map Equations.debugEquality leftEqualities))
         let result =
  -        leftEqualities
  -        |> List.fold (fun result (_, x) -> MatchingResult.bindMatched (lowTypeMatcher.Test right x) result) (Matched ctx)
  +        testLeftEqualities lowTypeMatcher leftEqualities right ctx
           |> MatchingResult.bindMatched (Equations.tryAddEquality left right)
         Debug.WriteLine(
           match result with
  
positive.code:     Debug.WriteLine("It reached the terminator.")
      Failure
  
    let testVariableEquality (lowTypeMatcher: ILowTypeMatcher) left right (ctx: Context) =
      let left, right = Equations.sortTerm left right
      Debug.WriteLine(sprintf "Test equaliity of \"%s\" and \"%s\"." (LowType.debug left) (LowType.debug right))
  
negative.code:       Debug.WriteLine("The numbers of the parameters are different.")
        Failure
      else
        let mutable continue' = true
        let mutable state = ctx
        let leftEnum = leftTypes.GetEnumerator()
        let rightEnum = rightTypes.GetEnumerator()
        while continue' && leftEnum.MoveNext() && rightEnum.MoveNext() do
          let left = leftEnum.Current
          let right = rightEnum.Current
          Debug.WriteLine(sprintf "Test %s and %s." (LowType.debug left) (LowType.debug right))
          Debug.Indent()
          let result = lowTypeMatcher.Test left right state
          Debug.Unindent()
          match result with
          | Matched ctx -> state <- ctx
          | _ -> continue' <- false
        if continue' then
          Matched state
        else
          Failure
  
    let choiceRule (lowTypeMatcher: ILowTypeMatcher) left right ctx =
      match left, right with
  