fn pack_output<OutputAddress, F, W: Write>(
    output: &Output<OutputAddress>,
    address_packer: &mut F,
    codec: &mut Codec<W>
) -> Result<(), WriteError>where
    F: FnMut(&OutputAddress, &mut Codec<W>) -> Result<(), WriteError>,