    try!(writeln!(dest, "#[derive(Clone, Debug)]"));
    try!(writeln!(dest, "pub enum Instruction {{")); dest.ident(); {
        for op in grammar["instructions"].members() {
            try!(writeln!(dest, "{name}({name}),", name=op["opname"]));
        }
    } dest.unident(); try!(writeln!(dest, "}}"));
    try!(writeln!(dest, ""));

    try!(writeln!(dest, "impl Instruction {{")); dest.ident(); {
        try!(writeln!(dest, "pub fn from_raw(opcode: OpCode, view: &mut RawInstructionView) -> Result<Self, ReadError> {{")); dest.ident(); {
            try!(writeln!(dest, "let instr = match opcode {{")); dest.ident(); {
                for op in grammar["instructions"].members() {
                    try!(writeln!(dest, "OpCode::{name} => Instruction::{name}(try!({name}::read(view))),", name=op["opname"]));
                }
            } dest.unident(); try!(writeln!(dest, "}};"));