Fix flatbuffers enum domain corpus validation

PiperOrigin-RevId: 919552381
diff --git a/domain_tests/BUILD b/domain_tests/BUILD
index 100fc80..0dfd652 100644
--- a/domain_tests/BUILD
+++ b/domain_tests/BUILD
@@ -50,7 +50,6 @@
         "@abseil-cpp//absl/status",
         "@com_google_fuzztest//fuzztest:domain",
         "@com_google_fuzztest//fuzztest:flatbuffers",
-        "@com_google_fuzztest//fuzztest:fuzztest_macros",
         "@com_google_fuzztest//fuzztest/internal:meta",
         "@com_google_fuzztest//fuzztest/internal:test_flatbuffers_cc_fbs",
         "@flatbuffers//:runtime_cc",
diff --git a/domain_tests/CMakeLists.txt b/domain_tests/CMakeLists.txt
index ecf92b7..be59c47 100644
--- a/domain_tests/CMakeLists.txt
+++ b/domain_tests/CMakeLists.txt
@@ -33,7 +33,6 @@
       fuzztest::domain
       fuzztest::domain_testing
       fuzztest::flatbuffers
-      fuzztest::fuzztest_macros
       GTest::gmock_main
       fuzztest_test_flatbuffers_headers
   )
diff --git a/domain_tests/arbitrary_domains_flatbuffers_test.cc b/domain_tests/arbitrary_domains_flatbuffers_test.cc
index 3d397a2..508ad26 100644
--- a/domain_tests/arbitrary_domains_flatbuffers_test.cc
+++ b/domain_tests/arbitrary_domains_flatbuffers_test.cc
@@ -213,26 +213,17 @@
       internal::FlatbuffersEnumDomainImpl<uint8_t>(enum_def).WithExcludedValues(
           {internal::ByteEnum_First});
   {
-    auto invalid_value =
-        static_cast<internal::FlatbuffersEnumDomainImpl<uint8_t>::corpus_type>(
-            internal::ByteEnum_MIN - 1);
-
-    EXPECT_THAT(domain.ValidateCorpusValue(invalid_value),
-                StatusIs(absl::StatusCode::kInvalidArgument));
+    auto invalid_corpus_value = domain.FromValue(internal::ByteEnum_First);
+    EXPECT_FALSE(invalid_corpus_value.has_value());
   }
   {
-    auto invalid_value =
-        static_cast<internal::FlatbuffersEnumDomainImpl<uint8_t>::corpus_type>(
-            internal::ByteEnum_MAX + 1);
-
-    EXPECT_THAT(domain.ValidateCorpusValue(invalid_value),
-                StatusIs(absl::StatusCode::kInvalidArgument));
+    auto invalid_corpus_value = domain.FromValue(internal::ByteEnum_MAX + 1);
+    EXPECT_FALSE(invalid_corpus_value.has_value());
   }
   {
-    auto invalid_value =
-        static_cast<internal::FlatbuffersEnumDomainImpl<uint8_t>::corpus_type>(
-            internal::ByteEnum_First);
-    EXPECT_THAT(domain.ValidateCorpusValue(invalid_value),
+    EXPECT_THAT(domain.ValidateCorpusValue(
+                    internal::corpus_type_t<
+                        internal::FlatbuffersEnumDomainImpl<uint8_t>>(255ul)),
                 StatusIs(absl::StatusCode::kInvalidArgument));
   }
 }
diff --git a/fuzztest/internal/domains/flatbuffers_domain_impl.h b/fuzztest/internal/domains/flatbuffers_domain_impl.h
index 394921f..1482a59 100644
--- a/fuzztest/internal/domains/flatbuffers_domain_impl.h
+++ b/fuzztest/internal/domains/flatbuffers_domain_impl.h
@@ -16,7 +16,6 @@
 #define FUZZTEST_FUZZTEST_INTERNAL_DOMAINS_FLATBUFFERS_DOMAIN_IMPL_H_
 
 #include <algorithm>
-#include <cstddef>
 #include <cstdint>
 #include <initializer_list>
 #include <limits>
@@ -187,11 +186,11 @@
 }
 
 // Flatbuffers enum domain implementation.
-template <typename Underlaying>
+template <typename Underlying>
 class FlatbuffersEnumDomainImpl
     : public domain_implementor::DomainBase<
-          /*Derived=*/FlatbuffersEnumDomainImpl<Underlaying>,
-          /*ValueType=*/Underlaying,
+          /*Derived=*/FlatbuffersEnumDomainImpl<Underlying>,
+          /*ValueType=*/Underlying,
           /*CorpusType=*/ElementOfImplCorpusType> {
  public:
   using typename FlatbuffersEnumDomainImpl::DomainBase::corpus_type;
@@ -204,7 +203,7 @@
       std::initializer_list<value_type> excluded_values) {
     excluded_values_ = {excluded_values.begin(), excluded_values.end()};
     inner_ =
-        ElementOfImpl<Underlaying>(GetEnumValues(enum_def_, excluded_values));
+        ElementOfImpl<Underlying>(GetEnumValues(enum_def_, excluded_values));
     return *this;
   }
 
@@ -236,15 +235,7 @@
   }
 
   absl::Status ValidateCorpusValue(const corpus_type& corpus_value) const {
-    for (const auto* value : *enum_def_->values()) {
-      if (excluded_values_.contains(value->value())) continue;
-      if (value->value() == static_cast<size_t>(corpus_value)) {
-        return absl::OkStatus();
-      }
-    }
-    return absl::InvalidArgumentError(absl::StrCat("Enum value ", corpus_value,
-                                                   " is not valid for enum ",
-                                                   enum_def_->name()->str()));
+    return inner_.ValidateCorpusValue(corpus_value);
   }
 
   auto GetPrinter() const { return Printer{*this}; }
@@ -252,7 +243,7 @@
  private:
   const reflection::Enum* enum_def_;
   absl::flat_hash_set<value_type> excluded_values_;
-  ElementOfImpl<Underlaying> inner_;
+  ElementOfImpl<Underlying> inner_;
 
   static std::vector<value_type> GetEnumValues(
       const reflection::Enum* enum_def,