anchor.diff:          else
               maker1,Some(etys.[tupleEncField])
   
  -    let getTupleReaderInfo (typ:Type,index:int) =         
  +    let getTupleReaderInfo (typ:Type,index:int) =
           if index < 0 then invalidArg "index" (SR.GetString2(SR.tupleIndexOutOfRange, typ.FullName, index.ToString()))
  -        let props = typ.GetProperties(instancePropertyFlags ||| BindingFlags.Public) |> orderTupleProperties
  -        let get index = 
  -            if index >= props.Length then invalidArg "index" (SR.GetString2(SR.tupleIndexOutOfRange, typ.FullName, index.ToString()))
  -            props.[index]
  -        
  +
  +        let get index =
  +            if typ.IsValueType then
  +                let props = typ.GetProperties(instancePropertyFlags ||| BindingFlags.Public) |> orderTupleProperties
  +                if index >= props.Length then invalidArg "index" (SR.GetString2(SR.tupleIndexOutOfRange, typ.FullName, index.ToString()))
  +                props.[index]
  +            else
  +                let props = typ.GetProperties(instancePropertyFlags ||| BindingFlags.Public) |> orderTupleProperties
  +                if index >= props.Length then invalidArg "index" (SR.GetString2(SR.tupleIndexOutOfRange, typ.FullName, index.ToString()))
  +                props.[index]
  +
           if index < tupleEncField then
  -            get index, None  
  +            get index, None
           else
               let etys = typ.GetGenericArguments()
               get tupleEncField, Some(etys.[tupleEncField],index-(maxTuple-1))
  -            
  -      
  +
       //-----------------------------------------------------------------
       // FUNCTION DECOMPILATION
       
  
positive.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 props = typ.GetProperties(instancePropertyFlags ||| BindingFlags.Public) |> orderTupleProperties
          let reader = (fun (obj:obj) -> props |> Array.map (fun prop -> prop.GetValue(obj,null)))
          if etys.Length < maxTuple 
          then reader
          else
  
negative.code:           let tysA = tyargs.[0..tupleEncField-1]
            let tyB = tyargs.[tupleEncField]
            Array.append tysA (getTupleTypeInfo tyB)
        else
            tyargs
  
      let orderTupleProperties (props:PropertyInfo[]) =
  