diff --git a/quiche/common/quiche_weak_ptr.h b/quiche/common/quiche_weak_ptr.h
index c742f65..c3005f0 100644
--- a/quiche/common/quiche_weak_ptr.h
+++ b/quiche/common/quiche_weak_ptr.h
@@ -53,7 +53,7 @@
 
   // Returns the pointer to the underlying object if it is alive, or nullptr
   // otherwise.
-  absl::Nullable<T*> GetIfAvailable() const {
+  T* absl_nullable GetIfAvailable() const {
     return control_block_ != nullptr ? control_block_->Get() : nullptr;
   }
 
@@ -70,20 +70,20 @@
   // contained pointer is set to nullptr.
   class ControlBlock {
    public:
-    explicit ControlBlock(absl::Nonnull<T*> object) : object_(object) {}
+    explicit ControlBlock(T* absl_nonnull object) : object_(object) {}
 
-    absl::Nullable<T*> Get() const { return object_; }
+    T* absl_nullable Get() const { return object_; }
     void Clear() { object_ = nullptr; }
     bool IsValid() const { return object_ != nullptr; }
 
    private:
-    absl::Nullable<T*> object_;
+    T* absl_nullable object_;
   };
 
   explicit QuicheWeakPtr(std::shared_ptr<ControlBlock> block)
       : control_block_(std::move(block)) {}
 
-  absl::Nullable<std::shared_ptr<ControlBlock>> control_block_ = nullptr;
+  absl_nullable std::shared_ptr<ControlBlock> control_block_ = nullptr;
 };
 
 // QuicheWeakPtrFactory generates weak pointers to the parent object, and cleans
@@ -92,7 +92,7 @@
 template <typename T>
 class QUICHE_NO_EXPORT QuicheWeakPtrFactory final {
  public:
-  explicit QuicheWeakPtrFactory(absl::Nonnull<T*> object)
+  explicit QuicheWeakPtrFactory(T* absl_nonnull object)
       : control_block_(std::make_shared<ControlBlock>(object)) {}
   ~QuicheWeakPtrFactory() { control_block_->Clear(); }
 
@@ -110,7 +110,7 @@
 
  private:
   using ControlBlock = typename QuicheWeakPtr<T>::ControlBlock;
-  absl::Nonnull<std::shared_ptr<ControlBlock>> control_block_;
+  absl_nonnull std::shared_ptr<ControlBlock> control_block_;
 };
 
 }  // namespace quiche
diff --git a/quiche/quic/core/http/http_decoder.h b/quiche/quic/core/http/http_decoder.h
index 9cfb778..2368c74 100644
--- a/quiche/quic/core/http/http_decoder.h
+++ b/quiche/quic/core/http/http_decoder.h
@@ -135,7 +135,7 @@
   };
 
   // |visitor| must be non-null, and must outlive HttpDecoder.
-  explicit HttpDecoder(absl::Nonnull<Visitor*> visitor);
+  explicit HttpDecoder(Visitor* absl_nonnull visitor);
 
   ~HttpDecoder();
 
diff --git a/quiche/quic/core/io/quic_server_io_harness.cc b/quiche/quic/core/io/quic_server_io_harness.cc
index 6b76a4b..de30e62 100644
--- a/quiche/quic/core/io/quic_server_io_harness.cc
+++ b/quiche/quic/core/io/quic_server_io_harness.cc
@@ -44,8 +44,8 @@
 }
 
 absl::StatusOr<std::unique_ptr<QuicServerIoHarness>>
-QuicServerIoHarness::Create(absl::Nonnull<QuicEventLoop*> event_loop,
-                            absl::Nonnull<QuicDispatcher*> dispatcher,
+QuicServerIoHarness::Create(QuicEventLoop* absl_nonnull event_loop,
+                            QuicDispatcher* absl_nonnull dispatcher,
                             SocketFd fd) {
   auto harness =
       absl::WrapUnique(new QuicServerIoHarness(event_loop, dispatcher, fd));
diff --git a/quiche/quic/core/io/quic_server_io_harness.h b/quiche/quic/core/io/quic_server_io_harness.h
index 6aafd01..38d8c66 100644
--- a/quiche/quic/core/io/quic_server_io_harness.h
+++ b/quiche/quic/core/io/quic_server_io_harness.h
@@ -33,8 +33,8 @@
   // descriptor.  Does not create a packet writer; the caller has to either call
   // InitializeWriter() manually, or provide their own writer.
   static absl::StatusOr<std::unique_ptr<QuicServerIoHarness>> Create(
-      absl::Nonnull<QuicEventLoop*> event_loop,
-      absl::Nonnull<QuicDispatcher*> dispatcher, SocketFd fd);
+      QuicEventLoop* absl_nonnull event_loop,
+      QuicDispatcher* absl_nonnull dispatcher, SocketFd fd);
 
   ~QuicServerIoHarness();
   QuicServerIoHarness(const QuicServerIoHarness&) = delete;
diff --git a/quiche/quic/core/quic_alarm_factory_proxy.h b/quiche/quic/core/quic_alarm_factory_proxy.h
index 2e3ea30..ccd7d03 100644
--- a/quiche/quic/core/quic_alarm_factory_proxy.h
+++ b/quiche/quic/core/quic_alarm_factory_proxy.h
@@ -19,7 +19,7 @@
 // QuicAlarmFactoryProxy passes calls to the specified unowned QuicAlarmFactory.
 class QUICHE_EXPORT QuicAlarmFactoryProxy : public QuicAlarmFactory {
  public:
-  explicit QuicAlarmFactoryProxy(absl::Nonnull<QuicAlarmFactory*> alarm_factory)
+  explicit QuicAlarmFactoryProxy(QuicAlarmFactory* absl_nonnull alarm_factory)
       : alarm_factory_(*alarm_factory) {}
 
   QuicAlarm* CreateAlarm(QuicAlarm::Delegate* delegate) override {
diff --git a/quiche/quic/core/quic_connection_alarms.cc b/quiche/quic/core/quic_connection_alarms.cc
index 1741111..2ccbe42 100644
--- a/quiche/quic/core/quic_connection_alarms.cc
+++ b/quiche/quic/core/quic_connection_alarms.cc
@@ -199,7 +199,7 @@
 }
 
 QuicAlarmMultiplexer::QuicAlarmMultiplexer(
-    absl::Nonnull<QuicConnectionAlarmsDelegate*> connection,
+    QuicConnectionAlarmsDelegate* absl_nonnull connection,
     QuicConnectionArena& arena, QuicAlarmFactory& alarm_factory)
     : deadlines_({QuicTime::Zero(), QuicTime::Zero(), QuicTime::Zero(),
                   QuicTime::Zero(), QuicTime::Zero(), QuicTime::Zero(),
diff --git a/quiche/quic/core/quic_connection_alarms.h b/quiche/quic/core/quic_connection_alarms.h
index 31ecbb3..2bb9d22 100644
--- a/quiche/quic/core/quic_connection_alarms.h
+++ b/quiche/quic/core/quic_connection_alarms.h
@@ -89,7 +89,7 @@
   static constexpr size_t kNumberOfSlots =
       static_cast<size_t>(QuicAlarmSlot::kSlotCount);
 
-  QuicAlarmMultiplexer(absl::Nonnull<QuicConnectionAlarmsDelegate*> connection,
+  QuicAlarmMultiplexer(QuicConnectionAlarmsDelegate* absl_nonnull connection,
                        QuicConnectionArena& arena,
                        QuicAlarmFactory& alarm_factory);
 
diff --git a/quiche/quic/core/quic_time_wait_list_manager.cc b/quiche/quic/core/quic_time_wait_list_manager.cc
index a36398b..75c4b55 100644
--- a/quiche/quic/core/quic_time_wait_list_manager.cc
+++ b/quiche/quic/core/quic_time_wait_list_manager.cc
@@ -93,7 +93,7 @@
   connection_id_clean_up_alarm_->Cancel();
 }
 
-absl::Nullable<QuicTimeWaitListManager::ConnectionIdData*>
+QuicTimeWaitListManager::ConnectionIdData* absl_nullable
 QuicTimeWaitListManager::FindConnectionIdData(
     const QuicConnectionId& connection_id) {
   if (use_old_connection_id_map_) {
diff --git a/quiche/quic/core/quic_time_wait_list_manager.h b/quiche/quic/core/quic_time_wait_list_manager.h
index 922ba4d..a2dc1a8 100644
--- a/quiche/quic/core/quic_time_wait_list_manager.h
+++ b/quiche/quic/core/quic_time_wait_list_manager.h
@@ -346,7 +346,7 @@
       indirect_connection_id_map_;
 
   // Find data for the given connection_id. Returns nullptr if not found.
-  absl::Nullable<ConnectionIdData*> FindConnectionIdData(
+  ConnectionIdData* absl_nullable FindConnectionIdData(
       const QuicConnectionId& connection_id);
   // Find an iterator for the given connection_id. Returns
   // connection_id_map_.end() if none found.
