change Semafor.runParser to accept {Input,Output}Suppliers