diff --git a/quiche/common/quiche_weak_ptr.h b/quiche/common/quiche_weak_ptr.h
index 12fc85a..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.
-  T* /*absl_nullable*/ 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(T* /*absl_nonnull*/ object) : object_(object) {}
+    explicit ControlBlock(T* absl_nonnull object) : object_(object) {}
 
-    T* /*absl_nullable*/ Get() const { return object_; }
+    T* absl_nullable Get() const { return object_; }
     void Clear() { object_ = nullptr; }
     bool IsValid() const { return object_ != nullptr; }
 
    private:
-    T* /*absl_nullable*/ 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(T* /*absl_nonnull*/ 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 f040fa6..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(Visitor* /*absl_nonnull*/ 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 56d278c..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(QuicEventLoop* /*absl_nonnull*/ event_loop,
-                            QuicDispatcher* /*absl_nonnull*/ 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 7bd842f..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(
-      QuicEventLoop* /*absl_nonnull*/ event_loop,
-      QuicDispatcher* /*absl_nonnull*/ 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 e7d0d25..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(QuicAlarmFactory* /*absl_nonnull*/ 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 9b181d6..2ccbe42 100644
--- a/quiche/quic/core/quic_connection_alarms.cc
+++ b/quiche/quic/core/quic_connection_alarms.cc
@@ -199,7 +199,7 @@
 }
 
 QuicAlarmMultiplexer::QuicAlarmMultiplexer(
-    QuicConnectionAlarmsDelegate* /*absl_nonnull*/ 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 aea38f0..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(QuicConnectionAlarmsDelegate* /*absl_nonnull*/ 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 8d15548..5727be4 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();
 }
 
-QuicTimeWaitListManager::ConnectionIdData* /*absl_nullable*/
+QuicTimeWaitListManager::ConnectionIdData* absl_nullable
 QuicTimeWaitListManager::FindConnectionIdData(
     const QuicConnectionId& connection_id) {
   auto it = connection_id_data_map_.find(connection_id);
diff --git a/quiche/quic/core/quic_time_wait_list_manager.h b/quiche/quic/core/quic_time_wait_list_manager.h
index 706c3db..16cadd9 100644
--- a/quiche/quic/core/quic_time_wait_list_manager.h
+++ b/quiche/quic/core/quic_time_wait_list_manager.h
@@ -323,7 +323,7 @@
       connection_id_data_map_;
 
   // Find data for the given connection_id. Returns nullptr if not found.
-  ConnectionIdData* /*absl_nullable*/ FindConnectionIdData(
+  ConnectionIdData* absl_nullable FindConnectionIdData(
       const QuicConnectionId& connection_id);
 
   // Pending termination packets that need to be sent out to the peer when we
