Producer needs to be contravariant in its type parameter
Initial work for REPL