XCM is a language, not a protocol. It describes intentions (e.g. `WithdrawAsset`, `BuyExecution`, `DepositAsset`) executed by Cross-Virtual Machines (XCVM) across parachains, system chains, and bridge hubs.
rust
let message = Xcm(vec![
WithdrawAsset(assets),
BuyExecution { fees, weight_limit: Unlimited },
DepositAsset { assets: Wild(All), beneficiary },
]);