text: /**
   * Autogenerated by Thrift for src/module.thrift
   *
   * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
   *  @generated @nocommit
   */
  
  #include "thrift/compiler/test/fixtures/visitation/gen-cpp2/service_with_special_names.h"
  #include "thrift/compiler/test/fixtures/visitation/gen-cpp2/service_with_special_names.tcc"
  #include "thrift/compiler/test/fixtures/visitation/gen-cpp2/module_metadata.h"
  #include <thrift/lib/cpp2/gen/service_cpp.h>
  
  std::unique_ptr<apache::thrift::AsyncProcessor> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::getProcessor() {
    return std::make_unique<::test_cpp2::cpp_reflection::service_with_special_namesAsyncProcessor>(this);
  }
  
  apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::CreateMethodMetadataResult apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::createMethodMetadata() {
    return ::apache::thrift::detail::ap::createMethodMetadataMap<::test_cpp2::cpp_reflection::service_with_special_namesAsyncProcessor>();
  }
  
  std::optional<std::reference_wrapper<apache::thrift::ServiceRequestInfoMap const>> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::getServiceRequestInfoMap() const {
    return __fbthrift_serviceInfoHolder.requestInfoMap();
  }
  
  ::test_cpp2::cpp_reflection::service_with_special_namesServiceInfoHolder apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::__fbthrift_serviceInfoHolder;
  
  
  ::std::int32_t apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::get() {
    apache::thrift::detail::si::throw_app_exn_unimplemented("get");
  }
  
  folly::SemiFuture<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::semifuture_get() {
    auto expected{apache::thrift::detail::si::InvocationType::SemiFuture};
    __fbthrift_invocation_get.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::Sync, std::memory_order_relaxed);
    return get();
  }
  
  folly::Future<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::future_get() {
    auto expected{apache::thrift::detail::si::InvocationType::Future};
    __fbthrift_invocation_get.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::SemiFuture, std::memory_order_relaxed);
    return apache::thrift::detail::si::future(semifuture_get(), getInternalKeepAlive());
  }
  
  void apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::async_tm_get(std::unique_ptr<apache::thrift::HandlerCallback<::std::int32_t>> callback) {
    // It's possible the coroutine versions will delegate to a future-based
    // version. If that happens, we need the RequestParams arguments to be
    // available to the future through the thread-local backchannel, so we create
    // a RAII object that sets up RequestParams and clears them on destruction.
    apache::thrift::detail::si::AsyncTmPrep asyncTmPrep(this, callback.get());
    auto invocationType = __fbthrift_invocation_get.load(std::memory_order_relaxed);
    try {
      switch (invocationType) {
        case apache::thrift::detail::si::InvocationType::AsyncTm:
        {
          __fbthrift_invocation_get.compare_exchange_strong(invocationType, apache::thrift::detail::si::InvocationType::Future, std::memory_order_relaxed);
          FOLLY_FALLTHROUGH;
        }
        case apache::thrift::detail::si::InvocationType::Future:
        {
          auto fut = future_get();
          apache::thrift::detail::si::async_tm_future(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::SemiFuture:
        {
          auto fut = semifuture_get();
          apache::thrift::detail::si::async_tm_semifuture(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::Sync:
        {
          callback->result(get());
          return;
        }
        default:
        {
          folly::assume_unreachable();
        }
      }
    } catch (...) {
      callback->exception(std::current_exception());
    }
  }
  
  ::std::int32_t apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::getter() {
    apache::thrift::detail::si::throw_app_exn_unimplemented("getter");
  }
  
  folly::SemiFuture<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::semifuture_getter() {
    auto expected{apache::thrift::detail::si::InvocationType::SemiFuture};
    __fbthrift_invocation_getter.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::Sync, std::memory_order_relaxed);
    return getter();
  }
  
  folly::Future<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::future_getter() {
    auto expected{apache::thrift::detail::si::InvocationType::Future};
    __fbthrift_invocation_getter.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::SemiFuture, std::memory_order_relaxed);
    return apache::thrift::detail::si::future(semifuture_getter(), getInternalKeepAlive());
  }
  
  void apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::async_tm_getter(std::unique_ptr<apache::thrift::HandlerCallback<::std::int32_t>> callback) {
    // It's possible the coroutine versions will delegate to a future-based
    // version. If that happens, we need the RequestParams arguments to be
    // available to the future through the thread-local backchannel, so we create
    // a RAII object that sets up RequestParams and clears them on destruction.
    apache::thrift::detail::si::AsyncTmPrep asyncTmPrep(this, callback.get());
    auto invocationType = __fbthrift_invocation_getter.load(std::memory_order_relaxed);
    try {
      switch (invocationType) {
        case apache::thrift::detail::si::InvocationType::AsyncTm:
        {
          __fbthrift_invocation_getter.compare_exchange_strong(invocationType, apache::thrift::detail::si::InvocationType::Future, std::memory_order_relaxed);
          FOLLY_FALLTHROUGH;
        }
        case apache::thrift::detail::si::InvocationType::Future:
        {
          auto fut = future_getter();
          apache::thrift::detail::si::async_tm_future(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::SemiFuture:
        {
          auto fut = semifuture_getter();
          apache::thrift::detail::si::async_tm_semifuture(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::Sync:
        {
          callback->result(getter());
          return;
        }
        default:
        {
          folly::assume_unreachable();
        }
      }
    } catch (...) {
      callback->exception(std::current_exception());
    }
  }
  
  ::std::int32_t apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::lists() {
    apache::thrift::detail::si::throw_app_exn_unimplemented("lists");
  }
  
  folly::SemiFuture<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::semifuture_lists() {
    auto expected{apache::thrift::detail::si::InvocationType::SemiFuture};
    __fbthrift_invocation_lists.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::Sync, std::memory_order_relaxed);
    return lists();
  }
  
  folly::Future<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::future_lists() {
    auto expected{apache::thrift::detail::si::InvocationType::Future};
    __fbthrift_invocation_lists.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::SemiFuture, std::memory_order_relaxed);
    return apache::thrift::detail::si::future(semifuture_lists(), getInternalKeepAlive());
  }
  
  void apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::async_tm_lists(std::unique_ptr<apache::thrift::HandlerCallback<::std::int32_t>> callback) {
    // It's possible the coroutine versions will delegate to a future-based
    // version. If that happens, we need the RequestParams arguments to be
    // available to the future through the thread-local backchannel, so we create
    // a RAII object that sets up RequestParams and clears them on destruction.
    apache::thrift::detail::si::AsyncTmPrep asyncTmPrep(this, callback.get());
    auto invocationType = __fbthrift_invocation_lists.load(std::memory_order_relaxed);
    try {
      switch (invocationType) {
        case apache::thrift::detail::si::InvocationType::AsyncTm:
        {
          __fbthrift_invocation_lists.compare_exchange_strong(invocationType, apache::thrift::detail::si::InvocationType::Future, std::memory_order_relaxed);
          FOLLY_FALLTHROUGH;
        }
        case apache::thrift::detail::si::InvocationType::Future:
        {
          auto fut = future_lists();
          apache::thrift::detail::si::async_tm_future(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::SemiFuture:
        {
          auto fut = semifuture_lists();
          apache::thrift::detail::si::async_tm_semifuture(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::Sync:
        {
          callback->result(lists());
          return;
        }
        default:
        {
          folly::assume_unreachable();
        }
      }
    } catch (...) {
      callback->exception(std::current_exception());
    }
  }
  
  ::std::int32_t apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::maps() {
    apache::thrift::detail::si::throw_app_exn_unimplemented("maps");
  }
  
  folly::SemiFuture<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::semifuture_maps() {
    auto expected{apache::thrift::detail::si::InvocationType::SemiFuture};
    __fbthrift_invocation_maps.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::Sync, std::memory_order_relaxed);
    return maps();
  }
  
  folly::Future<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::future_maps() {
    auto expected{apache::thrift::detail::si::InvocationType::Future};
    __fbthrift_invocation_maps.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::SemiFuture, std::memory_order_relaxed);
    return apache::thrift::detail::si::future(semifuture_maps(), getInternalKeepAlive());
  }
  
  void apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::async_tm_maps(std::unique_ptr<apache::thrift::HandlerCallback<::std::int32_t>> callback) {
    // It's possible the coroutine versions will delegate to a future-based
    // version. If that happens, we need the RequestParams arguments to be
    // available to the future through the thread-local backchannel, so we create
    // a RAII object that sets up RequestParams and clears them on destruction.
    apache::thrift::detail::si::AsyncTmPrep asyncTmPrep(this, callback.get());
    auto invocationType = __fbthrift_invocation_maps.load(std::memory_order_relaxed);
    try {
      switch (invocationType) {
        case apache::thrift::detail::si::InvocationType::AsyncTm:
        {
          __fbthrift_invocation_maps.compare_exchange_strong(invocationType, apache::thrift::detail::si::InvocationType::Future, std::memory_order_relaxed);
          FOLLY_FALLTHROUGH;
        }
        case apache::thrift::detail::si::InvocationType::Future:
        {
          auto fut = future_maps();
          apache::thrift::detail::si::async_tm_future(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::SemiFuture:
        {
          auto fut = semifuture_maps();
          apache::thrift::detail::si::async_tm_semifuture(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::Sync:
        {
          callback->result(maps());
          return;
        }
        default:
        {
          folly::assume_unreachable();
        }
      }
    } catch (...) {
      callback->exception(std::current_exception());
    }
  }
  
  ::std::int32_t apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::name() {
    apache::thrift::detail::si::throw_app_exn_unimplemented("name");
  }
  
  folly::SemiFuture<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::semifuture_name() {
    auto expected{apache::thrift::detail::si::InvocationType::SemiFuture};
    __fbthrift_invocation_name.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::Sync, std::memory_order_relaxed);
    return name();
  }
  
  folly::Future<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::future_name() {
    auto expected{apache::thrift::detail::si::InvocationType::Future};
    __fbthrift_invocation_name.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::SemiFuture, std::memory_order_relaxed);
    return apache::thrift::detail::si::future(semifuture_name(), getInternalKeepAlive());
  }
  
  void apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::async_tm_name(std::unique_ptr<apache::thrift::HandlerCallback<::std::int32_t>> callback) {
    // It's possible the coroutine versions will delegate to a future-based
    // version. If that happens, we need the RequestParams arguments to be
    // available to the future through the thread-local backchannel, so we create
    // a RAII object that sets up RequestParams and clears them on destruction.
    apache::thrift::detail::si::AsyncTmPrep asyncTmPrep(this, callback.get());
    auto invocationType = __fbthrift_invocation_name.load(std::memory_order_relaxed);
    try {
      switch (invocationType) {
        case apache::thrift::detail::si::InvocationType::AsyncTm:
        {
          __fbthrift_invocation_name.compare_exchange_strong(invocationType, apache::thrift::detail::si::InvocationType::Future, std::memory_order_relaxed);
          FOLLY_FALLTHROUGH;
        }
        case apache::thrift::detail::si::InvocationType::Future:
        {
          auto fut = future_name();
          apache::thrift::detail::si::async_tm_future(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::SemiFuture:
        {
          auto fut = semifuture_name();
          apache::thrift::detail::si::async_tm_semifuture(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::Sync:
        {
          callback->result(name());
          return;
        }
        default:
        {
          folly::assume_unreachable();
        }
      }
    } catch (...) {
      callback->exception(std::current_exception());
    }
  }
  
  ::std::int32_t apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::name_to_value() {
    apache::thrift::detail::si::throw_app_exn_unimplemented("name_to_value");
  }
  
  folly::SemiFuture<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::semifuture_name_to_value() {
    auto expected{apache::thrift::detail::si::InvocationType::SemiFuture};
    __fbthrift_invocation_name_to_value.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::Sync, std::memory_order_relaxed);
    return name_to_value();
  }
  
  folly::Future<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::future_name_to_value() {
    auto expected{apache::thrift::detail::si::InvocationType::Future};
    __fbthrift_invocation_name_to_value.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::SemiFuture, std::memory_order_relaxed);
    return apache::thrift::detail::si::future(semifuture_name_to_value(), getInternalKeepAlive());
  }
  
  void apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::async_tm_name_to_value(std::unique_ptr<apache::thrift::HandlerCallback<::std::int32_t>> callback) {
    // It's possible the coroutine versions will delegate to a future-based
    // version. If that happens, we need the RequestParams arguments to be
    // available to the future through the thread-local backchannel, so we create
    // a RAII object that sets up RequestParams and clears them on destruction.
    apache::thrift::detail::si::AsyncTmPrep asyncTmPrep(this, callback.get());
    auto invocationType = __fbthrift_invocation_name_to_value.load(std::memory_order_relaxed);
    try {
      switch (invocationType) {
        case apache::thrift::detail::si::InvocationType::AsyncTm:
        {
          __fbthrift_invocation_name_to_value.compare_exchange_strong(invocationType, apache::thrift::detail::si::InvocationType::Future, std::memory_order_relaxed);
          FOLLY_FALLTHROUGH;
        }
        case apache::thrift::detail::si::InvocationType::Future:
        {
          auto fut = future_name_to_value();
          apache::thrift::detail::si::async_tm_future(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::SemiFuture:
        {
          auto fut = semifuture_name_to_value();
          apache::thrift::detail::si::async_tm_semifuture(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::Sync:
        {
          callback->result(name_to_value());
          return;
        }
        default:
        {
          folly::assume_unreachable();
        }
      }
    } catch (...) {
      callback->exception(std::current_exception());
    }
  }
  
  ::std::int32_t apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::names() {
    apache::thrift::detail::si::throw_app_exn_unimplemented("names");
  }
  
  folly::SemiFuture<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::semifuture_names() {
    auto expected{apache::thrift::detail::si::InvocationType::SemiFuture};
    __fbthrift_invocation_names.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::Sync, std::memory_order_relaxed);
    return names();
  }
  
  folly::Future<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::future_names() {
    auto expected{apache::thrift::detail::si::InvocationType::Future};
    __fbthrift_invocation_names.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::SemiFuture, std::memory_order_relaxed);
    return apache::thrift::detail::si::future(semifuture_names(), getInternalKeepAlive());
  }
  
  void apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::async_tm_names(std::unique_ptr<apache::thrift::HandlerCallback<::std::int32_t>> callback) {
    // It's possible the coroutine versions will delegate to a future-based
    // version. If that happens, we need the RequestParams arguments to be
    // available to the future through the thread-local backchannel, so we create
    // a RAII object that sets up RequestParams and clears them on destruction.
    apache::thrift::detail::si::AsyncTmPrep asyncTmPrep(this, callback.get());
    auto invocationType = __fbthrift_invocation_names.load(std::memory_order_relaxed);
    try {
      switch (invocationType) {
        case apache::thrift::detail::si::InvocationType::AsyncTm:
        {
          __fbthrift_invocation_names.compare_exchange_strong(invocationType, apache::thrift::detail::si::InvocationType::Future, std::memory_order_relaxed);
          FOLLY_FALLTHROUGH;
        }
        case apache::thrift::detail::si::InvocationType::Future:
        {
          auto fut = future_names();
          apache::thrift::detail::si::async_tm_future(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::SemiFuture:
        {
          auto fut = semifuture_names();
          apache::thrift::detail::si::async_tm_semifuture(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::Sync:
        {
          callback->result(names());
          return;
        }
        default:
        {
          folly::assume_unreachable();
        }
      }
    } catch (...) {
      callback->exception(std::current_exception());
    }
  }
  
  ::std::int32_t apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::prefix_tree() {
    apache::thrift::detail::si::throw_app_exn_unimplemented("prefix_tree");
  }
  
  folly::SemiFuture<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::semifuture_prefix_tree() {
    auto expected{apache::thrift::detail::si::InvocationType::SemiFuture};
    __fbthrift_invocation_prefix_tree.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::Sync, std::memory_order_relaxed);
    return prefix_tree();
  }
  
  folly::Future<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::future_prefix_tree() {
    auto expected{apache::thrift::detail::si::InvocationType::Future};
    __fbthrift_invocation_prefix_tree.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::SemiFuture, std::memory_order_relaxed);
    return apache::thrift::detail::si::future(semifuture_prefix_tree(), getInternalKeepAlive());
  }
  
  void apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::async_tm_prefix_tree(std::unique_ptr<apache::thrift::HandlerCallback<::std::int32_t>> callback) {
    // It's possible the coroutine versions will delegate to a future-based
    // version. If that happens, we need the RequestParams arguments to be
    // available to the future through the thread-local backchannel, so we create
    // a RAII object that sets up RequestParams and clears them on destruction.
    apache::thrift::detail::si::AsyncTmPrep asyncTmPrep(this, callback.get());
    auto invocationType = __fbthrift_invocation_prefix_tree.load(std::memory_order_relaxed);
    try {
      switch (invocationType) {
        case apache::thrift::detail::si::InvocationType::AsyncTm:
        {
          __fbthrift_invocation_prefix_tree.compare_exchange_strong(invocationType, apache::thrift::detail::si::InvocationType::Future, std::memory_order_relaxed);
          FOLLY_FALLTHROUGH;
        }
        case apache::thrift::detail::si::InvocationType::Future:
        {
          auto fut = future_prefix_tree();
          apache::thrift::detail::si::async_tm_future(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::SemiFuture:
        {
          auto fut = semifuture_prefix_tree();
          apache::thrift::detail::si::async_tm_semifuture(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::Sync:
        {
          callback->result(prefix_tree());
          return;
        }
        default:
        {
          folly::assume_unreachable();
        }
      }
    } catch (...) {
      callback->exception(std::current_exception());
    }
  }
  
  ::std::int32_t apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::sets() {
    apache::thrift::detail::si::throw_app_exn_unimplemented("sets");
  }
  
  folly::SemiFuture<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::semifuture_sets() {
    auto expected{apache::thrift::detail::si::InvocationType::SemiFuture};
    __fbthrift_invocation_sets.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::Sync, std::memory_order_relaxed);
    return sets();
  }
  
  folly::Future<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::future_sets() {
    auto expected{apache::thrift::detail::si::InvocationType::Future};
    __fbthrift_invocation_sets.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::SemiFuture, std::memory_order_relaxed);
    return apache::thrift::detail::si::future(semifuture_sets(), getInternalKeepAlive());
  }
  
  void apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::async_tm_sets(std::unique_ptr<apache::thrift::HandlerCallback<::std::int32_t>> callback) {
    // It's possible the coroutine versions will delegate to a future-based
    // version. If that happens, we need the RequestParams arguments to be
    // available to the future through the thread-local backchannel, so we create
    // a RAII object that sets up RequestParams and clears them on destruction.
    apache::thrift::detail::si::AsyncTmPrep asyncTmPrep(this, callback.get());
    auto invocationType = __fbthrift_invocation_sets.load(std::memory_order_relaxed);
    try {
      switch (invocationType) {
        case apache::thrift::detail::si::InvocationType::AsyncTm:
        {
          __fbthrift_invocation_sets.compare_exchange_strong(invocationType, apache::thrift::detail::si::InvocationType::Future, std::memory_order_relaxed);
          FOLLY_FALLTHROUGH;
        }
        case apache::thrift::detail::si::InvocationType::Future:
        {
          auto fut = future_sets();
          apache::thrift::detail::si::async_tm_future(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::SemiFuture:
        {
          auto fut = semifuture_sets();
          apache::thrift::detail::si::async_tm_semifuture(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::Sync:
        {
          callback->result(sets());
          return;
        }
        default:
        {
          folly::assume_unreachable();
        }
      }
    } catch (...) {
      callback->exception(std::current_exception());
    }
  }
  
  ::std::int32_t apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::setter() {
    apache::thrift::detail::si::throw_app_exn_unimplemented("setter");
  }
  
  folly::SemiFuture<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::semifuture_setter() {
    auto expected{apache::thrift::detail::si::InvocationType::SemiFuture};
    __fbthrift_invocation_setter.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::Sync, std::memory_order_relaxed);
    return setter();
  }
  
  folly::Future<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::future_setter() {
    auto expected{apache::thrift::detail::si::InvocationType::Future};
    __fbthrift_invocation_setter.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::SemiFuture, std::memory_order_relaxed);
    return apache::thrift::detail::si::future(semifuture_setter(), getInternalKeepAlive());
  }
  
  void apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::async_tm_setter(std::unique_ptr<apache::thrift::HandlerCallback<::std::int32_t>> callback) {
    // It's possible the coroutine versions will delegate to a future-based
    // version. If that happens, we need the RequestParams arguments to be
    // available to the future through the thread-local backchannel, so we create
    // a RAII object that sets up RequestParams and clears them on destruction.
    apache::thrift::detail::si::AsyncTmPrep asyncTmPrep(this, callback.get());
    auto invocationType = __fbthrift_invocation_setter.load(std::memory_order_relaxed);
    try {
      switch (invocationType) {
        case apache::thrift::detail::si::InvocationType::AsyncTm:
        {
          __fbthrift_invocation_setter.compare_exchange_strong(invocationType, apache::thrift::detail::si::InvocationType::Future, std::memory_order_relaxed);
          FOLLY_FALLTHROUGH;
        }
        case apache::thrift::detail::si::InvocationType::Future:
        {
          auto fut = future_setter();
          apache::thrift::detail::si::async_tm_future(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::SemiFuture:
        {
          auto fut = semifuture_setter();
          apache::thrift::detail::si::async_tm_semifuture(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::Sync:
        {
          callback->result(setter());
          return;
        }
        default:
        {
          folly::assume_unreachable();
        }
      }
    } catch (...) {
      callback->exception(std::current_exception());
    }
  }
  
  ::std::int32_t apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::str() {
    apache::thrift::detail::si::throw_app_exn_unimplemented("str");
  }
  
  folly::SemiFuture<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::semifuture_str() {
    auto expected{apache::thrift::detail::si::InvocationType::SemiFuture};
    __fbthrift_invocation_str.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::Sync, std::memory_order_relaxed);
    return str();
  }
  
  folly::Future<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::future_str() {
    auto expected{apache::thrift::detail::si::InvocationType::Future};
    __fbthrift_invocation_str.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::SemiFuture, std::memory_order_relaxed);
    return apache::thrift::detail::si::future(semifuture_str(), getInternalKeepAlive());
  }
  
  void apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::async_tm_str(std::unique_ptr<apache::thrift::HandlerCallback<::std::int32_t>> callback) {
    // It's possible the coroutine versions will delegate to a future-based
    // version. If that happens, we need the RequestParams arguments to be
    // available to the future through the thread-local backchannel, so we create
    // a RAII object that sets up RequestParams and clears them on destruction.
    apache::thrift::detail::si::AsyncTmPrep asyncTmPrep(this, callback.get());
    auto invocationType = __fbthrift_invocation_str.load(std::memory_order_relaxed);
    try {
      switch (invocationType) {
        case apache::thrift::detail::si::InvocationType::AsyncTm:
        {
          __fbthrift_invocation_str.compare_exchange_strong(invocationType, apache::thrift::detail::si::InvocationType::Future, std::memory_order_relaxed);
          FOLLY_FALLTHROUGH;
        }
        case apache::thrift::detail::si::InvocationType::Future:
        {
          auto fut = future_str();
          apache::thrift::detail::si::async_tm_future(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::SemiFuture:
        {
          auto fut = semifuture_str();
          apache::thrift::detail::si::async_tm_semifuture(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::Sync:
        {
          callback->result(str());
          return;
        }
        default:
        {
          folly::assume_unreachable();
        }
      }
    } catch (...) {
      callback->exception(std::current_exception());
    }
  }
  
  ::std::int32_t apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::strings() {
    apache::thrift::detail::si::throw_app_exn_unimplemented("strings");
  }
  
  folly::SemiFuture<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::semifuture_strings() {
    auto expected{apache::thrift::detail::si::InvocationType::SemiFuture};
    __fbthrift_invocation_strings.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::Sync, std::memory_order_relaxed);
    return strings();
  }
  
  folly::Future<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::future_strings() {
    auto expected{apache::thrift::detail::si::InvocationType::Future};
    __fbthrift_invocation_strings.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::SemiFuture, std::memory_order_relaxed);
    return apache::thrift::detail::si::future(semifuture_strings(), getInternalKeepAlive());
  }
  
  void apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::async_tm_strings(std::unique_ptr<apache::thrift::HandlerCallback<::std::int32_t>> callback) {
    // It's possible the coroutine versions will delegate to a future-based
    // version. If that happens, we need the RequestParams arguments to be
    // available to the future through the thread-local backchannel, so we create
    // a RAII object that sets up RequestParams and clears them on destruction.
    apache::thrift::detail::si::AsyncTmPrep asyncTmPrep(this, callback.get());
    auto invocationType = __fbthrift_invocation_strings.load(std::memory_order_relaxed);
    try {
      switch (invocationType) {
        case apache::thrift::detail::si::InvocationType::AsyncTm:
        {
          __fbthrift_invocation_strings.compare_exchange_strong(invocationType, apache::thrift::detail::si::InvocationType::Future, std::memory_order_relaxed);
          FOLLY_FALLTHROUGH;
        }
        case apache::thrift::detail::si::InvocationType::Future:
        {
          auto fut = future_strings();
          apache::thrift::detail::si::async_tm_future(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::SemiFuture:
        {
          auto fut = semifuture_strings();
          apache::thrift::detail::si::async_tm_semifuture(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::Sync:
        {
          callback->result(strings());
          return;
        }
        default:
        {
          folly::assume_unreachable();
        }
      }
    } catch (...) {
      callback->exception(std::current_exception());
    }
  }
  
  ::std::int32_t apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::type() {
    apache::thrift::detail::si::throw_app_exn_unimplemented("type");
  }
  
  folly::SemiFuture<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::semifuture_type() {
    auto expected{apache::thrift::detail::si::InvocationType::SemiFuture};
    __fbthrift_invocation_type.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::Sync, std::memory_order_relaxed);
    return type();
  }
  
  folly::Future<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::future_type() {
    auto expected{apache::thrift::detail::si::InvocationType::Future};
    __fbthrift_invocation_type.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::SemiFuture, std::memory_order_relaxed);
    return apache::thrift::detail::si::future(semifuture_type(), getInternalKeepAlive());
  }
  
  void apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::async_tm_type(std::unique_ptr<apache::thrift::HandlerCallback<::std::int32_t>> callback) {
    // It's possible the coroutine versions will delegate to a future-based
    // version. If that happens, we need the RequestParams arguments to be
    // available to the future through the thread-local backchannel, so we create
    // a RAII object that sets up RequestParams and clears them on destruction.
    apache::thrift::detail::si::AsyncTmPrep asyncTmPrep(this, callback.get());
    auto invocationType = __fbthrift_invocation_type.load(std::memory_order_relaxed);
    try {
      switch (invocationType) {
        case apache::thrift::detail::si::InvocationType::AsyncTm:
        {
          __fbthrift_invocation_type.compare_exchange_strong(invocationType, apache::thrift::detail::si::InvocationType::Future, std::memory_order_relaxed);
          FOLLY_FALLTHROUGH;
        }
        case apache::thrift::detail::si::InvocationType::Future:
        {
          auto fut = future_type();
          apache::thrift::detail::si::async_tm_future(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::SemiFuture:
        {
          auto fut = semifuture_type();
          apache::thrift::detail::si::async_tm_semifuture(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::Sync:
        {
          callback->result(type());
          return;
        }
        default:
        {
          folly::assume_unreachable();
        }
      }
    } catch (...) {
      callback->exception(std::current_exception());
    }
  }
  
  ::std::int32_t apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::value() {
    apache::thrift::detail::si::throw_app_exn_unimplemented("value");
  }
  
  folly::SemiFuture<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::semifuture_value() {
    auto expected{apache::thrift::detail::si::InvocationType::SemiFuture};
    __fbthrift_invocation_value.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::Sync, std::memory_order_relaxed);
    return value();
  }
  
  folly::Future<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::future_value() {
    auto expected{apache::thrift::detail::si::InvocationType::Future};
    __fbthrift_invocation_value.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::SemiFuture, std::memory_order_relaxed);
    return apache::thrift::detail::si::future(semifuture_value(), getInternalKeepAlive());
  }
  
  void apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::async_tm_value(std::unique_ptr<apache::thrift::HandlerCallback<::std::int32_t>> callback) {
    // It's possible the coroutine versions will delegate to a future-based
    // version. If that happens, we need the RequestParams arguments to be
    // available to the future through the thread-local backchannel, so we create
    // a RAII object that sets up RequestParams and clears them on destruction.
    apache::thrift::detail::si::AsyncTmPrep asyncTmPrep(this, callback.get());
    auto invocationType = __fbthrift_invocation_value.load(std::memory_order_relaxed);
    try {
      switch (invocationType) {
        case apache::thrift::detail::si::InvocationType::AsyncTm:
        {
          __fbthrift_invocation_value.compare_exchange_strong(invocationType, apache::thrift::detail::si::InvocationType::Future, std::memory_order_relaxed);
          FOLLY_FALLTHROUGH;
        }
        case apache::thrift::detail::si::InvocationType::Future:
        {
          auto fut = future_value();
          apache::thrift::detail::si::async_tm_future(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::SemiFuture:
        {
          auto fut = semifuture_value();
          apache::thrift::detail::si::async_tm_semifuture(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::Sync:
        {
          callback->result(value());
          return;
        }
        default:
        {
          folly::assume_unreachable();
        }
      }
    } catch (...) {
      callback->exception(std::current_exception());
    }
  }
  
  ::std::int32_t apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::value_to_name() {
    apache::thrift::detail::si::throw_app_exn_unimplemented("value_to_name");
  }
  
  folly::SemiFuture<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::semifuture_value_to_name() {
    auto expected{apache::thrift::detail::si::InvocationType::SemiFuture};
    __fbthrift_invocation_value_to_name.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::Sync, std::memory_order_relaxed);
    return value_to_name();
  }
  
  folly::Future<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::future_value_to_name() {
    auto expected{apache::thrift::detail::si::InvocationType::Future};
    __fbthrift_invocation_value_to_name.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::SemiFuture, std::memory_order_relaxed);
    return apache::thrift::detail::si::future(semifuture_value_to_name(), getInternalKeepAlive());
  }
  
  void apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::async_tm_value_to_name(std::unique_ptr<apache::thrift::HandlerCallback<::std::int32_t>> callback) {
    // It's possible the coroutine versions will delegate to a future-based
    // version. If that happens, we need the RequestParams arguments to be
    // available to the future through the thread-local backchannel, so we create
    // a RAII object that sets up RequestParams and clears them on destruction.
    apache::thrift::detail::si::AsyncTmPrep asyncTmPrep(this, callback.get());
    auto invocationType = __fbthrift_invocation_value_to_name.load(std::memory_order_relaxed);
    try {
      switch (invocationType) {
        case apache::thrift::detail::si::InvocationType::AsyncTm:
        {
          __fbthrift_invocation_value_to_name.compare_exchange_strong(invocationType, apache::thrift::detail::si::InvocationType::Future, std::memory_order_relaxed);
          FOLLY_FALLTHROUGH;
        }
        case apache::thrift::detail::si::InvocationType::Future:
        {
          auto fut = future_value_to_name();
          apache::thrift::detail::si::async_tm_future(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::SemiFuture:
        {
          auto fut = semifuture_value_to_name();
          apache::thrift::detail::si::async_tm_semifuture(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::Sync:
        {
          callback->result(value_to_name());
          return;
        }
        default:
        {
          folly::assume_unreachable();
        }
      }
    } catch (...) {
      callback->exception(std::current_exception());
    }
  }
  
  ::std::int32_t apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::values() {
    apache::thrift::detail::si::throw_app_exn_unimplemented("values");
  }
  
  folly::SemiFuture<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::semifuture_values() {
    auto expected{apache::thrift::detail::si::InvocationType::SemiFuture};
    __fbthrift_invocation_values.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::Sync, std::memory_order_relaxed);
    return values();
  }
  
  folly::Future<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::future_values() {
    auto expected{apache::thrift::detail::si::InvocationType::Future};
    __fbthrift_invocation_values.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::SemiFuture, std::memory_order_relaxed);
    return apache::thrift::detail::si::future(semifuture_values(), getInternalKeepAlive());
  }
  
  void apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::async_tm_values(std::unique_ptr<apache::thrift::HandlerCallback<::std::int32_t>> callback) {
    // It's possible the coroutine versions will delegate to a future-based
    // version. If that happens, we need the RequestParams arguments to be
    // available to the future through the thread-local backchannel, so we create
    // a RAII object that sets up RequestParams and clears them on destruction.
    apache::thrift::detail::si::AsyncTmPrep asyncTmPrep(this, callback.get());
    auto invocationType = __fbthrift_invocation_values.load(std::memory_order_relaxed);
    try {
      switch (invocationType) {
        case apache::thrift::detail::si::InvocationType::AsyncTm:
        {
          __fbthrift_invocation_values.compare_exchange_strong(invocationType, apache::thrift::detail::si::InvocationType::Future, std::memory_order_relaxed);
          FOLLY_FALLTHROUGH;
        }
        case apache::thrift::detail::si::InvocationType::Future:
        {
          auto fut = future_values();
          apache::thrift::detail::si::async_tm_future(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::SemiFuture:
        {
          auto fut = semifuture_values();
          apache::thrift::detail::si::async_tm_semifuture(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::Sync:
        {
          callback->result(values());
          return;
        }
        default:
        {
          folly::assume_unreachable();
        }
      }
    } catch (...) {
      callback->exception(std::current_exception());
    }
  }
  
  ::std::int32_t apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::id() {
    apache::thrift::detail::si::throw_app_exn_unimplemented("id");
  }
  
  folly::SemiFuture<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::semifuture_id() {
    auto expected{apache::thrift::detail::si::InvocationType::SemiFuture};
    __fbthrift_invocation_id.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::Sync, std::memory_order_relaxed);
    return id();
  }
  
  folly::Future<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::future_id() {
    auto expected{apache::thrift::detail::si::InvocationType::Future};
    __fbthrift_invocation_id.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::SemiFuture, std::memory_order_relaxed);
    return apache::thrift::detail::si::future(semifuture_id(), getInternalKeepAlive());
  }
  
  void apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::async_tm_id(std::unique_ptr<apache::thrift::HandlerCallback<::std::int32_t>> callback) {
    // It's possible the coroutine versions will delegate to a future-based
    // version. If that happens, we need the RequestParams arguments to be
    // available to the future through the thread-local backchannel, so we create
    // a RAII object that sets up RequestParams and clears them on destruction.
    apache::thrift::detail::si::AsyncTmPrep asyncTmPrep(this, callback.get());
    auto invocationType = __fbthrift_invocation_id.load(std::memory_order_relaxed);
    try {
      switch (invocationType) {
        case apache::thrift::detail::si::InvocationType::AsyncTm:
        {
          __fbthrift_invocation_id.compare_exchange_strong(invocationType, apache::thrift::detail::si::InvocationType::Future, std::memory_order_relaxed);
          FOLLY_FALLTHROUGH;
        }
        case apache::thrift::detail::si::InvocationType::Future:
        {
          auto fut = future_id();
          apache::thrift::detail::si::async_tm_future(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::SemiFuture:
        {
          auto fut = semifuture_id();
          apache::thrift::detail::si::async_tm_semifuture(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::Sync:
        {
          callback->result(id());
          return;
        }
        default:
        {
          folly::assume_unreachable();
        }
      }
    } catch (...) {
      callback->exception(std::current_exception());
    }
  }
  
  ::std::int32_t apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::ids() {
    apache::thrift::detail::si::throw_app_exn_unimplemented("ids");
  }
  
  folly::SemiFuture<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::semifuture_ids() {
    auto expected{apache::thrift::detail::si::InvocationType::SemiFuture};
    __fbthrift_invocation_ids.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::Sync, std::memory_order_relaxed);
    return ids();
  }
  
  folly::Future<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::future_ids() {
    auto expected{apache::thrift::detail::si::InvocationType::Future};
    __fbthrift_invocation_ids.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::SemiFuture, std::memory_order_relaxed);
    return apache::thrift::detail::si::future(semifuture_ids(), getInternalKeepAlive());
  }
  
  void apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::async_tm_ids(std::unique_ptr<apache::thrift::HandlerCallback<::std::int32_t>> callback) {
    // It's possible the coroutine versions will delegate to a future-based
    // version. If that happens, we need the RequestParams arguments to be
    // available to the future through the thread-local backchannel, so we create
    // a RAII object that sets up RequestParams and clears them on destruction.
    apache::thrift::detail::si::AsyncTmPrep asyncTmPrep(this, callback.get());
    auto invocationType = __fbthrift_invocation_ids.load(std::memory_order_relaxed);
    try {
      switch (invocationType) {
        case apache::thrift::detail::si::InvocationType::AsyncTm:
        {
          __fbthrift_invocation_ids.compare_exchange_strong(invocationType, apache::thrift::detail::si::InvocationType::Future, std::memory_order_relaxed);
          FOLLY_FALLTHROUGH;
        }
        case apache::thrift::detail::si::InvocationType::Future:
        {
          auto fut = future_ids();
          apache::thrift::detail::si::async_tm_future(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::SemiFuture:
        {
          auto fut = semifuture_ids();
          apache::thrift::detail::si::async_tm_semifuture(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::Sync:
        {
          callback->result(ids());
          return;
        }
        default:
        {
          folly::assume_unreachable();
        }
      }
    } catch (...) {
      callback->exception(std::current_exception());
    }
  }
  
  ::std::int32_t apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::descriptor() {
    apache::thrift::detail::si::throw_app_exn_unimplemented("descriptor");
  }
  
  folly::SemiFuture<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::semifuture_descriptor() {
    auto expected{apache::thrift::detail::si::InvocationType::SemiFuture};
    __fbthrift_invocation_descriptor.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::Sync, std::memory_order_relaxed);
    return descriptor();
  }
  
  folly::Future<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::future_descriptor() {
    auto expected{apache::thrift::detail::si::InvocationType::Future};
    __fbthrift_invocation_descriptor.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::SemiFuture, std::memory_order_relaxed);
    return apache::thrift::detail::si::future(semifuture_descriptor(), getInternalKeepAlive());
  }
  
  void apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::async_tm_descriptor(std::unique_ptr<apache::thrift::HandlerCallback<::std::int32_t>> callback) {
    // It's possible the coroutine versions will delegate to a future-based
    // version. If that happens, we need the RequestParams arguments to be
    // available to the future through the thread-local backchannel, so we create
    // a RAII object that sets up RequestParams and clears them on destruction.
    apache::thrift::detail::si::AsyncTmPrep asyncTmPrep(this, callback.get());
    auto invocationType = __fbthrift_invocation_descriptor.load(std::memory_order_relaxed);
    try {
      switch (invocationType) {
        case apache::thrift::detail::si::InvocationType::AsyncTm:
        {
          __fbthrift_invocation_descriptor.compare_exchange_strong(invocationType, apache::thrift::detail::si::InvocationType::Future, std::memory_order_relaxed);
          FOLLY_FALLTHROUGH;
        }
        case apache::thrift::detail::si::InvocationType::Future:
        {
          auto fut = future_descriptor();
          apache::thrift::detail::si::async_tm_future(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::SemiFuture:
        {
          auto fut = semifuture_descriptor();
          apache::thrift::detail::si::async_tm_semifuture(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::Sync:
        {
          callback->result(descriptor());
          return;
        }
        default:
        {
          folly::assume_unreachable();
        }
      }
    } catch (...) {
      callback->exception(std::current_exception());
    }
  }
  
  ::std::int32_t apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::descriptors() {
    apache::thrift::detail::si::throw_app_exn_unimplemented("descriptors");
  }
  
  folly::SemiFuture<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::semifuture_descriptors() {
    auto expected{apache::thrift::detail::si::InvocationType::SemiFuture};
    __fbthrift_invocation_descriptors.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::Sync, std::memory_order_relaxed);
    return descriptors();
  }
  
  folly::Future<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::future_descriptors() {
    auto expected{apache::thrift::detail::si::InvocationType::Future};
    __fbthrift_invocation_descriptors.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::SemiFuture, std::memory_order_relaxed);
    return apache::thrift::detail::si::future(semifuture_descriptors(), getInternalKeepAlive());
  }
  
  void apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::async_tm_descriptors(std::unique_ptr<apache::thrift::HandlerCallback<::std::int32_t>> callback) {
    // It's possible the coroutine versions will delegate to a future-based
    // version. If that happens, we need the RequestParams arguments to be
    // available to the future through the thread-local backchannel, so we create
    // a RAII object that sets up RequestParams and clears them on destruction.
    apache::thrift::detail::si::AsyncTmPrep asyncTmPrep(this, callback.get());
    auto invocationType = __fbthrift_invocation_descriptors.load(std::memory_order_relaxed);
    try {
      switch (invocationType) {
        case apache::thrift::detail::si::InvocationType::AsyncTm:
        {
          __fbthrift_invocation_descriptors.compare_exchange_strong(invocationType, apache::thrift::detail::si::InvocationType::Future, std::memory_order_relaxed);
          FOLLY_FALLTHROUGH;
        }
        case apache::thrift::detail::si::InvocationType::Future:
        {
          auto fut = future_descriptors();
          apache::thrift::detail::si::async_tm_future(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::SemiFuture:
        {
          auto fut = semifuture_descriptors();
          apache::thrift::detail::si::async_tm_semifuture(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::Sync:
        {
          callback->result(descriptors());
          return;
        }
        default:
        {
          folly::assume_unreachable();
        }
      }
    } catch (...) {
      callback->exception(std::current_exception());
    }
  }
  
  ::std::int32_t apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::key() {
    apache::thrift::detail::si::throw_app_exn_unimplemented("key");
  }
  
  folly::SemiFuture<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::semifuture_key() {
    auto expected{apache::thrift::detail::si::InvocationType::SemiFuture};
    __fbthrift_invocation_key.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::Sync, std::memory_order_relaxed);
    return key();
  }
  
  folly::Future<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::future_key() {
    auto expected{apache::thrift::detail::si::InvocationType::Future};
    __fbthrift_invocation_key.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::SemiFuture, std::memory_order_relaxed);
    return apache::thrift::detail::si::future(semifuture_key(), getInternalKeepAlive());
  }
  
  void apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::async_tm_key(std::unique_ptr<apache::thrift::HandlerCallback<::std::int32_t>> callback) {
    // It's possible the coroutine versions will delegate to a future-based
    // version. If that happens, we need the RequestParams arguments to be
    // available to the future through the thread-local backchannel, so we create
    // a RAII object that sets up RequestParams and clears them on destruction.
    apache::thrift::detail::si::AsyncTmPrep asyncTmPrep(this, callback.get());
    auto invocationType = __fbthrift_invocation_key.load(std::memory_order_relaxed);
    try {
      switch (invocationType) {
        case apache::thrift::detail::si::InvocationType::AsyncTm:
        {
          __fbthrift_invocation_key.compare_exchange_strong(invocationType, apache::thrift::detail::si::InvocationType::Future, std::memory_order_relaxed);
          FOLLY_FALLTHROUGH;
        }
        case apache::thrift::detail::si::InvocationType::Future:
        {
          auto fut = future_key();
          apache::thrift::detail::si::async_tm_future(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::SemiFuture:
        {
          auto fut = semifuture_key();
          apache::thrift::detail::si::async_tm_semifuture(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::Sync:
        {
          callback->result(key());
          return;
        }
        default:
        {
          folly::assume_unreachable();
        }
      }
    } catch (...) {
      callback->exception(std::current_exception());
    }
  }
  
  ::std::int32_t apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::keys() {
    apache::thrift::detail::si::throw_app_exn_unimplemented("keys");
  }
  
  folly::SemiFuture<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::semifuture_keys() {
    auto expected{apache::thrift::detail::si::InvocationType::SemiFuture};
    __fbthrift_invocation_keys.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::Sync, std::memory_order_relaxed);
    return keys();
  }
  
  folly::Future<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::future_keys() {
    auto expected{apache::thrift::detail::si::InvocationType::Future};
    __fbthrift_invocation_keys.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::SemiFuture, std::memory_order_relaxed);
    return apache::thrift::detail::si::future(semifuture_keys(), getInternalKeepAlive());
  }
  
  void apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::async_tm_keys(std::unique_ptr<apache::thrift::HandlerCallback<::std::int32_t>> callback) {
    // It's possible the coroutine versions will delegate to a future-based
    // version. If that happens, we need the RequestParams arguments to be
    // available to the future through the thread-local backchannel, so we create
    // a RAII object that sets up RequestParams and clears them on destruction.
    apache::thrift::detail::si::AsyncTmPrep asyncTmPrep(this, callback.get());
    auto invocationType = __fbthrift_invocation_keys.load(std::memory_order_relaxed);
    try {
      switch (invocationType) {
        case apache::thrift::detail::si::InvocationType::AsyncTm:
        {
          __fbthrift_invocation_keys.compare_exchange_strong(invocationType, apache::thrift::detail::si::InvocationType::Future, std::memory_order_relaxed);
          FOLLY_FALLTHROUGH;
        }
        case apache::thrift::detail::si::InvocationType::Future:
        {
          auto fut = future_keys();
          apache::thrift::detail::si::async_tm_future(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::SemiFuture:
        {
          auto fut = semifuture_keys();
          apache::thrift::detail::si::async_tm_semifuture(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::Sync:
        {
          callback->result(keys());
          return;
        }
        default:
        {
          folly::assume_unreachable();
        }
      }
    } catch (...) {
      callback->exception(std::current_exception());
    }
  }
  
  ::std::int32_t apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::annotation() {
    apache::thrift::detail::si::throw_app_exn_unimplemented("annotation");
  }
  
  folly::SemiFuture<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::semifuture_annotation() {
    auto expected{apache::thrift::detail::si::InvocationType::SemiFuture};
    __fbthrift_invocation_annotation.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::Sync, std::memory_order_relaxed);
    return annotation();
  }
  
  folly::Future<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::future_annotation() {
    auto expected{apache::thrift::detail::si::InvocationType::Future};
    __fbthrift_invocation_annotation.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::SemiFuture, std::memory_order_relaxed);
    return apache::thrift::detail::si::future(semifuture_annotation(), getInternalKeepAlive());
  }
  
  void apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::async_tm_annotation(std::unique_ptr<apache::thrift::HandlerCallback<::std::int32_t>> callback) {
    // It's possible the coroutine versions will delegate to a future-based
    // version. If that happens, we need the RequestParams arguments to be
    // available to the future through the thread-local backchannel, so we create
    // a RAII object that sets up RequestParams and clears them on destruction.
    apache::thrift::detail::si::AsyncTmPrep asyncTmPrep(this, callback.get());
    auto invocationType = __fbthrift_invocation_annotation.load(std::memory_order_relaxed);
    try {
      switch (invocationType) {
        case apache::thrift::detail::si::InvocationType::AsyncTm:
        {
          __fbthrift_invocation_annotation.compare_exchange_strong(invocationType, apache::thrift::detail::si::InvocationType::Future, std::memory_order_relaxed);
          FOLLY_FALLTHROUGH;
        }
        case apache::thrift::detail::si::InvocationType::Future:
        {
          auto fut = future_annotation();
          apache::thrift::detail::si::async_tm_future(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::SemiFuture:
        {
          auto fut = semifuture_annotation();
          apache::thrift::detail::si::async_tm_semifuture(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::Sync:
        {
          callback->result(annotation());
          return;
        }
        default:
        {
          folly::assume_unreachable();
        }
      }
    } catch (...) {
      callback->exception(std::current_exception());
    }
  }
  
  ::std::int32_t apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::annotations() {
    apache::thrift::detail::si::throw_app_exn_unimplemented("annotations");
  }
  
  folly::SemiFuture<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::semifuture_annotations() {
    auto expected{apache::thrift::detail::si::InvocationType::SemiFuture};
    __fbthrift_invocation_annotations.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::Sync, std::memory_order_relaxed);
    return annotations();
  }
  
  folly::Future<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::future_annotations() {
    auto expected{apache::thrift::detail::si::InvocationType::Future};
    __fbthrift_invocation_annotations.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::SemiFuture, std::memory_order_relaxed);
    return apache::thrift::detail::si::future(semifuture_annotations(), getInternalKeepAlive());
  }
  
  void apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::async_tm_annotations(std::unique_ptr<apache::thrift::HandlerCallback<::std::int32_t>> callback) {
    // It's possible the coroutine versions will delegate to a future-based
    // version. If that happens, we need the RequestParams arguments to be
    // available to the future through the thread-local backchannel, so we create
    // a RAII object that sets up RequestParams and clears them on destruction.
    apache::thrift::detail::si::AsyncTmPrep asyncTmPrep(this, callback.get());
    auto invocationType = __fbthrift_invocation_annotations.load(std::memory_order_relaxed);
    try {
      switch (invocationType) {
        case apache::thrift::detail::si::InvocationType::AsyncTm:
        {
          __fbthrift_invocation_annotations.compare_exchange_strong(invocationType, apache::thrift::detail::si::InvocationType::Future, std::memory_order_relaxed);
          FOLLY_FALLTHROUGH;
        }
        case apache::thrift::detail::si::InvocationType::Future:
        {
          auto fut = future_annotations();
          apache::thrift::detail::si::async_tm_future(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::SemiFuture:
        {
          auto fut = semifuture_annotations();
          apache::thrift::detail::si::async_tm_semifuture(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::Sync:
        {
          callback->result(annotations());
          return;
        }
        default:
        {
          folly::assume_unreachable();
        }
      }
    } catch (...) {
      callback->exception(std::current_exception());
    }
  }
  
  ::std::int32_t apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::member() {
    apache::thrift::detail::si::throw_app_exn_unimplemented("member");
  }
  
  folly::SemiFuture<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::semifuture_member() {
    auto expected{apache::thrift::detail::si::InvocationType::SemiFuture};
    __fbthrift_invocation_member.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::Sync, std::memory_order_relaxed);
    return member();
  }
  
  folly::Future<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::future_member() {
    auto expected{apache::thrift::detail::si::InvocationType::Future};
    __fbthrift_invocation_member.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::SemiFuture, std::memory_order_relaxed);
    return apache::thrift::detail::si::future(semifuture_member(), getInternalKeepAlive());
  }
  
  void apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::async_tm_member(std::unique_ptr<apache::thrift::HandlerCallback<::std::int32_t>> callback) {
    // It's possible the coroutine versions will delegate to a future-based
    // version. If that happens, we need the RequestParams arguments to be
    // available to the future through the thread-local backchannel, so we create
    // a RAII object that sets up RequestParams and clears them on destruction.
    apache::thrift::detail::si::AsyncTmPrep asyncTmPrep(this, callback.get());
    auto invocationType = __fbthrift_invocation_member.load(std::memory_order_relaxed);
    try {
      switch (invocationType) {
        case apache::thrift::detail::si::InvocationType::AsyncTm:
        {
          __fbthrift_invocation_member.compare_exchange_strong(invocationType, apache::thrift::detail::si::InvocationType::Future, std::memory_order_relaxed);
          FOLLY_FALLTHROUGH;
        }
        case apache::thrift::detail::si::InvocationType::Future:
        {
          auto fut = future_member();
          apache::thrift::detail::si::async_tm_future(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::SemiFuture:
        {
          auto fut = semifuture_member();
          apache::thrift::detail::si::async_tm_semifuture(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::Sync:
        {
          callback->result(member());
          return;
        }
        default:
        {
          folly::assume_unreachable();
        }
      }
    } catch (...) {
      callback->exception(std::current_exception());
    }
  }
  
  ::std::int32_t apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::members() {
    apache::thrift::detail::si::throw_app_exn_unimplemented("members");
  }
  
  folly::SemiFuture<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::semifuture_members() {
    auto expected{apache::thrift::detail::si::InvocationType::SemiFuture};
    __fbthrift_invocation_members.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::Sync, std::memory_order_relaxed);
    return members();
  }
  
  folly::Future<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::future_members() {
    auto expected{apache::thrift::detail::si::InvocationType::Future};
    __fbthrift_invocation_members.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::SemiFuture, std::memory_order_relaxed);
    return apache::thrift::detail::si::future(semifuture_members(), getInternalKeepAlive());
  }
  
  void apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::async_tm_members(std::unique_ptr<apache::thrift::HandlerCallback<::std::int32_t>> callback) {
    // It's possible the coroutine versions will delegate to a future-based
    // version. If that happens, we need the RequestParams arguments to be
    // available to the future through the thread-local backchannel, so we create
    // a RAII object that sets up RequestParams and clears them on destruction.
    apache::thrift::detail::si::AsyncTmPrep asyncTmPrep(this, callback.get());
    auto invocationType = __fbthrift_invocation_members.load(std::memory_order_relaxed);
    try {
      switch (invocationType) {
        case apache::thrift::detail::si::InvocationType::AsyncTm:
        {
          __fbthrift_invocation_members.compare_exchange_strong(invocationType, apache::thrift::detail::si::InvocationType::Future, std::memory_order_relaxed);
          FOLLY_FALLTHROUGH;
        }
        case apache::thrift::detail::si::InvocationType::Future:
        {
          auto fut = future_members();
          apache::thrift::detail::si::async_tm_future(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::SemiFuture:
        {
          auto fut = semifuture_members();
          apache::thrift::detail::si::async_tm_semifuture(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::Sync:
        {
          callback->result(members());
          return;
        }
        default:
        {
          folly::assume_unreachable();
        }
      }
    } catch (...) {
      callback->exception(std::current_exception());
    }
  }
  
  ::std::int32_t apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::field() {
    apache::thrift::detail::si::throw_app_exn_unimplemented("field");
  }
  
  folly::SemiFuture<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::semifuture_field() {
    auto expected{apache::thrift::detail::si::InvocationType::SemiFuture};
    __fbthrift_invocation_field.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::Sync, std::memory_order_relaxed);
    return field();
  }
  
  folly::Future<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::future_field() {
    auto expected{apache::thrift::detail::si::InvocationType::Future};
    __fbthrift_invocation_field.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::SemiFuture, std::memory_order_relaxed);
    return apache::thrift::detail::si::future(semifuture_field(), getInternalKeepAlive());
  }
  
  void apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::async_tm_field(std::unique_ptr<apache::thrift::HandlerCallback<::std::int32_t>> callback) {
    // It's possible the coroutine versions will delegate to a future-based
    // version. If that happens, we need the RequestParams arguments to be
    // available to the future through the thread-local backchannel, so we create
    // a RAII object that sets up RequestParams and clears them on destruction.
    apache::thrift::detail::si::AsyncTmPrep asyncTmPrep(this, callback.get());
    auto invocationType = __fbthrift_invocation_field.load(std::memory_order_relaxed);
    try {
      switch (invocationType) {
        case apache::thrift::detail::si::InvocationType::AsyncTm:
        {
          __fbthrift_invocation_field.compare_exchange_strong(invocationType, apache::thrift::detail::si::InvocationType::Future, std::memory_order_relaxed);
          FOLLY_FALLTHROUGH;
        }
        case apache::thrift::detail::si::InvocationType::Future:
        {
          auto fut = future_field();
          apache::thrift::detail::si::async_tm_future(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::SemiFuture:
        {
          auto fut = semifuture_field();
          apache::thrift::detail::si::async_tm_semifuture(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::Sync:
        {
          callback->result(field());
          return;
        }
        default:
        {
          folly::assume_unreachable();
        }
      }
    } catch (...) {
      callback->exception(std::current_exception());
    }
  }
  
  ::std::int32_t apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::fields() {
    apache::thrift::detail::si::throw_app_exn_unimplemented("fields");
  }
  
  folly::SemiFuture<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::semifuture_fields() {
    auto expected{apache::thrift::detail::si::InvocationType::SemiFuture};
    __fbthrift_invocation_fields.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::Sync, std::memory_order_relaxed);
    return fields();
  }
  
  folly::Future<::std::int32_t> apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::future_fields() {
    auto expected{apache::thrift::detail::si::InvocationType::Future};
    __fbthrift_invocation_fields.compare_exchange_strong(expected, apache::thrift::detail::si::InvocationType::SemiFuture, std::memory_order_relaxed);
    return apache::thrift::detail::si::future(semifuture_fields(), getInternalKeepAlive());
  }
  
  void apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>::async_tm_fields(std::unique_ptr<apache::thrift::HandlerCallback<::std::int32_t>> callback) {
    // It's possible the coroutine versions will delegate to a future-based
    // version. If that happens, we need the RequestParams arguments to be
    // available to the future through the thread-local backchannel, so we create
    // a RAII object that sets up RequestParams and clears them on destruction.
    apache::thrift::detail::si::AsyncTmPrep asyncTmPrep(this, callback.get());
    auto invocationType = __fbthrift_invocation_fields.load(std::memory_order_relaxed);
    try {
      switch (invocationType) {
        case apache::thrift::detail::si::InvocationType::AsyncTm:
        {
          __fbthrift_invocation_fields.compare_exchange_strong(invocationType, apache::thrift::detail::si::InvocationType::Future, std::memory_order_relaxed);
          FOLLY_FALLTHROUGH;
        }
        case apache::thrift::detail::si::InvocationType::Future:
        {
          auto fut = future_fields();
          apache::thrift::detail::si::async_tm_future(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::SemiFuture:
        {
          auto fut = semifuture_fields();
          apache::thrift::detail::si::async_tm_semifuture(std::move(callback), std::move(fut));
          return;
        }
        case apache::thrift::detail::si::InvocationType::Sync:
        {
          callback->result(fields());
          return;
        }
        default:
        {
          folly::assume_unreachable();
        }
      }
    } catch (...) {
      callback->exception(std::current_exception());
    }
  }
  
  
  namespace test_cpp2 { namespace cpp_reflection {
  
  ::std::int32_t service_with_special_namesSvNull::get() {
    return 0;
  }
  
  ::std::int32_t service_with_special_namesSvNull::getter() {
    return 0;
  }
  
  ::std::int32_t service_with_special_namesSvNull::lists() {
    return 0;
  }
  
  ::std::int32_t service_with_special_namesSvNull::maps() {
    return 0;
  }
  
  ::std::int32_t service_with_special_namesSvNull::name() {
    return 0;
  }
  
  ::std::int32_t service_with_special_namesSvNull::name_to_value() {
    return 0;
  }
  
  ::std::int32_t service_with_special_namesSvNull::names() {
    return 0;
  }
  
  ::std::int32_t service_with_special_namesSvNull::prefix_tree() {
    return 0;
  }
  
  ::std::int32_t service_with_special_namesSvNull::sets() {
    return 0;
  }
  
  ::std::int32_t service_with_special_namesSvNull::setter() {
    return 0;
  }
  
  ::std::int32_t service_with_special_namesSvNull::str() {
    return 0;
  }
  
  ::std::int32_t service_with_special_namesSvNull::strings() {
    return 0;
  }
  
  ::std::int32_t service_with_special_namesSvNull::type() {
    return 0;
  }
  
  ::std::int32_t service_with_special_namesSvNull::value() {
    return 0;
  }
  
  ::std::int32_t service_with_special_namesSvNull::value_to_name() {
    return 0;
  }
  
  ::std::int32_t service_with_special_namesSvNull::values() {
    return 0;
  }
  
  ::std::int32_t service_with_special_namesSvNull::id() {
    return 0;
  }
  
  ::std::int32_t service_with_special_namesSvNull::ids() {
    return 0;
  }
  
  ::std::int32_t service_with_special_namesSvNull::descriptor() {
    return 0;
  }
  
  ::std::int32_t service_with_special_namesSvNull::descriptors() {
    return 0;
  }
  
  ::std::int32_t service_with_special_namesSvNull::key() {
    return 0;
  }
  
  ::std::int32_t service_with_special_namesSvNull::keys() {
    return 0;
  }
  
  ::std::int32_t service_with_special_namesSvNull::annotation() {
    return 0;
  }
  
  ::std::int32_t service_with_special_namesSvNull::annotations() {
    return 0;
  }
  
  ::std::int32_t service_with_special_namesSvNull::member() {
    return 0;
  }
  
  ::std::int32_t service_with_special_namesSvNull::members() {
    return 0;
  }
  
  ::std::int32_t service_with_special_namesSvNull::field() {
    return 0;
  }
  
  ::std::int32_t service_with_special_namesSvNull::fields() {
    return 0;
  }
  
  
  const char* service_with_special_namesAsyncProcessor::getServiceName() {
    return "service_with_special_names";
  }
  
  void service_with_special_namesAsyncProcessor::getServiceMetadata(apache::thrift::metadata::ThriftServiceMetadataResponse& response) {
    ::apache::thrift::detail::md::ServiceMetadata<::apache::thrift::ServiceHandler<::test_cpp2::cpp_reflection::service_with_special_names>>::gen(response);
  }
  
  void service_with_special_namesAsyncProcessor::processSerializedCompressedRequest(apache::thrift::ResponseChannelRequest::UniquePtr req, apache::thrift::SerializedCompressedRequest&& serializedRequest, apache::thrift::protocol::PROTOCOL_TYPES protType, apache::thrift::Cpp2RequestContext* context, folly::EventBase* eb, apache::thrift::concurrency::ThreadManager* tm) {
    apache::thrift::detail::ap::process(this, std::move(req), std::move(serializedRequest), protType, context, eb, tm);
  }
  
  void service_with_special_namesAsyncProcessor::processSerializedCompressedRequestWithMetadata(apache::thrift::ResponseChannelRequest::UniquePtr req, apache::thrift::SerializedCompressedRequest&& serializedRequest, const apache::thrift::AsyncProcessorFactory::MethodMetadata& methodMetadata, apache::thrift::protocol::PROTOCOL_TYPES protType, apache::thrift::Cpp2RequestContext* context, folly::EventBase* eb, apache::thrift::concurrency::ThreadManager* tm) {
    apache::thrift::detail::ap::process(this, std::move(req), std::move(serializedRequest), methodMetadata, protType, context, eb, tm);
  }
  
  void service_with_special_namesAsyncProcessor::executeRequest(apache::thrift::ServerRequest&& request, const apache::thrift::AsyncProcessorFactory::MethodMetadata& methodMetadata) {
    apache::thrift::detail::ap::execute(this, std::move(request), apache::thrift::detail::ServerRequestHelper::protocol(request), methodMetadata);
  }
  
  const service_with_special_namesAsyncProcessor::ProcessMap& service_with_special_namesAsyncProcessor::getOwnProcessMap() {
    return kOwnProcessMap_;
  }
  
  const service_with_special_namesAsyncProcessor::ProcessMap service_with_special_namesAsyncProcessor::kOwnProcessMap_ {
    {"get",
      {&service_with_special_namesAsyncProcessor::setUpAndProcess_get<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::setUpAndProcess_get<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_get<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_get<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>}},
    {"getter",
      {&service_with_special_namesAsyncProcessor::setUpAndProcess_getter<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::setUpAndProcess_getter<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_getter<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_getter<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>}},
    {"lists",
      {&service_with_special_namesAsyncProcessor::setUpAndProcess_lists<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::setUpAndProcess_lists<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_lists<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_lists<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>}},
    {"maps",
      {&service_with_special_namesAsyncProcessor::setUpAndProcess_maps<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::setUpAndProcess_maps<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_maps<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_maps<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>}},
    {"name",
      {&service_with_special_namesAsyncProcessor::setUpAndProcess_name<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::setUpAndProcess_name<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_name<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_name<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>}},
    {"name_to_value",
      {&service_with_special_namesAsyncProcessor::setUpAndProcess_name_to_value<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::setUpAndProcess_name_to_value<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_name_to_value<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_name_to_value<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>}},
    {"names",
      {&service_with_special_namesAsyncProcessor::setUpAndProcess_names<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::setUpAndProcess_names<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_names<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_names<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>}},
    {"prefix_tree",
      {&service_with_special_namesAsyncProcessor::setUpAndProcess_prefix_tree<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::setUpAndProcess_prefix_tree<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_prefix_tree<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_prefix_tree<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>}},
    {"sets",
      {&service_with_special_namesAsyncProcessor::setUpAndProcess_sets<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::setUpAndProcess_sets<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_sets<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_sets<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>}},
    {"setter",
      {&service_with_special_namesAsyncProcessor::setUpAndProcess_setter<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::setUpAndProcess_setter<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_setter<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_setter<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>}},
    {"str",
      {&service_with_special_namesAsyncProcessor::setUpAndProcess_str<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::setUpAndProcess_str<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_str<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_str<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>}},
    {"strings",
      {&service_with_special_namesAsyncProcessor::setUpAndProcess_strings<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::setUpAndProcess_strings<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_strings<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_strings<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>}},
    {"type",
      {&service_with_special_namesAsyncProcessor::setUpAndProcess_type<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::setUpAndProcess_type<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_type<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_type<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>}},
    {"value",
      {&service_with_special_namesAsyncProcessor::setUpAndProcess_value<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::setUpAndProcess_value<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_value<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_value<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>}},
    {"value_to_name",
      {&service_with_special_namesAsyncProcessor::setUpAndProcess_value_to_name<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::setUpAndProcess_value_to_name<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_value_to_name<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_value_to_name<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>}},
    {"values",
      {&service_with_special_namesAsyncProcessor::setUpAndProcess_values<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::setUpAndProcess_values<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_values<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_values<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>}},
    {"id",
      {&service_with_special_namesAsyncProcessor::setUpAndProcess_id<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::setUpAndProcess_id<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_id<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_id<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>}},
    {"ids",
      {&service_with_special_namesAsyncProcessor::setUpAndProcess_ids<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::setUpAndProcess_ids<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_ids<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_ids<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>}},
    {"descriptor",
      {&service_with_special_namesAsyncProcessor::setUpAndProcess_descriptor<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::setUpAndProcess_descriptor<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_descriptor<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_descriptor<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>}},
    {"descriptors",
      {&service_with_special_namesAsyncProcessor::setUpAndProcess_descriptors<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::setUpAndProcess_descriptors<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_descriptors<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_descriptors<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>}},
    {"key",
      {&service_with_special_namesAsyncProcessor::setUpAndProcess_key<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::setUpAndProcess_key<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_key<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_key<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>}},
    {"keys",
      {&service_with_special_namesAsyncProcessor::setUpAndProcess_keys<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::setUpAndProcess_keys<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_keys<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_keys<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>}},
    {"annotation",
      {&service_with_special_namesAsyncProcessor::setUpAndProcess_annotation<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::setUpAndProcess_annotation<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_annotation<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_annotation<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>}},
    {"annotations",
      {&service_with_special_namesAsyncProcessor::setUpAndProcess_annotations<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::setUpAndProcess_annotations<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_annotations<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_annotations<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>}},
    {"member",
      {&service_with_special_namesAsyncProcessor::setUpAndProcess_member<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::setUpAndProcess_member<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_member<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_member<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>}},
    {"members",
      {&service_with_special_namesAsyncProcessor::setUpAndProcess_members<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::setUpAndProcess_members<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_members<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_members<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>}},
    {"field",
      {&service_with_special_namesAsyncProcessor::setUpAndProcess_field<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::setUpAndProcess_field<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_field<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_field<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>}},
    {"fields",
      {&service_with_special_namesAsyncProcessor::setUpAndProcess_fields<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::setUpAndProcess_fields<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_fields<apache::thrift::CompactProtocolReader, apache::thrift::CompactProtocolWriter>,
       &service_with_special_namesAsyncProcessor::executeRequest_fields<apache::thrift::BinaryProtocolReader, apache::thrift::BinaryProtocolWriter>}},
  };
  
  apache::thrift::ServiceRequestInfoMap const& service_with_special_namesServiceInfoHolder::requestInfoMap() const {
    static folly::Indestructible<apache::thrift::ServiceRequestInfoMap> requestInfoMap{staticRequestInfoMap()};
    return *requestInfoMap;
  }
  
  apache::thrift::ServiceRequestInfoMap service_with_special_namesServiceInfoHolder::staticRequestInfoMap() {
    apache::thrift::ServiceRequestInfoMap requestInfoMap = {
    {"get",
      {false,
       apache::thrift::RpcKind::SINGLE_REQUEST_SINGLE_RESPONSE,
       "service_with_special_names.get",
       std::nullopt}},
    {"getter",
      {false,
       apache::thrift::RpcKind::SINGLE_REQUEST_SINGLE_RESPONSE,
       "service_with_special_names.getter",
       std::nullopt}},
    {"lists",
      {false,
       apache::thrift::RpcKind::SINGLE_REQUEST_SINGLE_RESPONSE,
       "service_with_special_names.lists",
       std::nullopt}},
    {"maps",
      {false,
       apache::thrift::RpcKind::SINGLE_REQUEST_SINGLE_RESPONSE,
       "service_with_special_names.maps",
       std::nullopt}},
    {"name",
      {false,
       apache::thrift::RpcKind::SINGLE_REQUEST_SINGLE_RESPONSE,
       "service_with_special_names.name",
       std::nullopt}},
    {"name_to_value",
      {false,
       apache::thrift::RpcKind::SINGLE_REQUEST_SINGLE_RESPONSE,
       "service_with_special_names.name_to_value",
       std::nullopt}},
    {"names",
      {false,
       apache::thrift::RpcKind::SINGLE_REQUEST_SINGLE_RESPONSE,
       "service_with_special_names.names",
       std::nullopt}},
    {"prefix_tree",
      {false,
       apache::thrift::RpcKind::SINGLE_REQUEST_SINGLE_RESPONSE,
       "service_with_special_names.prefix_tree",
       std::nullopt}},
    {"sets",
      {false,
       apache::thrift::RpcKind::SINGLE_REQUEST_SINGLE_RESPONSE,
       "service_with_special_names.sets",
       std::nullopt}},
    {"setter",
      {false,
       apache::thrift::RpcKind::SINGLE_REQUEST_SINGLE_RESPONSE,
       "service_with_special_names.setter",
       std::nullopt}},
    {"str",
      {false,
       apache::thrift::RpcKind::SINGLE_REQUEST_SINGLE_RESPONSE,
       "service_with_special_names.str",
       std::nullopt}},
    {"strings",
      {false,
       apache::thrift::RpcKind::SINGLE_REQUEST_SINGLE_RESPONSE,
       "service_with_special_names.strings",
       std::nullopt}},
    {"type",
      {false,
       apache::thrift::RpcKind::SINGLE_REQUEST_SINGLE_RESPONSE,
       "service_with_special_names.type",
       std::nullopt}},
    {"value",
      {false,
       apache::thrift::RpcKind::SINGLE_REQUEST_SINGLE_RESPONSE,
       "service_with_special_names.value",
       std::nullopt}},
    {"value_to_name",
      {false,
       apache::thrift::RpcKind::SINGLE_REQUEST_SINGLE_RESPONSE,
       "service_with_special_names.value_to_name",
       std::nullopt}},
    {"values",
      {false,
       apache::thrift::RpcKind::SINGLE_REQUEST_SINGLE_RESPONSE,
       "service_with_special_names.values",
       std::nullopt}},
    {"id",
      {false,
       apache::thrift::RpcKind::SINGLE_REQUEST_SINGLE_RESPONSE,
       "service_with_special_names.id",
       std::nullopt}},
    {"ids",
      {false,
       apache::thrift::RpcKind::SINGLE_REQUEST_SINGLE_RESPONSE,
       "service_with_special_names.ids",
       std::nullopt}},
    {"descriptor",
      {false,
       apache::thrift::RpcKind::SINGLE_REQUEST_SINGLE_RESPONSE,
       "service_with_special_names.descriptor",
       std::nullopt}},
    {"descriptors",
      {false,
       apache::thrift::RpcKind::SINGLE_REQUEST_SINGLE_RESPONSE,
       "service_with_special_names.descriptors",
       std::nullopt}},
    {"key",
      {false,
       apache::thrift::RpcKind::SINGLE_REQUEST_SINGLE_RESPONSE,
       "service_with_special_names.key",
       std::nullopt}},
    {"keys",
      {false,
       apache::thrift::RpcKind::SINGLE_REQUEST_SINGLE_RESPONSE,
       "service_with_special_names.keys",
       std::nullopt}},
    {"annotation",
      {false,
       apache::thrift::RpcKind::SINGLE_REQUEST_SINGLE_RESPONSE,
       "service_with_special_names.annotation",
       std::nullopt}},
    {"annotations",
      {false,
       apache::thrift::RpcKind::SINGLE_REQUEST_SINGLE_RESPONSE,
       "service_with_special_names.annotations",
       std::nullopt}},
    {"member",
      {false,
       apache::thrift::RpcKind::SINGLE_REQUEST_SINGLE_RESPONSE,
       "service_with_special_names.member",
       std::nullopt}},
    {"members",
      {false,
       apache::thrift::RpcKind::SINGLE_REQUEST_SINGLE_RESPONSE,
       "service_with_special_names.members",
       std::nullopt}},
    {"field",
      {false,
       apache::thrift::RpcKind::SINGLE_REQUEST_SINGLE_RESPONSE,
       "service_with_special_names.field",
       std::nullopt}},
    {"fields",
      {false,
       apache::thrift::RpcKind::SINGLE_REQUEST_SINGLE_RESPONSE,
       "service_with_special_names.fields",
       std::nullopt}},
    };
  
    return requestInfoMap;
  }
  }} // test_cpp2::cpp_reflection
  