rune: Rune(4),
          ..Default::default()
        }),
        ..Default::default()
      }))
    );
  }

  #[test]
  fn additional_integers_in_body_are_ignored() {
    let payload = payload(&[2, 4, 0, 1, 2, 3, 4, 5]);

    let payload: &PushBytes = payload.as_slice().try_into().unwrap();

    assert_eq!(
      Runestone::decipher(&Transaction {
        input: Vec::new(),
        output: vec![TxOut {
          script_pubkey: script::Builder::new()
            .push_opcode(opcodes::all::OP_RETURN)
            .push_slice(b"RUNE_TEST")
            .push_slice(payload)
            .into_script(),
          value: 0
        }],
        lock_time: locktime::absolute::LockTime::ZERO,
        version: 0,
      }),
      Ok(Some(Runestone {
        edicts: vec![Edict {
          id: 1,
          amount: 2,
          output: 3,
        }],
        etching: Some(Etching {
          rune: Rune(4),
          ..Default::default()
        }),
        ..Default::default()
      }))
    );
  }

  #[test]
  fn decipher_etching_with_divisibility() {