graph BT
  raw_handle[zx_handle_t]
  owned_handle[zx::Handle]
  owned_channel[zx::Channel]
  client_end[fidl::endpoints::ClientEnd<TicTacToeMarker>]
  sync_proxy[TicTacToeSynchronousProxy]

  raw_handle-- zx::Handle::from_raw() -->owned_handle
  owned_handle-- .into_raw() -->raw_handle

  owned_handle-- zx::Channel::from() -->owned_channel
  owned_channel-- zx::Handle::from() -->owned_handle

  owned_channel-- ClientEnd::from() -->client_end
  client_end-- .into_channel() -->owned_channel
  client_end-- .into_sync_proxy() -->sync_proxy
  sync_proxy-- ".into_channel()" -->owned_channel
  owned_channel-- SynchronousProxy::from_channel() -->sync_proxy