pub trait InstructionSpec<S: Symbolic>: IntoIterator<Item = Self> {
type Head: InstructionHead<S>;
type Tail: InstructionTail<S>;
// Required methods
fn new(head: Self::Head, tail: Self::Tail) -> Self;
fn head(&self) -> Self::Head;
fn tail(&self) -> Self::Tail;
}