// WARNING: This file is machine generated by fidlgen.

#pragma once

#include <test/errorsyntax/cpp/fidl.h>
#include <test/errorsyntax/parent/cpp/fidl.h>
namespace test {
namespace errorsyntax {
namespace testing {
class ExampleUseOfErrorSyntax_TestBase : public ::test::errorsyntax::ExampleUseOfErrorSyntax {
 public:
  virtual ~ExampleUseOfErrorSyntax_TestBase() {}
  virtual void NotImplemented_(const std::string& name) = 0;
  void ComposedCallWhichMayFail(::std::string s, ComposedCallWhichMayFailCallback callback) override {
    NotImplemented_("ComposedCallWhichMayFail");
  }
  void CallWhichMayFail(::std::string s, CallWhichMayFailCallback callback) override {
    NotImplemented_("CallWhichMayFail");
  }
};
}  // namespace testing
}  // namespace errorsyntax
}  // namespace test
