anchor.diff:          | _ -> dyn()
       else dyn()
   
  -let op_Addition = invokeNumericBinOp "op_Addition" (+) (+) (+) (+) (+) (+) (+) (+) (+) (+) (+) (Some(+)) (Some(+)) (Some(+)) (Some(+)) //dynamic impl is given in F# lib, but we implement ourselves for perf. gain
  -let op_Multiply = invokeNumericBinOp "op_Multiply" (*) (*) (*) (*) (*) (*) (*) (*) (*) (*) (*) (Some(*)) (Some(*)) (Some(*)) None
  -let op_Subtraction = invokeNumericBinOp "op_Subtraction" (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (Some(-)) (Some(-)) (Some(-)) None
  -let op_Division = invokeNumericBinOp "op_Division" (/) (/) (/) (/) (/) (/) (/) (/) (/) (/) (/) (Some(/)) (Some(/)) (Some(/)) None
  -let op_Modulus = invokeNumericBinOp "op_Modulus" (%) (%) (%) (%) (%) (%) (%) (%) (%) (%) (%) (Some(%)) (Some(%)) (Some(%)) None
  -
  -let op_BitwiseOr = invokeNumericBinOp "op_BitwiseOr" (|||) (|||) (|||) (|||) (|||) (|||) (|||) (|||) (|||) (|||) (|||) None None None None
  -let op_BitwiseAnd = invokeNumericBinOp "op_BitwiseAnd" (&&&) (&&&) (&&&) (&&&) (&&&) (&&&) (&&&) (&&&) (&&&) (&&&) (&&&) None None None None
  -let op_ExclusiveOr = invokeNumericBinOp "op_ExclusiveOr" (^^^) (^^^) (^^^) (^^^) (^^^) (^^^) (^^^) (^^^) (^^^) (^^^) (^^^) None None None None
  -let op_LeftShift = invokeNumericBinOp "op_LeftShift" (<<<) (<<<) (<<<) (<<<) (<<<) (<<<) (<<<) (<<<) (<<<) (<<<) (<<<) None None None None
  -let op_RightShift = invokeNumericBinOp "op_RightShift" (>>>) (>>>) (>>>) (>>>) (>>>) (>>>) (>>>) (>>>) (>>>) (>>>) (>>>) None None None None
  +let op_Addition = invokeBinOp "op_Addition" (+) (+) (+) (+) (+) (+) (+) (+) (+) (+) (+) (Some(+)) (Some(+)) (Some(+)) (Some(+)) //dynamic impl is given in F# lib, but we implement ourselves for perf. gain
  +let op_Multiply = invokeBinOp "op_Multiply" (*) (*) (*) (*) (*) (*) (*) (*) (*) (*) (*) (Some(*)) (Some(*)) (Some(*)) None
  +let op_Subtraction = invokeBinOp "op_Subtraction" (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (Some(-)) (Some(-)) (Some(-)) None
  +let op_Division = invokeBinOp "op_Division" (/) (/) (/) (/) (/) (/) (/) (/) (/) (/) (/) (Some(/)) (Some(/)) (Some(/)) None
  +let op_Modulus = invokeBinOp "op_Modulus" (%) (%) (%) (%) (%) (%) (%) (%) (%) (%) (%) (Some(%)) (Some(%)) (Some(%)) None
  +
  +let op_BitwiseOr = invokeBinOp "op_BitwiseOr" (|||) (|||) (|||) (|||) (|||) (|||) (|||) (|||) (|||) (|||) (|||) None None None None
  +let op_BitwiseAnd = invokeBinOp "op_BitwiseAnd" (&&&) (&&&) (&&&) (&&&) (&&&) (&&&) (&&&) (&&&) (&&&) (&&&) (&&&) None None None None
  +let op_ExclusiveOr = invokeBinOp "op_ExclusiveOr" (^^^) (^^^) (^^^) (^^^) (^^^) (^^^) (^^^) (^^^) (^^^) (^^^) (^^^) None None None None
  +let op_LeftShift = invokeBinOp "op_LeftShift" (<<<) (<<<) (<<<) (<<<) (<<<) (<<<) (<<<) (<<<) (<<<) (<<<) (<<<) None None None None
  +let op_RightShift = invokeBinOp "op_RightShift" (>>>) (>>>) (>>>) (>>>) (>>>) (>>>) (>>>) (>>>) (>>>) (>>>) (>>>) None None None None
   
   let binOpLookup : System.Collections.Generic.IDictionary<string, (Type->Type->Type->obj->obj->obj)> = 
       dict
  
positive.code:          ("op_LeftShift",op_LeftShift)
           ("op_RightShift",op_RightShift)]
  
  let op_UnaryNegation (aty:Type) (bty:Type) (x:obj) : obj = 
      let dyn() = invokeUnaryOpDynamic "op_UnaryNegation" aty x
      if aty.Equals(bty) then
          if aty.Equals(typeof<int32>)        then box (-(unbox<int32> x))
          elif aty.Equals(typeof<float>)      then box (-(unbox<float> x))
          elif aty.Equals(typeof<float32>)    then box (-(unbox<float32> x))
          elif aty.Equals(typeof<int64>)      then box (-(unbox<int64> x))
          elif aty.Equals(typeof<int16>)      then box (-(unbox<int16> x))
          elif aty.Equals(typeof<nativeint>)  then box (-(unbox<nativeint> x))
          elif aty.Equals(typeof<sbyte>)      then box (-(unbox<sbyte> x))
          elif aty.Equals(typeof<decimal>)    then box (-(unbox<decimal> x))
          elif aty.Equals(typeof<bigint>)     then box (-(unbox<bigint> x))
          else dyn()
      else dyn()
  
  let op_UnaryPlus (aty:Type) (bty:Type) (x:obj) : obj = 
      let dyn() = invokeUnaryOpDynamic "op_UnaryPlus" aty x
      if aty.Equals(bty) then //N.B. a no-op for primitives
          if aty.Equals(typeof<int32>)        then box ((~+)(unbox<int32> x))
          elif aty.Equals(typeof<float>)      then box ((~+)(unbox<float> x))
          elif aty.Equals(typeof<float32>)    then box ((~+)(unbox<float32> x))
          elif aty.Equals(typeof<int64>)      then box ((~+)(unbox<int64> x))
          elif aty.Equals(typeof<uint64>)     then box ((~+)(unbox<uint64> x))
          elif aty.Equals(typeof<uint32>)     then box ((~+)(unbox<uint32> x))
          elif aty.Equals(typeof<uint16>)     then box ((~+)(unbox<uint16> x))
          elif aty.Equals(typeof<nativeint>)  then box ((~+)(unbox<nativeint> x))
          elif aty.Equals(typeof<unativeint>) then box ((~+)(unbox<unativeint> x))
          elif aty.Equals(typeof<sbyte>)      then box ((~+)(unbox<sbyte> x))
          elif aty.Equals(typeof<byte>)       then box ((~+)(unbox<byte> x))
          elif aty.Equals(typeof<decimal>)    then box ((~+)(unbox<decimal> x))
          elif aty.Equals(typeof<bigint>)     then box ((~+)(unbox<bigint> x))
          else dyn()
      else dyn()
  
  let ToByte (aty:Type) (bty:Type) (x:obj) : obj =
      if aty.Equals(typeof<string>)       then box (byte (unbox<string> x))
  
negative.code: 
  module Checked =
      open Checked
      let op_Addition = invokeBinOp "op_Addition" (+) (+) (+) (+) (+) (+) (+) (+) (+) (+) (+) (Some(+)) (Some(+)) (Some(+)) (Some(+)) //dynamic impl is given in F# lib, but we implement ourselves for perf. gain
      let op_Multiply = invokeBinOp "op_Multiply" (*) (*) (*) (*) (*) (*) (*) (*) (*) (*) (*) (Some(*)) (Some(*)) (Some(*)) None
      let op_Subtraction = invokeBinOp "op_Subtraction" (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (Some(-)) (Some(-)) (Some(-)) None
  
      let binOpLookup : System.Collections.Generic.IDictionary<string, (Type->Type->Type->obj->obj->obj)> = 
          dict
  