to be fair  it is even more mad that you were returning something from decode that does not support being decoded  i did not say you could not use binary object if you wanted to  just that opcode as an interface was pointless  i change binary decode because i want to be able to support compatibility shims that can decode old data  but not re encode  it makes total sense  also  given that i changed it a while ago  there is not a single occurrence of a cast in our code base  and you have not even noticed let alone been badly affected by it i stand by the decision 