anchor.diff:                  let directVals = reader obj
                   let encVals = reader2 directVals.[tupleEncField]
                   Array.append directVals.[0..tupleEncField-1] encVals)
  -                
  +
       let rec getTupleConstructor (typ:Type) = 
           let etys = typ.GetGenericArguments() 
           let maker1 =  getTupleCtor (typ,BindingFlags.Public)
  
positive.code:           let tysA = tyargs.[0..tupleEncField-1]
            let tyB = tyargs.[tupleEncField]
            Array.append tysA (getTupleTypeInfo tyB)
        else 
            tyargs
  
      let orderTupleProperties (props:PropertyInfo[]) =
  
negative.code:               ctor.Invoke(args))
  #else
                ctor.Invoke(BindingFlags.InvokeMethod ||| BindingFlags.Instance ||| bindingFlags,null,args,null))
  #endif
  
      let rec getTupleReader (typ:Type) = 
          let etys = typ.GetGenericArguments() 
          // Get the reader for the outer tuple record
          let reader =
              if typ.IsValueType then
                  let fields = (typ.GetFields(instancePropertyFlags ||| BindingFlags.Public) |> orderTupleFields)
                  ((fun (obj:obj) -> fields |> Array.map (fun field -> field.GetValue(obj))))
              else
                  let props = (typ.GetProperties(instancePropertyFlags ||| BindingFlags.Public) |> orderTupleProperties)
                  ((fun (obj:obj) -> props |> Array.map (fun prop -> prop.GetValue(obj,null))))
          if etys.Length < maxTuple 
          then reader
          else
  