class {{export_attribute}} {{interface.name}}StubDispatch { public: static bool Accept({{interface.name}}* impl, mojo::Message* message); static bool AcceptWithResponder( {{interface.name}}* impl, mojo::Message* message, std::unique_ptr responder); }; template > class {{interface.name}}Stub : public mojo::MessageReceiverWithResponderStatus { public: using ImplPointerType = typename ImplRefTraits::PointerType; {{interface.name}}Stub() {} ~{{interface.name}}Stub() override {} void set_sink(ImplPointerType sink) { sink_ = std::move(sink); } ImplPointerType& sink() { return sink_; } bool Accept(mojo::Message* message) override { if (ImplRefTraits::IsNull(sink_)) return false; return {{interface.name}}StubDispatch::Accept( ImplRefTraits::GetRawPointer(&sink_), message); } bool AcceptWithResponder( mojo::Message* message, std::unique_ptr responder) override { if (ImplRefTraits::IsNull(sink_)) return false; return {{interface.name}}StubDispatch::AcceptWithResponder( ImplRefTraits::GetRawPointer(&sink_), message, std::move(responder)); } private: ImplPointerType sink_; };