anchor.diff:              | None -> raise systemValueTupleException
           if isStruct then
               match tys.Length with 
  -            | 1 -> deOption(stuple1).MakeGenericType(tys)
  -            | 2 -> deOption(stuple2).MakeGenericType(tys)
  -            | 3 -> deOption(stuple3).MakeGenericType(tys)
  -            | 4 -> deOption(stuple4).MakeGenericType(tys)
  -            | 5 -> deOption(stuple5).MakeGenericType(tys)
  -            | 6 -> deOption(stuple6).MakeGenericType(tys)
  -            | 7 -> deOption(stuple7).MakeGenericType(tys)
  +            | 1 -> deOption(stuple1.Value).MakeGenericType(tys)
  +            | 2 -> deOption(stuple2.Value).MakeGenericType(tys)
  +            | 3 -> deOption(stuple3.Value).MakeGenericType(tys)
  +            | 4 -> deOption(stuple4.Value).MakeGenericType(tys)
  +            | 5 -> deOption(stuple5.Value).MakeGenericType(tys)
  +            | 6 -> deOption(stuple6.Value).MakeGenericType(tys)
  +            | 7 -> deOption(stuple7.Value).MakeGenericType(tys)
               | n when n >= maxTuple -> 
                   let tysA = tys.[0..tupleEncField-1]
                   let tysB = tys.[maxTuple-1..]
                   let tyB = mkTupleType isStruct tysB
  -                deOption(stuple8).MakeGenericType(Array.append tysA [| tyB |])
  +                deOption(stuple8.Value).MakeGenericType(Array.append tysA [| tyB |])
               | _ -> invalidArg "tys" (SR.GetString(SR.invalidTupleTypes))
           else
               match tys.Length with 
  
positive.code:         | Some v -> v
          | None -> Unchecked.defaultof<Type>
  
      let stuple1 = reflectedValueTupleType 1 [| typedefof<obj> |]
      let stuple2 = reflectedValueTupleType 2 [| typedefof<obj>; typedefof<obj> |]
      let stuple3 = reflectedValueTupleType 3 [| typedefof<obj>; typedefof<obj>; typedefof<obj> |]
      let stuple4 = reflectedValueTupleType 4 [| typedefof<obj>; typedefof<obj>; typedefof<obj>; typedefof<obj> |]
      let stuple5 = reflectedValueTupleType 5 [| typedefof<obj>; typedefof<obj>; typedefof<obj>; typedefof<obj>; typedefof<obj> |]
      let stuple6 = reflectedValueTupleType 6 [| typedefof<obj>; typedefof<obj>; typedefof<obj>; typedefof<obj>; typedefof<obj>; typedefof<obj> |]
      let stuple7 = reflectedValueTupleType 7 [| typedefof<obj>; typedefof<obj>; typedefof<obj>; typedefof<obj>; typedefof<obj>; typedefof<obj>; typedefof<obj> |]
      let stuple8 = reflectedValueTupleType 8 [| typedefof<obj>; typedefof<obj>; typedefof<obj>; typedefof<obj>; typedefof<obj>; typedefof<obj>; typedefof<obj>; deOption(reflectedValueTuple 0) |]
  
      let structTupleEquivHeadTypes typ stuple =
          match stuple with
          | Some s -> equivHeadTypes typ s
          | None -> false
  
      let isStructTuple1Type typ = structTupleEquivHeadTypes typ stuple1
      let isStructTuple2Type typ = structTupleEquivHeadTypes typ stuple2
      let isStructTuple3Type typ = structTupleEquivHeadTypes typ stuple3
      let isStructTuple4Type typ = structTupleEquivHeadTypes typ stuple4
      let isStructTuple5Type typ = structTupleEquivHeadTypes typ stuple5
      let isStructTuple6Type typ = structTupleEquivHeadTypes typ stuple6
      let isStructTuple7Type typ = structTupleEquivHeadTypes typ stuple7
      let isStructTuple8Type typ = structTupleEquivHeadTypes typ stuple8
  
      let isTupleType typ = 
          let isRefTupleType = 
  
negative.code: #endif
          let props = props |> Array.sortBy (fun p -> p.Name) // they are not always in alphabetic order
  #if FX_ATLEAST_PORTABLE  
  #else
          assert(props.Length <= maxTuple)
          assert(let haveNames   = props |> Array.map (fun p -> p.Name)
                 let expectNames = Array.init props.Length (fun i -> let j = i+1 // index j = 1,2,..,props.Length <= maxTuple
  