diff --git a/src/com/android/settings/wifi/ConfigureAccessPointFragment.java b/src/com/android/settings/wifi/ConfigureAccessPointFragment.java
index 3ada986..508d549 100644
--- a/src/com/android/settings/wifi/ConfigureAccessPointFragment.java
+++ b/src/com/android/settings/wifi/ConfigureAccessPointFragment.java
@@ -38,6 +38,9 @@
  *
  * The AccessPoint should be saved to the argument when launching this class in order to properly
  * render this page.
+ *
+ * Migrating from Wi-Fi SettingsLib to to WifiTrackerLib, this object will be removed in the near
+ * future, please develop in {@link ConfigureWifiEntryFragment}.
  */
 public class ConfigureAccessPointFragment extends InstrumentedFragment implements WifiConfigUiBase {
 
diff --git a/src/com/android/settings/wifi/ConnectedAccessPointPreference.java b/src/com/android/settings/wifi/ConnectedAccessPointPreference.java
index c7953c3..e904602 100644
--- a/src/com/android/settings/wifi/ConnectedAccessPointPreference.java
+++ b/src/com/android/settings/wifi/ConnectedAccessPointPreference.java
@@ -27,7 +27,10 @@
 import com.android.settingslib.wifi.AccessPoint;
 
 /**
- * An AP preference for the currently connected AP
+ * An AP preference for the currently connected AP.
+ *
+ * Migrating from Wi-Fi SettingsLib to to WifiTrackerLib, this object will be removed in the near
+ * future, please develop in {@link ConnectedWifiEntryPreference}.
  */
 public class ConnectedAccessPointPreference extends LongPressAccessPointPreference implements
         View.OnClickListener {
diff --git a/src/com/android/settings/wifi/LongPressAccessPointPreference.java b/src/com/android/settings/wifi/LongPressAccessPointPreference.java
index c3c08f0..1590325 100644
--- a/src/com/android/settings/wifi/LongPressAccessPointPreference.java
+++ b/src/com/android/settings/wifi/LongPressAccessPointPreference.java
@@ -23,6 +23,12 @@
 import com.android.settingslib.wifi.AccessPoint;
 import com.android.settingslib.wifi.AccessPointPreference;
 
+/**
+ * An AP preference for the currently connected AP.
+ *
+ * Migrating from Wi-Fi SettingsLib to to WifiTrackerLib, this object will be removed in the near
+ * future, please develop in {@link com.android.settingslib.wifi.LongPressWifiEntryPreference}.
+ */
 public class LongPressAccessPointPreference extends AccessPointPreference {
 
     private final Fragment mFragment;
diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java
index ce92de2..1579188 100644
--- a/src/com/android/settings/wifi/WifiConfigController.java
+++ b/src/com/android/settings/wifi/WifiConfigController.java
@@ -86,6 +86,9 @@
 /**
  * The class for allowing UIs like {@link WifiDialog} and {@link WifiConfigUiBase} to
  * share the logic for controlling buttons, text fields, etc.
+ *
+ * Migrating from Wi-Fi SettingsLib to to WifiTrackerLib, this object will be removed in the near
+ * future, please develop in {@link WifiConfigController2}.
  */
 public class WifiConfigController implements TextWatcher,
         AdapterView.OnItemSelectedListener, OnCheckedChangeListener,
diff --git a/src/com/android/settings/wifi/WifiConfigUiBase.java b/src/com/android/settings/wifi/WifiConfigUiBase.java
index 21ec894..30ec8b7 100644
--- a/src/com/android/settings/wifi/WifiConfigUiBase.java
+++ b/src/com/android/settings/wifi/WifiConfigUiBase.java
@@ -22,6 +22,9 @@
 
 /**
  * Foundation interface glues between Activities and UIs like {@link WifiDialog}.
+ *
+ * Migrating from Wi-Fi SettingsLib to to WifiTrackerLib, this object will be removed in the near
+ * future, please develop in {@link WifiConfigUiBase2}.
  */
 public interface WifiConfigUiBase {
 
@@ -56,4 +59,4 @@
     public Button getSubmitButton();
     public Button getForgetButton();
     public Button getCancelButton();
-}
\ No newline at end of file
+}
diff --git a/src/com/android/settings/wifi/WifiDialog.java b/src/com/android/settings/wifi/WifiDialog.java
index 2a4a664..9d0ab47 100644
--- a/src/com/android/settings/wifi/WifiDialog.java
+++ b/src/com/android/settings/wifi/WifiDialog.java
@@ -19,7 +19,6 @@
 import android.annotation.StyleRes;
 import android.content.Context;
 import android.content.DialogInterface;
-import android.content.Intent;
 import android.os.Bundle;
 import android.view.View;
 import android.widget.Button;
@@ -33,6 +32,12 @@
 import com.android.settingslib.RestrictedLockUtilsInternal;
 import com.android.settingslib.wifi.AccessPoint;
 
+/**
+ * Dialog for users to edit a Wi-Fi network.
+ *
+ * Migrating from Wi-Fi SettingsLib to to WifiTrackerLib, this object will be removed in the near
+ * future, please develop in {@link WifiDialog2}.
+ */
 public class WifiDialog extends AlertDialog implements WifiConfigUiBase,
         DialogInterface.OnClickListener {
 
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index 581f202..1ba99a2 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -90,6 +90,9 @@
  *
  * The second is for Setup Wizard, with a simplified interface that hides the action bar
  * and menus.
+ *
+ * Migrating from Wi-Fi SettingsLib to to WifiTrackerLib, this object will be removed in the near
+ * future, please develop in {@link WifiSettings2}.
  */
 @SearchIndexable
 public class WifiSettings extends RestrictedSettingsFragment
diff --git a/src/com/android/settings/wifi/details/AddDevicePreferenceController.java b/src/com/android/settings/wifi/details/AddDevicePreferenceController.java
index f2b3d75..2f4434a 100644
--- a/src/com/android/settings/wifi/details/AddDevicePreferenceController.java
+++ b/src/com/android/settings/wifi/details/AddDevicePreferenceController.java
@@ -25,11 +25,14 @@
 
 import com.android.settings.core.BasePreferenceController;
 import com.android.settings.wifi.dpp.WifiDppUtils;
-
 import com.android.settingslib.wifi.AccessPoint;
 
 /**
- * {@link BasePreferenceController} that launches Wi-Fi Easy Connect configurator flow
+ * {@link BasePreferenceController} that launches Wi-Fi Easy Connect configurator flow.
+ *
+ * Migrating from Wi-Fi SettingsLib to to WifiTrackerLib, this object will be removed in the near
+ * future, please develop in
+ * {@link com.android.settings.wifi.details2.AddDevicePreferenceController2}.
  */
 public class AddDevicePreferenceController extends BasePreferenceController {
 
diff --git a/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java b/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java
index 01a29c6..7616c4b 100644
--- a/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java
+++ b/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java
@@ -99,6 +99,10 @@
 /**
  * Controller for logic pertaining to displaying Wifi information for the
  * {@link WifiNetworkDetailsFragment}.
+ *
+ * Migrating from Wi-Fi SettingsLib to to WifiTrackerLib, this object will be removed in the near
+ * future, please develop in
+ * {@link com.android.settings.wifi.details2.WifiDetailPreferenceController2}.
  */
 public class WifiDetailPreferenceController extends AbstractPreferenceController
         implements PreferenceControllerMixin, WifiDialogListener, LifecycleObserver, OnPause,
diff --git a/src/com/android/settings/wifi/details/WifiMeteredPreferenceController.java b/src/com/android/settings/wifi/details/WifiMeteredPreferenceController.java
index 5f4e9d0..0b2b47e 100644
--- a/src/com/android/settings/wifi/details/WifiMeteredPreferenceController.java
+++ b/src/com/android/settings/wifi/details/WifiMeteredPreferenceController.java
@@ -31,7 +31,11 @@
 import com.android.settingslib.core.AbstractPreferenceController;
 
 /**
- * {@link AbstractPreferenceController} that controls whether the wifi network is metered or not
+ * {@link AbstractPreferenceController} that controls whether the wifi network is metered or not.
+ *
+ * Migrating from Wi-Fi SettingsLib to to WifiTrackerLib, this object will be removed in the near
+ * future, please develop in
+ * {@link com.android.settings.wifi.details2.WifiMeteredPreferenceControlle2}.
  */
 public class WifiMeteredPreferenceController extends BasePreferenceController implements
         Preference.OnPreferenceChangeListener, WifiDialog.WifiDialogListener {
diff --git a/src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java b/src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java
index b645d60..8af9a7f 100644
--- a/src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java
+++ b/src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java
@@ -46,6 +46,10 @@
  *
  * <p>The AccessPoint should be saved to the intent Extras when launching this class via
  * {@link AccessPoint#saveWifiState(Bundle)} in order to properly render this page.
+ *
+ * Migrating from Wi-Fi SettingsLib to to WifiTrackerLib, this object will be removed in the near
+ * future, please develop in
+ * {@link com.android.settings.wifi.details2.WifiNetworkDetailsFragment2}.
  */
 public class WifiNetworkDetailsFragment extends DashboardFragment implements
         WifiDialog.WifiDialogListener {
diff --git a/src/com/android/settings/wifi/details/WifiPrivacyPreferenceController.java b/src/com/android/settings/wifi/details/WifiPrivacyPreferenceController.java
index eab0fa4..6658411 100644
--- a/src/com/android/settings/wifi/details/WifiPrivacyPreferenceController.java
+++ b/src/com/android/settings/wifi/details/WifiPrivacyPreferenceController.java
@@ -33,7 +33,11 @@
 
 /**
  * {@link AbstractPreferenceController} that controls whether the wifi network is mac randomized
- * or not
+ * or not.
+ *
+ * Migrating from Wi-Fi SettingsLib to to WifiTrackerLib, this object will be removed in the near
+ * future, please develop in
+ * {@link com.android.settings.wifi.details2.WifiPrivacyPreferenceController2}.
  */
 public class WifiPrivacyPreferenceController extends BasePreferenceController implements
         Preference.OnPreferenceChangeListener, WifiDialog.WifiDialogListener {
diff --git a/src/com/android/settings/wifi/savedaccesspoints/SavedAccessPointsPreferenceController.java b/src/com/android/settings/wifi/savedaccesspoints/SavedAccessPointsPreferenceController.java
index fc91f6b..397fb8b 100644
--- a/src/com/android/settings/wifi/savedaccesspoints/SavedAccessPointsPreferenceController.java
+++ b/src/com/android/settings/wifi/savedaccesspoints/SavedAccessPointsPreferenceController.java
@@ -35,6 +35,10 @@
 
 /**
  * Controller that manages a PreferenceGroup, which contains a list of saved access points.
+ *
+ * Migrating from Wi-Fi SettingsLib to to WifiTrackerLib, this object will be removed in the near
+ * future, please develop in
+ * {@link com.android.settings.wifi.savedaccesspoints2.SavedAccessPointsPreferenceController2}.
  */
 public class SavedAccessPointsPreferenceController extends BasePreferenceController implements
         Preference.OnPreferenceClickListener {
diff --git a/src/com/android/settings/wifi/savedaccesspoints/SavedAccessPointsWifiSettings.java b/src/com/android/settings/wifi/savedaccesspoints/SavedAccessPointsWifiSettings.java
index 863e87a..262dce6 100644
--- a/src/com/android/settings/wifi/savedaccesspoints/SavedAccessPointsWifiSettings.java
+++ b/src/com/android/settings/wifi/savedaccesspoints/SavedAccessPointsWifiSettings.java
@@ -34,6 +34,10 @@
 
 /**
  * UI to manage saved networks/access points.
+ *
+ * Migrating from Wi-Fi SettingsLib to to WifiTrackerLib, this object will be removed in the near
+ * future, please develop in
+ * {@link com.android.settings.wifi.savedaccesspoints2.SavedAccessPointsWifiSettings2}.
  */
 public class SavedAccessPointsWifiSettings extends DashboardFragment {
 
diff --git a/src/com/android/settings/wifi/savedaccesspoints/SubscribedAccessPointsPreferenceController.java b/src/com/android/settings/wifi/savedaccesspoints/SubscribedAccessPointsPreferenceController.java
index b86113e..23ba7c4 100644
--- a/src/com/android/settings/wifi/savedaccesspoints/SubscribedAccessPointsPreferenceController.java
+++ b/src/com/android/settings/wifi/savedaccesspoints/SubscribedAccessPointsPreferenceController.java
@@ -24,6 +24,10 @@
 
 /**
  * Controller that manages a PreferenceGroup, which contains a list of subscribed access points.
+ *
+ * Migrating from Wi-Fi SettingsLib to to WifiTrackerLib, this object will be removed in the near
+ * future, please develop in
+ * {@link com.android.settings.wifi.savedaccesspoints2.SubscribedAccessPointsPreferenceController2}.
  */
 public class SubscribedAccessPointsPreferenceController extends
         SavedAccessPointsPreferenceController {
