/// These can be amalgamated in tuples to form sophisticated routing systems. In tuple format, each
/// router might return `NotApplicable` to pass the execution to the next sender item. Note that
/// each `NotApplicable` might alter the destination and the XCM message for to the next router.
/// fn validate(destination: &mut Option<Location>, message: &mut Option<Xcm<()>>) -> SendResult<()> {
/// fn validate(destination: &mut Option<Location>, message: &mut Option<Xcm<()>>) -> SendResult<()> {
/// If it is not a destination which can be reached with this type but possibly could by others,
/// Convenience function for using a `SendXcm` implementation. Just interprets the `dest` and wraps
/// Convenience function for using a `SendXcm` implementation. Just interprets the `dest` and wraps
/// Returns either `Ok` with the price of the delivery, or `Err` with the reason why the message
/// Generally you'll want to validate and get the price first to ensure that the sender can pay it