anchor.diff:          match box v with 
           | null -> nullArg argName 
           | _ -> ()
  -     
  -        
  -    let emptyArray arr = (Array.length arr = 0)
  -    let nonEmptyArray arr = Array.length arr > 0
  -
  +         
       let isNamedType(typ:Type) = not (typ.IsArray || typ.IsByRef || typ.IsPointer)
   
       let equivHeadTypes (ty1:Type) (ty2:Type) = 
  
positive.code:         | info -> (info :> MemberInfo)
  
      let isUnionCaseNullary (typ:Type, tag:int, bindingFlags) = 
          let props = fieldsPropsOfUnionCase(typ, tag, bindingFlags) 
          emptyArray props
  
      let getUnionCaseConstructorMethod (typ:Type,tag:int,bindingFlags) = 
          let constrname = getUnionTagConverter (typ,bindingFlags) tag 
          let methname = 
              if isUnionCaseNullary (typ, tag, bindingFlags) then "get_"+constrname 
              elif isListType typ || isOptionType typ then constrname
              else "New"+constrname 
          match typ.GetMethod(methname, BindingFlags.Static  ||| bindingFlags) with
          | null -> raise <| System.InvalidOperationException (SR.GetString1(SR.constructorForUnionCaseNotFound, methname))
          | meth -> meth
  
negative.code:     let isTupleType (typ:Type) = 
          // Simple Name Match on typ
          if typ.IsEnum || typ.IsArray || typ.IsPointer then false
          else tupleNames |> Seq.exists typ.FullName.StartsWith
  
      let maxTuple = 8
      // Which field holds the nested tuple?
      let tupleEncField = maxTuple - 1
  
      let dictionaryLock = obj()
      let refTupleTypes = System.Collections.Generic.Dictionary<Assembly, Type[]>()
  