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

// fidl_experiment = output_index_json

#pragma once

#include <fidl/test.nullable/cpp/fidl.h>

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wshadow"

namespace fidl {
namespace testing {

template <>
class TestBase<::test_nullable::SimpleProtocol> : public ::fidl::Server<::test_nullable::SimpleProtocol> {
 public:
  virtual ~TestBase<::test_nullable::SimpleProtocol>() = default;
  virtual void NotImplemented_(const std::string& name, ::fidl::CompleterBase& completer) = 0;
  virtual void Add(AddRequest& request,
                   AddCompleter::Sync& completer) {
    NotImplemented_("Add", completer);
  }
};
#pragma clang diagnostic pop

}  // namespace testing
}  // namespace fidl
