Well the contract for disassemble() is that it’s allowed to return an instance of a different serializable type. So that change should not be necessary.