generating synthetic types to hold stream events which return more then one value; will need to do something similar for multi-value futures as well