anchor.diff:        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)
       | _ ->
  
positive.code:     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 altEmitterTableReceiver (recv: Expr option, mi: MethodInfo) =
      let dict = Dictionary<MethodInfo, CompileStackInfo list>(identityEqualityComparer)
  
negative.code: 
    let private altEmitterTableUnchecked =
      let dict = Dictionary<MethodInfo, CompileStackInfo list>(identityEqualityComparer)
      dict.Add(getMethod <@ 'a' + 'a' @>, emitOpCode Add)
      dict.Add(getMethod <@ 1 % 1 @>, emitOpCode Rem)
      dict.Add(getMethod <@ 1 &&& 1 @>, emitOpCode And)
      dict.Add(getMethod <@ 1 ||| 1 @>, emitOpCode Or)
  