TODO
No point in checking if the unspecified outputs are specified || allowedUnspecified, just check if allowedUnspecified
Inline isLegalOutput
Undelayed inputs only get recorded