anchor.diff:      dict.Add(getMethod <@ int64 "" @>, emitCallMethod (getMethod <@ LanguagePrimitives.ParseInt64("") @>))
       dict.Add(getMethod <@ uint64 "" @>, emitCallMethod (getMethod <@ LanguagePrimitives.ParseUInt64("") @>))
   
  -    dict.Add(getMethod <@ byte 'a' @>, emitOpCode Conv_Ovf_U1)
  -    dict.Add(getMethod <@ sbyte 'a' @>, emitOpCode Conv_Ovf_I1)
  -    dict.Add(getMethod <@ char 'a' @>, doNothing)
  -    dict.Add(getMethod <@ int 'a' @>, emitOpCode Conv_Ovf_I4)
  -    dict.Add(getMethod <@ int16 'a' @>, emitOpCode Conv_Ovf_I2)
  -    dict.Add(getMethod <@ uint16 'a' @>, emitOpCode Conv_Ovf_U2)
  -    dict.Add(getMethod <@ int32 'a' @>, emitOpCode Conv_Ovf_I4)
  -    dict.Add(getMethod <@ uint32 'a' @>, emitOpCode Conv_Ovf_U4)
  -    dict.Add(getMethod <@ int64 'a' @>, emitOpCode Conv_Ovf_I8)
  -    dict.Add(getMethod <@ uint64 'a' @>, emitOpCode Conv_Ovf_U8)
  -    dict.Add(getMethod <@ nativeint 'a' @>, emitOpCode Conv_Ovf_I)
  -    dict.Add(getMethod <@ unativeint 'a' @>, emitOpCode Conv_Ovf_U)
  -
  -    dict.Add(getMethod <@ byte 1.0 @>, emitOpCode Conv_Ovf_U1)
  -    dict.Add(getMethod <@ sbyte 1.0 @>, emitOpCode Conv_Ovf_I1)
  -    dict.Add(getMethod <@ char 1.0 @>, emitOpCode Conv_Ovf_U2)
  -    dict.Add(getMethod <@ int 1.0 @>, emitOpCode Conv_Ovf_I4)
  -    dict.Add(getMethod <@ int16 1.0 @>, emitOpCode Conv_Ovf_I2)
  -    dict.Add(getMethod <@ uint16 1.0 @>, emitOpCode Conv_Ovf_U2)
  -    dict.Add(getMethod <@ int32 1.0 @>, emitOpCode Conv_Ovf_I4)
  -    dict.Add(getMethod <@ uint32 1.0 @>, emitOpCode Conv_Ovf_U4)
  -    dict.Add(getMethod <@ int64 1.0 @>, emitOpCode Conv_Ovf_I8)
  -    dict.Add(getMethod <@ uint64 1.0 @>, emitOpCode Conv_Ovf_U8)
  -    dict.Add(getMethod <@ nativeint 1.0 @>, emitOpCode Conv_Ovf_I)
  -    dict.Add(getMethod <@ unativeint 1.0 @>, emitOpCode Conv_Ovf_U)
  -
       dict :> IReadOnlyDictionary<_, _>
   
     // shadowing the functions of the Microsoft.FSharp.Core.Operators.Checked module
     open Microsoft.FSharp.Core.Operators
   
  -  let loadVariableInLocalScope (r: Expr) =
  -    [
  -      Compiling (fun (gen: ILGeneratorWrapper) -> let loc = gen.DeclareLocal(r.Type) in gen.Emit(Stloc (loc, None)); gen.Emit(Ldloca (loc, None)))
  -    ]
  +  let private altGenericEmitterTable =
  +    let dict = Dictionary<MethodInfo, CompileStackInfo list>(identityEqualityComparer)
  +    let x = 42
  +    dict.Add(getGenericMethod <@ +(x) @>, doNothing)
  +    dict.Add(getGenericMethod <@ -(x) @>, emitOpCode Neg)
  +    dict.Add(getGenericMethod <@ x - x @>, emitOpCode Sub)
  +    dict.Add(getGenericMethod <@ x / x @>, emitOpCode Div)
  +
  +    dict.Add(getGenericMethod <@ byte x @>, emitOpCode Conv_U1)
  +    dict.Add(getGenericMethod <@ sbyte x @>, emitOpCode Conv_I1)
  +    dict.Add(getGenericMethod <@ int x @>, emitOpCode Conv_I4)
  +    dict.Add(getGenericMethod <@ int16 x @>, emitOpCode Conv_I2)
  +    dict.Add(getGenericMethod <@ uint16 x @>, emitOpCode Conv_U2)
  +    dict.Add(getGenericMethod <@ int32 x @>, emitOpCode Conv_I4)
  +    dict.Add(getGenericMethod <@ uint32 x @>, emitOpCode Conv_U4)
  +    dict.Add(getGenericMethod <@ int64 x @>, emitOpCode Conv_I8)
  +    dict.Add(getGenericMethod <@ uint64 x @>, emitOpCode Conv_U8)
  +    dict.Add(getGenericMethod <@ nativeint x @>, emitOpCode Conv_I)
  +    dict.Add(getGenericMethod <@ unativeint x @>, emitOpCode Conv_I)
  +    dict.Add(getGenericMethod <@ float32 x @>, emitOpCode Conv_R4)
  +    dict.Add(getGenericMethod <@ float x @>, emitOpCode Conv_R8)
  +
  +    dict.Add(getGenericMethod <@ Checked.byte x @>, emitOpCode Conv_Ovf_U1)
  +    dict.Add(getGenericMethod <@ Checked.sbyte x @>, emitOpCode Conv_Ovf_I1)
  +    dict.Add(getGenericMethod <@ Checked.char x @>, emitOpCode Conv_Ovf_U2)
  +    dict.Add(getGenericMethod <@ Checked.int x @>, emitOpCode Conv_Ovf_I4)
  +    dict.Add(getGenericMethod <@ Checked.int16 x @>, emitOpCode Conv_Ovf_I2)
  +    dict.Add(getGenericMethod <@ Checked.uint16 x @>, emitOpCode Conv_Ovf_U2)
  +    dict.Add(getGenericMethod <@ Checked.int32 x @>, emitOpCode Conv_Ovf_I4)
  +    dict.Add(getGenericMethod <@ Checked.uint32 x @>, emitOpCode Conv_Ovf_U4)
  +    dict.Add(getGenericMethod <@ Checked.int64 x @>, emitOpCode Conv_Ovf_I8)
  +    dict.Add(getGenericMethod <@ Checked.uint64 x @>, emitOpCode Conv_Ovf_U8)
  +    dict.Add(getGenericMethod <@ Checked.nativeint x @>, emitOpCode Conv_Ovf_I)
  +    dict.Add(getGenericMethod <@ Checked.unativeint x @>, emitOpCode Conv_Ovf_U)
  +    dict :> IReadOnlyDictionary<_, _>
   
     let private altEmitterTableReceiver (recv: Expr option, mi: MethodInfo) =
       let dict = Dictionary<MethodInfo, CompileStackInfo list>(identityEqualityComparer)
  
positive.code: 
    let private altEmitterTableUnchecked =
      let dict = Dictionary<MethodInfo, CompileStackInfo list>(identityEqualityComparer)
      dict.Add(getMethod <@ +(1) @>, doNothing)
      dict.Add(getMethod <@ +(1.0) @>, doNothing)
      dict.Add(getMethod <@ -(1) @>, emitOpCode Neg)
      dict.Add(getMethod <@ -(1.0) @>, emitOpCode Neg)
      dict.Add(getMethod <@ 'a' + 'a' @>, emitOpCode Add)
      dict.Add(getMethod <@ 1 - 1 @>, emitOpCode Sub)
      dict.Add(getMethod <@ 1.0 - 1.0 @>, emitOpCode Sub)
      dict.Add(getMethod <@ 1 / 1 @>, emitOpCode Div)
      dict.Add(getMethod <@ 1.0 / 1.0 @>, emitOpCode Div)
      dict.Add(getMethod <@ 1 % 1 @>, emitOpCode Rem)
      dict.Add(getMethod <@ 1 &&& 1 @>, emitOpCode And)
      dict.Add(getMethod <@ 1 ||| 1 @>, emitOpCode Or)
  
negative.code:       Compiling (fun (gen: ILGeneratorWrapper) -> gen.Emit(ILOpCode.ldloca local name))
      ]
  
    let private tryGetGenericEmitter (mi: MethodInfo) =
      if mi.IsGenericMethod then
        match altGenericEmitterTable.TryGetValue(mi.GetGenericMethodDefinition()) with
        | true, emitter -> Some emitter
        | _ -> None
      else
        None
  
    let private getPushingCompileStackInfos (recv: Expr option) (mi: MethodInfo) =
      // TODO : rewrite using option computation builder
      match altEmitterTableUnchecked.TryGetValue(mi) with
      | true, emitter -> (emitter, None)
      | _ ->
  