Currently the union of the input types and the output types are used. This works in most cases, but there are some edge cases to consider. - [ ] When the instruction returns something for the exec stack. - [ ] When the instruction returns an entire state. - [ ] When the instruction requires an entire state as input. - [ ] When the instruction does not require any inputs/outputs (aka noop, close, etc)