anchor.diff:          | _ -> Some stmt
   
   // https://www.python.org/dev/peps/pep-0484/
  -module TypeHint =
  +module Annotation =
       open Lib
  +
  +    let getEntityGenParams (ent: Fable.Entity) =
  +        ent.GenericParameters
  +        |> Seq.map (fun x -> x.Name)
  +        |> Set.ofSeq
  +
  +    let makeTypeParamDecl (com: IPythonCompiler) ctx (genParams: Set<string>) =
  +        if (Set.isEmpty genParams) then
  +            []
  +        else
  +            com.GetImportExpr(ctx, "typing", "Generic") |> ignore
  +            com.GetImportExpr(ctx, "typing", "TypeVar") |> ignore
  +
  +            let genParams =
  +                genParams
  +                |> Set.toList
  +                |> List.map (fun genParam ->
  +                    let arg = Util.getUniqueNameInRootScope (ctx: Context) genParam
  +                    com.AddTypeVar(arg)
  +                    Expression.name(arg))
  +
  +            let generic = Expression.name "Generic"
  +            [ Expression.subscript(generic, Expression.tuple genParams) ]
   
       let private libReflectionCall (com: IPythonCompiler) ctx r memberName args =
           libCall com ctx r "reflection" (memberName + "_type") args
  
positive.code:         | _ ->
              varDeclaration ctx membName None expr
  
      let getUnionFieldsAsIdents (_com: IPythonCompiler) _ctx (_ent: Fable.Entity) =
          let tagId = makeTypedIdent (Fable.Number(Int32, None)) "tag"
          let fieldsId = makeTypedIdent (Fable.Array Fable.Any) "fields"
  
negative.code:             | Fable.Type.Number(UInt32, _)
              | Fable.Type.Number(Float32, _)
              | Fable.Type.Number(Float64, _) ->
                  pythonModuleTypeHint "array" "array" [||]
              | _ ->
                  typingModuleTypeHint "List" [| genArg |]
          | Fable.List genArg     -> fableModuleTypeInfo "list" "FSharpList" [| genArg |]
  