diff --git a/services/audioflinger/AudioFlinger.h b/services/audioflinger/AudioFlinger.h
index ed11156..e3910ea 100644
--- a/services/audioflinger/AudioFlinger.h
+++ b/services/audioflinger/AudioFlinger.h
@@ -152,8 +152,6 @@
 
 static const nsecs_t kDefaultStandbyTimeInNsecs = seconds(3);
 
-#define INCLUDING_FROM_AUDIOFLINGER_H
-
 using android::content::AttributionSourceState;
 
 struct stream_type_t {
@@ -164,6 +162,7 @@
 class AudioFlinger : public AudioFlingerServerAdapter::Delegate
 {
     friend class sp<AudioFlinger>;
+    // TODO(b/291319167) Create interface and remove friends.
     friend class Client; // removeClient_l();
     friend class DeviceEffectManager;
     friend class DeviceEffectManagerCallback;
@@ -514,7 +513,7 @@
     // Internal dump utilities.
     static const int kDumpLockTimeoutNs = 1 * NANOS_PER_SECOND;
 public:
-    // TODO(b/288339104) extract to afutils
+    // TODO(b/291319167) extract to afutils
     static bool dumpTryLock(Mutex& mutex);
 private:
     void dumpPermissionDenial(int fd, const Vector<String16>& args);
@@ -660,7 +659,7 @@
             IAfRecordThread* srcThread, IAfRecordThread* dstThread);
 
 public:
-    // TODO(b/288339104) cluster together
+    // TODO(b/291319167) cluster together
               status_t moveAuxEffectToIo(int EffectId,
             const sp<IAfPlaybackThread>& dstThread, sp<IAfPlaybackThread>* srcThread);
 private:
@@ -685,7 +684,7 @@
                 void        removeClient_l(pid_t pid);
                 void        removeNotificationClient(pid_t pid);
 public:
-    // TODO(b/288339104) cluster together
+    // TODO(b/291319167) cluster together
                 bool isNonOffloadableGlobalEffectEnabled_l();
 private:
                 void onNonOffloadableGlobalEffectEnable();
@@ -707,7 +706,7 @@
                 // and removed from mOrphanEffectChains if it does not contain any effect.
                 // Return true if the effect was found in mOrphanEffectChains, false otherwise.
 public:
-// TODO(b/288339104) suggest better grouping
+// TODO(b/291319167) suggest better grouping
                 bool updateOrphanEffectChains(const sp<IAfEffectModule>& effect);
 private:
                 std::vector< sp<IAfEffectModule> > purgeStaleEffects_l();
@@ -732,13 +731,13 @@
     };
 
 public:
-    // TODO(b/288339104) access by getter,
+    // TODO(b/291319167) access by getter,
     mutable     Mutex                               mLock;
                 // protects mClients and mNotificationClients.
                 // must be locked after mLock and ThreadBase::mLock if both must be locked
                 // avoids acquiring AudioFlinger::mLock from inside thread loop.
 
-    // TODO(b/288339104) access by getter,
+    // TODO(b/291319167) access by getter,
     mutable     Mutex                               mClientLock;
 private:
                 // protected by mClientLock
@@ -867,7 +866,7 @@
     const sp<IAfPatchPanel> mPatchPanel = IAfPatchPanel::create(this);
 
 public:
-    // TODO(b/288339104) access by getter.
+    // TODO(b/291319167) access by getter.
     sp<EffectsFactoryHalInterface> mEffectsFactoryHal;
 private:
 
@@ -903,8 +902,6 @@
     std::atomic_bool mBluetoothLatencyModesEnabled;
 };
 
-#undef INCLUDING_FROM_AUDIOFLINGER_H
-
 std::string formatToString(audio_format_t format);
 std::string inputFlagsToString(audio_input_flags_t flags);
 std::string outputFlagsToString(audio_output_flags_t flags);
