anchor.diff:      dict.Add(getMethod <@ sbyte 1 @>, doNothing)
       dict.Add(getMethod <@ char 1 @>, doNothing)
       dict.Add(getMethod <@ decimal 1 @>, emitCallMethod (getMethod <@ Convert.ToDecimal(1) @>))
  -    dict.Add(getMethod <@ float 1 @>, emitOpCode Conv_R8)
  -    dict.Add(getMethod <@ float32 1 @>, emitOpCode Conv_R4)
       dict.Add(getMethod <@ int 1 @>, doNothing)
       dict.Add(getMethod <@ int16 1 @>, doNothing)
       dict.Add(getMethod <@ uint16 1 @>, doNothing)
       dict.Add(getMethod <@ int32 1 @>, doNothing)
       dict.Add(getMethod <@ uint32 1 @>, doNothing)
  -    dict.Add(getMethod <@ int64 1 @>, emitOpCode Conv_I8)
       dict.Add(getMethod <@ uint64 1 @>, emitOpCode Conv_I8)
  -    dict.Add(getMethod <@ nativeint 1 @>, emitOpCode Conv_I)
  -    dict.Add(getMethod <@ unativeint 1 @>, emitOpCode Conv_I)
   
       dict.Add(getMethod <@ byte "" @>, emitOpCode (Call (Method (getMethod <@ LanguagePrimitives.ParseUInt32("") @>)))
                                         |>> emitOpCode Conv_Ovf_U1)
  
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_U1)
      dict.Add(getMethod <@ sbyte 'a' @>, emitOpCode Conv_I1)
      dict.Add(getMethod <@ char 'a' @>, doNothing)
      dict.Add(getMethod <@ float 'a' @>, emitOpCode Conv_R8)
      dict.Add(getMethod <@ float32 'a' @>, emitOpCode Conv_R4)
      dict.Add(getMethod <@ int 'a' @>, emitOpCode Conv_I4)
      dict.Add(getMethod <@ int16 'a' @>, emitOpCode Conv_I2)
      dict.Add(getMethod <@ uint16 'a' @>, emitOpCode Conv_U2)
      dict.Add(getMethod <@ int32 'a' @>, emitOpCode Conv_I4)
      dict.Add(getMethod <@ uint32 'a' @>, emitOpCode Conv_U4)
      dict.Add(getMethod <@ int64 'a' @>, emitOpCode Conv_I8)
      dict.Add(getMethod <@ uint64 'a' @>, emitOpCode Conv_U8)
      dict.Add(getMethod <@ nativeint 'a' @>, emitOpCode Conv_I)
      dict.Add(getMethod <@ unativeint 'a' @>, emitOpCode Conv_U)
  
      dict.Add(getMethod <@ byte 1.0 @>, emitOpCode Conv_U1)
      dict.Add(getMethod <@ sbyte 1.0 @>, emitOpCode Conv_I1)
      dict.Add(getMethod <@ char 1.0 @>, emitOpCode Conv_U2)
      dict.Add(getMethod <@ decimal 1.0 @>, emitCallMethod (getMethod <@ Convert.ToDecimal(1.0) @>))
      dict.Add(getMethod <@ float 1.0 @>, doNothing)
      dict.Add(getMethod <@ float32 1.0 @>, emitOpCode Conv_R4)
      dict.Add(getMethod <@ int 1.0 @>, emitOpCode Conv_I4)
      dict.Add(getMethod <@ int16 1.0 @>, emitOpCode Conv_I2)
      dict.Add(getMethod <@ uint16 1.0 @>, emitOpCode Conv_U2)
      dict.Add(getMethod <@ int32 1.0 @>, emitOpCode Conv_I4)
      dict.Add(getMethod <@ uint32 1.0 @>, emitOpCode Conv_U4)
      dict.Add(getMethod <@ int64 1.0 @>, emitOpCode Conv_I8)
      dict.Add(getMethod <@ uint64 1.0 @>, emitOpCode Conv_U8)
      dict.Add(getMethod <@ nativeint 1.0 @>, emitOpCode Conv_I)
      dict.Add(getMethod <@ unativeint 1.0 @>, emitOpCode Conv_U)
  
  
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)
      | _ ->
  