Deployed 456849540 with MkDocs version: 1.4.3
diff --git a/404.html b/404.html
index 6b4a6ec..ff68810 100644
--- a/404.html
+++ b/404.html
@@ -73,7 +73,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="/leakcanary//changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="/leakcanary//how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="/leakcanary//changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="/leakcanary//how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-activity-watcher/-activity-watcher/index.html b/api/leakcanary/-activity-watcher/-activity-watcher/index.html
index 31fa6ac..694a3bf 100644
--- a/api/leakcanary/-activity-watcher/-activity-watcher/index.html
+++ b/api/leakcanary/-activity-watcher/-activity-watcher/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-activity-watcher/index.html b/api/leakcanary/-activity-watcher/index.html
index 58f0f56..1c44e26 100644
--- a/api/leakcanary/-activity-watcher/index.html
+++ b/api/leakcanary/-activity-watcher/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-activity-watcher/install/index.html b/api/leakcanary/-activity-watcher/install/index.html
index 0a4d289..d4e9042 100644
--- a/api/leakcanary/-activity-watcher/install/index.html
+++ b/api/leakcanary/-activity-watcher/install/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-activity-watcher/uninstall/index.html b/api/leakcanary/-activity-watcher/uninstall/index.html
index 46c0360..21c383b 100644
--- a/api/leakcanary/-activity-watcher/uninstall/index.html
+++ b/api/leakcanary/-activity-watcher/uninstall/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-android-debug-heap-dumper/dump-heap/index.html b/api/leakcanary/-android-debug-heap-dumper/dump-heap/index.html
index 6df10b6..33e52f0 100644
--- a/api/leakcanary/-android-debug-heap-dumper/dump-heap/index.html
+++ b/api/leakcanary/-android-debug-heap-dumper/dump-heap/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-android-debug-heap-dumper/index.html b/api/leakcanary/-android-debug-heap-dumper/index.html
index f3a228f..e8bb5c1 100644
--- a/api/leakcanary/-android-debug-heap-dumper/index.html
+++ b/api/leakcanary/-android-debug-heap-dumper/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-android-detect-leaks-assert/-android-detect-leaks-assert/index.html b/api/leakcanary/-android-detect-leaks-assert/-android-detect-leaks-assert/index.html
index 69908ae..9916720 100644
--- a/api/leakcanary/-android-detect-leaks-assert/-android-detect-leaks-assert/index.html
+++ b/api/leakcanary/-android-detect-leaks-assert/-android-detect-leaks-assert/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-android-detect-leaks-assert/-companion/assertion-tag/index.html b/api/leakcanary/-android-detect-leaks-assert/-companion/assertion-tag/index.html
index 29b348a..07a3b1e 100644
--- a/api/leakcanary/-android-detect-leaks-assert/-companion/assertion-tag/index.html
+++ b/api/leakcanary/-android-detect-leaks-assert/-companion/assertion-tag/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-android-detect-leaks-assert/-companion/index.html b/api/leakcanary/-android-detect-leaks-assert/-companion/index.html
index e5b8fc7..5424b23 100644
--- a/api/leakcanary/-android-detect-leaks-assert/-companion/index.html
+++ b/api/leakcanary/-android-detect-leaks-assert/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-android-detect-leaks-assert/-companion/total-duration-millis/index.html b/api/leakcanary/-android-detect-leaks-assert/-companion/total-duration-millis/index.html
index 351ee03..7a76db6 100644
--- a/api/leakcanary/-android-detect-leaks-assert/-companion/total-duration-millis/index.html
+++ b/api/leakcanary/-android-detect-leaks-assert/-companion/total-duration-millis/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-android-detect-leaks-assert/-companion/wait-for-retained-duration-millis/index.html b/api/leakcanary/-android-detect-leaks-assert/-companion/wait-for-retained-duration-millis/index.html
index 0bea243..9061234 100644
--- a/api/leakcanary/-android-detect-leaks-assert/-companion/wait-for-retained-duration-millis/index.html
+++ b/api/leakcanary/-android-detect-leaks-assert/-companion/wait-for-retained-duration-millis/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-android-detect-leaks-assert/assert-no-leaks/index.html b/api/leakcanary/-android-detect-leaks-assert/assert-no-leaks/index.html
index 3e16dc7..35ad249 100644
--- a/api/leakcanary/-android-detect-leaks-assert/assert-no-leaks/index.html
+++ b/api/leakcanary/-android-detect-leaks-assert/assert-no-leaks/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-android-detect-leaks-assert/index.html b/api/leakcanary/-android-detect-leaks-assert/index.html
index 5ca4194..6e2e8d9 100644
--- a/api/leakcanary/-android-detect-leaks-assert/index.html
+++ b/api/leakcanary/-android-detect-leaks-assert/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-android-detect-leaks-interceptor/-android-detect-leaks-interceptor/index.html b/api/leakcanary/-android-detect-leaks-interceptor/-android-detect-leaks-interceptor/index.html
index bc7870d..fd6c7fa 100644
--- a/api/leakcanary/-android-detect-leaks-interceptor/-android-detect-leaks-interceptor/index.html
+++ b/api/leakcanary/-android-detect-leaks-interceptor/-android-detect-leaks-interceptor/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-android-detect-leaks-interceptor/index.html b/api/leakcanary/-android-detect-leaks-interceptor/index.html
index ee7799b..d687751 100644
--- a/api/leakcanary/-android-detect-leaks-interceptor/index.html
+++ b/api/leakcanary/-android-detect-leaks-interceptor/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-android-detect-leaks-interceptor/wait-until-ready-for-heap-analysis/index.html b/api/leakcanary/-android-detect-leaks-interceptor/wait-until-ready-for-heap-analysis/index.html
index 62203ee..686c3b0 100644
--- a/api/leakcanary/-android-detect-leaks-interceptor/wait-until-ready-for-heap-analysis/index.html
+++ b/api/leakcanary/-android-detect-leaks-interceptor/wait-until-ready-for-heap-analysis/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-android-leak-fixes/-a-c-c-e-s-s-i-b-i-l-i-t-y_-n-o-d-e_-i-n-f-o/index.html b/api/leakcanary/-android-leak-fixes/-a-c-c-e-s-s-i-b-i-l-i-t-y_-n-o-d-e_-i-n-f-o/index.html
index a46f27c..a20bffc 100644
--- a/api/leakcanary/-android-leak-fixes/-a-c-c-e-s-s-i-b-i-l-i-t-y_-n-o-d-e_-i-n-f-o/index.html
+++ b/api/leakcanary/-android-leak-fixes/-a-c-c-e-s-s-i-b-i-l-i-t-y_-n-o-d-e_-i-n-f-o/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-android-leak-fixes/-a-c-t-i-v-i-t-y_-m-a-n-a-g-e-r/index.html b/api/leakcanary/-android-leak-fixes/-a-c-t-i-v-i-t-y_-m-a-n-a-g-e-r/index.html
index cd51992..65575cb 100644
--- a/api/leakcanary/-android-leak-fixes/-a-c-t-i-v-i-t-y_-m-a-n-a-g-e-r/index.html
+++ b/api/leakcanary/-android-leak-fixes/-a-c-t-i-v-i-t-y_-m-a-n-a-g-e-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-android-leak-fixes/-b-u-b-b-l-e_-p-o-p-u-p/index.html b/api/leakcanary/-android-leak-fixes/-b-u-b-b-l-e_-p-o-p-u-p/index.html
index 3a7dbec..1a0a450 100644
--- a/api/leakcanary/-android-leak-fixes/-b-u-b-b-l-e_-p-o-p-u-p/index.html
+++ b/api/leakcanary/-android-leak-fixes/-b-u-b-b-l-e_-p-o-p-u-p/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-android-leak-fixes/-c-o-n-n-e-c-t-i-v-i-t-y_-m-a-n-a-g-e-r/index.html b/api/leakcanary/-android-leak-fixes/-c-o-n-n-e-c-t-i-v-i-t-y_-m-a-n-a-g-e-r/index.html
index e270683..a6a89ab 100644
--- a/api/leakcanary/-android-leak-fixes/-c-o-n-n-e-c-t-i-v-i-t-y_-m-a-n-a-g-e-r/index.html
+++ b/api/leakcanary/-android-leak-fixes/-c-o-n-n-e-c-t-i-v-i-t-y_-m-a-n-a-g-e-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-android-leak-fixes/-companion/apply-fixes/index.html b/api/leakcanary/-android-leak-fixes/-companion/apply-fixes/index.html
index d0718be..f1777e5 100644
--- a/api/leakcanary/-android-leak-fixes/-companion/apply-fixes/index.html
+++ b/api/leakcanary/-android-leak-fixes/-companion/apply-fixes/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-android-leak-fixes/-companion/index.html b/api/leakcanary/-android-leak-fixes/-companion/index.html
index f8eaf44..4aa7652 100644
--- a/api/leakcanary/-android-leak-fixes/-companion/index.html
+++ b/api/leakcanary/-android-leak-fixes/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-android-leak-fixes/-f-l-u-s-h_-h-a-n-d-l-e-r_-t-h-r-e-a-d-s/index.html b/api/leakcanary/-android-leak-fixes/-f-l-u-s-h_-h-a-n-d-l-e-r_-t-h-r-e-a-d-s/index.html
index fcb102d..5af7006 100644
--- a/api/leakcanary/-android-leak-fixes/-f-l-u-s-h_-h-a-n-d-l-e-r_-t-h-r-e-a-d-s/index.html
+++ b/api/leakcanary/-android-leak-fixes/-f-l-u-s-h_-h-a-n-d-l-e-r_-t-h-r-e-a-d-s/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-android-leak-fixes/-i-m-m_-c-u-r_-r-o-o-t_-v-i-e-w/index.html b/api/leakcanary/-android-leak-fixes/-i-m-m_-c-u-r_-r-o-o-t_-v-i-e-w/index.html
index d5b3847..ea6328e 100644
--- a/api/leakcanary/-android-leak-fixes/-i-m-m_-c-u-r_-r-o-o-t_-v-i-e-w/index.html
+++ b/api/leakcanary/-android-leak-fixes/-i-m-m_-c-u-r_-r-o-o-t_-v-i-e-w/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-android-leak-fixes/-i-m-m_-f-o-c-u-s-e-d_-v-i-e-w/index.html b/api/leakcanary/-android-leak-fixes/-i-m-m_-f-o-c-u-s-e-d_-v-i-e-w/index.html
index 75d3568..7d5299c 100644
--- a/api/leakcanary/-android-leak-fixes/-i-m-m_-f-o-c-u-s-e-d_-v-i-e-w/index.html
+++ b/api/leakcanary/-android-leak-fixes/-i-m-m_-f-o-c-u-s-e-d_-v-i-e-w/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-android-leak-fixes/-l-a-s-t_-h-o-v-e-r-e-d_-v-i-e-w/index.html b/api/leakcanary/-android-leak-fixes/-l-a-s-t_-h-o-v-e-r-e-d_-v-i-e-w/index.html
index 73ca360..11e5198 100644
--- a/api/leakcanary/-android-leak-fixes/-l-a-s-t_-h-o-v-e-r-e-d_-v-i-e-w/index.html
+++ b/api/leakcanary/-android-leak-fixes/-l-a-s-t_-h-o-v-e-r-e-d_-v-i-e-w/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-android-leak-fixes/-m-e-d-i-a_-s-e-s-s-i-o-n_-l-e-g-a-c-y_-h-e-l-p-e-r/index.html b/api/leakcanary/-android-leak-fixes/-m-e-d-i-a_-s-e-s-s-i-o-n_-l-e-g-a-c-y_-h-e-l-p-e-r/index.html
index edc6c54..fbc55a6 100644
--- a/api/leakcanary/-android-leak-fixes/-m-e-d-i-a_-s-e-s-s-i-o-n_-l-e-g-a-c-y_-h-e-l-p-e-r/index.html
+++ b/api/leakcanary/-android-leak-fixes/-m-e-d-i-a_-s-e-s-s-i-o-n_-l-e-g-a-c-y_-h-e-l-p-e-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-android-leak-fixes/-p-e-r-m-i-s-s-i-o-n_-c-o-n-t-r-o-l-l-e-r_-m-a-n-a-g-e-r/index.html b/api/leakcanary/-android-leak-fixes/-p-e-r-m-i-s-s-i-o-n_-c-o-n-t-r-o-l-l-e-r_-m-a-n-a-g-e-r/index.html
new file mode 100644
index 0000000..415fa20
--- /dev/null
+++ b/api/leakcanary/-android-leak-fixes/-p-e-r-m-i-s-s-i-o-n_-c-o-n-t-r-o-l-l-e-r_-m-a-n-a-g-e-r/index.html
@@ -0,0 +1,890 @@
+
+<!doctype html>
+<html lang="en" class="no-js">
+  <head>
+    
+      <meta charset="utf-8">
+      <meta name="viewport" content="width=device-width,initial-scale=1">
+      
+        <meta name="description" content="A memory leak detection library for Android">
+      
+      
+        <meta name="author" content="Square, Inc.">
+      
+      
+        <link rel="canonical" href="https://square.github.io/leakcanary/api/leakcanary/-android-leak-fixes/-p-e-r-m-i-s-s-i-o-n_-c-o-n-t-r-o-l-l-e-r_-m-a-n-a-g-e-r/">
+      
+      
+      
+      <link rel="icon" href="../../../../images/logo.png">
+      <meta name="generator" content="mkdocs-1.4.3, mkdocs-material-9.1.10">
+    
+    
+      
+        <title>Index - LeakCanary</title>
+      
+    
+    
+      <link rel="stylesheet" href="../../../../assets/stylesheets/main.85bb2934.min.css">
+      
+        
+        <link rel="stylesheet" href="../../../../assets/stylesheets/palette.a6bdf11c.min.css">
+      
+      
+
+    
+    
+    
+      
+        
+        
+        <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
+        <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
+        <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
+      
+    
+    
+    <script>__md_scope=new URL("../../../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
+    
+      
+
+    
+    
+    
+  </head>
+  
+  
+    
+    
+    
+    
+    
+    <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="deep-orange" data-md-color-accent="deep-purple">
+  
+    
+    
+    <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
+    <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
+    <label class="md-overlay" for="__drawer"></label>
+    <div data-md-component="skip">
+      
+        
+        <a href="#permission_controller_manager" class="md-skip">
+          Skip to content
+        </a>
+      
+    </div>
+    <div data-md-component="announce">
+      
+        <aside class="md-banner">
+          <div class="md-banner__inner md-grid md-typeset">
+            
+             
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+
+          </div>
+          
+        </aside>
+      
+    </div>
+    
+    
+      
+
+  
+
+<header class="md-header md-header--shadow" data-md-component="header">
+  <nav class="md-header__inner md-grid" aria-label="Header">
+    <a href="../../../.." title="LeakCanary" class="md-header__button md-logo" aria-label="LeakCanary" data-md-component="logo">
+      
+  <img src="../../../../images/logo.png" alt="logo">
+
+    </a>
+    <label class="md-header__button md-icon" for="__drawer">
+      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
+    </label>
+    <div class="md-header__title" data-md-component="header-title">
+      <div class="md-header__ellipsis">
+        <div class="md-header__topic">
+          <span class="md-ellipsis">
+            LeakCanary
+          </span>
+        </div>
+        <div class="md-header__topic" data-md-component="header-topic">
+          <span class="md-ellipsis">
+            
+              Index
+            
+          </span>
+        </div>
+      </div>
+    </div>
+    
+      
+    
+    
+    
+      <label class="md-header__button md-icon" for="__search">
+        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
+      </label>
+      <div class="md-search" data-md-component="search" role="dialog">
+  <label class="md-search__overlay" for="__search"></label>
+  <div class="md-search__inner" role="search">
+    <form class="md-search__form" name="search">
+      <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
+      <label class="md-search__icon md-icon" for="__search">
+        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
+        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
+      </label>
+      <nav class="md-search__options" aria-label="Search">
+        
+        <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
+          <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
+        </button>
+      </nav>
+      
+    </form>
+    <div class="md-search__output">
+      <div class="md-search__scrollwrap" data-md-scrollfix>
+        <div class="md-search-result" data-md-component="search-result">
+          <div class="md-search-result__meta">
+            Initializing search
+          </div>
+          <ol class="md-search-result__list" role="presentation"></ol>
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
+    
+    
+      <div class="md-header__source">
+        <a href="https://github.com/square/leakcanary" title="Go to repository" class="md-source" data-md-component="source">
+  <div class="md-source__icon md-icon">
+    
+    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
+  </div>
+  <div class="md-source__repository">
+    LeakCanary
+  </div>
+</a>
+      </div>
+    
+  </nav>
+  
+</header>
+    
+    <div class="md-container" data-md-component="container">
+      
+      
+        
+          
+        
+      
+      <main class="md-main" data-md-component="main">
+        <div class="md-main__inner md-grid">
+          
+            
+              
+              <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
+                <div class="md-sidebar__scrollwrap">
+                  <div class="md-sidebar__inner">
+                    
+
+
+<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
+  <label class="md-nav__title" for="__drawer">
+    <a href="../../../.." title="LeakCanary" class="md-nav__button md-logo" aria-label="LeakCanary" data-md-component="logo">
+      
+  <img src="../../../../images/logo.png" alt="logo">
+
+    </a>
+    LeakCanary
+  </label>
+  
+    <div class="md-nav__source">
+      <a href="https://github.com/square/leakcanary" title="Go to repository" class="md-source" data-md-component="source">
+  <div class="md-source__icon md-icon">
+    
+    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
+  </div>
+  <div class="md-source__repository">
+    LeakCanary
+  </div>
+</a>
+    </div>
+  
+  <ul class="md-nav__list" data-md-scrollfix>
+    
+      
+      
+      
+
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../.." class="md-nav__link">
+        Overview
+      </a>
+    </li>
+  
+
+    
+      
+      
+      
+
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../getting_started/" class="md-nav__link">
+        Getting Started
+      </a>
+    </li>
+  
+
+    
+      
+      
+      
+
+  
+  
+  
+    
+    <li class="md-nav__item md-nav__item--nested">
+      
+      
+      
+      
+      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
+      
+      
+      
+        <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
+          Fundamentals
+          <span class="md-nav__icon md-icon"></span>
+        </label>
+      
+      <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
+        <label class="md-nav__title" for="__nav_3">
+          <span class="md-nav__icon md-icon"></span>
+          Fundamentals
+        </label>
+        <ul class="md-nav__list" data-md-scrollfix>
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../fundamentals/" class="md-nav__link">
+        Introduction
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../fundamentals-how-leakcanary-works/" class="md-nav__link">
+        How LeakCanary works
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../fundamentals-fixing-a-memory-leak/" class="md-nav__link">
+        Fixing a memory leak
+      </a>
+    </li>
+  
+
+            
+          
+        </ul>
+      </nav>
+    </li>
+  
+
+    
+      
+      
+      
+
+  
+  
+  
+    
+    <li class="md-nav__item md-nav__item--nested">
+      
+      
+      
+      
+      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" >
+      
+      
+      
+        <label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
+          LeakCanary at scale
+          <span class="md-nav__icon md-icon"></span>
+        </label>
+      
+      <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
+        <label class="md-nav__title" for="__nav_4">
+          <span class="md-nav__icon md-icon"></span>
+          LeakCanary at scale
+        </label>
+        <ul class="md-nav__list" data-md-scrollfix>
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../ui-tests/" class="md-nav__link">
+        Leak detection in UI tests
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../uploading/" class="md-nav__link">
+        Uploading analysis results
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../leakcanary-for-releases/" class="md-nav__link">
+        LeakCanary for releases
+      </a>
+    </li>
+  
+
+            
+          
+        </ul>
+      </nav>
+    </li>
+  
+
+    
+      
+      
+      
+
+  
+  
+  
+    
+    <li class="md-nav__item md-nav__item--nested">
+      
+      
+      
+      
+      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
+      
+      
+      
+        <label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
+          Help & Community
+          <span class="md-nav__icon md-icon"></span>
+        </label>
+      
+      <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
+        <label class="md-nav__title" for="__nav_5">
+          <span class="md-nav__icon md-icon"></span>
+          Help & Community
+        </label>
+        <ul class="md-nav__list" data-md-scrollfix>
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../recipes/" class="md-nav__link">
+        Code recipes
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../faq/" class="md-nav__link">
+        FAQ
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../support/" class="md-nav__link">
+        Support
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../upgrading-to-leakcanary-2.0/" class="md-nav__link">
+        Upgrading to LeakCanary 2
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../recorded-presentations/" class="md-nav__link">
+        Recorded Presentations
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../blog-articles/" class="md-nav__link">
+        Blog Articles
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="https://stackoverflow.com/questions/tagged/leakcanary?sort=active" class="md-nav__link">
+        Stack Overflow ⏏
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    
+    <li class="md-nav__item md-nav__item--nested">
+      
+      
+      
+      
+      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_8" >
+      
+      
+      
+        <label class="md-nav__link" for="__nav_5_8" id="__nav_5_8_label" tabindex="0">
+          Contributing
+          <span class="md-nav__icon md-icon"></span>
+        </label>
+      
+      <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_8_label" aria-expanded="false">
+        <label class="md-nav__title" for="__nav_5_8">
+          <span class="md-nav__icon md-icon"></span>
+          Contributing
+        </label>
+        <ul class="md-nav__list" data-md-scrollfix>
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../code_of_conduct/" class="md-nav__link">
+        Code of Conduct
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../dev-env/" class="md-nav__link">
+        Dev Environment
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../releasing/" class="md-nav__link">
+        Releasing
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../how_to_help/" class="md-nav__link">
+        How to help
+      </a>
+    </li>
+  
+
+            
+          
+        </ul>
+      </nav>
+    </li>
+  
+
+            
+          
+        </ul>
+      </nav>
+    </li>
+  
+
+    
+      
+      
+      
+
+  
+  
+  
+    
+    <li class="md-nav__item md-nav__item--nested">
+      
+      
+      
+      
+      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" >
+      
+      
+      
+        <label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
+          Shark
+          <span class="md-nav__icon md-icon"></span>
+        </label>
+      
+      <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
+        <label class="md-nav__title" for="__nav_6">
+          <span class="md-nav__icon md-icon"></span>
+          Shark
+        </label>
+        <ul class="md-nav__list" data-md-scrollfix>
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../shark/" class="md-nav__link">
+        Overview
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../shark/" class="md-nav__link">
+        Shark API
+      </a>
+    </li>
+  
+
+            
+          
+        </ul>
+      </nav>
+    </li>
+  
+
+    
+      
+      
+      
+
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../" class="md-nav__link">
+        LeakCanary API
+      </a>
+    </li>
+  
+
+    
+      
+      
+      
+
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../changelog/" class="md-nav__link">
+        Change Log
+      </a>
+    </li>
+  
+
+    
+  </ul>
+</nav>
+                  </div>
+                </div>
+              </div>
+            
+            
+              
+              <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
+                <div class="md-sidebar__scrollwrap">
+                  <div class="md-sidebar__inner">
+                    
+
+<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
+  
+  
+  
+    
+  
+  
+    <label class="md-nav__title" for="__toc">
+      <span class="md-nav__icon md-icon"></span>
+      Table of contents
+    </label>
+    <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
+      
+        <li class="md-nav__item">
+  <a href="#properties" class="md-nav__link">
+    Properties
+  </a>
+  
+</li>
+      
+    </ul>
+  
+</nav>
+                  </div>
+                </div>
+              </div>
+            
+          
+          
+            <div class="md-content" data-md-component="content">
+              <article class="md-content__inner md-typeset">
+                
+  
+    
+  <span style="float: right">🤔 Documentation issue? <a href="https://github.com/square/leakcanary/issues/new?assignees=&labels=type%3A+documentation&template=4-doc.md&title=Doc%20issue%20with%20api/leakcanary/-android-leak-fixes/-p-e-r-m-i-s-s-i-o-n_-c-o-n-t-r-o-l-l-e-r_-m-a-n-a-g-e-r/%20page">Report it</a></span>
+    
+  
+  
+    
+  
+  
+  <p>//<a href="../../../../">leakcanary</a>/<a href="../../">leakcanary</a>/<a href="../">AndroidLeakFixes</a>/<a href="./">PERMISSION_CONTROLLER_MANAGER</a></p>
+<h1 id="permission_controller_manager">PERMISSION_CONTROLLER_MANAGER<a class="headerlink" href="#permission_controller_manager" title="Permanent link">&para;</a></h1>
+<p><a href="./">PERMISSION_CONTROLLER_MANAGER</a>()</p>
+<p>PermissionControllerManager stores the first context it&rsquo;s initialized with forever. Sometimes it&rsquo;s an Activity context which then leaks after Activity is destroyed.</p>
+<p>This fix makes sure the PermissionControllerManager is created with the application context.</p>
+<p>For Pixel devices the issue can be tracked here <a href="https://issuetracker.google.com/issues/318415056">https://issuetracker.google.com/issues/318415056</a></p>
+<h2 id="properties">Properties<a class="headerlink" href="#properties" title="Permanent link">&para;</a></h2>
+<table>
+<thead>
+<tr>
+<th>Name</th>
+<th>Summary</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td><a href="../../../shark/-primitive-type/-b-o-o-l-e-a-n/#-372974862%2FProperties%2F44236444">name</a></td>
+<td>val <a href="../../../shark/-primitive-type/-b-o-o-l-e-a-n/#-372974862%2FProperties%2F44236444">name</a>: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a></td>
+</tr>
+<tr>
+<td><a href="../../../shark/-primitive-type/-b-o-o-l-e-a-n/#-739389684%2FProperties%2F44236444">ordinal</a></td>
+<td>val <a href="../../../shark/-primitive-type/-b-o-o-l-e-a-n/#-739389684%2FProperties%2F44236444">ordinal</a>: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a></td>
+</tr>
+</tbody>
+</table>
+  
+
+              </article>
+            </div>
+          
+          
+        </div>
+        
+      </main>
+      
+        <footer class="md-footer">
+  
+  <div class="md-footer-meta md-typeset">
+    <div class="md-footer-meta__inner md-grid">
+      <div class="md-copyright">
+  
+    <div class="md-copyright__highlight">
+      Copyright &copy; 2015 Square, Inc.
+    </div>
+  
+  
+    Made with
+    <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
+      Material for MkDocs
+    </a>
+  
+</div>
+      
+        <div class="md-social">
+  
+    
+    
+    
+    
+      
+      
+    
+    <a href="https://square.github.io/" target="_blank" rel="noopener" title="square.github.io" class="md-social__link">
+      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg>
+    </a>
+  
+    
+    
+    
+    
+      
+      
+    
+    <a href="https://twitter.com/Piwai" target="_blank" rel="noopener" title="twitter.com" class="md-social__link">
+      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"/></svg>
+    </a>
+  
+    
+    
+    
+    
+      
+      
+    
+    <a href="https://stackoverflow.com/questions/tagged/leakcanary?sort=active" target="_blank" rel="noopener" title="stackoverflow.com" class="md-social__link">
+      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M290.7 311 95 269.7 86.8 309l195.7 41zm51-87L188.2 95.7l-25.5 30.8 153.5 128.3zm-31.2 39.7L129.2 179l-16.7 36.5L293.7 300zM262 32l-32 24 119.3 160.3 32-24zm20.5 328h-200v39.7h200zm39.7 80H42.7V320h-40v160h359.5V320h-40z"/></svg>
+    </a>
+  
+    
+    
+    
+    
+      
+      
+    
+    <a href="https://www.linkedin.com/company/joinsquare/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link">
+      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"/></svg>
+    </a>
+  
+</div>
+      
+    </div>
+  </div>
+</footer>
+      
+    </div>
+    <div class="md-dialog" data-md-component="dialog">
+      <div class="md-dialog__inner md-typeset"></div>
+    </div>
+    
+    <script id="__config" type="application/json">{"base": "../../../..", "features": ["tabs"], "search": "../../../../assets/javascripts/workers/search.208ed371.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
+    
+    
+      <script src="../../../../assets/javascripts/bundle.fac441b0.min.js"></script>
+      
+    
+  </body>
+</html>
\ No newline at end of file
diff --git a/api/leakcanary/-android-leak-fixes/-s-a-m-s-u-n-g_-c-l-i-p-b-o-a-r-d_-m-a-n-a-g-e-r/index.html b/api/leakcanary/-android-leak-fixes/-s-a-m-s-u-n-g_-c-l-i-p-b-o-a-r-d_-m-a-n-a-g-e-r/index.html
index 55258a9..7492b13 100644
--- a/api/leakcanary/-android-leak-fixes/-s-a-m-s-u-n-g_-c-l-i-p-b-o-a-r-d_-m-a-n-a-g-e-r/index.html
+++ b/api/leakcanary/-android-leak-fixes/-s-a-m-s-u-n-g_-c-l-i-p-b-o-a-r-d_-m-a-n-a-g-e-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-android-leak-fixes/-s-p-e-l-l_-c-h-e-c-k-e-r/index.html b/api/leakcanary/-android-leak-fixes/-s-p-e-l-l_-c-h-e-c-k-e-r/index.html
index 4e0bb66..0b71670 100644
--- a/api/leakcanary/-android-leak-fixes/-s-p-e-l-l_-c-h-e-c-k-e-r/index.html
+++ b/api/leakcanary/-android-leak-fixes/-s-p-e-l-l_-c-h-e-c-k-e-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-android-leak-fixes/-t-e-x-t_-l-i-n-e_-p-o-o-l/index.html b/api/leakcanary/-android-leak-fixes/-t-e-x-t_-l-i-n-e_-p-o-o-l/index.html
index 31e8fd2..5192dbd 100644
--- a/api/leakcanary/-android-leak-fixes/-t-e-x-t_-l-i-n-e_-p-o-o-l/index.html
+++ b/api/leakcanary/-android-leak-fixes/-t-e-x-t_-l-i-n-e_-p-o-o-l/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-android-leak-fixes/-u-s-e-r_-m-a-n-a-g-e-r/index.html b/api/leakcanary/-android-leak-fixes/-u-s-e-r_-m-a-n-a-g-e-r/index.html
index 2eedfe2..3511a32 100644
--- a/api/leakcanary/-android-leak-fixes/-u-s-e-r_-m-a-n-a-g-e-r/index.html
+++ b/api/leakcanary/-android-leak-fixes/-u-s-e-r_-m-a-n-a-g-e-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-android-leak-fixes/-v-i-e-w_-l-o-c-a-t-i-o-n_-h-o-l-d-e-r/index.html b/api/leakcanary/-android-leak-fixes/-v-i-e-w_-l-o-c-a-t-i-o-n_-h-o-l-d-e-r/index.html
index def6a7f..1365a54 100644
--- a/api/leakcanary/-android-leak-fixes/-v-i-e-w_-l-o-c-a-t-i-o-n_-h-o-l-d-e-r/index.html
+++ b/api/leakcanary/-android-leak-fixes/-v-i-e-w_-l-o-c-a-t-i-o-n_-h-o-l-d-e-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-android-leak-fixes/index.html b/api/leakcanary/-android-leak-fixes/index.html
index 340d92b..81be57c 100644
--- a/api/leakcanary/-android-leak-fixes/index.html
+++ b/api/leakcanary/-android-leak-fixes/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
@@ -798,6 +798,10 @@
 </thead>
 <tbody>
 <tr>
+<td><a href="-p-e-r-m-i-s-s-i-o-n_-c-o-n-t-r-o-l-l-e-r_-m-a-n-a-g-e-r/">PERMISSION_CONTROLLER_MANAGER</a></td>
+<td><a href="-p-e-r-m-i-s-s-i-o-n_-c-o-n-t-r-o-l-l-e-r_-m-a-n-a-g-e-r/">PERMISSION_CONTROLLER_MANAGER</a>()<br>PermissionControllerManager stores the first context it&rsquo;s initialized with forever. Sometimes it&rsquo;s an Activity context which then leaks after Activity is destroyed.</td>
+</tr>
+<tr>
 <td><a href="-s-p-e-l-l_-c-h-e-c-k-e-r/">SPELL_CHECKER</a></td>
 <td><a href="-s-p-e-l-l_-c-h-e-c-k-e-r/">SPELL_CHECKER</a>()<br>Every editable TextView has an Editor instance which has a SpellChecker instance. SpellChecker is in charge of displaying the little squiggle spans that show typos. SpellChecker starts a SpellCheckerSession as needed and then closes it when the TextView is detached from the window. A SpellCheckerSession is in charge of communicating with the spell checker service (which lives in another process) through TextServicesManager.</td>
 </tr>
diff --git a/api/leakcanary/-app-watcher-startup-initializer/-app-watcher-startup-initializer/index.html b/api/leakcanary/-app-watcher-startup-initializer/-app-watcher-startup-initializer/index.html
index 1d63b25..73c30ae 100644
--- a/api/leakcanary/-app-watcher-startup-initializer/-app-watcher-startup-initializer/index.html
+++ b/api/leakcanary/-app-watcher-startup-initializer/-app-watcher-startup-initializer/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-app-watcher-startup-initializer/create/index.html b/api/leakcanary/-app-watcher-startup-initializer/create/index.html
index dec79b9..0925112 100644
--- a/api/leakcanary/-app-watcher-startup-initializer/create/index.html
+++ b/api/leakcanary/-app-watcher-startup-initializer/create/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-app-watcher-startup-initializer/dependencies/index.html b/api/leakcanary/-app-watcher-startup-initializer/dependencies/index.html
index 18cf305..be2bbe7 100644
--- a/api/leakcanary/-app-watcher-startup-initializer/dependencies/index.html
+++ b/api/leakcanary/-app-watcher-startup-initializer/dependencies/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-app-watcher-startup-initializer/index.html b/api/leakcanary/-app-watcher-startup-initializer/index.html
index fcaa282..3295156 100644
--- a/api/leakcanary/-app-watcher-startup-initializer/index.html
+++ b/api/leakcanary/-app-watcher-startup-initializer/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-app-watcher/app-default-watchers/index.html b/api/leakcanary/-app-watcher/app-default-watchers/index.html
index 1ae9feb..958d0dc 100644
--- a/api/leakcanary/-app-watcher/app-default-watchers/index.html
+++ b/api/leakcanary/-app-watcher/app-default-watchers/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-app-watcher/index.html b/api/leakcanary/-app-watcher/index.html
index e50288e..22c2eec 100644
--- a/api/leakcanary/-app-watcher/index.html
+++ b/api/leakcanary/-app-watcher/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-app-watcher/is-installed/index.html b/api/leakcanary/-app-watcher/is-installed/index.html
index c0e747b..c259ee9 100644
--- a/api/leakcanary/-app-watcher/is-installed/index.html
+++ b/api/leakcanary/-app-watcher/is-installed/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-app-watcher/manual-install/index.html b/api/leakcanary/-app-watcher/manual-install/index.html
index 48bf5af..f06bd0f 100644
--- a/api/leakcanary/-app-watcher/manual-install/index.html
+++ b/api/leakcanary/-app-watcher/manual-install/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-app-watcher/object-watcher/index.html b/api/leakcanary/-app-watcher/object-watcher/index.html
index 6a0834a..09b5fd1 100644
--- a/api/leakcanary/-app-watcher/object-watcher/index.html
+++ b/api/leakcanary/-app-watcher/object-watcher/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-app-watcher/retained-delay-millis/index.html b/api/leakcanary/-app-watcher/retained-delay-millis/index.html
index 8425154..e5012b8 100644
--- a/api/leakcanary/-app-watcher/retained-delay-millis/index.html
+++ b/api/leakcanary/-app-watcher/retained-delay-millis/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-background-thread-heap-analyzer/index.html b/api/leakcanary/-background-thread-heap-analyzer/index.html
index e7b61ea..640da8a 100644
--- a/api/leakcanary/-background-thread-heap-analyzer/index.html
+++ b/api/leakcanary/-background-thread-heap-analyzer/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-background-thread-heap-analyzer/on-event/index.html b/api/leakcanary/-background-thread-heap-analyzer/on-event/index.html
index 9ede93c..5167302 100644
--- a/api/leakcanary/-background-thread-heap-analyzer/on-event/index.html
+++ b/api/leakcanary/-background-thread-heap-analyzer/on-event/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-background-trigger/-background-trigger/index.html b/api/leakcanary/-background-trigger/-background-trigger/index.html
index bde7b93..56c9cb7 100644
--- a/api/leakcanary/-background-trigger/-background-trigger/index.html
+++ b/api/leakcanary/-background-trigger/-background-trigger/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-background-trigger/index.html b/api/leakcanary/-background-trigger/index.html
index a66153c..cbf2772 100644
--- a/api/leakcanary/-background-trigger/index.html
+++ b/api/leakcanary/-background-trigger/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-background-trigger/start/index.html b/api/leakcanary/-background-trigger/start/index.html
index b97e661..be908ec 100644
--- a/api/leakcanary/-background-trigger/start/index.html
+++ b/api/leakcanary/-background-trigger/start/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-background-trigger/stop/index.html b/api/leakcanary/-background-trigger/stop/index.html
index b367d22..1beea73 100644
--- a/api/leakcanary/-background-trigger/stop/index.html
+++ b/api/leakcanary/-background-trigger/stop/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-clock/-companion/index.html b/api/leakcanary/-clock/-companion/index.html
index 4e4902a..c52f1f9 100644
--- a/api/leakcanary/-clock/-companion/index.html
+++ b/api/leakcanary/-clock/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-clock/-companion/invoke/index.html b/api/leakcanary/-clock/-companion/invoke/index.html
index d238b2c..7aa8769 100644
--- a/api/leakcanary/-clock/-companion/invoke/index.html
+++ b/api/leakcanary/-clock/-companion/invoke/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-clock/index.html b/api/leakcanary/-clock/index.html
index 8466ebd..824eb9f 100644
--- a/api/leakcanary/-clock/index.html
+++ b/api/leakcanary/-clock/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-clock/uptime-millis/index.html b/api/leakcanary/-clock/uptime-millis/index.html
index 342bb2d..b362b55 100644
--- a/api/leakcanary/-clock/uptime-millis/index.html
+++ b/api/leakcanary/-clock/uptime-millis/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-conditional-interceptor/-conditional-interceptor/index.html b/api/leakcanary/-conditional-interceptor/-conditional-interceptor/index.html
index c553fc8..6fd04b7 100644
--- a/api/leakcanary/-conditional-interceptor/-conditional-interceptor/index.html
+++ b/api/leakcanary/-conditional-interceptor/-conditional-interceptor/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-conditional-interceptor/index.html b/api/leakcanary/-conditional-interceptor/index.html
index 7ab3b45..03e03cd 100644
--- a/api/leakcanary/-conditional-interceptor/index.html
+++ b/api/leakcanary/-conditional-interceptor/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-conditional-interceptor/intercept/index.html b/api/leakcanary/-conditional-interceptor/intercept/index.html
index d4faee9..dae5c15 100644
--- a/api/leakcanary/-conditional-interceptor/intercept/index.html
+++ b/api/leakcanary/-conditional-interceptor/intercept/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-detect-leaks-after-test-success/-companion/detect-leaks-after-test-success-wrapping/index.html b/api/leakcanary/-detect-leaks-after-test-success/-companion/detect-leaks-after-test-success-wrapping/index.html
index 321c244..4f85329 100644
--- a/api/leakcanary/-detect-leaks-after-test-success/-companion/detect-leaks-after-test-success-wrapping/index.html
+++ b/api/leakcanary/-detect-leaks-after-test-success/-companion/detect-leaks-after-test-success-wrapping/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-detect-leaks-after-test-success/-companion/index.html b/api/leakcanary/-detect-leaks-after-test-success/-companion/index.html
index 63d30f2..787952f 100644
--- a/api/leakcanary/-detect-leaks-after-test-success/-companion/index.html
+++ b/api/leakcanary/-detect-leaks-after-test-success/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-detect-leaks-after-test-success/-detect-leaks-after-test-success/index.html b/api/leakcanary/-detect-leaks-after-test-success/-detect-leaks-after-test-success/index.html
index ddb1cfb..76bc0b2 100644
--- a/api/leakcanary/-detect-leaks-after-test-success/-detect-leaks-after-test-success/index.html
+++ b/api/leakcanary/-detect-leaks-after-test-success/-detect-leaks-after-test-success/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-detect-leaks-after-test-success/apply/index.html b/api/leakcanary/-detect-leaks-after-test-success/apply/index.html
index 64568b0..c967587 100644
--- a/api/leakcanary/-detect-leaks-after-test-success/apply/index.html
+++ b/api/leakcanary/-detect-leaks-after-test-success/apply/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-detect-leaks-after-test-success/index.html b/api/leakcanary/-detect-leaks-after-test-success/index.html
index 418874f..2de3585 100644
--- a/api/leakcanary/-detect-leaks-after-test-success/index.html
+++ b/api/leakcanary/-detect-leaks-after-test-success/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-detect-leaks-assert/-companion/index.html b/api/leakcanary/-detect-leaks-assert/-companion/index.html
index 9141dcc..7e986d7 100644
--- a/api/leakcanary/-detect-leaks-assert/-companion/index.html
+++ b/api/leakcanary/-detect-leaks-assert/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-detect-leaks-assert/-companion/update/index.html b/api/leakcanary/-detect-leaks-assert/-companion/update/index.html
index 4445e9a..1ec0321 100644
--- a/api/leakcanary/-detect-leaks-assert/-companion/update/index.html
+++ b/api/leakcanary/-detect-leaks-assert/-companion/update/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-detect-leaks-assert/assert-no-leaks/index.html b/api/leakcanary/-detect-leaks-assert/assert-no-leaks/index.html
index 6371c1e..1fd77bb 100644
--- a/api/leakcanary/-detect-leaks-assert/assert-no-leaks/index.html
+++ b/api/leakcanary/-detect-leaks-assert/assert-no-leaks/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-detect-leaks-assert/index.html b/api/leakcanary/-detect-leaks-assert/index.html
index 77cc985..8180fad 100644
--- a/api/leakcanary/-detect-leaks-assert/index.html
+++ b/api/leakcanary/-detect-leaks-assert/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-detect-leaks-interceptor/index.html b/api/leakcanary/-detect-leaks-interceptor/index.html
index d53a041..d869a68 100644
--- a/api/leakcanary/-detect-leaks-interceptor/index.html
+++ b/api/leakcanary/-detect-leaks-interceptor/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-detect-leaks-interceptor/wait-until-ready-for-heap-analysis/index.html b/api/leakcanary/-detect-leaks-interceptor/wait-until-ready-for-heap-analysis/index.html
index f49fa7d..ff53eb9 100644
--- a/api/leakcanary/-detect-leaks-interceptor/wait-until-ready-for-heap-analysis/index.html
+++ b/api/leakcanary/-detect-leaks-interceptor/wait-until-ready-for-heap-analysis/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-event-listener/-event/-dumping-heap/-dumping-heap/index.html b/api/leakcanary/-event-listener/-event/-dumping-heap/-dumping-heap/index.html
index 30a49aa..07b7019 100644
--- a/api/leakcanary/-event-listener/-event/-dumping-heap/-dumping-heap/index.html
+++ b/api/leakcanary/-event-listener/-event/-dumping-heap/-dumping-heap/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-event-listener/-event/-dumping-heap/index.html b/api/leakcanary/-event-listener/-event/-dumping-heap/index.html
index 96844a2..df61fb7 100644
--- a/api/leakcanary/-event-listener/-event/-dumping-heap/index.html
+++ b/api/leakcanary/-event-listener/-event/-dumping-heap/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-failed/-heap-analysis-failed/index.html b/api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-failed/-heap-analysis-failed/index.html
index e787e63..cbc63e2 100644
--- a/api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-failed/-heap-analysis-failed/index.html
+++ b/api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-failed/-heap-analysis-failed/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-failed/index.html b/api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-failed/index.html
index a7c5f6b..2b38f03 100644
--- a/api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-failed/index.html
+++ b/api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-failed/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-succeeded/-heap-analysis-succeeded/index.html b/api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-succeeded/-heap-analysis-succeeded/index.html
index 80748b1..7fa62af 100644
--- a/api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-succeeded/-heap-analysis-succeeded/index.html
+++ b/api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-succeeded/-heap-analysis-succeeded/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-succeeded/index.html b/api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-succeeded/index.html
index b790a9e..f9b0ef2 100644
--- a/api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-succeeded/index.html
+++ b/api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-succeeded/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-succeeded/unread-leak-signatures/index.html b/api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-succeeded/unread-leak-signatures/index.html
index 18ae9e6..45285ef 100644
--- a/api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-succeeded/unread-leak-signatures/index.html
+++ b/api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-succeeded/unread-leak-signatures/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-event-listener/-event/-heap-analysis-done/heap-analysis/index.html b/api/leakcanary/-event-listener/-event/-heap-analysis-done/heap-analysis/index.html
index 8b78240..7475fa5 100644
--- a/api/leakcanary/-event-listener/-event/-heap-analysis-done/heap-analysis/index.html
+++ b/api/leakcanary/-event-listener/-event/-heap-analysis-done/heap-analysis/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-event-listener/-event/-heap-analysis-done/index.html b/api/leakcanary/-event-listener/-event/-heap-analysis-done/index.html
index 18e3ac8..c128d6c 100644
--- a/api/leakcanary/-event-listener/-event/-heap-analysis-done/index.html
+++ b/api/leakcanary/-event-listener/-event/-heap-analysis-done/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-event-listener/-event/-heap-analysis-done/show-intent/index.html b/api/leakcanary/-event-listener/-event/-heap-analysis-done/show-intent/index.html
index 5910ebd..528fb59 100644
--- a/api/leakcanary/-event-listener/-event/-heap-analysis-done/show-intent/index.html
+++ b/api/leakcanary/-event-listener/-event/-heap-analysis-done/show-intent/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-event-listener/-event/-heap-analysis-progress/-heap-analysis-progress/index.html b/api/leakcanary/-event-listener/-event/-heap-analysis-progress/-heap-analysis-progress/index.html
index 098cc40..aba092a 100644
--- a/api/leakcanary/-event-listener/-event/-heap-analysis-progress/-heap-analysis-progress/index.html
+++ b/api/leakcanary/-event-listener/-event/-heap-analysis-progress/-heap-analysis-progress/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-event-listener/-event/-heap-analysis-progress/index.html b/api/leakcanary/-event-listener/-event/-heap-analysis-progress/index.html
index 32dfb9b..c5d467d 100644
--- a/api/leakcanary/-event-listener/-event/-heap-analysis-progress/index.html
+++ b/api/leakcanary/-event-listener/-event/-heap-analysis-progress/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-event-listener/-event/-heap-analysis-progress/progress-percent/index.html b/api/leakcanary/-event-listener/-event/-heap-analysis-progress/progress-percent/index.html
index 14492ef..04f2dd7 100644
--- a/api/leakcanary/-event-listener/-event/-heap-analysis-progress/progress-percent/index.html
+++ b/api/leakcanary/-event-listener/-event/-heap-analysis-progress/progress-percent/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-event-listener/-event/-heap-analysis-progress/step/index.html b/api/leakcanary/-event-listener/-event/-heap-analysis-progress/step/index.html
index 02a43f9..62dca46 100644
--- a/api/leakcanary/-event-listener/-event/-heap-analysis-progress/step/index.html
+++ b/api/leakcanary/-event-listener/-event/-heap-analysis-progress/step/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-event-listener/-event/-heap-dump-failed/-heap-dump-failed/index.html b/api/leakcanary/-event-listener/-event/-heap-dump-failed/-heap-dump-failed/index.html
index 92baace..75ea817 100644
--- a/api/leakcanary/-event-listener/-event/-heap-dump-failed/-heap-dump-failed/index.html
+++ b/api/leakcanary/-event-listener/-event/-heap-dump-failed/-heap-dump-failed/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-event-listener/-event/-heap-dump-failed/exception/index.html b/api/leakcanary/-event-listener/-event/-heap-dump-failed/exception/index.html
index f66ef25..c154241 100644
--- a/api/leakcanary/-event-listener/-event/-heap-dump-failed/exception/index.html
+++ b/api/leakcanary/-event-listener/-event/-heap-dump-failed/exception/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-event-listener/-event/-heap-dump-failed/index.html b/api/leakcanary/-event-listener/-event/-heap-dump-failed/index.html
index 91fd7f2..5cc17ff 100644
--- a/api/leakcanary/-event-listener/-event/-heap-dump-failed/index.html
+++ b/api/leakcanary/-event-listener/-event/-heap-dump-failed/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-event-listener/-event/-heap-dump-failed/will-retry-later/index.html b/api/leakcanary/-event-listener/-event/-heap-dump-failed/will-retry-later/index.html
index 6b6a6c9..203226c 100644
--- a/api/leakcanary/-event-listener/-event/-heap-dump-failed/will-retry-later/index.html
+++ b/api/leakcanary/-event-listener/-event/-heap-dump-failed/will-retry-later/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-event-listener/-event/-heap-dump/-heap-dump/index.html b/api/leakcanary/-event-listener/-event/-heap-dump/-heap-dump/index.html
index b43ed3f..7ec3472 100644
--- a/api/leakcanary/-event-listener/-event/-heap-dump/-heap-dump/index.html
+++ b/api/leakcanary/-event-listener/-event/-heap-dump/-heap-dump/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-event-listener/-event/-heap-dump/duration-millis/index.html b/api/leakcanary/-event-listener/-event/-heap-dump/duration-millis/index.html
index a99a959..d78e51d 100644
--- a/api/leakcanary/-event-listener/-event/-heap-dump/duration-millis/index.html
+++ b/api/leakcanary/-event-listener/-event/-heap-dump/duration-millis/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-event-listener/-event/-heap-dump/file/index.html b/api/leakcanary/-event-listener/-event/-heap-dump/file/index.html
index ac86bd1..ff674c5 100644
--- a/api/leakcanary/-event-listener/-event/-heap-dump/file/index.html
+++ b/api/leakcanary/-event-listener/-event/-heap-dump/file/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-event-listener/-event/-heap-dump/index.html b/api/leakcanary/-event-listener/-event/-heap-dump/index.html
index 58bb565..00c41ef 100644
--- a/api/leakcanary/-event-listener/-event/-heap-dump/index.html
+++ b/api/leakcanary/-event-listener/-event/-heap-dump/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-event-listener/-event/-heap-dump/reason/index.html b/api/leakcanary/-event-listener/-event/-heap-dump/reason/index.html
index 03681e1..3b7c8b9 100644
--- a/api/leakcanary/-event-listener/-event/-heap-dump/reason/index.html
+++ b/api/leakcanary/-event-listener/-event/-heap-dump/reason/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-event-listener/-event/index.html b/api/leakcanary/-event-listener/-event/index.html
index fe0baca..b264447 100644
--- a/api/leakcanary/-event-listener/-event/index.html
+++ b/api/leakcanary/-event-listener/-event/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-event-listener/-event/unique-id/index.html b/api/leakcanary/-event-listener/-event/unique-id/index.html
index 3b1ff0a..e5b57f9 100644
--- a/api/leakcanary/-event-listener/-event/unique-id/index.html
+++ b/api/leakcanary/-event-listener/-event/unique-id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-event-listener/index.html b/api/leakcanary/-event-listener/index.html
index 108b1af..4fe35a6 100644
--- a/api/leakcanary/-event-listener/index.html
+++ b/api/leakcanary/-event-listener/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-event-listener/on-event/index.html b/api/leakcanary/-event-listener/on-event/index.html
index e1937e1..e97b7ae 100644
--- a/api/leakcanary/-event-listener/on-event/index.html
+++ b/api/leakcanary/-event-listener/on-event/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-fragment-and-view-model-watcher/-companion/index.html b/api/leakcanary/-fragment-and-view-model-watcher/-companion/index.html
index d48a617..127110c 100644
--- a/api/leakcanary/-fragment-and-view-model-watcher/-companion/index.html
+++ b/api/leakcanary/-fragment-and-view-model-watcher/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-fragment-and-view-model-watcher/-fragment-and-view-model-watcher/index.html b/api/leakcanary/-fragment-and-view-model-watcher/-fragment-and-view-model-watcher/index.html
index 5735bcc..38b6c68 100644
--- a/api/leakcanary/-fragment-and-view-model-watcher/-fragment-and-view-model-watcher/index.html
+++ b/api/leakcanary/-fragment-and-view-model-watcher/-fragment-and-view-model-watcher/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-fragment-and-view-model-watcher/index.html b/api/leakcanary/-fragment-and-view-model-watcher/index.html
index ebfdb82..98921de 100644
--- a/api/leakcanary/-fragment-and-view-model-watcher/index.html
+++ b/api/leakcanary/-fragment-and-view-model-watcher/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-fragment-and-view-model-watcher/install/index.html b/api/leakcanary/-fragment-and-view-model-watcher/install/index.html
index d42f610..4f645ed 100644
--- a/api/leakcanary/-fragment-and-view-model-watcher/install/index.html
+++ b/api/leakcanary/-fragment-and-view-model-watcher/install/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-fragment-and-view-model-watcher/uninstall/index.html b/api/leakcanary/-fragment-and-view-model-watcher/uninstall/index.html
index a6b4aab..8fb00fc 100644
--- a/api/leakcanary/-fragment-and-view-model-watcher/uninstall/index.html
+++ b/api/leakcanary/-fragment-and-view-model-watcher/uninstall/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-gc-trigger/-default/index.html b/api/leakcanary/-gc-trigger/-default/index.html
index f699a36..c4fa2b0 100644
--- a/api/leakcanary/-gc-trigger/-default/index.html
+++ b/api/leakcanary/-gc-trigger/-default/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-gc-trigger/-default/run-gc/index.html b/api/leakcanary/-gc-trigger/-default/run-gc/index.html
index 8bccdd2..c4f0de0 100644
--- a/api/leakcanary/-gc-trigger/-default/run-gc/index.html
+++ b/api/leakcanary/-gc-trigger/-default/run-gc/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-gc-trigger/index.html b/api/leakcanary/-gc-trigger/index.html
index 7c98fc8..d532aab 100644
--- a/api/leakcanary/-gc-trigger/index.html
+++ b/api/leakcanary/-gc-trigger/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-gc-trigger/run-gc/index.html b/api/leakcanary/-gc-trigger/run-gc/index.html
index 201ccfb..b7586ef 100644
--- a/api/leakcanary/-gc-trigger/run-gc/index.html
+++ b/api/leakcanary/-gc-trigger/run-gc/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-good-android-version-interceptor/-good-android-version-interceptor/index.html b/api/leakcanary/-good-android-version-interceptor/-good-android-version-interceptor/index.html
index 2e30052..c816b8f 100644
--- a/api/leakcanary/-good-android-version-interceptor/-good-android-version-interceptor/index.html
+++ b/api/leakcanary/-good-android-version-interceptor/-good-android-version-interceptor/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-good-android-version-interceptor/index.html b/api/leakcanary/-good-android-version-interceptor/index.html
index d21ee08..f30282b 100644
--- a/api/leakcanary/-good-android-version-interceptor/index.html
+++ b/api/leakcanary/-good-android-version-interceptor/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-good-android-version-interceptor/intercept/index.html b/api/leakcanary/-good-android-version-interceptor/intercept/index.html
index 88f0fc4..e6f8d48 100644
--- a/api/leakcanary/-good-android-version-interceptor/intercept/index.html
+++ b/api/leakcanary/-good-android-version-interceptor/intercept/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-heap-analysis-client/-companion/default-interceptors/index.html b/api/leakcanary/-heap-analysis-client/-companion/default-interceptors/index.html
index 334d437..0cc2d6b 100644
--- a/api/leakcanary/-heap-analysis-client/-companion/default-interceptors/index.html
+++ b/api/leakcanary/-heap-analysis-client/-companion/default-interceptors/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-heap-analysis-client/-companion/index.html b/api/leakcanary/-heap-analysis-client/-companion/index.html
index b4546fa..4bc05c9 100644
--- a/api/leakcanary/-heap-analysis-client/-companion/index.html
+++ b/api/leakcanary/-heap-analysis-client/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-heap-analysis-client/-heap-analysis-client/index.html b/api/leakcanary/-heap-analysis-client/-heap-analysis-client/index.html
index 3329524..713ef13 100644
--- a/api/leakcanary/-heap-analysis-client/-heap-analysis-client/index.html
+++ b/api/leakcanary/-heap-analysis-client/-heap-analysis-client/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-heap-analysis-client/delete-heap-dump-files/index.html b/api/leakcanary/-heap-analysis-client/delete-heap-dump-files/index.html
index 0890ef3..56bd30b 100644
--- a/api/leakcanary/-heap-analysis-client/delete-heap-dump-files/index.html
+++ b/api/leakcanary/-heap-analysis-client/delete-heap-dump-files/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-heap-analysis-client/index.html b/api/leakcanary/-heap-analysis-client/index.html
index a52ee98..a99d08e 100644
--- a/api/leakcanary/-heap-analysis-client/index.html
+++ b/api/leakcanary/-heap-analysis-client/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-heap-analysis-client/new-job/index.html b/api/leakcanary/-heap-analysis-client/new-job/index.html
index f1ebae6..582102b 100644
--- a/api/leakcanary/-heap-analysis-client/new-job/index.html
+++ b/api/leakcanary/-heap-analysis-client/new-job/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-heap-analysis-config/-heap-analysis-config/index.html b/api/leakcanary/-heap-analysis-config/-heap-analysis-config/index.html
index b83ab89..97a046e 100644
--- a/api/leakcanary/-heap-analysis-config/-heap-analysis-config/index.html
+++ b/api/leakcanary/-heap-analysis-config/-heap-analysis-config/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
@@ -759,7 +759,7 @@
 <h1 id="heapanalysisconfig">HeapAnalysisConfig<a class="headerlink" href="#heapanalysisconfig" title="Permanent link">&para;</a></h1>
 <p>fun <a href="./">HeapAnalysisConfig</a>(referenceMatchers: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html">List</a>&lt;<a href="../../../shark/-reference-matcher/">ReferenceMatcher</a>&gt; = AndroidReferenceMatchers.appDefaults, objectInspectors: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html">List</a>&lt;<a href="../../../shark/-object-inspector/">ObjectInspector</a>&gt; = AndroidObjectInspectors.appDefaults, metadataExtractor: <a href="../../../shark/-metadata-extractor/">MetadataExtractor</a> = AndroidMetadataExtractor, computeRetainedHeapSize: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a> = true, leakingObjectFinder: <a href="../../../shark/-leaking-object-finder/">LeakingObjectFinder</a> = FilteringLeakingObjectFinder(
     AndroidObjectInspectors.appLeakingObjectFilters
-  ), stripHeapDump: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a> = false)</p>
+  ), stripHeapDump: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a> = false, proguardMappingProvider: () -&gt; <a href="../../../shark/-proguard-mapping/">ProguardMapping</a>? = { null })</p>
   
 
               </article>
diff --git a/api/leakcanary/-heap-analysis-config/compute-retained-heap-size/index.html b/api/leakcanary/-heap-analysis-config/compute-retained-heap-size/index.html
index 5aea643..b1fce11 100644
--- a/api/leakcanary/-heap-analysis-config/compute-retained-heap-size/index.html
+++ b/api/leakcanary/-heap-analysis-config/compute-retained-heap-size/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-heap-analysis-config/index.html b/api/leakcanary/-heap-analysis-config/index.html
index 82ecddc..a8b1579 100644
--- a/api/leakcanary/-heap-analysis-config/index.html
+++ b/api/leakcanary/-heap-analysis-config/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
@@ -781,7 +781,7 @@
 <h1 id="heapanalysisconfig">HeapAnalysisConfig<a class="headerlink" href="#heapanalysisconfig" title="Permanent link">&para;</a></h1>
 <p>data class <a href="./">HeapAnalysisConfig</a>(val referenceMatchers: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html">List</a>&lt;<a href="../../shark/-reference-matcher/">ReferenceMatcher</a>&gt; = AndroidReferenceMatchers.appDefaults, val objectInspectors: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html">List</a>&lt;<a href="../../shark/-object-inspector/">ObjectInspector</a>&gt; = AndroidObjectInspectors.appDefaults, val metadataExtractor: <a href="../../shark/-metadata-extractor/">MetadataExtractor</a> = AndroidMetadataExtractor, val computeRetainedHeapSize: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a> = true, val leakingObjectFinder: <a href="../../shark/-leaking-object-finder/">LeakingObjectFinder</a> = FilteringLeakingObjectFinder(
     AndroidObjectInspectors.appLeakingObjectFilters
-  ), val stripHeapDump: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a> = false)</p>
+  ), val stripHeapDump: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a> = false, val proguardMappingProvider: () -&gt; <a href="../../shark/-proguard-mapping/">ProguardMapping</a>? = { null })</p>
 <h2 id="constructors">Constructors<a class="headerlink" href="#constructors" title="Permanent link">&para;</a></h2>
 <table>
 <thead>
@@ -793,7 +793,7 @@
 <tbody>
 <tr>
 <td><a href="-heap-analysis-config/">HeapAnalysisConfig</a></td>
-<td>fun <a href="-heap-analysis-config/">HeapAnalysisConfig</a>(referenceMatchers: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html">List</a>&lt;<a href="../../shark/-reference-matcher/">ReferenceMatcher</a>&gt; = AndroidReferenceMatchers.appDefaults, objectInspectors: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html">List</a>&lt;<a href="../../shark/-object-inspector/">ObjectInspector</a>&gt; = AndroidObjectInspectors.appDefaults, metadataExtractor: <a href="../../shark/-metadata-extractor/">MetadataExtractor</a> = AndroidMetadataExtractor, computeRetainedHeapSize: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a> = true, leakingObjectFinder: <a href="../../shark/-leaking-object-finder/">LeakingObjectFinder</a> = FilteringLeakingObjectFinder(     AndroidObjectInspectors.appLeakingObjectFilters   ), stripHeapDump: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a> = false)</td>
+<td>fun <a href="-heap-analysis-config/">HeapAnalysisConfig</a>(referenceMatchers: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html">List</a>&lt;<a href="../../shark/-reference-matcher/">ReferenceMatcher</a>&gt; = AndroidReferenceMatchers.appDefaults, objectInspectors: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html">List</a>&lt;<a href="../../shark/-object-inspector/">ObjectInspector</a>&gt; = AndroidObjectInspectors.appDefaults, metadataExtractor: <a href="../../shark/-metadata-extractor/">MetadataExtractor</a> = AndroidMetadataExtractor, computeRetainedHeapSize: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a> = true, leakingObjectFinder: <a href="../../shark/-leaking-object-finder/">LeakingObjectFinder</a> = FilteringLeakingObjectFinder(     AndroidObjectInspectors.appLeakingObjectFilters   ), stripHeapDump: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a> = false, proguardMappingProvider: () -&gt; <a href="../../shark/-proguard-mapping/">ProguardMapping</a>? = { null })</td>
 </tr>
 </tbody>
 </table>
@@ -823,6 +823,10 @@
 <td>val <a href="object-inspectors/">objectInspectors</a>: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html">List</a>&lt;<a href="../../shark/-object-inspector/">ObjectInspector</a>&gt;<br>List of <a href="../../shark/-object-inspector/">ObjectInspector</a> that provide LeakCanary with insights about objects found in the heap. You can create your own <a href="../../shark/-object-inspector/">ObjectInspector</a> implementations, and also add a <a href="../../shark/-app-singleton-inspector/">shark.AppSingletonInspector</a> instance created with the list of internal singletons.</td>
 </tr>
 <tr>
+<td><a href="proguard-mapping-provider/">proguardMappingProvider</a></td>
+<td>val <a href="proguard-mapping-provider/">proguardMappingProvider</a>: () -&gt; <a href="../../shark/-proguard-mapping/">ProguardMapping</a>?</td>
+</tr>
+<tr>
 <td><a href="reference-matchers/">referenceMatchers</a></td>
 <td>val <a href="reference-matchers/">referenceMatchers</a>: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html">List</a>&lt;<a href="../../shark/-reference-matcher/">ReferenceMatcher</a>&gt;<br>Known patterns of references in the heap, added here either to ignore them (<a href="../../shark/-ignored-reference-matcher/">IgnoredReferenceMatcher</a>) or to mark them as library leaks (<a href="../../shark/-library-leak-reference-matcher/">LibraryLeakReferenceMatcher</a>).</td>
 </tr>
diff --git a/api/leakcanary/-heap-analysis-config/leaking-object-finder/index.html b/api/leakcanary/-heap-analysis-config/leaking-object-finder/index.html
index b31db34..3b94221 100644
--- a/api/leakcanary/-heap-analysis-config/leaking-object-finder/index.html
+++ b/api/leakcanary/-heap-analysis-config/leaking-object-finder/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-heap-analysis-config/metadata-extractor/index.html b/api/leakcanary/-heap-analysis-config/metadata-extractor/index.html
index a4f4252..5f28192 100644
--- a/api/leakcanary/-heap-analysis-config/metadata-extractor/index.html
+++ b/api/leakcanary/-heap-analysis-config/metadata-extractor/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-heap-analysis-config/object-inspectors/index.html b/api/leakcanary/-heap-analysis-config/object-inspectors/index.html
index 9e62537..2fda224 100644
--- a/api/leakcanary/-heap-analysis-config/object-inspectors/index.html
+++ b/api/leakcanary/-heap-analysis-config/object-inspectors/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-heap-analysis-config/proguard-mapping-provider/index.html b/api/leakcanary/-heap-analysis-config/proguard-mapping-provider/index.html
new file mode 100644
index 0000000..c49eb45
--- /dev/null
+++ b/api/leakcanary/-heap-analysis-config/proguard-mapping-provider/index.html
@@ -0,0 +1,853 @@
+
+<!doctype html>
+<html lang="en" class="no-js">
+  <head>
+    
+      <meta charset="utf-8">
+      <meta name="viewport" content="width=device-width,initial-scale=1">
+      
+        <meta name="description" content="A memory leak detection library for Android">
+      
+      
+        <meta name="author" content="Square, Inc.">
+      
+      
+        <link rel="canonical" href="https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-config/proguard-mapping-provider/">
+      
+      
+      
+      <link rel="icon" href="../../../../images/logo.png">
+      <meta name="generator" content="mkdocs-1.4.3, mkdocs-material-9.1.10">
+    
+    
+      
+        <title>Proguard mapping provider - LeakCanary</title>
+      
+    
+    
+      <link rel="stylesheet" href="../../../../assets/stylesheets/main.85bb2934.min.css">
+      
+        
+        <link rel="stylesheet" href="../../../../assets/stylesheets/palette.a6bdf11c.min.css">
+      
+      
+
+    
+    
+    
+      
+        
+        
+        <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
+        <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
+        <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
+      
+    
+    
+    <script>__md_scope=new URL("../../../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
+    
+      
+
+    
+    
+    
+  </head>
+  
+  
+    
+    
+    
+    
+    
+    <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="deep-orange" data-md-color-accent="deep-purple">
+  
+    
+    
+    <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
+    <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
+    <label class="md-overlay" for="__drawer"></label>
+    <div data-md-component="skip">
+      
+        
+        <a href="#proguardmappingprovider" class="md-skip">
+          Skip to content
+        </a>
+      
+    </div>
+    <div data-md-component="announce">
+      
+        <aside class="md-banner">
+          <div class="md-banner__inner md-grid md-typeset">
+            
+             
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+
+          </div>
+          
+        </aside>
+      
+    </div>
+    
+    
+      
+
+  
+
+<header class="md-header md-header--shadow" data-md-component="header">
+  <nav class="md-header__inner md-grid" aria-label="Header">
+    <a href="../../../.." title="LeakCanary" class="md-header__button md-logo" aria-label="LeakCanary" data-md-component="logo">
+      
+  <img src="../../../../images/logo.png" alt="logo">
+
+    </a>
+    <label class="md-header__button md-icon" for="__drawer">
+      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
+    </label>
+    <div class="md-header__title" data-md-component="header-title">
+      <div class="md-header__ellipsis">
+        <div class="md-header__topic">
+          <span class="md-ellipsis">
+            LeakCanary
+          </span>
+        </div>
+        <div class="md-header__topic" data-md-component="header-topic">
+          <span class="md-ellipsis">
+            
+              Proguard mapping provider
+            
+          </span>
+        </div>
+      </div>
+    </div>
+    
+      
+    
+    
+    
+      <label class="md-header__button md-icon" for="__search">
+        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
+      </label>
+      <div class="md-search" data-md-component="search" role="dialog">
+  <label class="md-search__overlay" for="__search"></label>
+  <div class="md-search__inner" role="search">
+    <form class="md-search__form" name="search">
+      <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
+      <label class="md-search__icon md-icon" for="__search">
+        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
+        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
+      </label>
+      <nav class="md-search__options" aria-label="Search">
+        
+        <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
+          <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
+        </button>
+      </nav>
+      
+    </form>
+    <div class="md-search__output">
+      <div class="md-search__scrollwrap" data-md-scrollfix>
+        <div class="md-search-result" data-md-component="search-result">
+          <div class="md-search-result__meta">
+            Initializing search
+          </div>
+          <ol class="md-search-result__list" role="presentation"></ol>
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
+    
+    
+      <div class="md-header__source">
+        <a href="https://github.com/square/leakcanary" title="Go to repository" class="md-source" data-md-component="source">
+  <div class="md-source__icon md-icon">
+    
+    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
+  </div>
+  <div class="md-source__repository">
+    LeakCanary
+  </div>
+</a>
+      </div>
+    
+  </nav>
+  
+</header>
+    
+    <div class="md-container" data-md-component="container">
+      
+      
+        
+          
+        
+      
+      <main class="md-main" data-md-component="main">
+        <div class="md-main__inner md-grid">
+          
+            
+              
+              <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
+                <div class="md-sidebar__scrollwrap">
+                  <div class="md-sidebar__inner">
+                    
+
+
+<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
+  <label class="md-nav__title" for="__drawer">
+    <a href="../../../.." title="LeakCanary" class="md-nav__button md-logo" aria-label="LeakCanary" data-md-component="logo">
+      
+  <img src="../../../../images/logo.png" alt="logo">
+
+    </a>
+    LeakCanary
+  </label>
+  
+    <div class="md-nav__source">
+      <a href="https://github.com/square/leakcanary" title="Go to repository" class="md-source" data-md-component="source">
+  <div class="md-source__icon md-icon">
+    
+    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
+  </div>
+  <div class="md-source__repository">
+    LeakCanary
+  </div>
+</a>
+    </div>
+  
+  <ul class="md-nav__list" data-md-scrollfix>
+    
+      
+      
+      
+
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../.." class="md-nav__link">
+        Overview
+      </a>
+    </li>
+  
+
+    
+      
+      
+      
+
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../getting_started/" class="md-nav__link">
+        Getting Started
+      </a>
+    </li>
+  
+
+    
+      
+      
+      
+
+  
+  
+  
+    
+    <li class="md-nav__item md-nav__item--nested">
+      
+      
+      
+      
+      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
+      
+      
+      
+        <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
+          Fundamentals
+          <span class="md-nav__icon md-icon"></span>
+        </label>
+      
+      <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
+        <label class="md-nav__title" for="__nav_3">
+          <span class="md-nav__icon md-icon"></span>
+          Fundamentals
+        </label>
+        <ul class="md-nav__list" data-md-scrollfix>
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../fundamentals/" class="md-nav__link">
+        Introduction
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../fundamentals-how-leakcanary-works/" class="md-nav__link">
+        How LeakCanary works
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../fundamentals-fixing-a-memory-leak/" class="md-nav__link">
+        Fixing a memory leak
+      </a>
+    </li>
+  
+
+            
+          
+        </ul>
+      </nav>
+    </li>
+  
+
+    
+      
+      
+      
+
+  
+  
+  
+    
+    <li class="md-nav__item md-nav__item--nested">
+      
+      
+      
+      
+      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" >
+      
+      
+      
+        <label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
+          LeakCanary at scale
+          <span class="md-nav__icon md-icon"></span>
+        </label>
+      
+      <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
+        <label class="md-nav__title" for="__nav_4">
+          <span class="md-nav__icon md-icon"></span>
+          LeakCanary at scale
+        </label>
+        <ul class="md-nav__list" data-md-scrollfix>
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../ui-tests/" class="md-nav__link">
+        Leak detection in UI tests
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../uploading/" class="md-nav__link">
+        Uploading analysis results
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../leakcanary-for-releases/" class="md-nav__link">
+        LeakCanary for releases
+      </a>
+    </li>
+  
+
+            
+          
+        </ul>
+      </nav>
+    </li>
+  
+
+    
+      
+      
+      
+
+  
+  
+  
+    
+    <li class="md-nav__item md-nav__item--nested">
+      
+      
+      
+      
+      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
+      
+      
+      
+        <label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
+          Help & Community
+          <span class="md-nav__icon md-icon"></span>
+        </label>
+      
+      <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
+        <label class="md-nav__title" for="__nav_5">
+          <span class="md-nav__icon md-icon"></span>
+          Help & Community
+        </label>
+        <ul class="md-nav__list" data-md-scrollfix>
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../recipes/" class="md-nav__link">
+        Code recipes
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../faq/" class="md-nav__link">
+        FAQ
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../support/" class="md-nav__link">
+        Support
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../upgrading-to-leakcanary-2.0/" class="md-nav__link">
+        Upgrading to LeakCanary 2
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../recorded-presentations/" class="md-nav__link">
+        Recorded Presentations
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../blog-articles/" class="md-nav__link">
+        Blog Articles
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="https://stackoverflow.com/questions/tagged/leakcanary?sort=active" class="md-nav__link">
+        Stack Overflow ⏏
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    
+    <li class="md-nav__item md-nav__item--nested">
+      
+      
+      
+      
+      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_8" >
+      
+      
+      
+        <label class="md-nav__link" for="__nav_5_8" id="__nav_5_8_label" tabindex="0">
+          Contributing
+          <span class="md-nav__icon md-icon"></span>
+        </label>
+      
+      <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_8_label" aria-expanded="false">
+        <label class="md-nav__title" for="__nav_5_8">
+          <span class="md-nav__icon md-icon"></span>
+          Contributing
+        </label>
+        <ul class="md-nav__list" data-md-scrollfix>
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../code_of_conduct/" class="md-nav__link">
+        Code of Conduct
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../dev-env/" class="md-nav__link">
+        Dev Environment
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../releasing/" class="md-nav__link">
+        Releasing
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../how_to_help/" class="md-nav__link">
+        How to help
+      </a>
+    </li>
+  
+
+            
+          
+        </ul>
+      </nav>
+    </li>
+  
+
+            
+          
+        </ul>
+      </nav>
+    </li>
+  
+
+    
+      
+      
+      
+
+  
+  
+  
+    
+    <li class="md-nav__item md-nav__item--nested">
+      
+      
+      
+      
+      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" >
+      
+      
+      
+        <label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
+          Shark
+          <span class="md-nav__icon md-icon"></span>
+        </label>
+      
+      <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
+        <label class="md-nav__title" for="__nav_6">
+          <span class="md-nav__icon md-icon"></span>
+          Shark
+        </label>
+        <ul class="md-nav__list" data-md-scrollfix>
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../shark/" class="md-nav__link">
+        Overview
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../shark/" class="md-nav__link">
+        Shark API
+      </a>
+    </li>
+  
+
+            
+          
+        </ul>
+      </nav>
+    </li>
+  
+
+    
+      
+      
+      
+
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../" class="md-nav__link">
+        LeakCanary API
+      </a>
+    </li>
+  
+
+    
+      
+      
+      
+
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../changelog/" class="md-nav__link">
+        Change Log
+      </a>
+    </li>
+  
+
+    
+  </ul>
+</nav>
+                  </div>
+                </div>
+              </div>
+            
+            
+              
+              <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
+                <div class="md-sidebar__scrollwrap">
+                  <div class="md-sidebar__inner">
+                    
+
+<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
+  
+  
+  
+    
+  
+  
+</nav>
+                  </div>
+                </div>
+              </div>
+            
+          
+          
+            <div class="md-content" data-md-component="content">
+              <article class="md-content__inner md-typeset">
+                
+  
+    
+  <span style="float: right">🤔 Documentation issue? <a href="https://github.com/square/leakcanary/issues/new?assignees=&labels=type%3A+documentation&template=4-doc.md&title=Doc%20issue%20with%20api/leakcanary/-heap-analysis-config/proguard-mapping-provider/%20page">Report it</a></span>
+    
+  
+  
+    
+  
+  
+  <p>//<a href="../../../../">leakcanary</a>/<a href="../../">leakcanary</a>/<a href="../">HeapAnalysisConfig</a>/<a href="./">proguardMappingProvider</a></p>
+<h1 id="proguardmappingprovider">proguardMappingProvider<a class="headerlink" href="#proguardmappingprovider" title="Permanent link">&para;</a></h1>
+<p>val <a href="./">proguardMappingProvider</a>: () -&gt; <a href="../../../shark/-proguard-mapping/">ProguardMapping</a>?</p>
+  
+
+              </article>
+            </div>
+          
+          
+        </div>
+        
+      </main>
+      
+        <footer class="md-footer">
+  
+  <div class="md-footer-meta md-typeset">
+    <div class="md-footer-meta__inner md-grid">
+      <div class="md-copyright">
+  
+    <div class="md-copyright__highlight">
+      Copyright &copy; 2015 Square, Inc.
+    </div>
+  
+  
+    Made with
+    <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
+      Material for MkDocs
+    </a>
+  
+</div>
+      
+        <div class="md-social">
+  
+    
+    
+    
+    
+      
+      
+    
+    <a href="https://square.github.io/" target="_blank" rel="noopener" title="square.github.io" class="md-social__link">
+      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg>
+    </a>
+  
+    
+    
+    
+    
+      
+      
+    
+    <a href="https://twitter.com/Piwai" target="_blank" rel="noopener" title="twitter.com" class="md-social__link">
+      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"/></svg>
+    </a>
+  
+    
+    
+    
+    
+      
+      
+    
+    <a href="https://stackoverflow.com/questions/tagged/leakcanary?sort=active" target="_blank" rel="noopener" title="stackoverflow.com" class="md-social__link">
+      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M290.7 311 95 269.7 86.8 309l195.7 41zm51-87L188.2 95.7l-25.5 30.8 153.5 128.3zm-31.2 39.7L129.2 179l-16.7 36.5L293.7 300zM262 32l-32 24 119.3 160.3 32-24zm20.5 328h-200v39.7h200zm39.7 80H42.7V320h-40v160h359.5V320h-40z"/></svg>
+    </a>
+  
+    
+    
+    
+    
+      
+      
+    
+    <a href="https://www.linkedin.com/company/joinsquare/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link">
+      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"/></svg>
+    </a>
+  
+</div>
+      
+    </div>
+  </div>
+</footer>
+      
+    </div>
+    <div class="md-dialog" data-md-component="dialog">
+      <div class="md-dialog__inner md-typeset"></div>
+    </div>
+    
+    <script id="__config" type="application/json">{"base": "../../../..", "features": ["tabs"], "search": "../../../../assets/javascripts/workers/search.208ed371.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
+    
+    
+      <script src="../../../../assets/javascripts/bundle.fac441b0.min.js"></script>
+      
+    
+  </body>
+</html>
\ No newline at end of file
diff --git a/api/leakcanary/-heap-analysis-config/reference-matchers/index.html b/api/leakcanary/-heap-analysis-config/reference-matchers/index.html
index a54a8f2..f8e45e7 100644
--- a/api/leakcanary/-heap-analysis-config/reference-matchers/index.html
+++ b/api/leakcanary/-heap-analysis-config/reference-matchers/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-heap-analysis-config/strip-heap-dump/index.html b/api/leakcanary/-heap-analysis-config/strip-heap-dump/index.html
index 656db62..a5d5ef6 100644
--- a/api/leakcanary/-heap-analysis-config/strip-heap-dump/index.html
+++ b/api/leakcanary/-heap-analysis-config/strip-heap-dump/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-heap-analysis-decision/-analyze-heap/index.html b/api/leakcanary/-heap-analysis-decision/-analyze-heap/index.html
index f9732b2..45e8c42 100644
--- a/api/leakcanary/-heap-analysis-decision/-analyze-heap/index.html
+++ b/api/leakcanary/-heap-analysis-decision/-analyze-heap/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-heap-analysis-decision/-no-heap-analysis/-no-heap-analysis/index.html b/api/leakcanary/-heap-analysis-decision/-no-heap-analysis/-no-heap-analysis/index.html
index 056d96b..9aa7521 100644
--- a/api/leakcanary/-heap-analysis-decision/-no-heap-analysis/-no-heap-analysis/index.html
+++ b/api/leakcanary/-heap-analysis-decision/-no-heap-analysis/-no-heap-analysis/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-heap-analysis-decision/-no-heap-analysis/index.html b/api/leakcanary/-heap-analysis-decision/-no-heap-analysis/index.html
index ff68a66..c5d5a19 100644
--- a/api/leakcanary/-heap-analysis-decision/-no-heap-analysis/index.html
+++ b/api/leakcanary/-heap-analysis-decision/-no-heap-analysis/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-heap-analysis-decision/-no-heap-analysis/reason/index.html b/api/leakcanary/-heap-analysis-decision/-no-heap-analysis/reason/index.html
index b461c40..6a0dcc4 100644
--- a/api/leakcanary/-heap-analysis-decision/-no-heap-analysis/reason/index.html
+++ b/api/leakcanary/-heap-analysis-decision/-no-heap-analysis/reason/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-heap-analysis-decision/index.html b/api/leakcanary/-heap-analysis-decision/index.html
index fba7bda..25962a3 100644
--- a/api/leakcanary/-heap-analysis-decision/index.html
+++ b/api/leakcanary/-heap-analysis-decision/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-heap-analysis-interceptor/-chain/index.html b/api/leakcanary/-heap-analysis-interceptor/-chain/index.html
index bab4ac2..b8a5620 100644
--- a/api/leakcanary/-heap-analysis-interceptor/-chain/index.html
+++ b/api/leakcanary/-heap-analysis-interceptor/-chain/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-heap-analysis-interceptor/-chain/job/index.html b/api/leakcanary/-heap-analysis-interceptor/-chain/job/index.html
index 3a36c47..8636674 100644
--- a/api/leakcanary/-heap-analysis-interceptor/-chain/job/index.html
+++ b/api/leakcanary/-heap-analysis-interceptor/-chain/job/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-heap-analysis-interceptor/-chain/proceed/index.html b/api/leakcanary/-heap-analysis-interceptor/-chain/proceed/index.html
index 59f20ef..e17fa42 100644
--- a/api/leakcanary/-heap-analysis-interceptor/-chain/proceed/index.html
+++ b/api/leakcanary/-heap-analysis-interceptor/-chain/proceed/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-heap-analysis-interceptor/index.html b/api/leakcanary/-heap-analysis-interceptor/index.html
index 917f9d2..9fc4f87 100644
--- a/api/leakcanary/-heap-analysis-interceptor/index.html
+++ b/api/leakcanary/-heap-analysis-interceptor/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-heap-analysis-interceptor/intercept/index.html b/api/leakcanary/-heap-analysis-interceptor/intercept/index.html
index 046c76c..abaeb1a 100644
--- a/api/leakcanary/-heap-analysis-interceptor/intercept/index.html
+++ b/api/leakcanary/-heap-analysis-interceptor/intercept/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-heap-analysis-job/-result/-canceled/-canceled/index.html b/api/leakcanary/-heap-analysis-job/-result/-canceled/-canceled/index.html
index a886c33..cea8290 100644
--- a/api/leakcanary/-heap-analysis-job/-result/-canceled/-canceled/index.html
+++ b/api/leakcanary/-heap-analysis-job/-result/-canceled/-canceled/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-heap-analysis-job/-result/-canceled/cancel-reason/index.html b/api/leakcanary/-heap-analysis-job/-result/-canceled/cancel-reason/index.html
index ea40cc2..237b97d 100644
--- a/api/leakcanary/-heap-analysis-job/-result/-canceled/cancel-reason/index.html
+++ b/api/leakcanary/-heap-analysis-job/-result/-canceled/cancel-reason/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-heap-analysis-job/-result/-canceled/index.html b/api/leakcanary/-heap-analysis-job/-result/-canceled/index.html
index befc33b..2491184 100644
--- a/api/leakcanary/-heap-analysis-job/-result/-canceled/index.html
+++ b/api/leakcanary/-heap-analysis-job/-result/-canceled/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-heap-analysis-job/-result/-done/-done/index.html b/api/leakcanary/-heap-analysis-job/-result/-done/-done/index.html
index cf1dfa5..106a280 100644
--- a/api/leakcanary/-heap-analysis-job/-result/-done/-done/index.html
+++ b/api/leakcanary/-heap-analysis-job/-result/-done/-done/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-heap-analysis-job/-result/-done/analysis/index.html b/api/leakcanary/-heap-analysis-job/-result/-done/analysis/index.html
index 318d27d..dec84b8 100644
--- a/api/leakcanary/-heap-analysis-job/-result/-done/analysis/index.html
+++ b/api/leakcanary/-heap-analysis-job/-result/-done/analysis/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-heap-analysis-job/-result/-done/index.html b/api/leakcanary/-heap-analysis-job/-result/-done/index.html
index f57dabe..08b133f 100644
--- a/api/leakcanary/-heap-analysis-job/-result/-done/index.html
+++ b/api/leakcanary/-heap-analysis-job/-result/-done/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-heap-analysis-job/-result/-done/strip-heap-dump-duration-millis/index.html b/api/leakcanary/-heap-analysis-job/-result/-done/strip-heap-dump-duration-millis/index.html
index dbd846d..d6d8c36 100644
--- a/api/leakcanary/-heap-analysis-job/-result/-done/strip-heap-dump-duration-millis/index.html
+++ b/api/leakcanary/-heap-analysis-job/-result/-done/strip-heap-dump-duration-millis/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-heap-analysis-job/-result/index.html b/api/leakcanary/-heap-analysis-job/-result/index.html
index 10f9ed4..7cc301b 100644
--- a/api/leakcanary/-heap-analysis-job/-result/index.html
+++ b/api/leakcanary/-heap-analysis-job/-result/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-heap-analysis-job/cancel/index.html b/api/leakcanary/-heap-analysis-job/cancel/index.html
index 9cc2375..d23e8a8 100644
--- a/api/leakcanary/-heap-analysis-job/cancel/index.html
+++ b/api/leakcanary/-heap-analysis-job/cancel/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-heap-analysis-job/canceled/index.html b/api/leakcanary/-heap-analysis-job/canceled/index.html
index b8964bd..8cb9884 100644
--- a/api/leakcanary/-heap-analysis-job/canceled/index.html
+++ b/api/leakcanary/-heap-analysis-job/canceled/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-heap-analysis-job/context/index.html b/api/leakcanary/-heap-analysis-job/context/index.html
index 8ec041f..75a5254 100644
--- a/api/leakcanary/-heap-analysis-job/context/index.html
+++ b/api/leakcanary/-heap-analysis-job/context/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-heap-analysis-job/execute/index.html b/api/leakcanary/-heap-analysis-job/execute/index.html
index f9e7722..8938fbf 100644
--- a/api/leakcanary/-heap-analysis-job/execute/index.html
+++ b/api/leakcanary/-heap-analysis-job/execute/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-heap-analysis-job/executed/index.html b/api/leakcanary/-heap-analysis-job/executed/index.html
index 069c6ae..3fbac2e 100644
--- a/api/leakcanary/-heap-analysis-job/executed/index.html
+++ b/api/leakcanary/-heap-analysis-job/executed/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-heap-analysis-job/index.html b/api/leakcanary/-heap-analysis-job/index.html
index 5d3c872..15f286c 100644
--- a/api/leakcanary/-heap-analysis-job/index.html
+++ b/api/leakcanary/-heap-analysis-job/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-heap-analysis-reporter/index.html b/api/leakcanary/-heap-analysis-reporter/index.html
index 5993224..8eec2fd 100644
--- a/api/leakcanary/-heap-analysis-reporter/index.html
+++ b/api/leakcanary/-heap-analysis-reporter/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-heap-analysis-reporter/report-heap-analysis/index.html b/api/leakcanary/-heap-analysis-reporter/report-heap-analysis/index.html
index 703cd54..dc16a5d 100644
--- a/api/leakcanary/-heap-analysis-reporter/report-heap-analysis/index.html
+++ b/api/leakcanary/-heap-analysis-reporter/report-heap-analysis/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-heap-dumper/dump-heap/index.html b/api/leakcanary/-heap-dumper/dump-heap/index.html
index b1c517c..23c4223 100644
--- a/api/leakcanary/-heap-dumper/dump-heap/index.html
+++ b/api/leakcanary/-heap-dumper/dump-heap/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-heap-dumper/index.html b/api/leakcanary/-heap-dumper/index.html
index c8746ec..78967c2 100644
--- a/api/leakcanary/-heap-dumper/index.html
+++ b/api/leakcanary/-heap-dumper/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-installable-watcher/index.html b/api/leakcanary/-installable-watcher/index.html
index f9cf68b..866f1d1 100644
--- a/api/leakcanary/-installable-watcher/index.html
+++ b/api/leakcanary/-installable-watcher/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-installable-watcher/install/index.html b/api/leakcanary/-installable-watcher/install/index.html
index 52cccde..8f621d9 100644
--- a/api/leakcanary/-installable-watcher/install/index.html
+++ b/api/leakcanary/-installable-watcher/install/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-installable-watcher/uninstall/index.html b/api/leakcanary/-installable-watcher/uninstall/index.html
index 7802022..617ced1 100644
--- a/api/leakcanary/-installable-watcher/uninstall/index.html
+++ b/api/leakcanary/-installable-watcher/uninstall/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-job-context/-job-context/index.html b/api/leakcanary/-job-context/-job-context/index.html
index 9c1e7d3..a747157 100644
--- a/api/leakcanary/-job-context/-job-context/index.html
+++ b/api/leakcanary/-job-context/-job-context/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-job-context/contains/index.html b/api/leakcanary/-job-context/contains/index.html
index 55910c7..1776abb 100644
--- a/api/leakcanary/-job-context/contains/index.html
+++ b/api/leakcanary/-job-context/contains/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-job-context/get-or-put/index.html b/api/leakcanary/-job-context/get-or-put/index.html
index 30e9795..e4602d7 100644
--- a/api/leakcanary/-job-context/get-or-put/index.html
+++ b/api/leakcanary/-job-context/get-or-put/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-job-context/get/index.html b/api/leakcanary/-job-context/get/index.html
index 7de441c..2268913 100644
--- a/api/leakcanary/-job-context/get/index.html
+++ b/api/leakcanary/-job-context/get/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-job-context/index.html b/api/leakcanary/-job-context/index.html
index 569fa14..f02ac1a 100644
--- a/api/leakcanary/-job-context/index.html
+++ b/api/leakcanary/-job-context/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-job-context/minus-assign/index.html b/api/leakcanary/-job-context/minus-assign/index.html
index 0047ca4..9c55a50 100644
--- a/api/leakcanary/-job-context/minus-assign/index.html
+++ b/api/leakcanary/-job-context/minus-assign/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-job-context/set/index.html b/api/leakcanary/-job-context/set/index.html
index ec48969..5fed04a 100644
--- a/api/leakcanary/-job-context/set/index.html
+++ b/api/leakcanary/-job-context/set/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-job-context/starter/index.html b/api/leakcanary/-job-context/starter/index.html
index 5f6a56b..218e55b 100644
--- a/api/leakcanary/-job-context/starter/index.html
+++ b/api/leakcanary/-job-context/starter/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-keyed-weak-reference/-companion/heap-dump-uptime-millis/index.html b/api/leakcanary/-keyed-weak-reference/-companion/heap-dump-uptime-millis/index.html
index 5c04ea5..9f83c49 100644
--- a/api/leakcanary/-keyed-weak-reference/-companion/heap-dump-uptime-millis/index.html
+++ b/api/leakcanary/-keyed-weak-reference/-companion/heap-dump-uptime-millis/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-keyed-weak-reference/-companion/index.html b/api/leakcanary/-keyed-weak-reference/-companion/index.html
index d49d49b..bb2aca3 100644
--- a/api/leakcanary/-keyed-weak-reference/-companion/index.html
+++ b/api/leakcanary/-keyed-weak-reference/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-keyed-weak-reference/-keyed-weak-reference/index.html b/api/leakcanary/-keyed-weak-reference/-keyed-weak-reference/index.html
index 1e88b74..3913e9d 100644
--- a/api/leakcanary/-keyed-weak-reference/-keyed-weak-reference/index.html
+++ b/api/leakcanary/-keyed-weak-reference/-keyed-weak-reference/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-keyed-weak-reference/clear/index.html b/api/leakcanary/-keyed-weak-reference/clear/index.html
index e31f0cc..9b226d9 100644
--- a/api/leakcanary/-keyed-weak-reference/clear/index.html
+++ b/api/leakcanary/-keyed-weak-reference/clear/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-keyed-weak-reference/description/index.html b/api/leakcanary/-keyed-weak-reference/description/index.html
index cecb69f..f057821 100644
--- a/api/leakcanary/-keyed-weak-reference/description/index.html
+++ b/api/leakcanary/-keyed-weak-reference/description/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-keyed-weak-reference/index.html b/api/leakcanary/-keyed-weak-reference/index.html
index 07a3cc8..e75b3f5 100644
--- a/api/leakcanary/-keyed-weak-reference/index.html
+++ b/api/leakcanary/-keyed-weak-reference/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-keyed-weak-reference/key/index.html b/api/leakcanary/-keyed-weak-reference/key/index.html
index dfc86fa..c6831f6 100644
--- a/api/leakcanary/-keyed-weak-reference/key/index.html
+++ b/api/leakcanary/-keyed-weak-reference/key/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-keyed-weak-reference/retained-uptime-millis/index.html b/api/leakcanary/-keyed-weak-reference/retained-uptime-millis/index.html
index a77904f..cda2254 100644
--- a/api/leakcanary/-keyed-weak-reference/retained-uptime-millis/index.html
+++ b/api/leakcanary/-keyed-weak-reference/retained-uptime-millis/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-keyed-weak-reference/watch-uptime-millis/index.html b/api/leakcanary/-keyed-weak-reference/watch-uptime-millis/index.html
index 46b8fb1..c3ddf86 100644
--- a/api/leakcanary/-keyed-weak-reference/watch-uptime-millis/index.html
+++ b/api/leakcanary/-keyed-weak-reference/watch-uptime-millis/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-lazy-forwarding-event-listener/-lazy-forwarding-event-listener/index.html b/api/leakcanary/-lazy-forwarding-event-listener/-lazy-forwarding-event-listener/index.html
index 0d1a1ed..59b239f 100644
--- a/api/leakcanary/-lazy-forwarding-event-listener/-lazy-forwarding-event-listener/index.html
+++ b/api/leakcanary/-lazy-forwarding-event-listener/-lazy-forwarding-event-listener/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-lazy-forwarding-event-listener/index.html b/api/leakcanary/-lazy-forwarding-event-listener/index.html
index 8ac5558..47d9a6c 100644
--- a/api/leakcanary/-lazy-forwarding-event-listener/index.html
+++ b/api/leakcanary/-lazy-forwarding-event-listener/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-lazy-forwarding-event-listener/on-event/index.html b/api/leakcanary/-lazy-forwarding-event-listener/on-event/index.html
index afb555c..8648ef9 100644
--- a/api/leakcanary/-lazy-forwarding-event-listener/on-event/index.html
+++ b/api/leakcanary/-lazy-forwarding-event-listener/on-event/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-leak-assertions/-n-o_-t-a-g/index.html b/api/leakcanary/-leak-assertions/-n-o_-t-a-g/index.html
index 1a0744b..601e854 100644
--- a/api/leakcanary/-leak-assertions/-n-o_-t-a-g/index.html
+++ b/api/leakcanary/-leak-assertions/-n-o_-t-a-g/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-leak-assertions/assert-no-leaks/index.html b/api/leakcanary/-leak-assertions/assert-no-leaks/index.html
index 1d7f9e0..7e06b3c 100644
--- a/api/leakcanary/-leak-assertions/assert-no-leaks/index.html
+++ b/api/leakcanary/-leak-assertions/assert-no-leaks/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-leak-assertions/index.html b/api/leakcanary/-leak-assertions/index.html
index 20a2332..0b5877e 100644
--- a/api/leakcanary/-leak-assertions/index.html
+++ b/api/leakcanary/-leak-assertions/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-leak-canary-process/index.html b/api/leakcanary/-leak-canary-process/index.html
index 4ad9c75..d5a7f4d 100644
--- a/api/leakcanary/-leak-canary-process/index.html
+++ b/api/leakcanary/-leak-canary-process/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-leak-canary-process/is-in-analyzer-process/index.html b/api/leakcanary/-leak-canary-process/is-in-analyzer-process/index.html
index af7fc2f..e91c9df 100644
--- a/api/leakcanary/-leak-canary-process/is-in-analyzer-process/index.html
+++ b/api/leakcanary/-leak-canary-process/is-in-analyzer-process/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-leak-canary/-config/-builder/build/index.html b/api/leakcanary/-leak-canary/-config/-builder/build/index.html
index 6b81688..5d92da8 100644
--- a/api/leakcanary/-leak-canary/-config/-builder/build/index.html
+++ b/api/leakcanary/-leak-canary/-config/-builder/build/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-leak-canary/-config/-builder/compute-retained-heap-size/index.html b/api/leakcanary/-leak-canary/-config/-builder/compute-retained-heap-size/index.html
index aa64da6..1fd5302 100644
--- a/api/leakcanary/-leak-canary/-config/-builder/compute-retained-heap-size/index.html
+++ b/api/leakcanary/-leak-canary/-config/-builder/compute-retained-heap-size/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-leak-canary/-config/-builder/dump-heap-when-debugging/index.html b/api/leakcanary/-leak-canary/-config/-builder/dump-heap-when-debugging/index.html
index 56fa8f2..fb4a87d 100644
--- a/api/leakcanary/-leak-canary/-config/-builder/dump-heap-when-debugging/index.html
+++ b/api/leakcanary/-leak-canary/-config/-builder/dump-heap-when-debugging/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-leak-canary/-config/-builder/dump-heap/index.html b/api/leakcanary/-leak-canary/-config/-builder/dump-heap/index.html
index 3d765ac..b4eb979 100644
--- a/api/leakcanary/-leak-canary/-config/-builder/dump-heap/index.html
+++ b/api/leakcanary/-leak-canary/-config/-builder/dump-heap/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-leak-canary/-config/-builder/event-listeners/index.html b/api/leakcanary/-leak-canary/-config/-builder/event-listeners/index.html
index a396261..fedc359 100644
--- a/api/leakcanary/-leak-canary/-config/-builder/event-listeners/index.html
+++ b/api/leakcanary/-leak-canary/-config/-builder/event-listeners/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-leak-canary/-config/-builder/heap-dumper/index.html b/api/leakcanary/-leak-canary/-config/-builder/heap-dumper/index.html
index 27294b8..0d7fe52 100644
--- a/api/leakcanary/-leak-canary/-config/-builder/heap-dumper/index.html
+++ b/api/leakcanary/-leak-canary/-config/-builder/heap-dumper/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-leak-canary/-config/-builder/index.html b/api/leakcanary/-leak-canary/-config/-builder/index.html
index 0c6e4ea..1690315 100644
--- a/api/leakcanary/-leak-canary/-config/-builder/index.html
+++ b/api/leakcanary/-leak-canary/-config/-builder/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-leak-canary/-config/-builder/leaking-object-finder/index.html b/api/leakcanary/-leak-canary/-config/-builder/leaking-object-finder/index.html
index 7e0ec5f..94e8979 100644
--- a/api/leakcanary/-leak-canary/-config/-builder/leaking-object-finder/index.html
+++ b/api/leakcanary/-leak-canary/-config/-builder/leaking-object-finder/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-leak-canary/-config/-builder/max-stored-heap-dumps/index.html b/api/leakcanary/-leak-canary/-config/-builder/max-stored-heap-dumps/index.html
index 764aa76..bffa82e 100644
--- a/api/leakcanary/-leak-canary/-config/-builder/max-stored-heap-dumps/index.html
+++ b/api/leakcanary/-leak-canary/-config/-builder/max-stored-heap-dumps/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-leak-canary/-config/-builder/metadata-extractor/index.html b/api/leakcanary/-leak-canary/-config/-builder/metadata-extractor/index.html
index 4c02597..882b6d7 100644
--- a/api/leakcanary/-leak-canary/-config/-builder/metadata-extractor/index.html
+++ b/api/leakcanary/-leak-canary/-config/-builder/metadata-extractor/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-leak-canary/-config/-builder/object-inspectors/index.html b/api/leakcanary/-leak-canary/-config/-builder/object-inspectors/index.html
index a122892..fa50bf5 100644
--- a/api/leakcanary/-leak-canary/-config/-builder/object-inspectors/index.html
+++ b/api/leakcanary/-leak-canary/-config/-builder/object-inspectors/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-leak-canary/-config/-builder/reference-matchers/index.html b/api/leakcanary/-leak-canary/-config/-builder/reference-matchers/index.html
index 8d12d9a..cde399a 100644
--- a/api/leakcanary/-leak-canary/-config/-builder/reference-matchers/index.html
+++ b/api/leakcanary/-leak-canary/-config/-builder/reference-matchers/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-leak-canary/-config/-builder/request-write-external-storage-permission/index.html b/api/leakcanary/-leak-canary/-config/-builder/request-write-external-storage-permission/index.html
index 2d113f3..4aae713 100644
--- a/api/leakcanary/-leak-canary/-config/-builder/request-write-external-storage-permission/index.html
+++ b/api/leakcanary/-leak-canary/-config/-builder/request-write-external-storage-permission/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-leak-canary/-config/-builder/retained-visible-threshold/index.html b/api/leakcanary/-leak-canary/-config/-builder/retained-visible-threshold/index.html
index 46e0a4c..d44ff58 100644
--- a/api/leakcanary/-leak-canary/-config/-builder/retained-visible-threshold/index.html
+++ b/api/leakcanary/-leak-canary/-config/-builder/retained-visible-threshold/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-leak-canary/-config/-builder/show-notifications/index.html b/api/leakcanary/-leak-canary/-config/-builder/show-notifications/index.html
index 6b913cc..c603aa6 100644
--- a/api/leakcanary/-leak-canary/-config/-builder/show-notifications/index.html
+++ b/api/leakcanary/-leak-canary/-config/-builder/show-notifications/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-leak-canary/-config/-config/index.html b/api/leakcanary/-leak-canary/-config/-config/index.html
index ed2bd38..ce38c11 100644
--- a/api/leakcanary/-leak-canary/-config/-config/index.html
+++ b/api/leakcanary/-leak-canary/-config/-config/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-leak-canary/-config/compute-retained-heap-size/index.html b/api/leakcanary/-leak-canary/-config/compute-retained-heap-size/index.html
index 05713a0..7ad3860 100644
--- a/api/leakcanary/-leak-canary/-config/compute-retained-heap-size/index.html
+++ b/api/leakcanary/-leak-canary/-config/compute-retained-heap-size/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-leak-canary/-config/dump-heap-when-debugging/index.html b/api/leakcanary/-leak-canary/-config/dump-heap-when-debugging/index.html
index 2003645..d9f6a17 100644
--- a/api/leakcanary/-leak-canary/-config/dump-heap-when-debugging/index.html
+++ b/api/leakcanary/-leak-canary/-config/dump-heap-when-debugging/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-leak-canary/-config/dump-heap/index.html b/api/leakcanary/-leak-canary/-config/dump-heap/index.html
index 89746b6..ecaf914 100644
--- a/api/leakcanary/-leak-canary/-config/dump-heap/index.html
+++ b/api/leakcanary/-leak-canary/-config/dump-heap/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-leak-canary/-config/event-listeners/index.html b/api/leakcanary/-leak-canary/-config/event-listeners/index.html
index cbc3977..0adce14 100644
--- a/api/leakcanary/-leak-canary/-config/event-listeners/index.html
+++ b/api/leakcanary/-leak-canary/-config/event-listeners/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-leak-canary/-config/heap-dumper/index.html b/api/leakcanary/-leak-canary/-config/heap-dumper/index.html
index 46096c9..e311372 100644
--- a/api/leakcanary/-leak-canary/-config/heap-dumper/index.html
+++ b/api/leakcanary/-leak-canary/-config/heap-dumper/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-leak-canary/-config/index.html b/api/leakcanary/-leak-canary/-config/index.html
index e8c1114..57f7d91 100644
--- a/api/leakcanary/-leak-canary/-config/index.html
+++ b/api/leakcanary/-leak-canary/-config/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-leak-canary/-config/leaking-object-finder/index.html b/api/leakcanary/-leak-canary/-config/leaking-object-finder/index.html
index 6e3da92..20ba43e 100644
--- a/api/leakcanary/-leak-canary/-config/leaking-object-finder/index.html
+++ b/api/leakcanary/-leak-canary/-config/leaking-object-finder/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-leak-canary/-config/max-stored-heap-dumps/index.html b/api/leakcanary/-leak-canary/-config/max-stored-heap-dumps/index.html
index b5d1cd9..e2c9bf3 100644
--- a/api/leakcanary/-leak-canary/-config/max-stored-heap-dumps/index.html
+++ b/api/leakcanary/-leak-canary/-config/max-stored-heap-dumps/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-leak-canary/-config/metadata-extractor/index.html b/api/leakcanary/-leak-canary/-config/metadata-extractor/index.html
index e925882..ed809d6 100644
--- a/api/leakcanary/-leak-canary/-config/metadata-extractor/index.html
+++ b/api/leakcanary/-leak-canary/-config/metadata-extractor/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-leak-canary/-config/new-builder/index.html b/api/leakcanary/-leak-canary/-config/new-builder/index.html
index 061c99d..9795c42 100644
--- a/api/leakcanary/-leak-canary/-config/new-builder/index.html
+++ b/api/leakcanary/-leak-canary/-config/new-builder/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-leak-canary/-config/object-inspectors/index.html b/api/leakcanary/-leak-canary/-config/object-inspectors/index.html
index 74a4eb4..ec3cfb3 100644
--- a/api/leakcanary/-leak-canary/-config/object-inspectors/index.html
+++ b/api/leakcanary/-leak-canary/-config/object-inspectors/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-leak-canary/-config/reference-matchers/index.html b/api/leakcanary/-leak-canary/-config/reference-matchers/index.html
index 5396a52..72006e5 100644
--- a/api/leakcanary/-leak-canary/-config/reference-matchers/index.html
+++ b/api/leakcanary/-leak-canary/-config/reference-matchers/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-leak-canary/-config/request-write-external-storage-permission/index.html b/api/leakcanary/-leak-canary/-config/request-write-external-storage-permission/index.html
index 8e368ec..025e057 100644
--- a/api/leakcanary/-leak-canary/-config/request-write-external-storage-permission/index.html
+++ b/api/leakcanary/-leak-canary/-config/request-write-external-storage-permission/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-leak-canary/-config/retained-visible-threshold/index.html b/api/leakcanary/-leak-canary/-config/retained-visible-threshold/index.html
index c6c1629..45b71f9 100644
--- a/api/leakcanary/-leak-canary/-config/retained-visible-threshold/index.html
+++ b/api/leakcanary/-leak-canary/-config/retained-visible-threshold/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-leak-canary/-config/show-notifications/index.html b/api/leakcanary/-leak-canary/-config/show-notifications/index.html
index 8c97614..c2e27f9 100644
--- a/api/leakcanary/-leak-canary/-config/show-notifications/index.html
+++ b/api/leakcanary/-leak-canary/-config/show-notifications/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-leak-canary/config/index.html b/api/leakcanary/-leak-canary/config/index.html
index a68b953..0a59bed 100644
--- a/api/leakcanary/-leak-canary/config/index.html
+++ b/api/leakcanary/-leak-canary/config/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-leak-canary/dump-heap/index.html b/api/leakcanary/-leak-canary/dump-heap/index.html
index dbc8803..2078f99 100644
--- a/api/leakcanary/-leak-canary/dump-heap/index.html
+++ b/api/leakcanary/-leak-canary/dump-heap/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-leak-canary/index.html b/api/leakcanary/-leak-canary/index.html
index 60bc4e6..0f6368e 100644
--- a/api/leakcanary/-leak-canary/index.html
+++ b/api/leakcanary/-leak-canary/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-leak-canary/new-leak-display-activity-intent/index.html b/api/leakcanary/-leak-canary/new-leak-display-activity-intent/index.html
index 752e49d..d390f78 100644
--- a/api/leakcanary/-leak-canary/new-leak-display-activity-intent/index.html
+++ b/api/leakcanary/-leak-canary/new-leak-display-activity-intent/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-leak-canary/show-leak-display-activity-launcher-icon/index.html b/api/leakcanary/-leak-canary/show-leak-display-activity-launcher-icon/index.html
index 9f1e3fd..7144181 100644
--- a/api/leakcanary/-leak-canary/show-leak-display-activity-launcher-icon/index.html
+++ b/api/leakcanary/-leak-canary/show-leak-display-activity-launcher-icon/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-logcat-event-listener/index.html b/api/leakcanary/-logcat-event-listener/index.html
index a4090a6..b7c22d8 100644
--- a/api/leakcanary/-logcat-event-listener/index.html
+++ b/api/leakcanary/-logcat-event-listener/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-logcat-event-listener/on-event/index.html b/api/leakcanary/-logcat-event-listener/on-event/index.html
index fe1bd83..4006fcf 100644
--- a/api/leakcanary/-logcat-event-listener/on-event/index.html
+++ b/api/leakcanary/-logcat-event-listener/on-event/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-logcat-shark-log/-companion/index.html b/api/leakcanary/-logcat-shark-log/-companion/index.html
index 0c5932f..e685067 100644
--- a/api/leakcanary/-logcat-shark-log/-companion/index.html
+++ b/api/leakcanary/-logcat-shark-log/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-logcat-shark-log/-companion/install/index.html b/api/leakcanary/-logcat-shark-log/-companion/install/index.html
index ad4d7cf..e1cf048 100644
--- a/api/leakcanary/-logcat-shark-log/-companion/install/index.html
+++ b/api/leakcanary/-logcat-shark-log/-companion/install/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-logcat-shark-log/-logcat-shark-log/index.html b/api/leakcanary/-logcat-shark-log/-logcat-shark-log/index.html
index 83fbc35..8c0c7c3 100644
--- a/api/leakcanary/-logcat-shark-log/-logcat-shark-log/index.html
+++ b/api/leakcanary/-logcat-shark-log/-logcat-shark-log/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-logcat-shark-log/d/index.html b/api/leakcanary/-logcat-shark-log/d/index.html
index 0e1801d..5fbf2cc 100644
--- a/api/leakcanary/-logcat-shark-log/d/index.html
+++ b/api/leakcanary/-logcat-shark-log/d/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-logcat-shark-log/index.html b/api/leakcanary/-logcat-shark-log/index.html
index 339b441..ff3fa59 100644
--- a/api/leakcanary/-logcat-shark-log/index.html
+++ b/api/leakcanary/-logcat-shark-log/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-minimum-disk-space-interceptor/-minimum-disk-space-interceptor/index.html b/api/leakcanary/-minimum-disk-space-interceptor/-minimum-disk-space-interceptor/index.html
index bdfd1b7..d58e709 100644
--- a/api/leakcanary/-minimum-disk-space-interceptor/-minimum-disk-space-interceptor/index.html
+++ b/api/leakcanary/-minimum-disk-space-interceptor/-minimum-disk-space-interceptor/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-minimum-disk-space-interceptor/index.html b/api/leakcanary/-minimum-disk-space-interceptor/index.html
index e81fbc8..61b6f07 100644
--- a/api/leakcanary/-minimum-disk-space-interceptor/index.html
+++ b/api/leakcanary/-minimum-disk-space-interceptor/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-minimum-disk-space-interceptor/intercept/index.html b/api/leakcanary/-minimum-disk-space-interceptor/intercept/index.html
index 2190088..dc40678 100644
--- a/api/leakcanary/-minimum-disk-space-interceptor/intercept/index.html
+++ b/api/leakcanary/-minimum-disk-space-interceptor/intercept/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-minimum-elapsed-since-start-interceptor/-minimum-elapsed-since-start-interceptor/index.html b/api/leakcanary/-minimum-elapsed-since-start-interceptor/-minimum-elapsed-since-start-interceptor/index.html
index 3ed7b8a..2a102cd 100644
--- a/api/leakcanary/-minimum-elapsed-since-start-interceptor/-minimum-elapsed-since-start-interceptor/index.html
+++ b/api/leakcanary/-minimum-elapsed-since-start-interceptor/-minimum-elapsed-since-start-interceptor/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-minimum-elapsed-since-start-interceptor/index.html b/api/leakcanary/-minimum-elapsed-since-start-interceptor/index.html
index ad4f91b..ba488cd 100644
--- a/api/leakcanary/-minimum-elapsed-since-start-interceptor/index.html
+++ b/api/leakcanary/-minimum-elapsed-since-start-interceptor/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-minimum-elapsed-since-start-interceptor/intercept/index.html b/api/leakcanary/-minimum-elapsed-since-start-interceptor/intercept/index.html
index 87ebf1f..fa5622a 100644
--- a/api/leakcanary/-minimum-elapsed-since-start-interceptor/intercept/index.html
+++ b/api/leakcanary/-minimum-elapsed-since-start-interceptor/intercept/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-minimum-memory-interceptor/-minimum-memory-interceptor/index.html b/api/leakcanary/-minimum-memory-interceptor/-minimum-memory-interceptor/index.html
index a44ca01..8d65fd0 100644
--- a/api/leakcanary/-minimum-memory-interceptor/-minimum-memory-interceptor/index.html
+++ b/api/leakcanary/-minimum-memory-interceptor/-minimum-memory-interceptor/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-minimum-memory-interceptor/index.html b/api/leakcanary/-minimum-memory-interceptor/index.html
index 352788c..fd0161c 100644
--- a/api/leakcanary/-minimum-memory-interceptor/index.html
+++ b/api/leakcanary/-minimum-memory-interceptor/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-minimum-memory-interceptor/intercept/index.html b/api/leakcanary/-minimum-memory-interceptor/intercept/index.html
index 4837bfa..b831525 100644
--- a/api/leakcanary/-minimum-memory-interceptor/intercept/index.html
+++ b/api/leakcanary/-minimum-memory-interceptor/intercept/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-no-leak-assertion-failed-error/-companion/index.html b/api/leakcanary/-no-leak-assertion-failed-error/-companion/index.html
index 6a70e3f..f9de00a 100644
--- a/api/leakcanary/-no-leak-assertion-failed-error/-companion/index.html
+++ b/api/leakcanary/-no-leak-assertion-failed-error/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-no-leak-assertion-failed-error/-companion/throw-on-application-leaks/index.html b/api/leakcanary/-no-leak-assertion-failed-error/-companion/throw-on-application-leaks/index.html
index d67803f..24ffa5d 100644
--- a/api/leakcanary/-no-leak-assertion-failed-error/-companion/throw-on-application-leaks/index.html
+++ b/api/leakcanary/-no-leak-assertion-failed-error/-companion/throw-on-application-leaks/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-no-leak-assertion-failed-error/-no-leak-assertion-failed-error/index.html b/api/leakcanary/-no-leak-assertion-failed-error/-no-leak-assertion-failed-error/index.html
index 65c53e6..65b60b8 100644
--- a/api/leakcanary/-no-leak-assertion-failed-error/-no-leak-assertion-failed-error/index.html
+++ b/api/leakcanary/-no-leak-assertion-failed-error/-no-leak-assertion-failed-error/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-no-leak-assertion-failed-error/heap-analysis/index.html b/api/leakcanary/-no-leak-assertion-failed-error/heap-analysis/index.html
index e75d2d9..d7811e8 100644
--- a/api/leakcanary/-no-leak-assertion-failed-error/heap-analysis/index.html
+++ b/api/leakcanary/-no-leak-assertion-failed-error/heap-analysis/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-no-leak-assertion-failed-error/index.html b/api/leakcanary/-no-leak-assertion-failed-error/index.html
index fae4733..467c70b 100644
--- a/api/leakcanary/-no-leak-assertion-failed-error/index.html
+++ b/api/leakcanary/-no-leak-assertion-failed-error/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-notification-event-listener/index.html b/api/leakcanary/-notification-event-listener/index.html
index 99b3b45..1916cb9 100644
--- a/api/leakcanary/-notification-event-listener/index.html
+++ b/api/leakcanary/-notification-event-listener/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-notification-event-listener/on-event/index.html b/api/leakcanary/-notification-event-listener/on-event/index.html
index 4259dcf..8f0dc9a 100644
--- a/api/leakcanary/-notification-event-listener/on-event/index.html
+++ b/api/leakcanary/-notification-event-listener/on-event/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-object-watcher/-object-watcher/index.html b/api/leakcanary/-object-watcher/-object-watcher/index.html
index 0702483..3e18fb7 100644
--- a/api/leakcanary/-object-watcher/-object-watcher/index.html
+++ b/api/leakcanary/-object-watcher/-object-watcher/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-object-watcher/add-on-object-retained-listener/index.html b/api/leakcanary/-object-watcher/add-on-object-retained-listener/index.html
index 29512e7..0902f8f 100644
--- a/api/leakcanary/-object-watcher/add-on-object-retained-listener/index.html
+++ b/api/leakcanary/-object-watcher/add-on-object-retained-listener/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-object-watcher/clear-objects-watched-before/index.html b/api/leakcanary/-object-watcher/clear-objects-watched-before/index.html
index 1f1f83e..219b038 100644
--- a/api/leakcanary/-object-watcher/clear-objects-watched-before/index.html
+++ b/api/leakcanary/-object-watcher/clear-objects-watched-before/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-object-watcher/clear-watched-objects/index.html b/api/leakcanary/-object-watcher/clear-watched-objects/index.html
index a6d66de..4e06804 100644
--- a/api/leakcanary/-object-watcher/clear-watched-objects/index.html
+++ b/api/leakcanary/-object-watcher/clear-watched-objects/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-object-watcher/expect-weakly-reachable/index.html b/api/leakcanary/-object-watcher/expect-weakly-reachable/index.html
index 93ad076..7bdb811 100644
--- a/api/leakcanary/-object-watcher/expect-weakly-reachable/index.html
+++ b/api/leakcanary/-object-watcher/expect-weakly-reachable/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-object-watcher/has-retained-objects/index.html b/api/leakcanary/-object-watcher/has-retained-objects/index.html
index ee41e5b..7c47cf0 100644
--- a/api/leakcanary/-object-watcher/has-retained-objects/index.html
+++ b/api/leakcanary/-object-watcher/has-retained-objects/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-object-watcher/has-watched-objects/index.html b/api/leakcanary/-object-watcher/has-watched-objects/index.html
index 34740ac..329d4c3 100644
--- a/api/leakcanary/-object-watcher/has-watched-objects/index.html
+++ b/api/leakcanary/-object-watcher/has-watched-objects/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-object-watcher/index.html b/api/leakcanary/-object-watcher/index.html
index 0bd4ac1..236b9ad 100644
--- a/api/leakcanary/-object-watcher/index.html
+++ b/api/leakcanary/-object-watcher/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-object-watcher/remove-on-object-retained-listener/index.html b/api/leakcanary/-object-watcher/remove-on-object-retained-listener/index.html
index ff92097..39756c0 100644
--- a/api/leakcanary/-object-watcher/remove-on-object-retained-listener/index.html
+++ b/api/leakcanary/-object-watcher/remove-on-object-retained-listener/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-object-watcher/retained-object-count/index.html b/api/leakcanary/-object-watcher/retained-object-count/index.html
index f9a6cc7..698aeb9 100644
--- a/api/leakcanary/-object-watcher/retained-object-count/index.html
+++ b/api/leakcanary/-object-watcher/retained-object-count/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-object-watcher/retained-objects/index.html b/api/leakcanary/-object-watcher/retained-objects/index.html
index 218f345..9d80462 100644
--- a/api/leakcanary/-object-watcher/retained-objects/index.html
+++ b/api/leakcanary/-object-watcher/retained-objects/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-on-object-retained-listener/-companion/index.html b/api/leakcanary/-on-object-retained-listener/-companion/index.html
index 00f5ad9..ad4e3e3 100644
--- a/api/leakcanary/-on-object-retained-listener/-companion/index.html
+++ b/api/leakcanary/-on-object-retained-listener/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-on-object-retained-listener/-companion/invoke/index.html b/api/leakcanary/-on-object-retained-listener/-companion/invoke/index.html
index 6063e1d..a8fb159 100644
--- a/api/leakcanary/-on-object-retained-listener/-companion/invoke/index.html
+++ b/api/leakcanary/-on-object-retained-listener/-companion/invoke/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-on-object-retained-listener/index.html b/api/leakcanary/-on-object-retained-listener/index.html
index a5c13d9..991a498 100644
--- a/api/leakcanary/-on-object-retained-listener/index.html
+++ b/api/leakcanary/-on-object-retained-listener/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-on-object-retained-listener/on-object-retained/index.html b/api/leakcanary/-on-object-retained-listener/on-object-retained/index.html
index 976478a..a74ccd5 100644
--- a/api/leakcanary/-on-object-retained-listener/on-object-retained/index.html
+++ b/api/leakcanary/-on-object-retained-listener/on-object-retained/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-once-per-period-interceptor/-companion/index.html b/api/leakcanary/-once-per-period-interceptor/-companion/index.html
index 792a6ad..61da191 100644
--- a/api/leakcanary/-once-per-period-interceptor/-companion/index.html
+++ b/api/leakcanary/-once-per-period-interceptor/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-once-per-period-interceptor/-once-per-period-interceptor/index.html b/api/leakcanary/-once-per-period-interceptor/-once-per-period-interceptor/index.html
index 8fc7bd5..28d60ec 100644
--- a/api/leakcanary/-once-per-period-interceptor/-once-per-period-interceptor/index.html
+++ b/api/leakcanary/-once-per-period-interceptor/-once-per-period-interceptor/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-once-per-period-interceptor/forget/index.html b/api/leakcanary/-once-per-period-interceptor/forget/index.html
index 9650d26..3a94ddd 100644
--- a/api/leakcanary/-once-per-period-interceptor/forget/index.html
+++ b/api/leakcanary/-once-per-period-interceptor/forget/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-once-per-period-interceptor/index.html b/api/leakcanary/-once-per-period-interceptor/index.html
index 1581215..1cd75d1 100644
--- a/api/leakcanary/-once-per-period-interceptor/index.html
+++ b/api/leakcanary/-once-per-period-interceptor/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-once-per-period-interceptor/intercept/index.html b/api/leakcanary/-once-per-period-interceptor/intercept/index.html
index 0e4c5af..f26448a 100644
--- a/api/leakcanary/-once-per-period-interceptor/intercept/index.html
+++ b/api/leakcanary/-once-per-period-interceptor/intercept/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-plumber-startup-initializer/-plumber-startup-initializer/index.html b/api/leakcanary/-plumber-startup-initializer/-plumber-startup-initializer/index.html
index 684b101..dd13ece 100644
--- a/api/leakcanary/-plumber-startup-initializer/-plumber-startup-initializer/index.html
+++ b/api/leakcanary/-plumber-startup-initializer/-plumber-startup-initializer/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-plumber-startup-initializer/create/index.html b/api/leakcanary/-plumber-startup-initializer/create/index.html
index 69f0c41..29296fe 100644
--- a/api/leakcanary/-plumber-startup-initializer/create/index.html
+++ b/api/leakcanary/-plumber-startup-initializer/create/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-plumber-startup-initializer/dependencies/index.html b/api/leakcanary/-plumber-startup-initializer/dependencies/index.html
index 8027ad5..4346035 100644
--- a/api/leakcanary/-plumber-startup-initializer/dependencies/index.html
+++ b/api/leakcanary/-plumber-startup-initializer/dependencies/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-plumber-startup-initializer/index.html b/api/leakcanary/-plumber-startup-initializer/index.html
index f41fdef..3501411 100644
--- a/api/leakcanary/-plumber-startup-initializer/index.html
+++ b/api/leakcanary/-plumber-startup-initializer/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-process-info/-available-ram/-below-threshold/index.html b/api/leakcanary/-process-info/-available-ram/-below-threshold/index.html
index b717784..d1d2494 100644
--- a/api/leakcanary/-process-info/-available-ram/-below-threshold/index.html
+++ b/api/leakcanary/-process-info/-available-ram/-below-threshold/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-process-info/-available-ram/-low-ram-device/index.html b/api/leakcanary/-process-info/-available-ram/-low-ram-device/index.html
index aa7213e..cda25a8 100644
--- a/api/leakcanary/-process-info/-available-ram/-low-ram-device/index.html
+++ b/api/leakcanary/-process-info/-available-ram/-low-ram-device/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-process-info/-available-ram/-memory/-memory/index.html b/api/leakcanary/-process-info/-available-ram/-memory/-memory/index.html
index 366dcee..900e900 100644
--- a/api/leakcanary/-process-info/-available-ram/-memory/-memory/index.html
+++ b/api/leakcanary/-process-info/-available-ram/-memory/-memory/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-process-info/-available-ram/-memory/bytes/index.html b/api/leakcanary/-process-info/-available-ram/-memory/bytes/index.html
index b315b2c..f116179 100644
--- a/api/leakcanary/-process-info/-available-ram/-memory/bytes/index.html
+++ b/api/leakcanary/-process-info/-available-ram/-memory/bytes/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-process-info/-available-ram/-memory/index.html b/api/leakcanary/-process-info/-available-ram/-memory/index.html
index f844dbd..28541e8 100644
--- a/api/leakcanary/-process-info/-available-ram/-memory/index.html
+++ b/api/leakcanary/-process-info/-available-ram/-memory/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-process-info/-available-ram/index.html b/api/leakcanary/-process-info/-available-ram/index.html
index 5eb95d3..b3b8759 100644
--- a/api/leakcanary/-process-info/-available-ram/index.html
+++ b/api/leakcanary/-process-info/-available-ram/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-process-info/-real/available-disk-space-bytes/index.html b/api/leakcanary/-process-info/-real/available-disk-space-bytes/index.html
index e5bf1a1..8db8560 100644
--- a/api/leakcanary/-process-info/-real/available-disk-space-bytes/index.html
+++ b/api/leakcanary/-process-info/-real/available-disk-space-bytes/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-process-info/-real/available-ram/index.html b/api/leakcanary/-process-info/-real/available-ram/index.html
index c04be10..a82c123 100644
--- a/api/leakcanary/-process-info/-real/available-ram/index.html
+++ b/api/leakcanary/-process-info/-real/available-ram/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-process-info/-real/elapsed-millis-since-start/index.html b/api/leakcanary/-process-info/-real/elapsed-millis-since-start/index.html
index 83cc235..b07ec16 100644
--- a/api/leakcanary/-process-info/-real/elapsed-millis-since-start/index.html
+++ b/api/leakcanary/-process-info/-real/elapsed-millis-since-start/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-process-info/-real/index.html b/api/leakcanary/-process-info/-real/index.html
index a899cf0..c260b2d 100644
--- a/api/leakcanary/-process-info/-real/index.html
+++ b/api/leakcanary/-process-info/-real/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-process-info/-real/is-importance-background/index.html b/api/leakcanary/-process-info/-real/is-importance-background/index.html
index 0c4b8af..f1688c3 100644
--- a/api/leakcanary/-process-info/-real/is-importance-background/index.html
+++ b/api/leakcanary/-process-info/-real/is-importance-background/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-process-info/available-disk-space-bytes/index.html b/api/leakcanary/-process-info/available-disk-space-bytes/index.html
index 4b2e0de..3235003 100644
--- a/api/leakcanary/-process-info/available-disk-space-bytes/index.html
+++ b/api/leakcanary/-process-info/available-disk-space-bytes/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-process-info/available-ram/index.html b/api/leakcanary/-process-info/available-ram/index.html
index 1af52b0..ff0c5fa 100644
--- a/api/leakcanary/-process-info/available-ram/index.html
+++ b/api/leakcanary/-process-info/available-ram/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-process-info/elapsed-millis-since-start/index.html b/api/leakcanary/-process-info/elapsed-millis-since-start/index.html
index e9ac4aa..67a886a 100644
--- a/api/leakcanary/-process-info/elapsed-millis-since-start/index.html
+++ b/api/leakcanary/-process-info/elapsed-millis-since-start/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-process-info/index.html b/api/leakcanary/-process-info/index.html
index 8306126..4a3d840 100644
--- a/api/leakcanary/-process-info/index.html
+++ b/api/leakcanary/-process-info/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-process-info/is-importance-background/index.html b/api/leakcanary/-process-info/is-importance-background/index.html
index 68e3aa8..3c6eaa3 100644
--- a/api/leakcanary/-process-info/is-importance-background/index.html
+++ b/api/leakcanary/-process-info/is-importance-background/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-reachability-watcher/expect-weakly-reachable/index.html b/api/leakcanary/-reachability-watcher/expect-weakly-reachable/index.html
index 6d5a5fd..ae2d264 100644
--- a/api/leakcanary/-reachability-watcher/expect-weakly-reachable/index.html
+++ b/api/leakcanary/-reachability-watcher/expect-weakly-reachable/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-reachability-watcher/index.html b/api/leakcanary/-reachability-watcher/index.html
index 96d9508..f525d3d 100644
--- a/api/leakcanary/-reachability-watcher/index.html
+++ b/api/leakcanary/-reachability-watcher/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-remote-work-manager-heap-analyzer/index.html b/api/leakcanary/-remote-work-manager-heap-analyzer/index.html
index d4aa364..3abf0e9 100644
--- a/api/leakcanary/-remote-work-manager-heap-analyzer/index.html
+++ b/api/leakcanary/-remote-work-manager-heap-analyzer/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-remote-work-manager-heap-analyzer/on-event/index.html b/api/leakcanary/-remote-work-manager-heap-analyzer/on-event/index.html
index 324e186..51ac875 100644
--- a/api/leakcanary/-remote-work-manager-heap-analyzer/on-event/index.html
+++ b/api/leakcanary/-remote-work-manager-heap-analyzer/on-event/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-root-view-watcher/-root-view-watcher/index.html b/api/leakcanary/-root-view-watcher/-root-view-watcher/index.html
index 0db6c06..7258bc9 100644
--- a/api/leakcanary/-root-view-watcher/-root-view-watcher/index.html
+++ b/api/leakcanary/-root-view-watcher/-root-view-watcher/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-root-view-watcher/index.html b/api/leakcanary/-root-view-watcher/index.html
index c32a31e..deb56e7 100644
--- a/api/leakcanary/-root-view-watcher/index.html
+++ b/api/leakcanary/-root-view-watcher/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-root-view-watcher/install/index.html b/api/leakcanary/-root-view-watcher/install/index.html
index c7fb41e..116e310 100644
--- a/api/leakcanary/-root-view-watcher/install/index.html
+++ b/api/leakcanary/-root-view-watcher/install/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-root-view-watcher/uninstall/index.html b/api/leakcanary/-root-view-watcher/uninstall/index.html
index 9f6de21..2cf2688 100644
--- a/api/leakcanary/-root-view-watcher/uninstall/index.html
+++ b/api/leakcanary/-root-view-watcher/uninstall/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-save-resource-ids-interceptor/-save-resource-ids-interceptor/index.html b/api/leakcanary/-save-resource-ids-interceptor/-save-resource-ids-interceptor/index.html
index 446e655..9c6677e 100644
--- a/api/leakcanary/-save-resource-ids-interceptor/-save-resource-ids-interceptor/index.html
+++ b/api/leakcanary/-save-resource-ids-interceptor/-save-resource-ids-interceptor/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-save-resource-ids-interceptor/index.html b/api/leakcanary/-save-resource-ids-interceptor/index.html
index e2a3200..92c0bff 100644
--- a/api/leakcanary/-save-resource-ids-interceptor/index.html
+++ b/api/leakcanary/-save-resource-ids-interceptor/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-save-resource-ids-interceptor/intercept/index.html b/api/leakcanary/-save-resource-ids-interceptor/intercept/index.html
index 3cd5fe2..fb70012 100644
--- a/api/leakcanary/-save-resource-ids-interceptor/intercept/index.html
+++ b/api/leakcanary/-save-resource-ids-interceptor/intercept/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-screen-off-trigger/-screen-off-trigger/index.html b/api/leakcanary/-screen-off-trigger/-screen-off-trigger/index.html
index 809894f..cdac22b 100644
--- a/api/leakcanary/-screen-off-trigger/-screen-off-trigger/index.html
+++ b/api/leakcanary/-screen-off-trigger/-screen-off-trigger/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-screen-off-trigger/index.html b/api/leakcanary/-screen-off-trigger/index.html
index e6153f7..a36833a 100644
--- a/api/leakcanary/-screen-off-trigger/index.html
+++ b/api/leakcanary/-screen-off-trigger/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-screen-off-trigger/start/index.html b/api/leakcanary/-screen-off-trigger/start/index.html
index c821f88..68acdda 100644
--- a/api/leakcanary/-screen-off-trigger/start/index.html
+++ b/api/leakcanary/-screen-off-trigger/start/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-screen-off-trigger/stop/index.html b/api/leakcanary/-screen-off-trigger/stop/index.html
index a285f6e..45e5ad8 100644
--- a/api/leakcanary/-screen-off-trigger/stop/index.html
+++ b/api/leakcanary/-screen-off-trigger/stop/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-service-watcher/-companion/index.html b/api/leakcanary/-service-watcher/-companion/index.html
index d16b7b6..d14ad1f 100644
--- a/api/leakcanary/-service-watcher/-companion/index.html
+++ b/api/leakcanary/-service-watcher/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-service-watcher/-service-watcher/index.html b/api/leakcanary/-service-watcher/-service-watcher/index.html
index 98b8795..e5e698b 100644
--- a/api/leakcanary/-service-watcher/-service-watcher/index.html
+++ b/api/leakcanary/-service-watcher/-service-watcher/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-service-watcher/index.html b/api/leakcanary/-service-watcher/index.html
index 0de2ccd..5ac1933 100644
--- a/api/leakcanary/-service-watcher/index.html
+++ b/api/leakcanary/-service-watcher/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-service-watcher/install/index.html b/api/leakcanary/-service-watcher/install/index.html
index 3d25453..8e76c0d 100644
--- a/api/leakcanary/-service-watcher/install/index.html
+++ b/api/leakcanary/-service-watcher/install/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-service-watcher/uninstall/index.html b/api/leakcanary/-service-watcher/uninstall/index.html
index f3e6112..bfae31f 100644
--- a/api/leakcanary/-service-watcher/uninstall/index.html
+++ b/api/leakcanary/-service-watcher/uninstall/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-skip-leak-detection/-companion/index.html b/api/leakcanary/-skip-leak-detection/-companion/index.html
index 3239a71..02db881 100644
--- a/api/leakcanary/-skip-leak-detection/-companion/index.html
+++ b/api/leakcanary/-skip-leak-detection/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-skip-leak-detection/-companion/should-skip-test/index.html b/api/leakcanary/-skip-leak-detection/-companion/should-skip-test/index.html
index 5f867dd..3a5c9ae 100644
--- a/api/leakcanary/-skip-leak-detection/-companion/should-skip-test/index.html
+++ b/api/leakcanary/-skip-leak-detection/-companion/should-skip-test/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-skip-leak-detection/-skip-leak-detection/index.html b/api/leakcanary/-skip-leak-detection/-skip-leak-detection/index.html
index cfe23b4..1fcdad5 100644
--- a/api/leakcanary/-skip-leak-detection/-skip-leak-detection/index.html
+++ b/api/leakcanary/-skip-leak-detection/-skip-leak-detection/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-skip-leak-detection/assertion-tags/index.html b/api/leakcanary/-skip-leak-detection/assertion-tags/index.html
index 760ffe3..d8164c6 100644
--- a/api/leakcanary/-skip-leak-detection/assertion-tags/index.html
+++ b/api/leakcanary/-skip-leak-detection/assertion-tags/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-skip-leak-detection/index.html b/api/leakcanary/-skip-leak-detection/index.html
index fc0901d..63e3d7f 100644
--- a/api/leakcanary/-skip-leak-detection/index.html
+++ b/api/leakcanary/-skip-leak-detection/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-skip-leak-detection/message/index.html b/api/leakcanary/-skip-leak-detection/message/index.html
index 845e958..7484fd9 100644
--- a/api/leakcanary/-skip-leak-detection/message/index.html
+++ b/api/leakcanary/-skip-leak-detection/message/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-test-description-holder/apply/index.html b/api/leakcanary/-test-description-holder/apply/index.html
index db6248d..f32257b 100644
--- a/api/leakcanary/-test-description-holder/apply/index.html
+++ b/api/leakcanary/-test-description-holder/apply/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-test-description-holder/index.html b/api/leakcanary/-test-description-holder/index.html
index cabf804..bc75041 100644
--- a/api/leakcanary/-test-description-holder/index.html
+++ b/api/leakcanary/-test-description-holder/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-test-description-holder/is-evaluating/index.html b/api/leakcanary/-test-description-holder/is-evaluating/index.html
index 4ef7456..6025882 100644
--- a/api/leakcanary/-test-description-holder/is-evaluating/index.html
+++ b/api/leakcanary/-test-description-holder/is-evaluating/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-test-description-holder/test-description/index.html b/api/leakcanary/-test-description-holder/test-description/index.html
index 8fa5db8..98eb949 100644
--- a/api/leakcanary/-test-description-holder/test-description/index.html
+++ b/api/leakcanary/-test-description-holder/test-description/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-test-description-holder/wrap/index.html b/api/leakcanary/-test-description-holder/wrap/index.html
index c478c70..fa975f9 100644
--- a/api/leakcanary/-test-description-holder/wrap/index.html
+++ b/api/leakcanary/-test-description-holder/wrap/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-toast-event-listener/index.html b/api/leakcanary/-toast-event-listener/index.html
index 7b6c16d..e3555e6 100644
--- a/api/leakcanary/-toast-event-listener/index.html
+++ b/api/leakcanary/-toast-event-listener/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-toast-event-listener/on-event/index.html b/api/leakcanary/-toast-event-listener/on-event/index.html
index fc6ff83..a6430d8 100644
--- a/api/leakcanary/-toast-event-listener/on-event/index.html
+++ b/api/leakcanary/-toast-event-listener/on-event/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-tv-event-listener/index.html b/api/leakcanary/-tv-event-listener/index.html
index b0a9645..2c994fa 100644
--- a/api/leakcanary/-tv-event-listener/index.html
+++ b/api/leakcanary/-tv-event-listener/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-tv-event-listener/on-event/index.html b/api/leakcanary/-tv-event-listener/on-event/index.html
index de4cc16..88de486 100644
--- a/api/leakcanary/-tv-event-listener/on-event/index.html
+++ b/api/leakcanary/-tv-event-listener/on-event/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-view-location-holder-leak-fix/clear-static-pool/index.html b/api/leakcanary/-view-location-holder-leak-fix/clear-static-pool/index.html
index 2bf6ed1..1410416 100644
--- a/api/leakcanary/-view-location-holder-leak-fix/clear-static-pool/index.html
+++ b/api/leakcanary/-view-location-holder-leak-fix/clear-static-pool/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-view-location-holder-leak-fix/index.html b/api/leakcanary/-view-location-holder-leak-fix/index.html
index 5f9c7cd..4427448 100644
--- a/api/leakcanary/-view-location-holder-leak-fix/index.html
+++ b/api/leakcanary/-view-location-holder-leak-fix/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-work-manager-heap-analyzer/index.html b/api/leakcanary/-work-manager-heap-analyzer/index.html
index c4211d6..3d7a5fa 100644
--- a/api/leakcanary/-work-manager-heap-analyzer/index.html
+++ b/api/leakcanary/-work-manager-heap-analyzer/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/-work-manager-heap-analyzer/on-event/index.html b/api/leakcanary/-work-manager-heap-analyzer/on-event/index.html
index 895d707..89e70ca 100644
--- a/api/leakcanary/-work-manager-heap-analyzer/on-event/index.html
+++ b/api/leakcanary/-work-manager-heap-analyzer/on-event/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/leakcanary/index.html b/api/leakcanary/index.html
index abb27e1..1df5f2d 100644
--- a/api/leakcanary/index.html
+++ b/api/leakcanary/index.html
@@ -84,7 +84,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
@@ -904,7 +904,7 @@
 </tr>
 <tr>
 <td><a href="-heap-analysis-config/">HeapAnalysisConfig</a></td>
-<td>data class <a href="-heap-analysis-config/">HeapAnalysisConfig</a>(val referenceMatchers: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html">List</a>&lt;<a href="../shark/-reference-matcher/">ReferenceMatcher</a>&gt; = AndroidReferenceMatchers.appDefaults, val objectInspectors: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html">List</a>&lt;<a href="../shark/-object-inspector/">ObjectInspector</a>&gt; = AndroidObjectInspectors.appDefaults, val metadataExtractor: <a href="../shark/-metadata-extractor/">MetadataExtractor</a> = AndroidMetadataExtractor, val computeRetainedHeapSize: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a> = true, val leakingObjectFinder: <a href="../shark/-leaking-object-finder/">LeakingObjectFinder</a> = FilteringLeakingObjectFinder(     AndroidObjectInspectors.appLeakingObjectFilters   ), val stripHeapDump: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a> = false)</td>
+<td>data class <a href="-heap-analysis-config/">HeapAnalysisConfig</a>(val referenceMatchers: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html">List</a>&lt;<a href="../shark/-reference-matcher/">ReferenceMatcher</a>&gt; = AndroidReferenceMatchers.appDefaults, val objectInspectors: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html">List</a>&lt;<a href="../shark/-object-inspector/">ObjectInspector</a>&gt; = AndroidObjectInspectors.appDefaults, val metadataExtractor: <a href="../shark/-metadata-extractor/">MetadataExtractor</a> = AndroidMetadataExtractor, val computeRetainedHeapSize: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a> = true, val leakingObjectFinder: <a href="../shark/-leaking-object-finder/">LeakingObjectFinder</a> = FilteringLeakingObjectFinder(     AndroidObjectInspectors.appLeakingObjectFilters   ), val stripHeapDump: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a> = false, val proguardMappingProvider: () -&gt; <a href="../shark/-proguard-mapping/">ProguardMapping</a>? = { null })</td>
 </tr>
 <tr>
 <td><a href="-heap-analysis-decision/">HeapAnalysisDecision</a></td>
diff --git a/api/package-list b/api/package-list
index a9d8fcd..3d26df2 100644
--- a/api/package-list
+++ b/api/package-list
@@ -55,6 +55,7 @@
 $dokka.location:leakcanary/AndroidLeakFixes.IMM_FOCUSED_VIEW///PointingToDeclaration/{"org.jetbrains.dokka.links.EnumEntryDRIExtra":{"key":"org.jetbrains.dokka.links.EnumEntryDRIExtra"}}leakcanary/leakcanary/-android-leak-fixes/-i-m-m_-f-o-c-u-s-e-d_-v-i-e-w/index.md
 $dokka.location:leakcanary/AndroidLeakFixes.LAST_HOVERED_VIEW///PointingToDeclaration/{"org.jetbrains.dokka.links.EnumEntryDRIExtra":{"key":"org.jetbrains.dokka.links.EnumEntryDRIExtra"}}leakcanary/leakcanary/-android-leak-fixes/-l-a-s-t_-h-o-v-e-r-e-d_-v-i-e-w/index.md
 $dokka.location:leakcanary/AndroidLeakFixes.MEDIA_SESSION_LEGACY_HELPER///PointingToDeclaration/{"org.jetbrains.dokka.links.EnumEntryDRIExtra":{"key":"org.jetbrains.dokka.links.EnumEntryDRIExtra"}}leakcanary/leakcanary/-android-leak-fixes/-m-e-d-i-a_-s-e-s-s-i-o-n_-l-e-g-a-c-y_-h-e-l-p-e-r/index.md
+$dokka.location:leakcanary/AndroidLeakFixes.PERMISSION_CONTROLLER_MANAGER///PointingToDeclaration/{"org.jetbrains.dokka.links.EnumEntryDRIExtra":{"key":"org.jetbrains.dokka.links.EnumEntryDRIExtra"}}leakcanary/leakcanary/-android-leak-fixes/-p-e-r-m-i-s-s-i-o-n_-c-o-n-t-r-o-l-l-e-r_-m-a-n-a-g-e-r/index.md
 $dokka.location:leakcanary/AndroidLeakFixes.SAMSUNG_CLIPBOARD_MANAGER///PointingToDeclaration/{"org.jetbrains.dokka.links.EnumEntryDRIExtra":{"key":"org.jetbrains.dokka.links.EnumEntryDRIExtra"}}leakcanary/leakcanary/-android-leak-fixes/-s-a-m-s-u-n-g_-c-l-i-p-b-o-a-r-d_-m-a-n-a-g-e-r/index.md
 $dokka.location:leakcanary/AndroidLeakFixes.SPELL_CHECKER///PointingToDeclaration/{"org.jetbrains.dokka.links.EnumEntryDRIExtra":{"key":"org.jetbrains.dokka.links.EnumEntryDRIExtra"}}leakcanary/leakcanary/-android-leak-fixes/-s-p-e-l-l_-c-h-e-c-k-e-r/index.md
 $dokka.location:leakcanary/AndroidLeakFixes.TEXT_LINE_POOL///PointingToDeclaration/{"org.jetbrains.dokka.links.EnumEntryDRIExtra":{"key":"org.jetbrains.dokka.links.EnumEntryDRIExtra"}}leakcanary/leakcanary/-android-leak-fixes/-t-e-x-t_-l-i-n-e_-p-o-o-l/index.md
@@ -141,11 +142,12 @@
 $dokka.location:leakcanary/HeapAnalysisClient/deleteHeapDumpFiles/#/PointingToDeclaration/leakcanary/leakcanary/-heap-analysis-client/delete-heap-dump-files.md
 $dokka.location:leakcanary/HeapAnalysisClient/newJob/#leakcanary.JobContext/PointingToDeclaration/leakcanary/leakcanary/-heap-analysis-client/new-job.md
 $dokka.location:leakcanary/HeapAnalysisConfig///PointingToDeclaration/leakcanary/leakcanary/-heap-analysis-config/index.md
-$dokka.location:leakcanary/HeapAnalysisConfig/HeapAnalysisConfig/#kotlin.collections.List[shark.ReferenceMatcher]#kotlin.collections.List[shark.ObjectInspector]#shark.MetadataExtractor#kotlin.Boolean#shark.LeakingObjectFinder#kotlin.Boolean/PointingToDeclaration/leakcanary/leakcanary/-heap-analysis-config/-heap-analysis-config.md
+$dokka.location:leakcanary/HeapAnalysisConfig/HeapAnalysisConfig/#kotlin.collections.List[shark.ReferenceMatcher]#kotlin.collections.List[shark.ObjectInspector]#shark.MetadataExtractor#kotlin.Boolean#shark.LeakingObjectFinder#kotlin.Boolean#kotlin.Function0[shark.ProguardMapping?]/PointingToDeclaration/leakcanary/leakcanary/-heap-analysis-config/-heap-analysis-config.md
 $dokka.location:leakcanary/HeapAnalysisConfig/computeRetainedHeapSize/#/PointingToDeclaration/leakcanary/leakcanary/-heap-analysis-config/compute-retained-heap-size.md
 $dokka.location:leakcanary/HeapAnalysisConfig/leakingObjectFinder/#/PointingToDeclaration/leakcanary/leakcanary/-heap-analysis-config/leaking-object-finder.md
 $dokka.location:leakcanary/HeapAnalysisConfig/metadataExtractor/#/PointingToDeclaration/leakcanary/leakcanary/-heap-analysis-config/metadata-extractor.md
 $dokka.location:leakcanary/HeapAnalysisConfig/objectInspectors/#/PointingToDeclaration/leakcanary/leakcanary/-heap-analysis-config/object-inspectors.md
+$dokka.location:leakcanary/HeapAnalysisConfig/proguardMappingProvider/#/PointingToDeclaration/leakcanary/leakcanary/-heap-analysis-config/proguard-mapping-provider.md
 $dokka.location:leakcanary/HeapAnalysisConfig/referenceMatchers/#/PointingToDeclaration/leakcanary/leakcanary/-heap-analysis-config/reference-matchers.md
 $dokka.location:leakcanary/HeapAnalysisConfig/stripHeapDump/#/PointingToDeclaration/leakcanary/leakcanary/-heap-analysis-config/strip-heap-dump.md
 $dokka.location:leakcanary/HeapAnalysisDecision.AnalyzeHeap///PointingToDeclaration/leakcanary/leakcanary/-heap-analysis-decision/-analyze-heap/index.md
@@ -518,6 +520,7 @@
 $dokka.location:shark/AndroidReferenceMatchers.MULTI_WINDOW_DECOR_SUPPORT__MWINDOW///PointingToDeclaration/{"org.jetbrains.dokka.links.EnumEntryDRIExtra":{"key":"org.jetbrains.dokka.links.EnumEntryDRIExtra"}}leakcanary/shark/-android-reference-matchers/-m-u-l-t-i_-w-i-n-d-o-w_-d-e-c-o-r_-s-u-p-p-o-r-t__-m-w-i-n-d-o-w/index.md
 $dokka.location:shark/AndroidReferenceMatchers.OEM_SCENE_CALL_BLOCKER///PointingToDeclaration/{"org.jetbrains.dokka.links.EnumEntryDRIExtra":{"key":"org.jetbrains.dokka.links.EnumEntryDRIExtra"}}leakcanary/shark/-android-reference-matchers/-o-e-m_-s-c-e-n-e_-c-a-l-l_-b-l-o-c-k-e-r/index.md
 $dokka.location:shark/AndroidReferenceMatchers.PERF_MONITOR_LAST_CALLBACK///PointingToDeclaration/{"org.jetbrains.dokka.links.EnumEntryDRIExtra":{"key":"org.jetbrains.dokka.links.EnumEntryDRIExtra"}}leakcanary/shark/-android-reference-matchers/-p-e-r-f_-m-o-n-i-t-o-r_-l-a-s-t_-c-a-l-l-b-a-c-k/index.md
+$dokka.location:shark/AndroidReferenceMatchers.PERMISSION_CONTROLLER_MANAGER///PointingToDeclaration/{"org.jetbrains.dokka.links.EnumEntryDRIExtra":{"key":"org.jetbrains.dokka.links.EnumEntryDRIExtra"}}leakcanary/shark/-android-reference-matchers/-p-e-r-m-i-s-s-i-o-n_-c-o-n-t-r-o-l-l-e-r_-m-a-n-a-g-e-r/index.md
 $dokka.location:shark/AndroidReferenceMatchers.PERSONA_MANAGER///PointingToDeclaration/{"org.jetbrains.dokka.links.EnumEntryDRIExtra":{"key":"org.jetbrains.dokka.links.EnumEntryDRIExtra"}}leakcanary/shark/-android-reference-matchers/-p-e-r-s-o-n-a_-m-a-n-a-g-e-r/index.md
 $dokka.location:shark/AndroidReferenceMatchers.PLAYER_BASE///PointingToDeclaration/{"org.jetbrains.dokka.links.EnumEntryDRIExtra":{"key":"org.jetbrains.dokka.links.EnumEntryDRIExtra"}}leakcanary/shark/-android-reference-matchers/-p-l-a-y-e-r_-b-a-s-e/index.md
 $dokka.location:shark/AndroidReferenceMatchers.RAZER_TEXT_KEY_LISTENER__MCONTEXT///PointingToDeclaration/{"org.jetbrains.dokka.links.EnumEntryDRIExtra":{"key":"org.jetbrains.dokka.links.EnumEntryDRIExtra"}}leakcanary/shark/-android-reference-matchers/-r-a-z-e-r_-t-e-x-t_-k-e-y_-l-i-s-t-e-n-e-r__-m-c-o-n-t-e-x-t/index.md
@@ -540,6 +543,7 @@
 $dokka.location:shark/AndroidReferenceMatchers.TEXT_TO_SPEECH///PointingToDeclaration/{"org.jetbrains.dokka.links.EnumEntryDRIExtra":{"key":"org.jetbrains.dokka.links.EnumEntryDRIExtra"}}leakcanary/shark/-android-reference-matchers/-t-e-x-t_-t-o_-s-p-e-e-c-h/index.md
 $dokka.location:shark/AndroidReferenceMatchers.TEXT_VIEW__MLAST_HOVERED_VIEW///PointingToDeclaration/{"org.jetbrains.dokka.links.EnumEntryDRIExtra":{"key":"org.jetbrains.dokka.links.EnumEntryDRIExtra"}}leakcanary/shark/-android-reference-matchers/-t-e-x-t_-v-i-e-w__-m-l-a-s-t_-h-o-v-e-r-e-d_-v-i-e-w/index.md
 $dokka.location:shark/AndroidReferenceMatchers.TOAST_TN///PointingToDeclaration/{"org.jetbrains.dokka.links.EnumEntryDRIExtra":{"key":"org.jetbrains.dokka.links.EnumEntryDRIExtra"}}leakcanary/shark/-android-reference-matchers/-t-o-a-s-t_-t-n/index.md
+$dokka.location:shark/AndroidReferenceMatchers.UI_MODE_MANAGER///PointingToDeclaration/{"org.jetbrains.dokka.links.EnumEntryDRIExtra":{"key":"org.jetbrains.dokka.links.EnumEntryDRIExtra"}}leakcanary/shark/-android-reference-matchers/-u-i_-m-o-d-e_-m-a-n-a-g-e-r/index.md
 $dokka.location:shark/AndroidReferenceMatchers.USER_MANAGER__SINSTANCE///PointingToDeclaration/{"org.jetbrains.dokka.links.EnumEntryDRIExtra":{"key":"org.jetbrains.dokka.links.EnumEntryDRIExtra"}}leakcanary/shark/-android-reference-matchers/-u-s-e-r_-m-a-n-a-g-e-r__-s-i-n-s-t-a-n-c-e/index.md
 $dokka.location:shark/AndroidReferenceMatchers.VIEWLOCATIONHOLDER_ROOT///PointingToDeclaration/{"org.jetbrains.dokka.links.EnumEntryDRIExtra":{"key":"org.jetbrains.dokka.links.EnumEntryDRIExtra"}}leakcanary/shark/-android-reference-matchers/-v-i-e-w-l-o-c-a-t-i-o-n-h-o-l-d-e-r_-r-o-o-t/index.md
 $dokka.location:shark/AndroidReferenceMatchers.VIEW_CONFIGURATION__MCONTEXT///PointingToDeclaration/{"org.jetbrains.dokka.links.EnumEntryDRIExtra":{"key":"org.jetbrains.dokka.links.EnumEntryDRIExtra"}}leakcanary/shark/-android-reference-matchers/-v-i-e-w_-c-o-n-f-i-g-u-r-a-t-i-o-n__-m-c-o-n-t-e-x-t/index.md
diff --git a/api/shark/-analyze-command/-analyze-command/index.html b/api/shark/-analyze-command/-analyze-command/index.html
index 825ee92..ea3315f 100644
--- a/api/shark/-analyze-command/-analyze-command/index.html
+++ b/api/shark/-analyze-command/-analyze-command/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-analyze-command/-companion/analyze/index.html b/api/shark/-analyze-command/-companion/analyze/index.html
index d3ec934..d7f8c6b 100644
--- a/api/shark/-analyze-command/-companion/analyze/index.html
+++ b/api/shark/-analyze-command/-companion/analyze/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-analyze-command/-companion/index.html b/api/shark/-analyze-command/-companion/index.html
index 87723ff..14bbef2 100644
--- a/api/shark/-analyze-command/-companion/index.html
+++ b/api/shark/-analyze-command/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-analyze-command/index.html b/api/shark/-analyze-command/index.html
index 45e8363..6198bcc 100644
--- a/api/shark/-analyze-command/index.html
+++ b/api/shark/-analyze-command/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-analyze-command/run/index.html b/api/shark/-analyze-command/run/index.html
index 87cd164..55386a4 100644
--- a/api/shark/-analyze-command/run/index.html
+++ b/api/shark/-analyze-command/run/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-build-mirror/-android-build-mirror/index.html b/api/shark/-android-build-mirror/-android-build-mirror/index.html
index fd2aeb1..4d77415 100644
--- a/api/shark/-android-build-mirror/-android-build-mirror/index.html
+++ b/api/shark/-android-build-mirror/-android-build-mirror/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-build-mirror/-companion/from-heap-graph/index.html b/api/shark/-android-build-mirror/-companion/from-heap-graph/index.html
index 5d53836..540417a 100644
--- a/api/shark/-android-build-mirror/-companion/from-heap-graph/index.html
+++ b/api/shark/-android-build-mirror/-companion/from-heap-graph/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-build-mirror/-companion/index.html b/api/shark/-android-build-mirror/-companion/index.html
index da51461..1ab079a 100644
--- a/api/shark/-android-build-mirror/-companion/index.html
+++ b/api/shark/-android-build-mirror/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-build-mirror/id/index.html b/api/shark/-android-build-mirror/id/index.html
index 4675fed..123935d 100644
--- a/api/shark/-android-build-mirror/id/index.html
+++ b/api/shark/-android-build-mirror/id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-build-mirror/index.html b/api/shark/-android-build-mirror/index.html
index 7ff6e11..b22cb11 100644
--- a/api/shark/-android-build-mirror/index.html
+++ b/api/shark/-android-build-mirror/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-build-mirror/manufacturer/index.html b/api/shark/-android-build-mirror/manufacturer/index.html
index 67ed6fb..b12b5c0 100644
--- a/api/shark/-android-build-mirror/manufacturer/index.html
+++ b/api/shark/-android-build-mirror/manufacturer/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-build-mirror/sdk-int/index.html b/api/shark/-android-build-mirror/sdk-int/index.html
index e1415f7..276d0dd 100644
--- a/api/shark/-android-build-mirror/sdk-int/index.html
+++ b/api/shark/-android-build-mirror/sdk-int/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-metadata-extractor/extract-metadata/index.html b/api/shark/-android-metadata-extractor/extract-metadata/index.html
index cb7d3b7..dee0b4b 100644
--- a/api/shark/-android-metadata-extractor/extract-metadata/index.html
+++ b/api/shark/-android-metadata-extractor/extract-metadata/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-metadata-extractor/index.html b/api/shark/-android-metadata-extractor/index.html
index 79c4513..e7a1aa3 100644
--- a/api/shark/-android-metadata-extractor/index.html
+++ b/api/shark/-android-metadata-extractor/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y/index.html b/api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y/index.html
index bfad1e3..3e7cc3a 100644
--- a/api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y/index.html
+++ b/api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y/inspect/index.html b/api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y/inspect/index.html
index 47f2bc8..ca71cfb 100644
--- a/api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y/inspect/index.html
+++ b/api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y/inspect/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y_-t-h-r-e-a-d/index.html b/api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y_-t-h-r-e-a-d/index.html
index a1ba938..638d067 100644
--- a/api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y_-t-h-r-e-a-d/index.html
+++ b/api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y_-t-h-r-e-a-d/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y_-t-h-r-e-a-d/inspect/index.html b/api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y_-t-h-r-e-a-d/inspect/index.html
index 3d9e8c4..9c9352a 100644
--- a/api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y_-t-h-r-e-a-d/inspect/index.html
+++ b/api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y_-t-h-r-e-a-d/inspect/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-a-n-d-r-o-i-d-x_-f-r-a-g-m-e-n-t/index.html b/api/shark/-android-object-inspectors/-a-n-d-r-o-i-d-x_-f-r-a-g-m-e-n-t/index.html
index 1eab16c..b557b4d 100644
--- a/api/shark/-android-object-inspectors/-a-n-d-r-o-i-d-x_-f-r-a-g-m-e-n-t/index.html
+++ b/api/shark/-android-object-inspectors/-a-n-d-r-o-i-d-x_-f-r-a-g-m-e-n-t/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-a-n-d-r-o-i-d-x_-f-r-a-g-m-e-n-t/inspect/index.html b/api/shark/-android-object-inspectors/-a-n-d-r-o-i-d-x_-f-r-a-g-m-e-n-t/inspect/index.html
index 27451ee..c33a1ee 100644
--- a/api/shark/-android-object-inspectors/-a-n-d-r-o-i-d-x_-f-r-a-g-m-e-n-t/inspect/index.html
+++ b/api/shark/-android-object-inspectors/-a-n-d-r-o-i-d-x_-f-r-a-g-m-e-n-t/inspect/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-a-n-i-m-a-t-o-r/index.html b/api/shark/-android-object-inspectors/-a-n-i-m-a-t-o-r/index.html
index 9e2ce33..bc6a795 100644
--- a/api/shark/-android-object-inspectors/-a-n-i-m-a-t-o-r/index.html
+++ b/api/shark/-android-object-inspectors/-a-n-i-m-a-t-o-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-a-n-i-m-a-t-o-r/inspect/index.html b/api/shark/-android-object-inspectors/-a-n-i-m-a-t-o-r/inspect/index.html
index e617608..35b47e3 100644
--- a/api/shark/-android-object-inspectors/-a-n-i-m-a-t-o-r/inspect/index.html
+++ b/api/shark/-android-object-inspectors/-a-n-i-m-a-t-o-r/inspect/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n/index.html b/api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n/index.html
index da390f6..0428e90 100644
--- a/api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n/index.html
+++ b/api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n/inspect/index.html b/api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n/inspect/index.html
index 2a5fe4b..d54d845 100644
--- a/api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n/inspect/index.html
+++ b/api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n/inspect/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n_-p-a-c-k-a-g-e_-m-a-n-a-g-e-r/index.html b/api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n_-p-a-c-k-a-g-e_-m-a-n-a-g-e-r/index.html
index f30b039..1d6aa0a 100644
--- a/api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n_-p-a-c-k-a-g-e_-m-a-n-a-g-e-r/index.html
+++ b/api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n_-p-a-c-k-a-g-e_-m-a-n-a-g-e-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n_-p-a-c-k-a-g-e_-m-a-n-a-g-e-r/inspect/index.html b/api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n_-p-a-c-k-a-g-e_-m-a-n-a-g-e-r/inspect/index.html
index 1ad2d1b..8ffcfff 100644
--- a/api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n_-p-a-c-k-a-g-e_-m-a-n-a-g-e-r/inspect/index.html
+++ b/api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n_-p-a-c-k-a-g-e_-m-a-n-a-g-e-r/inspect/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-c-o-m-p-o-s-i-t-i-o-n_-i-m-p-l/index.html b/api/shark/-android-object-inspectors/-c-o-m-p-o-s-i-t-i-o-n_-i-m-p-l/index.html
index c91e1dc..e8885b5 100644
--- a/api/shark/-android-object-inspectors/-c-o-m-p-o-s-i-t-i-o-n_-i-m-p-l/index.html
+++ b/api/shark/-android-object-inspectors/-c-o-m-p-o-s-i-t-i-o-n_-i-m-p-l/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-c-o-m-p-o-s-i-t-i-o-n_-i-m-p-l/inspect/index.html b/api/shark/-android-object-inspectors/-c-o-m-p-o-s-i-t-i-o-n_-i-m-p-l/inspect/index.html
index 6a122e1..8c85d62 100644
--- a/api/shark/-android-object-inspectors/-c-o-m-p-o-s-i-t-i-o-n_-i-m-p-l/inspect/index.html
+++ b/api/shark/-android-object-inspectors/-c-o-m-p-o-s-i-t-i-o-n_-i-m-p-l/inspect/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-f-i-e-l-d/index.html b/api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-f-i-e-l-d/index.html
index cf0d65f..d97a05b 100644
--- a/api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-f-i-e-l-d/index.html
+++ b/api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-f-i-e-l-d/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-f-i-e-l-d/inspect/index.html b/api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-f-i-e-l-d/inspect/index.html
index 974d2af..185dcc6 100644
--- a/api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-f-i-e-l-d/inspect/index.html
+++ b/api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-f-i-e-l-d/inspect/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-i-m-p-l/index.html b/api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-i-m-p-l/index.html
index 1a3963e..16460fe 100644
--- a/api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-i-m-p-l/index.html
+++ b/api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-i-m-p-l/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-i-m-p-l/inspect/index.html b/api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-i-m-p-l/inspect/index.html
index 2b49b91..2b5746c 100644
--- a/api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-i-m-p-l/inspect/index.html
+++ b/api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-i-m-p-l/inspect/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-w-r-a-p-p-e-r/index.html b/api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-w-r-a-p-p-e-r/index.html
index 223c95f..c8ed70c 100644
--- a/api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-w-r-a-p-p-e-r/index.html
+++ b/api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-w-r-a-p-p-e-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-w-r-a-p-p-e-r/inspect/index.html b/api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-w-r-a-p-p-e-r/inspect/index.html
index 3997ab5..8b30f86 100644
--- a/api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-w-r-a-p-p-e-r/inspect/index.html
+++ b/api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-w-r-a-p-p-e-r/inspect/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-c-o-o-r-d-i-n-a-t-o-r/index.html b/api/shark/-android-object-inspectors/-c-o-o-r-d-i-n-a-t-o-r/index.html
index 7f0d2e3..50503ad 100644
--- a/api/shark/-android-object-inspectors/-c-o-o-r-d-i-n-a-t-o-r/index.html
+++ b/api/shark/-android-object-inspectors/-c-o-o-r-d-i-n-a-t-o-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-c-o-o-r-d-i-n-a-t-o-r/inspect/index.html b/api/shark/-android-object-inspectors/-c-o-o-r-d-i-n-a-t-o-r/inspect/index.html
index 83768ea..366e65e 100644
--- a/api/shark/-android-object-inspectors/-c-o-o-r-d-i-n-a-t-o-r/inspect/index.html
+++ b/api/shark/-android-object-inspectors/-c-o-o-r-d-i-n-a-t-o-r/inspect/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-companion/app-defaults/index.html b/api/shark/-android-object-inspectors/-companion/app-defaults/index.html
index ac9aa21..bb305e4 100644
--- a/api/shark/-android-object-inspectors/-companion/app-defaults/index.html
+++ b/api/shark/-android-object-inspectors/-companion/app-defaults/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-companion/app-leaking-object-filters/index.html b/api/shark/-android-object-inspectors/-companion/app-leaking-object-filters/index.html
index 9d5679f..c519c97 100644
--- a/api/shark/-android-object-inspectors/-companion/app-leaking-object-filters/index.html
+++ b/api/shark/-android-object-inspectors/-companion/app-leaking-object-filters/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-companion/create-leaking-object-filters/index.html b/api/shark/-android-object-inspectors/-companion/create-leaking-object-filters/index.html
index 2cd748c..7d9cfeb 100644
--- a/api/shark/-android-object-inspectors/-companion/create-leaking-object-filters/index.html
+++ b/api/shark/-android-object-inspectors/-companion/create-leaking-object-filters/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-companion/index.html b/api/shark/-android-object-inspectors/-companion/index.html
index 7206e73..c4edfad 100644
--- a/api/shark/-android-object-inspectors/-companion/index.html
+++ b/api/shark/-android-object-inspectors/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-d-i-a-l-o-g/index.html b/api/shark/-android-object-inspectors/-d-i-a-l-o-g/index.html
index 9712567..d33290b 100644
--- a/api/shark/-android-object-inspectors/-d-i-a-l-o-g/index.html
+++ b/api/shark/-android-object-inspectors/-d-i-a-l-o-g/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-d-i-a-l-o-g/inspect/index.html b/api/shark/-android-object-inspectors/-d-i-a-l-o-g/inspect/index.html
index 6705cfd..b685cee 100644
--- a/api/shark/-android-object-inspectors/-d-i-a-l-o-g/inspect/index.html
+++ b/api/shark/-android-object-inspectors/-d-i-a-l-o-g/inspect/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-e-d-i-t-o-r/index.html b/api/shark/-android-object-inspectors/-e-d-i-t-o-r/index.html
index 5665680..05717af 100644
--- a/api/shark/-android-object-inspectors/-e-d-i-t-o-r/index.html
+++ b/api/shark/-android-object-inspectors/-e-d-i-t-o-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-e-d-i-t-o-r/inspect/index.html b/api/shark/-android-object-inspectors/-e-d-i-t-o-r/inspect/index.html
index 309ed6e..55acc73 100644
--- a/api/shark/-android-object-inspectors/-e-d-i-t-o-r/inspect/index.html
+++ b/api/shark/-android-object-inspectors/-e-d-i-t-o-r/inspect/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-f-r-a-g-m-e-n-t/index.html b/api/shark/-android-object-inspectors/-f-r-a-g-m-e-n-t/index.html
index 4e6a405..207abe2 100644
--- a/api/shark/-android-object-inspectors/-f-r-a-g-m-e-n-t/index.html
+++ b/api/shark/-android-object-inspectors/-f-r-a-g-m-e-n-t/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-f-r-a-g-m-e-n-t/inspect/index.html b/api/shark/-android-object-inspectors/-f-r-a-g-m-e-n-t/inspect/index.html
index fb0826e..184190d 100644
--- a/api/shark/-android-object-inspectors/-f-r-a-g-m-e-n-t/inspect/index.html
+++ b/api/shark/-android-object-inspectors/-f-r-a-g-m-e-n-t/inspect/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-i-n-p-u-t_-m-e-t-h-o-d_-m-a-n-a-g-e-r/index.html b/api/shark/-android-object-inspectors/-i-n-p-u-t_-m-e-t-h-o-d_-m-a-n-a-g-e-r/index.html
index e4d4dff..bfb6eff 100644
--- a/api/shark/-android-object-inspectors/-i-n-p-u-t_-m-e-t-h-o-d_-m-a-n-a-g-e-r/index.html
+++ b/api/shark/-android-object-inspectors/-i-n-p-u-t_-m-e-t-h-o-d_-m-a-n-a-g-e-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-i-n-p-u-t_-m-e-t-h-o-d_-m-a-n-a-g-e-r/inspect/index.html b/api/shark/-android-object-inspectors/-i-n-p-u-t_-m-e-t-h-o-d_-m-a-n-a-g-e-r/inspect/index.html
index cfbda96..ff90125 100644
--- a/api/shark/-android-object-inspectors/-i-n-p-u-t_-m-e-t-h-o-d_-m-a-n-a-g-e-r/inspect/index.html
+++ b/api/shark/-android-object-inspectors/-i-n-p-u-t_-m-e-t-h-o-d_-m-a-n-a-g-e-r/inspect/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-l-i-f-e-c-y-c-l-e_-r-e-g-i-s-t-r-y/index.html b/api/shark/-android-object-inspectors/-l-i-f-e-c-y-c-l-e_-r-e-g-i-s-t-r-y/index.html
index 8914246..5cc17aa 100644
--- a/api/shark/-android-object-inspectors/-l-i-f-e-c-y-c-l-e_-r-e-g-i-s-t-r-y/index.html
+++ b/api/shark/-android-object-inspectors/-l-i-f-e-c-y-c-l-e_-r-e-g-i-s-t-r-y/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-l-i-f-e-c-y-c-l-e_-r-e-g-i-s-t-r-y/inspect/index.html b/api/shark/-android-object-inspectors/-l-i-f-e-c-y-c-l-e_-r-e-g-i-s-t-r-y/inspect/index.html
index 8354dae..9a13852 100644
--- a/api/shark/-android-object-inspectors/-l-i-f-e-c-y-c-l-e_-r-e-g-i-s-t-r-y/inspect/index.html
+++ b/api/shark/-android-object-inspectors/-l-i-f-e-c-y-c-l-e_-r-e-g-i-s-t-r-y/inspect/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-l-o-a-d-e-d_-a-p-k/index.html b/api/shark/-android-object-inspectors/-l-o-a-d-e-d_-a-p-k/index.html
index acb7c59..a72e80e 100644
--- a/api/shark/-android-object-inspectors/-l-o-a-d-e-d_-a-p-k/index.html
+++ b/api/shark/-android-object-inspectors/-l-o-a-d-e-d_-a-p-k/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-l-o-a-d-e-d_-a-p-k/inspect/index.html b/api/shark/-android-object-inspectors/-l-o-a-d-e-d_-a-p-k/inspect/index.html
index adbe5f3..fd04b46 100644
--- a/api/shark/-android-object-inspectors/-l-o-a-d-e-d_-a-p-k/inspect/index.html
+++ b/api/shark/-android-object-inspectors/-l-o-a-d-e-d_-a-p-k/inspect/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-m-a-i-n_-t-h-r-e-a-d/index.html b/api/shark/-android-object-inspectors/-m-a-i-n_-t-h-r-e-a-d/index.html
index 640fa56..d479c7d 100644
--- a/api/shark/-android-object-inspectors/-m-a-i-n_-t-h-r-e-a-d/index.html
+++ b/api/shark/-android-object-inspectors/-m-a-i-n_-t-h-r-e-a-d/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-m-a-i-n_-t-h-r-e-a-d/inspect/index.html b/api/shark/-android-object-inspectors/-m-a-i-n_-t-h-r-e-a-d/inspect/index.html
index 267a85a..4ecc461 100644
--- a/api/shark/-android-object-inspectors/-m-a-i-n_-t-h-r-e-a-d/inspect/index.html
+++ b/api/shark/-android-object-inspectors/-m-a-i-n_-t-h-r-e-a-d/inspect/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-m-e-s-s-a-g-e/index.html b/api/shark/-android-object-inspectors/-m-e-s-s-a-g-e/index.html
index db255cd..4a4af71 100644
--- a/api/shark/-android-object-inspectors/-m-e-s-s-a-g-e/index.html
+++ b/api/shark/-android-object-inspectors/-m-e-s-s-a-g-e/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-m-e-s-s-a-g-e/inspect/index.html b/api/shark/-android-object-inspectors/-m-e-s-s-a-g-e/inspect/index.html
index 769bf92..76233ef 100644
--- a/api/shark/-android-object-inspectors/-m-e-s-s-a-g-e/inspect/index.html
+++ b/api/shark/-android-object-inspectors/-m-e-s-s-a-g-e/inspect/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-m-e-s-s-a-g-e_-q-u-e-u-e/index.html b/api/shark/-android-object-inspectors/-m-e-s-s-a-g-e_-q-u-e-u-e/index.html
index b06f354..0127a25 100644
--- a/api/shark/-android-object-inspectors/-m-e-s-s-a-g-e_-q-u-e-u-e/index.html
+++ b/api/shark/-android-object-inspectors/-m-e-s-s-a-g-e_-q-u-e-u-e/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-m-e-s-s-a-g-e_-q-u-e-u-e/inspect/index.html b/api/shark/-android-object-inspectors/-m-e-s-s-a-g-e_-q-u-e-u-e/inspect/index.html
index bbcc103..b55f5e9 100644
--- a/api/shark/-android-object-inspectors/-m-e-s-s-a-g-e_-q-u-e-u-e/inspect/index.html
+++ b/api/shark/-android-object-inspectors/-m-e-s-s-a-g-e_-q-u-e-u-e/inspect/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-m-o-r-t-a-r_-p-r-e-s-e-n-t-e-r/index.html b/api/shark/-android-object-inspectors/-m-o-r-t-a-r_-p-r-e-s-e-n-t-e-r/index.html
index 85fecc3..4b14f83 100644
--- a/api/shark/-android-object-inspectors/-m-o-r-t-a-r_-p-r-e-s-e-n-t-e-r/index.html
+++ b/api/shark/-android-object-inspectors/-m-o-r-t-a-r_-p-r-e-s-e-n-t-e-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-m-o-r-t-a-r_-p-r-e-s-e-n-t-e-r/inspect/index.html b/api/shark/-android-object-inspectors/-m-o-r-t-a-r_-p-r-e-s-e-n-t-e-r/inspect/index.html
index 65202d9..2f73924 100644
--- a/api/shark/-android-object-inspectors/-m-o-r-t-a-r_-p-r-e-s-e-n-t-e-r/inspect/index.html
+++ b/api/shark/-android-object-inspectors/-m-o-r-t-a-r_-p-r-e-s-e-n-t-e-r/inspect/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-m-o-r-t-a-r_-s-c-o-p-e/index.html b/api/shark/-android-object-inspectors/-m-o-r-t-a-r_-s-c-o-p-e/index.html
index bc98707..8f76e18 100644
--- a/api/shark/-android-object-inspectors/-m-o-r-t-a-r_-s-c-o-p-e/index.html
+++ b/api/shark/-android-object-inspectors/-m-o-r-t-a-r_-s-c-o-p-e/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-m-o-r-t-a-r_-s-c-o-p-e/inspect/index.html b/api/shark/-android-object-inspectors/-m-o-r-t-a-r_-s-c-o-p-e/inspect/index.html
index 375efe8..9730cf3 100644
--- a/api/shark/-android-object-inspectors/-m-o-r-t-a-r_-s-c-o-p-e/inspect/index.html
+++ b/api/shark/-android-object-inspectors/-m-o-r-t-a-r_-s-c-o-p-e/inspect/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-o-b-j-e-c-t_-a-n-i-m-a-t-o-r/index.html b/api/shark/-android-object-inspectors/-o-b-j-e-c-t_-a-n-i-m-a-t-o-r/index.html
index f2550a6..53cc39a 100644
--- a/api/shark/-android-object-inspectors/-o-b-j-e-c-t_-a-n-i-m-a-t-o-r/index.html
+++ b/api/shark/-android-object-inspectors/-o-b-j-e-c-t_-a-n-i-m-a-t-o-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-o-b-j-e-c-t_-a-n-i-m-a-t-o-r/inspect/index.html b/api/shark/-android-object-inspectors/-o-b-j-e-c-t_-a-n-i-m-a-t-o-r/inspect/index.html
index edaccd8..3a6d432 100644
--- a/api/shark/-android-object-inspectors/-o-b-j-e-c-t_-a-n-i-m-a-t-o-r/inspect/index.html
+++ b/api/shark/-android-object-inspectors/-o-b-j-e-c-t_-a-n-i-m-a-t-o-r/inspect/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-r-e-c-o-m-p-o-s-e-r/index.html b/api/shark/-android-object-inspectors/-r-e-c-o-m-p-o-s-e-r/index.html
index 029faa7..9c249f9 100644
--- a/api/shark/-android-object-inspectors/-r-e-c-o-m-p-o-s-e-r/index.html
+++ b/api/shark/-android-object-inspectors/-r-e-c-o-m-p-o-s-e-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-r-e-c-o-m-p-o-s-e-r/inspect/index.html b/api/shark/-android-object-inspectors/-r-e-c-o-m-p-o-s-e-r/inspect/index.html
index f6bb427..75f740f 100644
--- a/api/shark/-android-object-inspectors/-r-e-c-o-m-p-o-s-e-r/inspect/index.html
+++ b/api/shark/-android-object-inspectors/-r-e-c-o-m-p-o-s-e-r/inspect/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-s-e-r-v-i-c-e/index.html b/api/shark/-android-object-inspectors/-s-e-r-v-i-c-e/index.html
index ef587b3..c2f3e48 100644
--- a/api/shark/-android-object-inspectors/-s-e-r-v-i-c-e/index.html
+++ b/api/shark/-android-object-inspectors/-s-e-r-v-i-c-e/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-s-e-r-v-i-c-e/inspect/index.html b/api/shark/-android-object-inspectors/-s-e-r-v-i-c-e/inspect/index.html
index 98f9198..30d9cef 100644
--- a/api/shark/-android-object-inspectors/-s-e-r-v-i-c-e/inspect/index.html
+++ b/api/shark/-android-object-inspectors/-s-e-r-v-i-c-e/inspect/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-s-t-u-b/index.html b/api/shark/-android-object-inspectors/-s-t-u-b/index.html
index 56c1445..05de7ff 100644
--- a/api/shark/-android-object-inspectors/-s-t-u-b/index.html
+++ b/api/shark/-android-object-inspectors/-s-t-u-b/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-s-t-u-b/inspect/index.html b/api/shark/-android-object-inspectors/-s-t-u-b/inspect/index.html
index cc5ef30..c7a228b 100644
--- a/api/shark/-android-object-inspectors/-s-t-u-b/inspect/index.html
+++ b/api/shark/-android-object-inspectors/-s-t-u-b/inspect/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-s-u-p-p-o-r-t_-f-r-a-g-m-e-n-t/index.html b/api/shark/-android-object-inspectors/-s-u-p-p-o-r-t_-f-r-a-g-m-e-n-t/index.html
index d6ae575..e69e0e7 100644
--- a/api/shark/-android-object-inspectors/-s-u-p-p-o-r-t_-f-r-a-g-m-e-n-t/index.html
+++ b/api/shark/-android-object-inspectors/-s-u-p-p-o-r-t_-f-r-a-g-m-e-n-t/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-s-u-p-p-o-r-t_-f-r-a-g-m-e-n-t/inspect/index.html b/api/shark/-android-object-inspectors/-s-u-p-p-o-r-t_-f-r-a-g-m-e-n-t/inspect/index.html
index a59a1c6..a2a1c3f 100644
--- a/api/shark/-android-object-inspectors/-s-u-p-p-o-r-t_-f-r-a-g-m-e-n-t/inspect/index.html
+++ b/api/shark/-android-object-inspectors/-s-u-p-p-o-r-t_-f-r-a-g-m-e-n-t/inspect/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-t-o-a-s-t/index.html b/api/shark/-android-object-inspectors/-t-o-a-s-t/index.html
index b2e6dce..6f1d2c3 100644
--- a/api/shark/-android-object-inspectors/-t-o-a-s-t/index.html
+++ b/api/shark/-android-object-inspectors/-t-o-a-s-t/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-t-o-a-s-t/inspect/index.html b/api/shark/-android-object-inspectors/-t-o-a-s-t/inspect/index.html
index 353d19a..1eab957 100644
--- a/api/shark/-android-object-inspectors/-t-o-a-s-t/inspect/index.html
+++ b/api/shark/-android-object-inspectors/-t-o-a-s-t/inspect/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-v-i-e-w/index.html b/api/shark/-android-object-inspectors/-v-i-e-w/index.html
index a1a5b6d..873a10e 100644
--- a/api/shark/-android-object-inspectors/-v-i-e-w/index.html
+++ b/api/shark/-android-object-inspectors/-v-i-e-w/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-v-i-e-w/inspect/index.html b/api/shark/-android-object-inspectors/-v-i-e-w/inspect/index.html
index 08f52b9..45ff61c 100644
--- a/api/shark/-android-object-inspectors/-v-i-e-w/inspect/index.html
+++ b/api/shark/-android-object-inspectors/-v-i-e-w/inspect/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-v-i-e-w_-r-o-o-t_-i-m-p-l/index.html b/api/shark/-android-object-inspectors/-v-i-e-w_-r-o-o-t_-i-m-p-l/index.html
index 516227e..0973b88 100644
--- a/api/shark/-android-object-inspectors/-v-i-e-w_-r-o-o-t_-i-m-p-l/index.html
+++ b/api/shark/-android-object-inspectors/-v-i-e-w_-r-o-o-t_-i-m-p-l/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-v-i-e-w_-r-o-o-t_-i-m-p-l/inspect/index.html b/api/shark/-android-object-inspectors/-v-i-e-w_-r-o-o-t_-i-m-p-l/inspect/index.html
index 58114bd..78618e0 100644
--- a/api/shark/-android-object-inspectors/-v-i-e-w_-r-o-o-t_-i-m-p-l/inspect/index.html
+++ b/api/shark/-android-object-inspectors/-v-i-e-w_-r-o-o-t_-i-m-p-l/inspect/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-w-i-n-d-o-w/index.html b/api/shark/-android-object-inspectors/-w-i-n-d-o-w/index.html
index e347ba7..e9426ec 100644
--- a/api/shark/-android-object-inspectors/-w-i-n-d-o-w/index.html
+++ b/api/shark/-android-object-inspectors/-w-i-n-d-o-w/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/-w-i-n-d-o-w/inspect/index.html b/api/shark/-android-object-inspectors/-w-i-n-d-o-w/inspect/index.html
index eb68b7a..2c44809 100644
--- a/api/shark/-android-object-inspectors/-w-i-n-d-o-w/inspect/index.html
+++ b/api/shark/-android-object-inspectors/-w-i-n-d-o-w/inspect/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-object-inspectors/index.html b/api/shark/-android-object-inspectors/index.html
index 9771e5d..f0db2c9 100644
--- a/api/shark/-android-object-inspectors/index.html
+++ b/api/shark/-android-object-inspectors/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-a-c-c-e-s-s-i-b-i-l-i-t-y_-i-t-e-r-a-t-o-r-s/index.html b/api/shark/-android-reference-matchers/-a-c-c-e-s-s-i-b-i-l-i-t-y_-i-t-e-r-a-t-o-r-s/index.html
index a8c622a..39c6549 100644
--- a/api/shark/-android-reference-matchers/-a-c-c-e-s-s-i-b-i-l-i-t-y_-i-t-e-r-a-t-o-r-s/index.html
+++ b/api/shark/-android-reference-matchers/-a-c-c-e-s-s-i-b-i-l-i-t-y_-i-t-e-r-a-t-o-r-s/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-a-c-c-e-s-s-i-b-i-l-i-t-y_-n-o-d-e_-i-d_-m-a-n-a-g-e-r/index.html b/api/shark/-android-reference-matchers/-a-c-c-e-s-s-i-b-i-l-i-t-y_-n-o-d-e_-i-d_-m-a-n-a-g-e-r/index.html
index 331ef74..b03ac5c 100644
--- a/api/shark/-android-reference-matchers/-a-c-c-e-s-s-i-b-i-l-i-t-y_-n-o-d-e_-i-d_-m-a-n-a-g-e-r/index.html
+++ b/api/shark/-android-reference-matchers/-a-c-c-e-s-s-i-b-i-l-i-t-y_-n-o-d-e_-i-d_-m-a-n-a-g-e-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-a-c-c-e-s-s-i-b-i-l-i-t-y_-n-o-d-e_-i-n-f-o__-m-o-r-i-g-i-n-a-l-t-e-x-t/index.html b/api/shark/-android-reference-matchers/-a-c-c-e-s-s-i-b-i-l-i-t-y_-n-o-d-e_-i-n-f-o__-m-o-r-i-g-i-n-a-l-t-e-x-t/index.html
index fd7a184..da5b999 100644
--- a/api/shark/-android-reference-matchers/-a-c-c-e-s-s-i-b-i-l-i-t-y_-n-o-d-e_-i-n-f-o__-m-o-r-i-g-i-n-a-l-t-e-x-t/index.html
+++ b/api/shark/-android-reference-matchers/-a-c-c-e-s-s-i-b-i-l-i-t-y_-n-o-d-e_-i-n-f-o__-m-o-r-i-g-i-n-a-l-t-e-x-t/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-a-c-c-o-u-n-t_-m-a-n-a-g-e-r/index.html b/api/shark/-android-reference-matchers/-a-c-c-o-u-n-t_-m-a-n-a-g-e-r/index.html
index db67064..675e0e4 100644
--- a/api/shark/-android-reference-matchers/-a-c-c-o-u-n-t_-m-a-n-a-g-e-r/index.html
+++ b/api/shark/-android-reference-matchers/-a-c-c-o-u-n-t_-m-a-n-a-g-e-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-a-c-c-o-u-n-t_-m-a-n-a-g-e-r__-a-m-s_-t-a-s-k__-r-e-s-p-o-n-s-e/index.html b/api/shark/-android-reference-matchers/-a-c-c-o-u-n-t_-m-a-n-a-g-e-r__-a-m-s_-t-a-s-k__-r-e-s-p-o-n-s-e/index.html
index b54e7adf..0725a16 100644
--- a/api/shark/-android-reference-matchers/-a-c-c-o-u-n-t_-m-a-n-a-g-e-r__-a-m-s_-t-a-s-k__-r-e-s-p-o-n-s-e/index.html
+++ b/api/shark/-android-reference-matchers/-a-c-c-o-u-n-t_-m-a-n-a-g-e-r__-a-m-s_-t-a-s-k__-r-e-s-p-o-n-s-e/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-c-h-o-o-s-e_-m-o-d-e-l/index.html b/api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-c-h-o-o-s-e_-m-o-d-e-l/index.html
index 717994e..0388a17 100644
--- a/api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-c-h-o-o-s-e_-m-o-d-e-l/index.html
+++ b/api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-c-h-o-o-s-e_-m-o-d-e-l/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-m-a-n-a-g-e-r_-m-c-o-n-t-e-x-t/index.html b/api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-m-a-n-a-g-e-r_-m-c-o-n-t-e-x-t/index.html
index fdf17a9..aa52ce8 100644
--- a/api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-m-a-n-a-g-e-r_-m-c-o-n-t-e-x-t/index.html
+++ b/api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-m-a-n-a-g-e-r_-m-c-o-n-t-e-x-t/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-t-h-r-e-a-d__-m_-n-e-w_-a-c-t-i-v-i-t-i-e-s/index.html b/api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-t-h-r-e-a-d__-m_-n-e-w_-a-c-t-i-v-i-t-i-e-s/index.html
index 5da069c..e91a0e9 100644
--- a/api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-t-h-r-e-a-d__-m_-n-e-w_-a-c-t-i-v-i-t-i-e-s/index.html
+++ b/api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-t-h-r-e-a-d__-m_-n-e-w_-a-c-t-i-v-i-t-i-e-s/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-t-r-a-n-s-i-t-i-o-n_-s-t-a-t-e__-m_-e-x-i-t-i-n-g_-t-o_-v-i-e-w/index.html b/api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-t-r-a-n-s-i-t-i-o-n_-s-t-a-t-e__-m_-e-x-i-t-i-n-g_-t-o_-v-i-e-w/index.html
index 65f0bc3..6b285b7 100644
--- a/api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-t-r-a-n-s-i-t-i-o-n_-s-t-a-t-e__-m_-e-x-i-t-i-n-g_-t-o_-v-i-e-w/index.html
+++ b/api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-t-r-a-n-s-i-t-i-o-n_-s-t-a-t-e__-m_-e-x-i-t-i-n-g_-t-o_-v-i-e-w/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-a-n-i-m-a-t-i-o-n_-h-a-n-d-l-e-r__-a-n-i-m-a-t-o-r_-r-e-q-u-e-s-t-o-r-s/index.html b/api/shark/-android-reference-matchers/-a-n-i-m-a-t-i-o-n_-h-a-n-d-l-e-r__-a-n-i-m-a-t-o-r_-r-e-q-u-e-s-t-o-r-s/index.html
index 65a4abb..574bc89 100644
--- a/api/shark/-android-reference-matchers/-a-n-i-m-a-t-i-o-n_-h-a-n-d-l-e-r__-a-n-i-m-a-t-o-r_-r-e-q-u-e-s-t-o-r-s/index.html
+++ b/api/shark/-android-reference-matchers/-a-n-i-m-a-t-i-o-n_-h-a-n-d-l-e-r__-a-n-i-m-a-t-o-r_-r-e-q-u-e-s-t-o-r-s/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-a-p-p-l-i-c-a-t-i-o-n_-p-a-c-k-a-g-e_-m-a-n-a-g-e-r__-h-a-s_-s-y-s-t-e-m_-f-e-a-t-u-r-e_-q-u-e-r-y/index.html b/api/shark/-android-reference-matchers/-a-p-p-l-i-c-a-t-i-o-n_-p-a-c-k-a-g-e_-m-a-n-a-g-e-r__-h-a-s_-s-y-s-t-e-m_-f-e-a-t-u-r-e_-q-u-e-r-y/index.html
index acae8e5..67ec266 100644
--- a/api/shark/-android-reference-matchers/-a-p-p-l-i-c-a-t-i-o-n_-p-a-c-k-a-g-e_-m-a-n-a-g-e-r__-h-a-s_-s-y-s-t-e-m_-f-e-a-t-u-r-e_-q-u-e-r-y/index.html
+++ b/api/shark/-android-reference-matchers/-a-p-p-l-i-c-a-t-i-o-n_-p-a-c-k-a-g-e_-m-a-n-a-g-e-r__-h-a-s_-s-y-s-t-e-m_-f-e-a-t-u-r-e_-q-u-e-r-y/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-a-p-p_-o-p-s_-m-a-n-a-g-e-r__-c-a-l-l-b-a-c-k_-s-t-u-b/index.html b/api/shark/-android-reference-matchers/-a-p-p_-o-p-s_-m-a-n-a-g-e-r__-c-a-l-l-b-a-c-k_-s-t-u-b/index.html
index a4ae857..4f6cbcb 100644
--- a/api/shark/-android-reference-matchers/-a-p-p_-o-p-s_-m-a-n-a-g-e-r__-c-a-l-l-b-a-c-k_-s-t-u-b/index.html
+++ b/api/shark/-android-reference-matchers/-a-p-p_-o-p-s_-m-a-n-a-g-e-r__-c-a-l-l-b-a-c-k_-s-t-u-b/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-a-p-p_-w-i-d-g-e-t_-h-o-s-t_-c-a-l-l-b-a-c-k-s/index.html b/api/shark/-android-reference-matchers/-a-p-p_-w-i-d-g-e-t_-h-o-s-t_-c-a-l-l-b-a-c-k-s/index.html
index 2174b12..c4802b9 100644
--- a/api/shark/-android-reference-matchers/-a-p-p_-w-i-d-g-e-t_-h-o-s-t_-c-a-l-l-b-a-c-k-s/index.html
+++ b/api/shark/-android-reference-matchers/-a-p-p_-w-i-d-g-e-t_-h-o-s-t_-c-a-l-l-b-a-c-k-s/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-a-s-s-i-s-t_-s-t-r-u-c-t-u-r-e/index.html b/api/shark/-android-reference-matchers/-a-s-s-i-s-t_-s-t-r-u-c-t-u-r-e/index.html
index 29249ff..79714f0 100644
--- a/api/shark/-android-reference-matchers/-a-s-s-i-s-t_-s-t-r-u-c-t-u-r-e/index.html
+++ b/api/shark/-android-reference-matchers/-a-s-s-i-s-t_-s-t-r-u-c-t-u-r-e/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-a-u-d-i-o_-m-a-n-a-g-e-r/index.html b/api/shark/-android-reference-matchers/-a-u-d-i-o_-m-a-n-a-g-e-r/index.html
index c44479a..02a892b 100644
--- a/api/shark/-android-reference-matchers/-a-u-d-i-o_-m-a-n-a-g-e-r/index.html
+++ b/api/shark/-android-reference-matchers/-a-u-d-i-o_-m-a-n-a-g-e-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-a-u-d-i-o_-m-a-n-a-g-e-r__-m-c-o-n-t-e-x-t_-s-t-a-t-i-c/index.html b/api/shark/-android-reference-matchers/-a-u-d-i-o_-m-a-n-a-g-e-r__-m-c-o-n-t-e-x-t_-s-t-a-t-i-c/index.html
index f3776d2..8e01e71 100644
--- a/api/shark/-android-reference-matchers/-a-u-d-i-o_-m-a-n-a-g-e-r__-m-c-o-n-t-e-x-t_-s-t-a-t-i-c/index.html
+++ b/api/shark/-android-reference-matchers/-a-u-d-i-o_-m-a-n-a-g-e-r__-m-c-o-n-t-e-x-t_-s-t-a-t-i-c/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-a-w_-c-o-n-t-e-n-t-s_-p-o-s-t-e-d_-c-a-l-l-b-a-c-k/index.html b/api/shark/-android-reference-matchers/-a-w_-c-o-n-t-e-n-t-s_-p-o-s-t-e-d_-c-a-l-l-b-a-c-k/index.html
index eacf41c..58e6fa2 100644
--- a/api/shark/-android-reference-matchers/-a-w_-c-o-n-t-e-n-t-s_-p-o-s-t-e-d_-c-a-l-l-b-a-c-k/index.html
+++ b/api/shark/-android-reference-matchers/-a-w_-c-o-n-t-e-n-t-s_-p-o-s-t-e-d_-c-a-l-l-b-a-c-k/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-a-w_-c-o-n-t-e-n-t-s__-a0/index.html b/api/shark/-android-reference-matchers/-a-w_-c-o-n-t-e-n-t-s__-a0/index.html
index 57a4eae..af1662a 100644
--- a/api/shark/-android-reference-matchers/-a-w_-c-o-n-t-e-n-t-s__-a0/index.html
+++ b/api/shark/-android-reference-matchers/-a-w_-c-o-n-t-e-n-t-s__-a0/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-a-w_-r-e-s-o-u-r-c-e__-s-r-e-s-o-u-r-c-e-s/index.html b/api/shark/-android-reference-matchers/-a-w_-r-e-s-o-u-r-c-e__-s-r-e-s-o-u-r-c-e-s/index.html
index 514d3eb..40a106d 100644
--- a/api/shark/-android-reference-matchers/-a-w_-r-e-s-o-u-r-c-e__-s-r-e-s-o-u-r-c-e-s/index.html
+++ b/api/shark/-android-reference-matchers/-a-w_-r-e-s-o-u-r-c-e__-s-r-e-s-o-u-r-c-e-s/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-b-a-c-k-d-r-o-p_-f-r-a-m-e_-r-e-n-d-e-r-e-r__-m-d-e-c-o-r-v-i-e-w/index.html b/api/shark/-android-reference-matchers/-b-a-c-k-d-r-o-p_-f-r-a-m-e_-r-e-n-d-e-r-e-r__-m-d-e-c-o-r-v-i-e-w/index.html
index 7465a82..7a0ff15 100644
--- a/api/shark/-android-reference-matchers/-b-a-c-k-d-r-o-p_-f-r-a-m-e_-r-e-n-d-e-r-e-r__-m-d-e-c-o-r-v-i-e-w/index.html
+++ b/api/shark/-android-reference-matchers/-b-a-c-k-d-r-o-p_-f-r-a-m-e_-r-e-n-d-e-r-e-r__-m-d-e-c-o-r-v-i-e-w/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-b-i-o-m-e-t-r-i-c_-p-r-o-m-p-t/index.html b/api/shark/-android-reference-matchers/-b-i-o-m-e-t-r-i-c_-p-r-o-m-p-t/index.html
index c71aaf6..29f12ef 100644
--- a/api/shark/-android-reference-matchers/-b-i-o-m-e-t-r-i-c_-p-r-o-m-p-t/index.html
+++ b/api/shark/-android-reference-matchers/-b-i-o-m-e-t-r-i-c_-p-r-o-m-p-t/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-b-l-o-c-k-i-n-g_-q-u-e-u-e/index.html b/api/shark/-android-reference-matchers/-b-l-o-c-k-i-n-g_-q-u-e-u-e/index.html
index 9d2bd15..069fad6 100644
--- a/api/shark/-android-reference-matchers/-b-l-o-c-k-i-n-g_-q-u-e-u-e/index.html
+++ b/api/shark/-android-reference-matchers/-b-l-o-c-k-i-n-g_-q-u-e-u-e/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-b-u-b-b-l-e_-p-o-p-u-p_-h-e-l-p-e-r__-s-h-e-l-p-e-r/index.html b/api/shark/-android-reference-matchers/-b-u-b-b-l-e_-p-o-p-u-p_-h-e-l-p-e-r__-s-h-e-l-p-e-r/index.html
index 1d17179..b45acb1 100644
--- a/api/shark/-android-reference-matchers/-b-u-b-b-l-e_-p-o-p-u-p_-h-e-l-p-e-r__-s-h-e-l-p-e-r/index.html
+++ b/api/shark/-android-reference-matchers/-b-u-b-b-l-e_-p-o-p-u-p_-h-e-l-p-e-r__-s-h-e-l-p-e-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-c-l-i-p-b-o-a-r-d_-e-x_-m-a-n-a-g-e-r/index.html b/api/shark/-android-reference-matchers/-c-l-i-p-b-o-a-r-d_-e-x_-m-a-n-a-g-e-r/index.html
index 3031170..52205a9 100644
--- a/api/shark/-android-reference-matchers/-c-l-i-p-b-o-a-r-d_-e-x_-m-a-n-a-g-e-r/index.html
+++ b/api/shark/-android-reference-matchers/-c-l-i-p-b-o-a-r-d_-e-x_-m-a-n-a-g-e-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-c-l-i-p-b-o-a-r-d_-u-i_-m-a-n-a-g-e-r__-s-i-n-s-t-a-n-c-e/index.html b/api/shark/-android-reference-matchers/-c-l-i-p-b-o-a-r-d_-u-i_-m-a-n-a-g-e-r__-s-i-n-s-t-a-n-c-e/index.html
index 05cb04a..a46cb61 100644
--- a/api/shark/-android-reference-matchers/-c-l-i-p-b-o-a-r-d_-u-i_-m-a-n-a-g-e-r__-s-i-n-s-t-a-n-c-e/index.html
+++ b/api/shark/-android-reference-matchers/-c-l-i-p-b-o-a-r-d_-u-i_-m-a-n-a-g-e-r__-s-i-n-s-t-a-n-c-e/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-c-o-m-p-a-n-i-o-n_-d-e-v-i-c-e_-s-e-r-v-i-c-e__-s-t-u-b/index.html b/api/shark/-android-reference-matchers/-c-o-m-p-a-n-i-o-n_-d-e-v-i-c-e_-s-e-r-v-i-c-e__-s-t-u-b/index.html
index e19ac5e..eb0fe3c 100644
--- a/api/shark/-android-reference-matchers/-c-o-m-p-a-n-i-o-n_-d-e-v-i-c-e_-s-e-r-v-i-c-e__-s-t-u-b/index.html
+++ b/api/shark/-android-reference-matchers/-c-o-m-p-a-n-i-o-n_-d-e-v-i-c-e_-s-e-r-v-i-c-e__-s-t-u-b/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-c-o-n-n-e-c-t-i-v-i-t-y_-m-a-n-a-g-e-r_-c-a-l-l-b-a-c-k_-h-a-n-d-l-e-r/index.html b/api/shark/-android-reference-matchers/-c-o-n-n-e-c-t-i-v-i-t-y_-m-a-n-a-g-e-r_-c-a-l-l-b-a-c-k_-h-a-n-d-l-e-r/index.html
index a5790aa..6b2853b 100644
--- a/api/shark/-android-reference-matchers/-c-o-n-n-e-c-t-i-v-i-t-y_-m-a-n-a-g-e-r_-c-a-l-l-b-a-c-k_-h-a-n-d-l-e-r/index.html
+++ b/api/shark/-android-reference-matchers/-c-o-n-n-e-c-t-i-v-i-t-y_-m-a-n-a-g-e-r_-c-a-l-l-b-a-c-k_-h-a-n-d-l-e-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-c-o-n-n-e-c-t-i-v-i-t-y_-m-a-n-a-g-e-r__-s-i-n-s-t-a-n-c-e/index.html b/api/shark/-android-reference-matchers/-c-o-n-n-e-c-t-i-v-i-t-y_-m-a-n-a-g-e-r__-s-i-n-s-t-a-n-c-e/index.html
index 285cf3f..71682f2 100644
--- a/api/shark/-android-reference-matchers/-c-o-n-n-e-c-t-i-v-i-t-y_-m-a-n-a-g-e-r__-s-i-n-s-t-a-n-c-e/index.html
+++ b/api/shark/-android-reference-matchers/-c-o-n-n-e-c-t-i-v-i-t-y_-m-a-n-a-g-e-r__-s-i-n-s-t-a-n-c-e/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-c-o-n-t-r-o-l-l-e-d_-i-n-p-u-t_-c-o-n-n-e-c-t-i-o-n_-w-r-a-p-p-e-r/index.html b/api/shark/-android-reference-matchers/-c-o-n-t-r-o-l-l-e-d_-i-n-p-u-t_-c-o-n-n-e-c-t-i-o-n_-w-r-a-p-p-e-r/index.html
index 5228b5b..76eb0e8 100644
--- a/api/shark/-android-reference-matchers/-c-o-n-t-r-o-l-l-e-d_-i-n-p-u-t_-c-o-n-n-e-c-t-i-o-n_-w-r-a-p-p-e-r/index.html
+++ b/api/shark/-android-reference-matchers/-c-o-n-t-r-o-l-l-e-d_-i-n-p-u-t_-c-o-n-n-e-c-t-i-o-n_-w-r-a-p-p-e-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-companion/-h-m-d_-g-l-o-b-a-l/index.html b/api/shark/-android-reference-matchers/-companion/-h-m-d_-g-l-o-b-a-l/index.html
index 7703874..59f324d 100644
--- a/api/shark/-android-reference-matchers/-companion/-h-m-d_-g-l-o-b-a-l/index.html
+++ b/api/shark/-android-reference-matchers/-companion/-h-m-d_-g-l-o-b-a-l/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-companion/-h-u-a-w-e-i/index.html b/api/shark/-android-reference-matchers/-companion/-h-u-a-w-e-i/index.html
index 0e89959..9669ed2 100644
--- a/api/shark/-android-reference-matchers/-companion/-h-u-a-w-e-i/index.html
+++ b/api/shark/-android-reference-matchers/-companion/-h-u-a-w-e-i/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-companion/-i-n-f-i-n-i-x/index.html b/api/shark/-android-reference-matchers/-companion/-i-n-f-i-n-i-x/index.html
index 1c95157..94be38a 100644
--- a/api/shark/-android-reference-matchers/-companion/-i-n-f-i-n-i-x/index.html
+++ b/api/shark/-android-reference-matchers/-companion/-i-n-f-i-n-i-x/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-companion/-l-e-n-o-v-o/index.html b/api/shark/-android-reference-matchers/-companion/-l-e-n-o-v-o/index.html
index 9e17d84..730ea51 100644
--- a/api/shark/-android-reference-matchers/-companion/-l-e-n-o-v-o/index.html
+++ b/api/shark/-android-reference-matchers/-companion/-l-e-n-o-v-o/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-companion/-l-g/index.html b/api/shark/-android-reference-matchers/-companion/-l-g/index.html
index 0d0689e..44070a0 100644
--- a/api/shark/-android-reference-matchers/-companion/-l-g/index.html
+++ b/api/shark/-android-reference-matchers/-companion/-l-g/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-companion/-m-e-i-z-u/index.html b/api/shark/-android-reference-matchers/-companion/-m-e-i-z-u/index.html
index 7ca9bbd..328c861 100644
--- a/api/shark/-android-reference-matchers/-companion/-m-e-i-z-u/index.html
+++ b/api/shark/-android-reference-matchers/-companion/-m-e-i-z-u/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-companion/-m-o-t-o-r-o-l-a/index.html b/api/shark/-android-reference-matchers/-companion/-m-o-t-o-r-o-l-a/index.html
index 235dbd3..c2595a2 100644
--- a/api/shark/-android-reference-matchers/-companion/-m-o-t-o-r-o-l-a/index.html
+++ b/api/shark/-android-reference-matchers/-companion/-m-o-t-o-r-o-l-a/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-companion/-n-v-i-d-i-a/index.html b/api/shark/-android-reference-matchers/-companion/-n-v-i-d-i-a/index.html
index 9c3bb34..92850f9 100644
--- a/api/shark/-android-reference-matchers/-companion/-n-v-i-d-i-a/index.html
+++ b/api/shark/-android-reference-matchers/-companion/-n-v-i-d-i-a/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-companion/-o-n-e_-p-l-u-s/index.html b/api/shark/-android-reference-matchers/-companion/-o-n-e_-p-l-u-s/index.html
index daf4898..2487378 100644
--- a/api/shark/-android-reference-matchers/-companion/-o-n-e_-p-l-u-s/index.html
+++ b/api/shark/-android-reference-matchers/-companion/-o-n-e_-p-l-u-s/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-companion/-r-a-z-e-r/index.html b/api/shark/-android-reference-matchers/-companion/-r-a-z-e-r/index.html
index e14abaa..68a3c15 100644
--- a/api/shark/-android-reference-matchers/-companion/-r-a-z-e-r/index.html
+++ b/api/shark/-android-reference-matchers/-companion/-r-a-z-e-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-companion/-r-e-a-l-m-e/index.html b/api/shark/-android-reference-matchers/-companion/-r-e-a-l-m-e/index.html
index 7ce07a0..7a042ef 100644
--- a/api/shark/-android-reference-matchers/-companion/-r-e-a-l-m-e/index.html
+++ b/api/shark/-android-reference-matchers/-companion/-r-e-a-l-m-e/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-companion/-s-a-m-s-u-n-g/index.html b/api/shark/-android-reference-matchers/-companion/-s-a-m-s-u-n-g/index.html
index b774588..892bd2f 100644
--- a/api/shark/-android-reference-matchers/-companion/-s-a-m-s-u-n-g/index.html
+++ b/api/shark/-android-reference-matchers/-companion/-s-a-m-s-u-n-g/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-companion/-s-h-a-r-p/index.html b/api/shark/-android-reference-matchers/-companion/-s-h-a-r-p/index.html
index d57e608..264add7 100644
--- a/api/shark/-android-reference-matchers/-companion/-s-h-a-r-p/index.html
+++ b/api/shark/-android-reference-matchers/-companion/-s-h-a-r-p/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-companion/-t-e-s/index.html b/api/shark/-android-reference-matchers/-companion/-t-e-s/index.html
index e4d6409..a7a54fa 100644
--- a/api/shark/-android-reference-matchers/-companion/-t-e-s/index.html
+++ b/api/shark/-android-reference-matchers/-companion/-t-e-s/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-companion/-v-i-v-o/index.html b/api/shark/-android-reference-matchers/-companion/-v-i-v-o/index.html
index e6edd93..00d232e 100644
--- a/api/shark/-android-reference-matchers/-companion/-v-i-v-o/index.html
+++ b/api/shark/-android-reference-matchers/-companion/-v-i-v-o/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-companion/-x-i-a-o-m-i/index.html b/api/shark/-android-reference-matchers/-companion/-x-i-a-o-m-i/index.html
index 2d1c31a..2d0f1c5 100644
--- a/api/shark/-android-reference-matchers/-companion/-x-i-a-o-m-i/index.html
+++ b/api/shark/-android-reference-matchers/-companion/-x-i-a-o-m-i/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-companion/app-defaults/index.html b/api/shark/-android-reference-matchers/-companion/app-defaults/index.html
index 7e47fac..8ce0ce2 100644
--- a/api/shark/-android-reference-matchers/-companion/app-defaults/index.html
+++ b/api/shark/-android-reference-matchers/-companion/app-defaults/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-companion/build-known-references/index.html b/api/shark/-android-reference-matchers/-companion/build-known-references/index.html
index f169466..d0dfc33 100644
--- a/api/shark/-android-reference-matchers/-companion/build-known-references/index.html
+++ b/api/shark/-android-reference-matchers/-companion/build-known-references/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-companion/ignored-instance-field/index.html b/api/shark/-android-reference-matchers/-companion/ignored-instance-field/index.html
index 34b52b6..571f0a7 100644
--- a/api/shark/-android-reference-matchers/-companion/ignored-instance-field/index.html
+++ b/api/shark/-android-reference-matchers/-companion/ignored-instance-field/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-companion/ignored-java-local/index.html b/api/shark/-android-reference-matchers/-companion/ignored-java-local/index.html
index b59186a..a627885 100644
--- a/api/shark/-android-reference-matchers/-companion/ignored-java-local/index.html
+++ b/api/shark/-android-reference-matchers/-companion/ignored-java-local/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-companion/ignored-references-only/index.html b/api/shark/-android-reference-matchers/-companion/ignored-references-only/index.html
index 4f8f6c4..2612e79 100644
--- a/api/shark/-android-reference-matchers/-companion/ignored-references-only/index.html
+++ b/api/shark/-android-reference-matchers/-companion/ignored-references-only/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-companion/index.html b/api/shark/-android-reference-matchers/-companion/index.html
index 93cba9f..013250e 100644
--- a/api/shark/-android-reference-matchers/-companion/index.html
+++ b/api/shark/-android-reference-matchers/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-companion/instance-field-leak/index.html b/api/shark/-android-reference-matchers/-companion/instance-field-leak/index.html
index b8e21e1..97b9f6b 100644
--- a/api/shark/-android-reference-matchers/-companion/instance-field-leak/index.html
+++ b/api/shark/-android-reference-matchers/-companion/instance-field-leak/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-companion/native-global-variable-leak/index.html b/api/shark/-android-reference-matchers/-companion/native-global-variable-leak/index.html
index 9f901a3..47b884c 100644
--- a/api/shark/-android-reference-matchers/-companion/native-global-variable-leak/index.html
+++ b/api/shark/-android-reference-matchers/-companion/native-global-variable-leak/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-companion/static-field-leak/index.html b/api/shark/-android-reference-matchers/-companion/static-field-leak/index.html
index ac1be62..6a9c41d 100644
--- a/api/shark/-android-reference-matchers/-companion/static-field-leak/index.html
+++ b/api/shark/-android-reference-matchers/-companion/static-field-leak/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-d-e-v-i-c-e_-p-o-l-i-c-y_-m-a-n-a-g-e-r__-s-e-t-t-i-n-g-s_-o-b-s-e-r-v-e-r/index.html b/api/shark/-android-reference-matchers/-d-e-v-i-c-e_-p-o-l-i-c-y_-m-a-n-a-g-e-r__-s-e-t-t-i-n-g-s_-o-b-s-e-r-v-e-r/index.html
index e8d7e93..0f28e05 100644
--- a/api/shark/-android-reference-matchers/-d-e-v-i-c-e_-p-o-l-i-c-y_-m-a-n-a-g-e-r__-s-e-t-t-i-n-g-s_-o-b-s-e-r-v-e-r/index.html
+++ b/api/shark/-android-reference-matchers/-d-e-v-i-c-e_-p-o-l-i-c-y_-m-a-n-a-g-e-r__-s-e-t-t-i-n-g-s_-o-b-s-e-r-v-e-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-d-r-e-a-m_-s-e-r-v-i-c-e/index.html b/api/shark/-android-reference-matchers/-d-r-e-a-m_-s-e-r-v-i-c-e/index.html
index 0df7989..b5d0e2e 100644
--- a/api/shark/-android-reference-matchers/-d-r-e-a-m_-s-e-r-v-i-c-e/index.html
+++ b/api/shark/-android-reference-matchers/-d-r-e-a-m_-s-e-r-v-i-c-e/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-e-d-i-t-t-e-x-t_-b-l-i-n-k_-m-e-s-s-a-g-e-q-u-e-u-e/index.html b/api/shark/-android-reference-matchers/-e-d-i-t-t-e-x-t_-b-l-i-n-k_-m-e-s-s-a-g-e-q-u-e-u-e/index.html
index 0a0a2b0..f18a566 100644
--- a/api/shark/-android-reference-matchers/-e-d-i-t-t-e-x-t_-b-l-i-n-k_-m-e-s-s-a-g-e-q-u-e-u-e/index.html
+++ b/api/shark/-android-reference-matchers/-e-d-i-t-t-e-x-t_-b-l-i-n-k_-m-e-s-s-a-g-e-q-u-e-u-e/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-e-v-e-n-t_-r-e-c-e-i-v-e-r__-m-m-e-s-s-a-g-e_-q-u-e-u-e/index.html b/api/shark/-android-reference-matchers/-e-v-e-n-t_-r-e-c-e-i-v-e-r__-m-m-e-s-s-a-g-e_-q-u-e-u-e/index.html
index ec5b763..ab733bc 100644
--- a/api/shark/-android-reference-matchers/-e-v-e-n-t_-r-e-c-e-i-v-e-r__-m-m-e-s-s-a-g-e_-q-u-e-u-e/index.html
+++ b/api/shark/-android-reference-matchers/-e-v-e-n-t_-r-e-c-e-i-v-e-r__-m-m-e-s-s-a-g-e_-q-u-e-u-e/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-e-x-t-e-n-d-e-d_-s-t-a-t-u-s_-b-a-r_-m-a-n-a-g-e-r/index.html b/api/shark/-android-reference-matchers/-e-x-t-e-n-d-e-d_-s-t-a-t-u-s_-b-a-r_-m-a-n-a-g-e-r/index.html
index 53a9c7d..f98044c 100644
--- a/api/shark/-android-reference-matchers/-e-x-t-e-n-d-e-d_-s-t-a-t-u-s_-b-a-r_-m-a-n-a-g-e-r/index.html
+++ b/api/shark/-android-reference-matchers/-e-x-t-e-n-d-e-d_-s-t-a-t-u-s_-b-a-r_-m-a-n-a-g-e-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-f-i-n-a-l-i-z-e-r_-w-a-t-c-h-d-o-g_-d-a-e-m-o-n/index.html b/api/shark/-android-reference-matchers/-f-i-n-a-l-i-z-e-r_-w-a-t-c-h-d-o-g_-d-a-e-m-o-n/index.html
index cefee67..2538793 100644
--- a/api/shark/-android-reference-matchers/-f-i-n-a-l-i-z-e-r_-w-a-t-c-h-d-o-g_-d-a-e-m-o-n/index.html
+++ b/api/shark/-android-reference-matchers/-f-i-n-a-l-i-z-e-r_-w-a-t-c-h-d-o-g_-d-a-e-m-o-n/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-f-l-i-p-p-e-r__-a-p-p-l-i-c-a-t-i-o-n_-d-e-s-c-r-i-p-t-o-r/index.html b/api/shark/-android-reference-matchers/-f-l-i-p-p-e-r__-a-p-p-l-i-c-a-t-i-o-n_-d-e-s-c-r-i-p-t-o-r/index.html
index 332c047..ddabe1e 100644
--- a/api/shark/-android-reference-matchers/-f-l-i-p-p-e-r__-a-p-p-l-i-c-a-t-i-o-n_-d-e-s-c-r-i-p-t-o-r/index.html
+++ b/api/shark/-android-reference-matchers/-f-l-i-p-p-e-r__-a-p-p-l-i-c-a-t-i-o-n_-d-e-s-c-r-i-p-t-o-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-g-e-s-t-u-r-e_-b-o-o-s-t_-m-a-n-a-g-e-r/index.html b/api/shark/-android-reference-matchers/-g-e-s-t-u-r-e_-b-o-o-s-t_-m-a-n-a-g-e-r/index.html
index a01394c..d8ccd4d 100644
--- a/api/shark/-android-reference-matchers/-g-e-s-t-u-r-e_-b-o-o-s-t_-m-a-n-a-g-e-r/index.html
+++ b/api/shark/-android-reference-matchers/-g-e-s-t-u-r-e_-b-o-o-s-t_-m-a-n-a-g-e-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-h-o-s-t_-a-d-p-u_-s-e-r-v-i-c-e_-m-s-g_-h-a-n-d-l-e-r/index.html b/api/shark/-android-reference-matchers/-h-o-s-t_-a-d-p-u_-s-e-r-v-i-c-e_-m-s-g_-h-a-n-d-l-e-r/index.html
index af6b20e..9542e46 100644
--- a/api/shark/-android-reference-matchers/-h-o-s-t_-a-d-p-u_-s-e-r-v-i-c-e_-m-s-g_-h-a-n-d-l-e-r/index.html
+++ b/api/shark/-android-reference-matchers/-h-o-s-t_-a-d-p-u_-s-e-r-v-i-c-e_-m-s-g_-h-a-n-d-l-e-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-i-m-m_-c-u-r-r-e-n-t_-i-n-p-u-t_-c-o-n-n-e-c-t-i-o-n/index.html b/api/shark/-android-reference-matchers/-i-m-m_-c-u-r-r-e-n-t_-i-n-p-u-t_-c-o-n-n-e-c-t-i-o-n/index.html
index 6d48a3e..a3477f5 100644
--- a/api/shark/-android-reference-matchers/-i-m-m_-c-u-r-r-e-n-t_-i-n-p-u-t_-c-o-n-n-e-c-t-i-o-n/index.html
+++ b/api/shark/-android-reference-matchers/-i-m-m_-c-u-r-r-e-n-t_-i-n-p-u-t_-c-o-n-n-e-c-t-i-o-n/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-i-m-m_-l-a-s-t_-f-o-c-u-s_-v-i-e-w/index.html b/api/shark/-android-reference-matchers/-i-m-m_-l-a-s-t_-f-o-c-u-s_-v-i-e-w/index.html
index e61fb68..5f92871 100644
--- a/api/shark/-android-reference-matchers/-i-m-m_-l-a-s-t_-f-o-c-u-s_-v-i-e-w/index.html
+++ b/api/shark/-android-reference-matchers/-i-m-m_-l-a-s-t_-f-o-c-u-s_-v-i-e-w/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-i-n-p-u-t_-m-a-n-a-g-e-r__-m_-l-a-t-e_-i-n-i-t_-c-o-n-t-e-x-t/index.html b/api/shark/-android-reference-matchers/-i-n-p-u-t_-m-a-n-a-g-e-r__-m_-l-a-t-e_-i-n-i-t_-c-o-n-t-e-x-t/index.html
index 4468f2e..5caf3bf 100644
--- a/api/shark/-android-reference-matchers/-i-n-p-u-t_-m-a-n-a-g-e-r__-m_-l-a-t-e_-i-n-i-t_-c-o-n-t-e-x-t/index.html
+++ b/api/shark/-android-reference-matchers/-i-n-p-u-t_-m-a-n-a-g-e-r__-m_-l-a-t-e_-i-n-i-t_-c-o-n-t-e-x-t/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-i-n-p-u-t_-m-e-t-h-o-d_-m-a-n-a-g-e-r_-i-s_-t-e-r-r-i-b-l-e/index.html b/api/shark/-android-reference-matchers/-i-n-p-u-t_-m-e-t-h-o-d_-m-a-n-a-g-e-r_-i-s_-t-e-r-r-i-b-l-e/index.html
index fef69fe..9422491 100644
--- a/api/shark/-android-reference-matchers/-i-n-p-u-t_-m-e-t-h-o-d_-m-a-n-a-g-e-r_-i-s_-t-e-r-r-i-b-l-e/index.html
+++ b/api/shark/-android-reference-matchers/-i-n-p-u-t_-m-e-t-h-o-d_-m-a-n-a-g-e-r_-i-s_-t-e-r-r-i-b-l-e/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-i-n-s-t-r-u-m-e-n-t-a-t-i-o-n_-r-e-c-o-m-m-e-n-d_-a-c-t-i-v-i-t-y/index.html b/api/shark/-android-reference-matchers/-i-n-s-t-r-u-m-e-n-t-a-t-i-o-n_-r-e-c-o-m-m-e-n-d_-a-c-t-i-v-i-t-y/index.html
index 79cd142..73f8fdc 100644
--- a/api/shark/-android-reference-matchers/-i-n-s-t-r-u-m-e-n-t-a-t-i-o-n_-r-e-c-o-m-m-e-n-d_-a-c-t-i-v-i-t-y/index.html
+++ b/api/shark/-android-reference-matchers/-i-n-s-t-r-u-m-e-n-t-a-t-i-o-n_-r-e-c-o-m-m-e-n-d_-a-c-t-i-v-i-t-y/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-i-r-e-q-u-e-s-t_-f-i-n-i-s-h_-c-a-l-l-b-a-c-k/index.html b/api/shark/-android-reference-matchers/-i-r-e-q-u-e-s-t_-f-i-n-i-s-h_-c-a-l-l-b-a-c-k/index.html
index f9b1fc9..e08ffb6 100644
--- a/api/shark/-android-reference-matchers/-i-r-e-q-u-e-s-t_-f-i-n-i-s-h_-c-a-l-l-b-a-c-k/index.html
+++ b/api/shark/-android-reference-matchers/-i-r-e-q-u-e-s-t_-f-i-n-i-s-h_-c-a-l-l-b-a-c-k/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-j-o-b_-s-e-r-v-i-c-e/index.html b/api/shark/-android-reference-matchers/-j-o-b_-s-e-r-v-i-c-e/index.html
index 1505e5d..15b6f69 100644
--- a/api/shark/-android-reference-matchers/-j-o-b_-s-e-r-v-i-c-e/index.html
+++ b/api/shark/-android-reference-matchers/-j-o-b_-s-e-r-v-i-c-e/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-l-a-y-o-u-t_-t-r-a-n-s-i-t-i-o-n/index.html b/api/shark/-android-reference-matchers/-l-a-y-o-u-t_-t-r-a-n-s-i-t-i-o-n/index.html
index 8af3bdd..2a8c117 100644
--- a/api/shark/-android-reference-matchers/-l-a-y-o-u-t_-t-r-a-n-s-i-t-i-o-n/index.html
+++ b/api/shark/-android-reference-matchers/-l-a-y-o-u-t_-t-r-a-n-s-i-t-i-o-n/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-l-e-a-k_-c-a-n-a-r-y_-h-e-a-p_-d-u-m-p-e-r/index.html b/api/shark/-android-reference-matchers/-l-e-a-k_-c-a-n-a-r-y_-h-e-a-p_-d-u-m-p-e-r/index.html
index d0a5555..1600a22 100644
--- a/api/shark/-android-reference-matchers/-l-e-a-k_-c-a-n-a-r-y_-h-e-a-p_-d-u-m-p-e-r/index.html
+++ b/api/shark/-android-reference-matchers/-l-e-a-k_-c-a-n-a-r-y_-h-e-a-p_-d-u-m-p-e-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-l-e-a-k_-c-a-n-a-r-y_-i-n-t-e-r-n-a-l/index.html b/api/shark/-android-reference-matchers/-l-e-a-k_-c-a-n-a-r-y_-i-n-t-e-r-n-a-l/index.html
index 9e13f14..c28f0a4 100644
--- a/api/shark/-android-reference-matchers/-l-e-a-k_-c-a-n-a-r-y_-i-n-t-e-r-n-a-l/index.html
+++ b/api/shark/-android-reference-matchers/-l-e-a-k_-c-a-n-a-r-y_-i-n-t-e-r-n-a-l/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-l-e-a-k_-c-a-n-a-r-y_-t-h-r-e-a-d/index.html b/api/shark/-android-reference-matchers/-l-e-a-k_-c-a-n-a-r-y_-t-h-r-e-a-d/index.html
index ebdca20..bb0af05 100644
--- a/api/shark/-android-reference-matchers/-l-e-a-k_-c-a-n-a-r-y_-t-h-r-e-a-d/index.html
+++ b/api/shark/-android-reference-matchers/-l-e-a-k_-c-a-n-a-r-y_-t-h-r-e-a-d/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-l-g-c-o-n-t-e-x-t__-m-c-o-n-t-e-x-t/index.html b/api/shark/-android-reference-matchers/-l-g-c-o-n-t-e-x-t__-m-c-o-n-t-e-x-t/index.html
index a15d3f3..b923afc 100644
--- a/api/shark/-android-reference-matchers/-l-g-c-o-n-t-e-x-t__-m-c-o-n-t-e-x-t/index.html
+++ b/api/shark/-android-reference-matchers/-l-g-c-o-n-t-e-x-t__-m-c-o-n-t-e-x-t/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-m-a-g-n-i-f-i-e-r/index.html b/api/shark/-android-reference-matchers/-m-a-g-n-i-f-i-e-r/index.html
index 24cc23d..5027136 100644
--- a/api/shark/-android-reference-matchers/-m-a-g-n-i-f-i-e-r/index.html
+++ b/api/shark/-android-reference-matchers/-m-a-g-n-i-f-i-e-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-m-a-i-n/index.html b/api/shark/-android-reference-matchers/-m-a-i-n/index.html
index 23e7af9..674612c 100644
--- a/api/shark/-android-reference-matchers/-m-a-i-n/index.html
+++ b/api/shark/-android-reference-matchers/-m-a-i-n/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-m-a-p-p-e-r_-c-l-i-e-n-t/index.html b/api/shark/-android-reference-matchers/-m-a-p-p-e-r_-c-l-i-e-n-t/index.html
index a8e92ee..19419fb 100644
--- a/api/shark/-android-reference-matchers/-m-a-p-p-e-r_-c-l-i-e-n-t/index.html
+++ b/api/shark/-android-reference-matchers/-m-a-p-p-e-r_-c-l-i-e-n-t/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-m-e-d-i-a_-p-r-o-j-e-c-t-i-o-n_-c-a-l-l-b-a-c-k/index.html b/api/shark/-android-reference-matchers/-m-e-d-i-a_-p-r-o-j-e-c-t-i-o-n_-c-a-l-l-b-a-c-k/index.html
index 335a256..6f3878a 100644
--- a/api/shark/-android-reference-matchers/-m-e-d-i-a_-p-r-o-j-e-c-t-i-o-n_-c-a-l-l-b-a-c-k/index.html
+++ b/api/shark/-android-reference-matchers/-m-e-d-i-a_-p-r-o-j-e-c-t-i-o-n_-c-a-l-l-b-a-c-k/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-m-e-d-i-a_-s-c-a-n-n-e-r_-c-o-n-n-e-c-t-i-o-n/index.html b/api/shark/-android-reference-matchers/-m-e-d-i-a_-s-c-a-n-n-e-r_-c-o-n-n-e-c-t-i-o-n/index.html
index 46090c1..0ddb003 100644
--- a/api/shark/-android-reference-matchers/-m-e-d-i-a_-s-c-a-n-n-e-r_-c-o-n-n-e-c-t-i-o-n/index.html
+++ b/api/shark/-android-reference-matchers/-m-e-d-i-a_-s-c-a-n-n-e-r_-c-o-n-n-e-c-t-i-o-n/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-m-e-d-i-a_-s-e-s-s-i-o-n_-l-e-g-a-c-y_-h-e-l-p-e-r__-s-i-n-s-t-a-n-c-e/index.html b/api/shark/-android-reference-matchers/-m-e-d-i-a_-s-e-s-s-i-o-n_-l-e-g-a-c-y_-h-e-l-p-e-r__-s-i-n-s-t-a-n-c-e/index.html
index 8b5a403..5a8c108 100644
--- a/api/shark/-android-reference-matchers/-m-e-d-i-a_-s-e-s-s-i-o-n_-l-e-g-a-c-y_-h-e-l-p-e-r__-s-i-n-s-t-a-n-c-e/index.html
+++ b/api/shark/-android-reference-matchers/-m-e-d-i-a_-s-e-s-s-i-o-n_-l-e-g-a-c-y_-h-e-l-p-e-r__-s-i-n-s-t-a-n-c-e/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-m-u-l-t-i_-w-i-n-d-o-w_-d-e-c-o-r_-s-u-p-p-o-r-t__-m-w-i-n-d-o-w/index.html b/api/shark/-android-reference-matchers/-m-u-l-t-i_-w-i-n-d-o-w_-d-e-c-o-r_-s-u-p-p-o-r-t__-m-w-i-n-d-o-w/index.html
index a375cc7..32dc684 100644
--- a/api/shark/-android-reference-matchers/-m-u-l-t-i_-w-i-n-d-o-w_-d-e-c-o-r_-s-u-p-p-o-r-t__-m-w-i-n-d-o-w/index.html
+++ b/api/shark/-android-reference-matchers/-m-u-l-t-i_-w-i-n-d-o-w_-d-e-c-o-r_-s-u-p-p-o-r-t__-m-w-i-n-d-o-w/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-o-e-m_-s-c-e-n-e_-c-a-l-l_-b-l-o-c-k-e-r/index.html b/api/shark/-android-reference-matchers/-o-e-m_-s-c-e-n-e_-c-a-l-l_-b-l-o-c-k-e-r/index.html
index 0fc9d62..2035018 100644
--- a/api/shark/-android-reference-matchers/-o-e-m_-s-c-e-n-e_-c-a-l-l_-b-l-o-c-k-e-r/index.html
+++ b/api/shark/-android-reference-matchers/-o-e-m_-s-c-e-n-e_-c-a-l-l_-b-l-o-c-k-e-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-p-e-r-f_-m-o-n-i-t-o-r_-l-a-s-t_-c-a-l-l-b-a-c-k/index.html b/api/shark/-android-reference-matchers/-p-e-r-f_-m-o-n-i-t-o-r_-l-a-s-t_-c-a-l-l-b-a-c-k/index.html
index b73cd14..7d78d36 100644
--- a/api/shark/-android-reference-matchers/-p-e-r-f_-m-o-n-i-t-o-r_-l-a-s-t_-c-a-l-l-b-a-c-k/index.html
+++ b/api/shark/-android-reference-matchers/-p-e-r-f_-m-o-n-i-t-o-r_-l-a-s-t_-c-a-l-l-b-a-c-k/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-p-e-r-m-i-s-s-i-o-n_-c-o-n-t-r-o-l-l-e-r_-m-a-n-a-g-e-r/index.html b/api/shark/-android-reference-matchers/-p-e-r-m-i-s-s-i-o-n_-c-o-n-t-r-o-l-l-e-r_-m-a-n-a-g-e-r/index.html
new file mode 100644
index 0000000..1e4a39a
--- /dev/null
+++ b/api/shark/-android-reference-matchers/-p-e-r-m-i-s-s-i-o-n_-c-o-n-t-r-o-l-l-e-r_-m-a-n-a-g-e-r/index.html
@@ -0,0 +1,887 @@
+
+<!doctype html>
+<html lang="en" class="no-js">
+  <head>
+    
+      <meta charset="utf-8">
+      <meta name="viewport" content="width=device-width,initial-scale=1">
+      
+        <meta name="description" content="A memory leak detection library for Android">
+      
+      
+        <meta name="author" content="Square, Inc.">
+      
+      
+        <link rel="canonical" href="https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-p-e-r-m-i-s-s-i-o-n_-c-o-n-t-r-o-l-l-e-r_-m-a-n-a-g-e-r/">
+      
+      
+      
+      <link rel="icon" href="../../../../images/logo.png">
+      <meta name="generator" content="mkdocs-1.4.3, mkdocs-material-9.1.10">
+    
+    
+      
+        <title>Index - LeakCanary</title>
+      
+    
+    
+      <link rel="stylesheet" href="../../../../assets/stylesheets/main.85bb2934.min.css">
+      
+        
+        <link rel="stylesheet" href="../../../../assets/stylesheets/palette.a6bdf11c.min.css">
+      
+      
+
+    
+    
+    
+      
+        
+        
+        <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
+        <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
+        <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
+      
+    
+    
+    <script>__md_scope=new URL("../../../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
+    
+      
+
+    
+    
+    
+  </head>
+  
+  
+    
+    
+    
+    
+    
+    <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="deep-orange" data-md-color-accent="deep-purple">
+  
+    
+    
+    <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
+    <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
+    <label class="md-overlay" for="__drawer"></label>
+    <div data-md-component="skip">
+      
+        
+        <a href="#permission_controller_manager" class="md-skip">
+          Skip to content
+        </a>
+      
+    </div>
+    <div data-md-component="announce">
+      
+        <aside class="md-banner">
+          <div class="md-banner__inner md-grid md-typeset">
+            
+             
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+
+          </div>
+          
+        </aside>
+      
+    </div>
+    
+    
+      
+
+  
+
+<header class="md-header md-header--shadow" data-md-component="header">
+  <nav class="md-header__inner md-grid" aria-label="Header">
+    <a href="../../../.." title="LeakCanary" class="md-header__button md-logo" aria-label="LeakCanary" data-md-component="logo">
+      
+  <img src="../../../../images/logo.png" alt="logo">
+
+    </a>
+    <label class="md-header__button md-icon" for="__drawer">
+      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
+    </label>
+    <div class="md-header__title" data-md-component="header-title">
+      <div class="md-header__ellipsis">
+        <div class="md-header__topic">
+          <span class="md-ellipsis">
+            LeakCanary
+          </span>
+        </div>
+        <div class="md-header__topic" data-md-component="header-topic">
+          <span class="md-ellipsis">
+            
+              Index
+            
+          </span>
+        </div>
+      </div>
+    </div>
+    
+      
+    
+    
+    
+      <label class="md-header__button md-icon" for="__search">
+        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
+      </label>
+      <div class="md-search" data-md-component="search" role="dialog">
+  <label class="md-search__overlay" for="__search"></label>
+  <div class="md-search__inner" role="search">
+    <form class="md-search__form" name="search">
+      <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
+      <label class="md-search__icon md-icon" for="__search">
+        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
+        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
+      </label>
+      <nav class="md-search__options" aria-label="Search">
+        
+        <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
+          <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
+        </button>
+      </nav>
+      
+    </form>
+    <div class="md-search__output">
+      <div class="md-search__scrollwrap" data-md-scrollfix>
+        <div class="md-search-result" data-md-component="search-result">
+          <div class="md-search-result__meta">
+            Initializing search
+          </div>
+          <ol class="md-search-result__list" role="presentation"></ol>
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
+    
+    
+      <div class="md-header__source">
+        <a href="https://github.com/square/leakcanary" title="Go to repository" class="md-source" data-md-component="source">
+  <div class="md-source__icon md-icon">
+    
+    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
+  </div>
+  <div class="md-source__repository">
+    LeakCanary
+  </div>
+</a>
+      </div>
+    
+  </nav>
+  
+</header>
+    
+    <div class="md-container" data-md-component="container">
+      
+      
+        
+          
+        
+      
+      <main class="md-main" data-md-component="main">
+        <div class="md-main__inner md-grid">
+          
+            
+              
+              <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
+                <div class="md-sidebar__scrollwrap">
+                  <div class="md-sidebar__inner">
+                    
+
+
+<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
+  <label class="md-nav__title" for="__drawer">
+    <a href="../../../.." title="LeakCanary" class="md-nav__button md-logo" aria-label="LeakCanary" data-md-component="logo">
+      
+  <img src="../../../../images/logo.png" alt="logo">
+
+    </a>
+    LeakCanary
+  </label>
+  
+    <div class="md-nav__source">
+      <a href="https://github.com/square/leakcanary" title="Go to repository" class="md-source" data-md-component="source">
+  <div class="md-source__icon md-icon">
+    
+    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
+  </div>
+  <div class="md-source__repository">
+    LeakCanary
+  </div>
+</a>
+    </div>
+  
+  <ul class="md-nav__list" data-md-scrollfix>
+    
+      
+      
+      
+
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../.." class="md-nav__link">
+        Overview
+      </a>
+    </li>
+  
+
+    
+      
+      
+      
+
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../getting_started/" class="md-nav__link">
+        Getting Started
+      </a>
+    </li>
+  
+
+    
+      
+      
+      
+
+  
+  
+  
+    
+    <li class="md-nav__item md-nav__item--nested">
+      
+      
+      
+      
+      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
+      
+      
+      
+        <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
+          Fundamentals
+          <span class="md-nav__icon md-icon"></span>
+        </label>
+      
+      <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
+        <label class="md-nav__title" for="__nav_3">
+          <span class="md-nav__icon md-icon"></span>
+          Fundamentals
+        </label>
+        <ul class="md-nav__list" data-md-scrollfix>
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../fundamentals/" class="md-nav__link">
+        Introduction
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../fundamentals-how-leakcanary-works/" class="md-nav__link">
+        How LeakCanary works
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../fundamentals-fixing-a-memory-leak/" class="md-nav__link">
+        Fixing a memory leak
+      </a>
+    </li>
+  
+
+            
+          
+        </ul>
+      </nav>
+    </li>
+  
+
+    
+      
+      
+      
+
+  
+  
+  
+    
+    <li class="md-nav__item md-nav__item--nested">
+      
+      
+      
+      
+      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" >
+      
+      
+      
+        <label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
+          LeakCanary at scale
+          <span class="md-nav__icon md-icon"></span>
+        </label>
+      
+      <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
+        <label class="md-nav__title" for="__nav_4">
+          <span class="md-nav__icon md-icon"></span>
+          LeakCanary at scale
+        </label>
+        <ul class="md-nav__list" data-md-scrollfix>
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../ui-tests/" class="md-nav__link">
+        Leak detection in UI tests
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../uploading/" class="md-nav__link">
+        Uploading analysis results
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../leakcanary-for-releases/" class="md-nav__link">
+        LeakCanary for releases
+      </a>
+    </li>
+  
+
+            
+          
+        </ul>
+      </nav>
+    </li>
+  
+
+    
+      
+      
+      
+
+  
+  
+  
+    
+    <li class="md-nav__item md-nav__item--nested">
+      
+      
+      
+      
+      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
+      
+      
+      
+        <label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
+          Help & Community
+          <span class="md-nav__icon md-icon"></span>
+        </label>
+      
+      <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
+        <label class="md-nav__title" for="__nav_5">
+          <span class="md-nav__icon md-icon"></span>
+          Help & Community
+        </label>
+        <ul class="md-nav__list" data-md-scrollfix>
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../recipes/" class="md-nav__link">
+        Code recipes
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../faq/" class="md-nav__link">
+        FAQ
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../support/" class="md-nav__link">
+        Support
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../upgrading-to-leakcanary-2.0/" class="md-nav__link">
+        Upgrading to LeakCanary 2
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../recorded-presentations/" class="md-nav__link">
+        Recorded Presentations
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../blog-articles/" class="md-nav__link">
+        Blog Articles
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="https://stackoverflow.com/questions/tagged/leakcanary?sort=active" class="md-nav__link">
+        Stack Overflow ⏏
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    
+    <li class="md-nav__item md-nav__item--nested">
+      
+      
+      
+      
+      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_8" >
+      
+      
+      
+        <label class="md-nav__link" for="__nav_5_8" id="__nav_5_8_label" tabindex="0">
+          Contributing
+          <span class="md-nav__icon md-icon"></span>
+        </label>
+      
+      <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_8_label" aria-expanded="false">
+        <label class="md-nav__title" for="__nav_5_8">
+          <span class="md-nav__icon md-icon"></span>
+          Contributing
+        </label>
+        <ul class="md-nav__list" data-md-scrollfix>
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../code_of_conduct/" class="md-nav__link">
+        Code of Conduct
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../dev-env/" class="md-nav__link">
+        Dev Environment
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../releasing/" class="md-nav__link">
+        Releasing
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../how_to_help/" class="md-nav__link">
+        How to help
+      </a>
+    </li>
+  
+
+            
+          
+        </ul>
+      </nav>
+    </li>
+  
+
+            
+          
+        </ul>
+      </nav>
+    </li>
+  
+
+    
+      
+      
+      
+
+  
+  
+  
+    
+    <li class="md-nav__item md-nav__item--nested">
+      
+      
+      
+      
+      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" >
+      
+      
+      
+        <label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
+          Shark
+          <span class="md-nav__icon md-icon"></span>
+        </label>
+      
+      <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
+        <label class="md-nav__title" for="__nav_6">
+          <span class="md-nav__icon md-icon"></span>
+          Shark
+        </label>
+        <ul class="md-nav__list" data-md-scrollfix>
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../shark/" class="md-nav__link">
+        Overview
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../" class="md-nav__link">
+        Shark API
+      </a>
+    </li>
+  
+
+            
+          
+        </ul>
+      </nav>
+    </li>
+  
+
+    
+      
+      
+      
+
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../leakcanary/" class="md-nav__link">
+        LeakCanary API
+      </a>
+    </li>
+  
+
+    
+      
+      
+      
+
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../changelog/" class="md-nav__link">
+        Change Log
+      </a>
+    </li>
+  
+
+    
+  </ul>
+</nav>
+                  </div>
+                </div>
+              </div>
+            
+            
+              
+              <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
+                <div class="md-sidebar__scrollwrap">
+                  <div class="md-sidebar__inner">
+                    
+
+<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
+  
+  
+  
+    
+  
+  
+    <label class="md-nav__title" for="__toc">
+      <span class="md-nav__icon md-icon"></span>
+      Table of contents
+    </label>
+    <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
+      
+        <li class="md-nav__item">
+  <a href="#properties" class="md-nav__link">
+    Properties
+  </a>
+  
+</li>
+      
+    </ul>
+  
+</nav>
+                  </div>
+                </div>
+              </div>
+            
+          
+          
+            <div class="md-content" data-md-component="content">
+              <article class="md-content__inner md-typeset">
+                
+  
+    
+  <span style="float: right">🤔 Documentation issue? <a href="https://github.com/square/leakcanary/issues/new?assignees=&labels=type%3A+documentation&template=4-doc.md&title=Doc%20issue%20with%20api/shark/-android-reference-matchers/-p-e-r-m-i-s-s-i-o-n_-c-o-n-t-r-o-l-l-e-r_-m-a-n-a-g-e-r/%20page">Report it</a></span>
+    
+  
+  
+    
+  
+  
+  <p>//<a href="../../../../">leakcanary</a>/<a href="../../">shark</a>/<a href="../">AndroidReferenceMatchers</a>/<a href="./">PERMISSION_CONTROLLER_MANAGER</a></p>
+<h1 id="permission_controller_manager">PERMISSION_CONTROLLER_MANAGER<a class="headerlink" href="#permission_controller_manager" title="Permanent link">&para;</a></h1>
+<p><a href="./">PERMISSION_CONTROLLER_MANAGER</a>()</p>
+<h2 id="properties">Properties<a class="headerlink" href="#properties" title="Permanent link">&para;</a></h2>
+<table>
+<thead>
+<tr>
+<th>Name</th>
+<th>Summary</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td><a href="../../-primitive-type/-b-o-o-l-e-a-n/#-372974862%2FProperties%2F44236444">name</a></td>
+<td>val <a href="../../-primitive-type/-b-o-o-l-e-a-n/#-372974862%2FProperties%2F44236444">name</a>: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a></td>
+</tr>
+<tr>
+<td><a href="../../-primitive-type/-b-o-o-l-e-a-n/#-739389684%2FProperties%2F44236444">ordinal</a></td>
+<td>val <a href="../../-primitive-type/-b-o-o-l-e-a-n/#-739389684%2FProperties%2F44236444">ordinal</a>: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a></td>
+</tr>
+</tbody>
+</table>
+  
+
+              </article>
+            </div>
+          
+          
+        </div>
+        
+      </main>
+      
+        <footer class="md-footer">
+  
+  <div class="md-footer-meta md-typeset">
+    <div class="md-footer-meta__inner md-grid">
+      <div class="md-copyright">
+  
+    <div class="md-copyright__highlight">
+      Copyright &copy; 2015 Square, Inc.
+    </div>
+  
+  
+    Made with
+    <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
+      Material for MkDocs
+    </a>
+  
+</div>
+      
+        <div class="md-social">
+  
+    
+    
+    
+    
+      
+      
+    
+    <a href="https://square.github.io/" target="_blank" rel="noopener" title="square.github.io" class="md-social__link">
+      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg>
+    </a>
+  
+    
+    
+    
+    
+      
+      
+    
+    <a href="https://twitter.com/Piwai" target="_blank" rel="noopener" title="twitter.com" class="md-social__link">
+      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"/></svg>
+    </a>
+  
+    
+    
+    
+    
+      
+      
+    
+    <a href="https://stackoverflow.com/questions/tagged/leakcanary?sort=active" target="_blank" rel="noopener" title="stackoverflow.com" class="md-social__link">
+      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M290.7 311 95 269.7 86.8 309l195.7 41zm51-87L188.2 95.7l-25.5 30.8 153.5 128.3zm-31.2 39.7L129.2 179l-16.7 36.5L293.7 300zM262 32l-32 24 119.3 160.3 32-24zm20.5 328h-200v39.7h200zm39.7 80H42.7V320h-40v160h359.5V320h-40z"/></svg>
+    </a>
+  
+    
+    
+    
+    
+      
+      
+    
+    <a href="https://www.linkedin.com/company/joinsquare/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link">
+      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"/></svg>
+    </a>
+  
+</div>
+      
+    </div>
+  </div>
+</footer>
+      
+    </div>
+    <div class="md-dialog" data-md-component="dialog">
+      <div class="md-dialog__inner md-typeset"></div>
+    </div>
+    
+    <script id="__config" type="application/json">{"base": "../../../..", "features": ["tabs"], "search": "../../../../assets/javascripts/workers/search.208ed371.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
+    
+    
+      <script src="../../../../assets/javascripts/bundle.fac441b0.min.js"></script>
+      
+    
+  </body>
+</html>
\ No newline at end of file
diff --git a/api/shark/-android-reference-matchers/-p-e-r-s-o-n-a_-m-a-n-a-g-e-r/index.html b/api/shark/-android-reference-matchers/-p-e-r-s-o-n-a_-m-a-n-a-g-e-r/index.html
index dc38e9c..dd07e03 100644
--- a/api/shark/-android-reference-matchers/-p-e-r-s-o-n-a_-m-a-n-a-g-e-r/index.html
+++ b/api/shark/-android-reference-matchers/-p-e-r-s-o-n-a_-m-a-n-a-g-e-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-p-l-a-y-e-r_-b-a-s-e/index.html b/api/shark/-android-reference-matchers/-p-l-a-y-e-r_-b-a-s-e/index.html
index bdbf38a..8b3577a 100644
--- a/api/shark/-android-reference-matchers/-p-l-a-y-e-r_-b-a-s-e/index.html
+++ b/api/shark/-android-reference-matchers/-p-l-a-y-e-r_-b-a-s-e/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-r-a-z-e-r_-t-e-x-t_-k-e-y_-l-i-s-t-e-n-e-r__-m-c-o-n-t-e-x-t/index.html b/api/shark/-android-reference-matchers/-r-a-z-e-r_-t-e-x-t_-k-e-y_-l-i-s-t-e-n-e-r__-m-c-o-n-t-e-x-t/index.html
index b261e45..29e7702 100644
--- a/api/shark/-android-reference-matchers/-r-a-z-e-r_-t-e-x-t_-k-e-y_-l-i-s-t-e-n-e-r__-m-c-o-n-t-e-x-t/index.html
+++ b/api/shark/-android-reference-matchers/-r-a-z-e-r_-t-e-x-t_-k-e-y_-l-i-s-t-e-n-e-r__-m-c-o-n-t-e-x-t/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-r-e-f-e-r-e-n-c-e-s/index.html b/api/shark/-android-reference-matchers/-r-e-f-e-r-e-n-c-e-s/index.html
index 06d8da2..44b59ac 100644
--- a/api/shark/-android-reference-matchers/-r-e-f-e-r-e-n-c-e-s/index.html
+++ b/api/shark/-android-reference-matchers/-r-e-f-e-r-e-n-c-e-s/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-r-e-n-d-e-r_-n-o-d-e_-a-n-i-m-a-t-o-r/index.html b/api/shark/-android-reference-matchers/-r-e-n-d-e-r_-n-o-d-e_-a-n-i-m-a-t-o-r/index.html
index eee479a..a543e22 100644
--- a/api/shark/-android-reference-matchers/-r-e-n-d-e-r_-n-o-d-e_-a-n-i-m-a-t-o-r/index.html
+++ b/api/shark/-android-reference-matchers/-r-e-n-d-e-r_-n-o-d-e_-a-n-i-m-a-t-o-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-r-e-s-o-u-r-c-e-s__-m-c-o-n-t-e-x-t/index.html b/api/shark/-android-reference-matchers/-r-e-s-o-u-r-c-e-s__-m-c-o-n-t-e-x-t/index.html
index 887a651..8e22f47 100644
--- a/api/shark/-android-reference-matchers/-r-e-s-o-u-r-c-e-s__-m-c-o-n-t-e-x-t/index.html
+++ b/api/shark/-android-reference-matchers/-r-e-s-o-u-r-c-e-s__-m-c-o-n-t-e-x-t/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-s-e-m_-a-p-p_-i-c-o-n_-s-o-l-u-t-i-o-n/index.html b/api/shark/-android-reference-matchers/-s-e-m_-a-p-p_-i-c-o-n_-s-o-l-u-t-i-o-n/index.html
index 3f959e3..f91c074 100644
--- a/api/shark/-android-reference-matchers/-s-e-m_-a-p-p_-i-c-o-n_-s-o-l-u-t-i-o-n/index.html
+++ b/api/shark/-android-reference-matchers/-s-e-m_-a-p-p_-i-c-o-n_-s-o-l-u-t-i-o-n/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-s-e-m_-c-l-i-p-b-o-a-r-d_-m-a-n-a-g-e-r__-m-c-o-n-t-e-x-t/index.html b/api/shark/-android-reference-matchers/-s-e-m_-c-l-i-p-b-o-a-r-d_-m-a-n-a-g-e-r__-m-c-o-n-t-e-x-t/index.html
index 38b22a6..3566494 100644
--- a/api/shark/-android-reference-matchers/-s-e-m_-c-l-i-p-b-o-a-r-d_-m-a-n-a-g-e-r__-m-c-o-n-t-e-x-t/index.html
+++ b/api/shark/-android-reference-matchers/-s-e-m_-c-l-i-p-b-o-a-r-d_-m-a-n-a-g-e-r__-m-c-o-n-t-e-x-t/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-s-e-m_-e-m-e-r-g-e-n-c-y_-m-a-n-a-g-e-r__-m-c-o-n-t-e-x-t/index.html b/api/shark/-android-reference-matchers/-s-e-m_-e-m-e-r-g-e-n-c-y_-m-a-n-a-g-e-r__-m-c-o-n-t-e-x-t/index.html
index 2f81d94..111d3c9 100644
--- a/api/shark/-android-reference-matchers/-s-e-m_-e-m-e-r-g-e-n-c-y_-m-a-n-a-g-e-r__-m-c-o-n-t-e-x-t/index.html
+++ b/api/shark/-android-reference-matchers/-s-e-m_-e-m-e-r-g-e-n-c-y_-m-a-n-a-g-e-r__-m-c-o-n-t-e-x-t/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-s-e-m_-p-e-r-s-o-n-a_-m-a-n-a-g-e-r/index.html b/api/shark/-android-reference-matchers/-s-e-m_-p-e-r-s-o-n-a_-m-a-n-a-g-e-r/index.html
index 4bff62b..33a4803 100644
--- a/api/shark/-android-reference-matchers/-s-e-m_-p-e-r-s-o-n-a_-m-a-n-a-g-e-r/index.html
+++ b/api/shark/-android-reference-matchers/-s-e-m_-p-e-r-s-o-n-a_-m-a-n-a-g-e-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-s-m-a-r-t_-c-o-v-e-r_-m-a-n-a-g-e-r/index.html b/api/shark/-android-reference-matchers/-s-m-a-r-t_-c-o-v-e-r_-m-a-n-a-g-e-r/index.html
index 8714566..faa3df2 100644
--- a/api/shark/-android-reference-matchers/-s-m-a-r-t_-c-o-v-e-r_-m-a-n-a-g-e-r/index.html
+++ b/api/shark/-android-reference-matchers/-s-m-a-r-t_-c-o-v-e-r_-m-a-n-a-g-e-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-s-p-a-n_-c-o-n-t-r-o-l-l-e-r/index.html b/api/shark/-android-reference-matchers/-s-p-a-n_-c-o-n-t-r-o-l-l-e-r/index.html
index 6436477..1165f08 100644
--- a/api/shark/-android-reference-matchers/-s-p-a-n_-c-o-n-t-r-o-l-l-e-r/index.html
+++ b/api/shark/-android-reference-matchers/-s-p-a-n_-c-o-n-t-r-o-l-l-e-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-s-p-e-e-c-h_-r-e-c-o-g-n-i-z-e-r/index.html b/api/shark/-android-reference-matchers/-s-p-e-e-c-h_-r-e-c-o-g-n-i-z-e-r/index.html
index a4ae360..3b36234 100644
--- a/api/shark/-android-reference-matchers/-s-p-e-e-c-h_-r-e-c-o-g-n-i-z-e-r/index.html
+++ b/api/shark/-android-reference-matchers/-s-p-e-e-c-h_-r-e-c-o-g-n-i-z-e-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-s-p-e-l-l_-c-h-e-c-k-e-r/index.html b/api/shark/-android-reference-matchers/-s-p-e-l-l_-c-h-e-c-k-e-r/index.html
index 88235a9..734c08b 100644
--- a/api/shark/-android-reference-matchers/-s-p-e-l-l_-c-h-e-c-k-e-r/index.html
+++ b/api/shark/-android-reference-matchers/-s-p-e-l-l_-c-h-e-c-k-e-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-s-p-e-l-l_-c-h-e-c-k-e-r_-s-e-s-s-i-o-n/index.html b/api/shark/-android-reference-matchers/-s-p-e-l-l_-c-h-e-c-k-e-r_-s-e-s-s-i-o-n/index.html
index 6482823..6032bdb 100644
--- a/api/shark/-android-reference-matchers/-s-p-e-l-l_-c-h-e-c-k-e-r_-s-e-s-s-i-o-n/index.html
+++ b/api/shark/-android-reference-matchers/-s-p-e-l-l_-c-h-e-c-k-e-r_-s-e-s-s-i-o-n/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-s-p-e-n_-g-e-s-t-u-r-e_-m-a-n-a-g-e-r/index.html b/api/shark/-android-reference-matchers/-s-p-e-n_-g-e-s-t-u-r-e_-m-a-n-a-g-e-r/index.html
index 7313682..3482c1f 100644
--- a/api/shark/-android-reference-matchers/-s-p-e-n_-g-e-s-t-u-r-e_-m-a-n-a-g-e-r/index.html
+++ b/api/shark/-android-reference-matchers/-s-p-e-n_-g-e-s-t-u-r-e_-m-a-n-a-g-e-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-s-t-a-t-i-c_-m-t-a-r-g-e-t_-v-i-e-w/index.html b/api/shark/-android-reference-matchers/-s-t-a-t-i-c_-m-t-a-r-g-e-t_-v-i-e-w/index.html
index cc28eef..752ecc4 100644
--- a/api/shark/-android-reference-matchers/-s-t-a-t-i-c_-m-t-a-r-g-e-t_-v-i-e-w/index.html
+++ b/api/shark/-android-reference-matchers/-s-t-a-t-i-c_-m-t-a-r-g-e-t_-v-i-e-w/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-s-y-s-t-e-m_-s-e-n-s-o-r_-m-a-n-a-g-e-r__-m-a-p-p-c-o-n-t-e-x-t-i-m-p-l/index.html b/api/shark/-android-reference-matchers/-s-y-s-t-e-m_-s-e-n-s-o-r_-m-a-n-a-g-e-r__-m-a-p-p-c-o-n-t-e-x-t-i-m-p-l/index.html
index d9bc3b0..c4296f9 100644
--- a/api/shark/-android-reference-matchers/-s-y-s-t-e-m_-s-e-n-s-o-r_-m-a-n-a-g-e-r__-m-a-p-p-c-o-n-t-e-x-t-i-m-p-l/index.html
+++ b/api/shark/-android-reference-matchers/-s-y-s-t-e-m_-s-e-n-s-o-r_-m-a-n-a-g-e-r__-m-a-p-p-c-o-n-t-e-x-t-i-m-p-l/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-t-e-x-t_-l-i-n-e__-s-c-a-c-h-e-d/index.html b/api/shark/-android-reference-matchers/-t-e-x-t_-l-i-n-e__-s-c-a-c-h-e-d/index.html
index 9847a18..5e9f9dc 100644
--- a/api/shark/-android-reference-matchers/-t-e-x-t_-l-i-n-e__-s-c-a-c-h-e-d/index.html
+++ b/api/shark/-android-reference-matchers/-t-e-x-t_-l-i-n-e__-s-c-a-c-h-e-d/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-t-e-x-t_-t-o_-s-p-e-e-c-h/index.html b/api/shark/-android-reference-matchers/-t-e-x-t_-t-o_-s-p-e-e-c-h/index.html
index bf2b458..9079467 100644
--- a/api/shark/-android-reference-matchers/-t-e-x-t_-t-o_-s-p-e-e-c-h/index.html
+++ b/api/shark/-android-reference-matchers/-t-e-x-t_-t-o_-s-p-e-e-c-h/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-t-e-x-t_-v-i-e-w__-m-l-a-s-t_-h-o-v-e-r-e-d_-v-i-e-w/index.html b/api/shark/-android-reference-matchers/-t-e-x-t_-v-i-e-w__-m-l-a-s-t_-h-o-v-e-r-e-d_-v-i-e-w/index.html
index 55bdb8e..d6f9295 100644
--- a/api/shark/-android-reference-matchers/-t-e-x-t_-v-i-e-w__-m-l-a-s-t_-h-o-v-e-r-e-d_-v-i-e-w/index.html
+++ b/api/shark/-android-reference-matchers/-t-e-x-t_-v-i-e-w__-m-l-a-s-t_-h-o-v-e-r-e-d_-v-i-e-w/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-t-o-a-s-t_-t-n/index.html b/api/shark/-android-reference-matchers/-t-o-a-s-t_-t-n/index.html
index ee8612b..7ba64d1 100644
--- a/api/shark/-android-reference-matchers/-t-o-a-s-t_-t-n/index.html
+++ b/api/shark/-android-reference-matchers/-t-o-a-s-t_-t-n/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-u-i_-m-o-d-e_-m-a-n-a-g-e-r/index.html b/api/shark/-android-reference-matchers/-u-i_-m-o-d-e_-m-a-n-a-g-e-r/index.html
new file mode 100644
index 0000000..fbf9c53
--- /dev/null
+++ b/api/shark/-android-reference-matchers/-u-i_-m-o-d-e_-m-a-n-a-g-e-r/index.html
@@ -0,0 +1,887 @@
+
+<!doctype html>
+<html lang="en" class="no-js">
+  <head>
+    
+      <meta charset="utf-8">
+      <meta name="viewport" content="width=device-width,initial-scale=1">
+      
+        <meta name="description" content="A memory leak detection library for Android">
+      
+      
+        <meta name="author" content="Square, Inc.">
+      
+      
+        <link rel="canonical" href="https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-u-i_-m-o-d-e_-m-a-n-a-g-e-r/">
+      
+      
+      
+      <link rel="icon" href="../../../../images/logo.png">
+      <meta name="generator" content="mkdocs-1.4.3, mkdocs-material-9.1.10">
+    
+    
+      
+        <title>Index - LeakCanary</title>
+      
+    
+    
+      <link rel="stylesheet" href="../../../../assets/stylesheets/main.85bb2934.min.css">
+      
+        
+        <link rel="stylesheet" href="../../../../assets/stylesheets/palette.a6bdf11c.min.css">
+      
+      
+
+    
+    
+    
+      
+        
+        
+        <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
+        <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
+        <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
+      
+    
+    
+    <script>__md_scope=new URL("../../../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
+    
+      
+
+    
+    
+    
+  </head>
+  
+  
+    
+    
+    
+    
+    
+    <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="deep-orange" data-md-color-accent="deep-purple">
+  
+    
+    
+    <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
+    <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
+    <label class="md-overlay" for="__drawer"></label>
+    <div data-md-component="skip">
+      
+        
+        <a href="#ui_mode_manager" class="md-skip">
+          Skip to content
+        </a>
+      
+    </div>
+    <div data-md-component="announce">
+      
+        <aside class="md-banner">
+          <div class="md-banner__inner md-grid md-typeset">
+            
+             
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+
+          </div>
+          
+        </aside>
+      
+    </div>
+    
+    
+      
+
+  
+
+<header class="md-header md-header--shadow" data-md-component="header">
+  <nav class="md-header__inner md-grid" aria-label="Header">
+    <a href="../../../.." title="LeakCanary" class="md-header__button md-logo" aria-label="LeakCanary" data-md-component="logo">
+      
+  <img src="../../../../images/logo.png" alt="logo">
+
+    </a>
+    <label class="md-header__button md-icon" for="__drawer">
+      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
+    </label>
+    <div class="md-header__title" data-md-component="header-title">
+      <div class="md-header__ellipsis">
+        <div class="md-header__topic">
+          <span class="md-ellipsis">
+            LeakCanary
+          </span>
+        </div>
+        <div class="md-header__topic" data-md-component="header-topic">
+          <span class="md-ellipsis">
+            
+              Index
+            
+          </span>
+        </div>
+      </div>
+    </div>
+    
+      
+    
+    
+    
+      <label class="md-header__button md-icon" for="__search">
+        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
+      </label>
+      <div class="md-search" data-md-component="search" role="dialog">
+  <label class="md-search__overlay" for="__search"></label>
+  <div class="md-search__inner" role="search">
+    <form class="md-search__form" name="search">
+      <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
+      <label class="md-search__icon md-icon" for="__search">
+        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
+        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
+      </label>
+      <nav class="md-search__options" aria-label="Search">
+        
+        <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
+          <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
+        </button>
+      </nav>
+      
+    </form>
+    <div class="md-search__output">
+      <div class="md-search__scrollwrap" data-md-scrollfix>
+        <div class="md-search-result" data-md-component="search-result">
+          <div class="md-search-result__meta">
+            Initializing search
+          </div>
+          <ol class="md-search-result__list" role="presentation"></ol>
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
+    
+    
+      <div class="md-header__source">
+        <a href="https://github.com/square/leakcanary" title="Go to repository" class="md-source" data-md-component="source">
+  <div class="md-source__icon md-icon">
+    
+    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
+  </div>
+  <div class="md-source__repository">
+    LeakCanary
+  </div>
+</a>
+      </div>
+    
+  </nav>
+  
+</header>
+    
+    <div class="md-container" data-md-component="container">
+      
+      
+        
+          
+        
+      
+      <main class="md-main" data-md-component="main">
+        <div class="md-main__inner md-grid">
+          
+            
+              
+              <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
+                <div class="md-sidebar__scrollwrap">
+                  <div class="md-sidebar__inner">
+                    
+
+
+<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
+  <label class="md-nav__title" for="__drawer">
+    <a href="../../../.." title="LeakCanary" class="md-nav__button md-logo" aria-label="LeakCanary" data-md-component="logo">
+      
+  <img src="../../../../images/logo.png" alt="logo">
+
+    </a>
+    LeakCanary
+  </label>
+  
+    <div class="md-nav__source">
+      <a href="https://github.com/square/leakcanary" title="Go to repository" class="md-source" data-md-component="source">
+  <div class="md-source__icon md-icon">
+    
+    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
+  </div>
+  <div class="md-source__repository">
+    LeakCanary
+  </div>
+</a>
+    </div>
+  
+  <ul class="md-nav__list" data-md-scrollfix>
+    
+      
+      
+      
+
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../.." class="md-nav__link">
+        Overview
+      </a>
+    </li>
+  
+
+    
+      
+      
+      
+
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../getting_started/" class="md-nav__link">
+        Getting Started
+      </a>
+    </li>
+  
+
+    
+      
+      
+      
+
+  
+  
+  
+    
+    <li class="md-nav__item md-nav__item--nested">
+      
+      
+      
+      
+      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
+      
+      
+      
+        <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
+          Fundamentals
+          <span class="md-nav__icon md-icon"></span>
+        </label>
+      
+      <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
+        <label class="md-nav__title" for="__nav_3">
+          <span class="md-nav__icon md-icon"></span>
+          Fundamentals
+        </label>
+        <ul class="md-nav__list" data-md-scrollfix>
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../fundamentals/" class="md-nav__link">
+        Introduction
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../fundamentals-how-leakcanary-works/" class="md-nav__link">
+        How LeakCanary works
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../fundamentals-fixing-a-memory-leak/" class="md-nav__link">
+        Fixing a memory leak
+      </a>
+    </li>
+  
+
+            
+          
+        </ul>
+      </nav>
+    </li>
+  
+
+    
+      
+      
+      
+
+  
+  
+  
+    
+    <li class="md-nav__item md-nav__item--nested">
+      
+      
+      
+      
+      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" >
+      
+      
+      
+        <label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
+          LeakCanary at scale
+          <span class="md-nav__icon md-icon"></span>
+        </label>
+      
+      <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
+        <label class="md-nav__title" for="__nav_4">
+          <span class="md-nav__icon md-icon"></span>
+          LeakCanary at scale
+        </label>
+        <ul class="md-nav__list" data-md-scrollfix>
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../ui-tests/" class="md-nav__link">
+        Leak detection in UI tests
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../uploading/" class="md-nav__link">
+        Uploading analysis results
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../leakcanary-for-releases/" class="md-nav__link">
+        LeakCanary for releases
+      </a>
+    </li>
+  
+
+            
+          
+        </ul>
+      </nav>
+    </li>
+  
+
+    
+      
+      
+      
+
+  
+  
+  
+    
+    <li class="md-nav__item md-nav__item--nested">
+      
+      
+      
+      
+      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
+      
+      
+      
+        <label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
+          Help & Community
+          <span class="md-nav__icon md-icon"></span>
+        </label>
+      
+      <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
+        <label class="md-nav__title" for="__nav_5">
+          <span class="md-nav__icon md-icon"></span>
+          Help & Community
+        </label>
+        <ul class="md-nav__list" data-md-scrollfix>
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../recipes/" class="md-nav__link">
+        Code recipes
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../faq/" class="md-nav__link">
+        FAQ
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../support/" class="md-nav__link">
+        Support
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../upgrading-to-leakcanary-2.0/" class="md-nav__link">
+        Upgrading to LeakCanary 2
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../recorded-presentations/" class="md-nav__link">
+        Recorded Presentations
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../blog-articles/" class="md-nav__link">
+        Blog Articles
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="https://stackoverflow.com/questions/tagged/leakcanary?sort=active" class="md-nav__link">
+        Stack Overflow ⏏
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    
+    <li class="md-nav__item md-nav__item--nested">
+      
+      
+      
+      
+      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_8" >
+      
+      
+      
+        <label class="md-nav__link" for="__nav_5_8" id="__nav_5_8_label" tabindex="0">
+          Contributing
+          <span class="md-nav__icon md-icon"></span>
+        </label>
+      
+      <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_8_label" aria-expanded="false">
+        <label class="md-nav__title" for="__nav_5_8">
+          <span class="md-nav__icon md-icon"></span>
+          Contributing
+        </label>
+        <ul class="md-nav__list" data-md-scrollfix>
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../code_of_conduct/" class="md-nav__link">
+        Code of Conduct
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../dev-env/" class="md-nav__link">
+        Dev Environment
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../releasing/" class="md-nav__link">
+        Releasing
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../how_to_help/" class="md-nav__link">
+        How to help
+      </a>
+    </li>
+  
+
+            
+          
+        </ul>
+      </nav>
+    </li>
+  
+
+            
+          
+        </ul>
+      </nav>
+    </li>
+  
+
+    
+      
+      
+      
+
+  
+  
+  
+    
+    <li class="md-nav__item md-nav__item--nested">
+      
+      
+      
+      
+      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" >
+      
+      
+      
+        <label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
+          Shark
+          <span class="md-nav__icon md-icon"></span>
+        </label>
+      
+      <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
+        <label class="md-nav__title" for="__nav_6">
+          <span class="md-nav__icon md-icon"></span>
+          Shark
+        </label>
+        <ul class="md-nav__list" data-md-scrollfix>
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../shark/" class="md-nav__link">
+        Overview
+      </a>
+    </li>
+  
+
+            
+          
+            
+              
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../" class="md-nav__link">
+        Shark API
+      </a>
+    </li>
+  
+
+            
+          
+        </ul>
+      </nav>
+    </li>
+  
+
+    
+      
+      
+      
+
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../leakcanary/" class="md-nav__link">
+        LeakCanary API
+      </a>
+    </li>
+  
+
+    
+      
+      
+      
+
+  
+  
+  
+    <li class="md-nav__item">
+      <a href="../../../../changelog/" class="md-nav__link">
+        Change Log
+      </a>
+    </li>
+  
+
+    
+  </ul>
+</nav>
+                  </div>
+                </div>
+              </div>
+            
+            
+              
+              <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
+                <div class="md-sidebar__scrollwrap">
+                  <div class="md-sidebar__inner">
+                    
+
+<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
+  
+  
+  
+    
+  
+  
+    <label class="md-nav__title" for="__toc">
+      <span class="md-nav__icon md-icon"></span>
+      Table of contents
+    </label>
+    <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
+      
+        <li class="md-nav__item">
+  <a href="#properties" class="md-nav__link">
+    Properties
+  </a>
+  
+</li>
+      
+    </ul>
+  
+</nav>
+                  </div>
+                </div>
+              </div>
+            
+          
+          
+            <div class="md-content" data-md-component="content">
+              <article class="md-content__inner md-typeset">
+                
+  
+    
+  <span style="float: right">🤔 Documentation issue? <a href="https://github.com/square/leakcanary/issues/new?assignees=&labels=type%3A+documentation&template=4-doc.md&title=Doc%20issue%20with%20api/shark/-android-reference-matchers/-u-i_-m-o-d-e_-m-a-n-a-g-e-r/%20page">Report it</a></span>
+    
+  
+  
+    
+  
+  
+  <p>//<a href="../../../../">leakcanary</a>/<a href="../../">shark</a>/<a href="../">AndroidReferenceMatchers</a>/<a href="./">UI_MODE_MANAGER</a></p>
+<h1 id="ui_mode_manager">UI_MODE_MANAGER<a class="headerlink" href="#ui_mode_manager" title="Permanent link">&para;</a></h1>
+<p><a href="./">UI_MODE_MANAGER</a>()</p>
+<h2 id="properties">Properties<a class="headerlink" href="#properties" title="Permanent link">&para;</a></h2>
+<table>
+<thead>
+<tr>
+<th>Name</th>
+<th>Summary</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td><a href="../../-primitive-type/-b-o-o-l-e-a-n/#-372974862%2FProperties%2F44236444">name</a></td>
+<td>val <a href="../../-primitive-type/-b-o-o-l-e-a-n/#-372974862%2FProperties%2F44236444">name</a>: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a></td>
+</tr>
+<tr>
+<td><a href="../../-primitive-type/-b-o-o-l-e-a-n/#-739389684%2FProperties%2F44236444">ordinal</a></td>
+<td>val <a href="../../-primitive-type/-b-o-o-l-e-a-n/#-739389684%2FProperties%2F44236444">ordinal</a>: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html">Int</a></td>
+</tr>
+</tbody>
+</table>
+  
+
+              </article>
+            </div>
+          
+          
+        </div>
+        
+      </main>
+      
+        <footer class="md-footer">
+  
+  <div class="md-footer-meta md-typeset">
+    <div class="md-footer-meta__inner md-grid">
+      <div class="md-copyright">
+  
+    <div class="md-copyright__highlight">
+      Copyright &copy; 2015 Square, Inc.
+    </div>
+  
+  
+    Made with
+    <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
+      Material for MkDocs
+    </a>
+  
+</div>
+      
+        <div class="md-social">
+  
+    
+    
+    
+    
+      
+      
+    
+    <a href="https://square.github.io/" target="_blank" rel="noopener" title="square.github.io" class="md-social__link">
+      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg>
+    </a>
+  
+    
+    
+    
+    
+      
+      
+    
+    <a href="https://twitter.com/Piwai" target="_blank" rel="noopener" title="twitter.com" class="md-social__link">
+      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"/></svg>
+    </a>
+  
+    
+    
+    
+    
+      
+      
+    
+    <a href="https://stackoverflow.com/questions/tagged/leakcanary?sort=active" target="_blank" rel="noopener" title="stackoverflow.com" class="md-social__link">
+      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M290.7 311 95 269.7 86.8 309l195.7 41zm51-87L188.2 95.7l-25.5 30.8 153.5 128.3zm-31.2 39.7L129.2 179l-16.7 36.5L293.7 300zM262 32l-32 24 119.3 160.3 32-24zm20.5 328h-200v39.7h200zm39.7 80H42.7V320h-40v160h359.5V320h-40z"/></svg>
+    </a>
+  
+    
+    
+    
+    
+      
+      
+    
+    <a href="https://www.linkedin.com/company/joinsquare/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link">
+      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"/></svg>
+    </a>
+  
+</div>
+      
+    </div>
+  </div>
+</footer>
+      
+    </div>
+    <div class="md-dialog" data-md-component="dialog">
+      <div class="md-dialog__inner md-typeset"></div>
+    </div>
+    
+    <script id="__config" type="application/json">{"base": "../../../..", "features": ["tabs"], "search": "../../../../assets/javascripts/workers/search.208ed371.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
+    
+    
+      <script src="../../../../assets/javascripts/bundle.fac441b0.min.js"></script>
+      
+    
+  </body>
+</html>
\ No newline at end of file
diff --git a/api/shark/-android-reference-matchers/-u-s-e-r_-m-a-n-a-g-e-r__-s-i-n-s-t-a-n-c-e/index.html b/api/shark/-android-reference-matchers/-u-s-e-r_-m-a-n-a-g-e-r__-s-i-n-s-t-a-n-c-e/index.html
index 6c68aec..4c9d8f4 100644
--- a/api/shark/-android-reference-matchers/-u-s-e-r_-m-a-n-a-g-e-r__-s-i-n-s-t-a-n-c-e/index.html
+++ b/api/shark/-android-reference-matchers/-u-s-e-r_-m-a-n-a-g-e-r__-s-i-n-s-t-a-n-c-e/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-v-i-e-w-l-o-c-a-t-i-o-n-h-o-l-d-e-r_-r-o-o-t/index.html b/api/shark/-android-reference-matchers/-v-i-e-w-l-o-c-a-t-i-o-n-h-o-l-d-e-r_-r-o-o-t/index.html
index ae7340d..c811faa 100644
--- a/api/shark/-android-reference-matchers/-v-i-e-w-l-o-c-a-t-i-o-n-h-o-l-d-e-r_-r-o-o-t/index.html
+++ b/api/shark/-android-reference-matchers/-v-i-e-w-l-o-c-a-t-i-o-n-h-o-l-d-e-r_-r-o-o-t/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-v-i-e-w_-c-o-n-f-i-g-u-r-a-t-i-o-n__-m-c-o-n-t-e-x-t/index.html b/api/shark/-android-reference-matchers/-v-i-e-w_-c-o-n-f-i-g-u-r-a-t-i-o-n__-m-c-o-n-t-e-x-t/index.html
index 8f7a6be..13ab7bb 100644
--- a/api/shark/-android-reference-matchers/-v-i-e-w_-c-o-n-f-i-g-u-r-a-t-i-o-n__-m-c-o-n-t-e-x-t/index.html
+++ b/api/shark/-android-reference-matchers/-v-i-e-w_-c-o-n-f-i-g-u-r-a-t-i-o-n__-m-c-o-n-t-e-x-t/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-v-i-e-w_-g-r-o-u-p__-m_-c-u-r-r-e-n-t_-d-r-a-g_-c-h-i-l-d/index.html b/api/shark/-android-reference-matchers/-v-i-e-w_-g-r-o-u-p__-m_-c-u-r-r-e-n-t_-d-r-a-g_-c-h-i-l-d/index.html
index 01113e0..cea4258 100644
--- a/api/shark/-android-reference-matchers/-v-i-e-w_-g-r-o-u-p__-m_-c-u-r-r-e-n-t_-d-r-a-g_-c-h-i-l-d/index.html
+++ b/api/shark/-android-reference-matchers/-v-i-e-w_-g-r-o-u-p__-m_-c-u-r-r-e-n-t_-d-r-a-g_-c-h-i-l-d/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-v-i-e-w_-g-r-o-u-p__-m_-p-r-e_-s-o-r-t-e-d_-c-h-i-l-d-r-e-n/index.html b/api/shark/-android-reference-matchers/-v-i-e-w_-g-r-o-u-p__-m_-p-r-e_-s-o-r-t-e-d_-c-h-i-l-d-r-e-n/index.html
index c55a50d..207c0ad 100644
--- a/api/shark/-android-reference-matchers/-v-i-e-w_-g-r-o-u-p__-m_-p-r-e_-s-o-r-t-e-d_-c-h-i-l-d-r-e-n/index.html
+++ b/api/shark/-android-reference-matchers/-v-i-e-w_-g-r-o-u-p__-m_-p-r-e_-s-o-r-t-e-d_-c-h-i-l-d-r-e-n/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-v-i-e-w_-t-o-o-l-t-i-p_-c-a-l-l-b-a-c-k/index.html b/api/shark/-android-reference-matchers/-v-i-e-w_-t-o-o-l-t-i-p_-c-a-l-l-b-a-c-k/index.html
index e93e017..e5b0ba0 100644
--- a/api/shark/-android-reference-matchers/-v-i-e-w_-t-o-o-l-t-i-p_-c-a-l-l-b-a-c-k/index.html
+++ b/api/shark/-android-reference-matchers/-v-i-e-w_-t-o-o-l-t-i-p_-c-a-l-l-b-a-c-k/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-w-i-n-d-o-w_-o-n_-b-a-c-k_-i-n-v-o-k-e-d_-d-i-s-p-a-t-c-h-e-r__-s-t-u-b/index.html b/api/shark/-android-reference-matchers/-w-i-n-d-o-w_-o-n_-b-a-c-k_-i-n-v-o-k-e-d_-d-i-s-p-a-t-c-h-e-r__-s-t-u-b/index.html
index d275498..c7393bc 100644
--- a/api/shark/-android-reference-matchers/-w-i-n-d-o-w_-o-n_-b-a-c-k_-i-n-v-o-k-e-d_-d-i-s-p-a-t-c-h-e-r__-s-t-u-b/index.html
+++ b/api/shark/-android-reference-matchers/-w-i-n-d-o-w_-o-n_-b-a-c-k_-i-n-v-o-k-e-d_-d-i-s-p-a-t-c-h-e-r__-s-t-u-b/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/-x-i-a-m-i__-r-e-s-o-u-r-c-e-s_-i-m-p-l/index.html b/api/shark/-android-reference-matchers/-x-i-a-m-i__-r-e-s-o-u-r-c-e-s_-i-m-p-l/index.html
index 2126ed5..bd0edcc 100644
--- a/api/shark/-android-reference-matchers/-x-i-a-m-i__-r-e-s-o-u-r-c-e-s_-i-m-p-l/index.html
+++ b/api/shark/-android-reference-matchers/-x-i-a-m-i__-r-e-s-o-u-r-c-e-s_-i-m-p-l/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-reference-matchers/index.html b/api/shark/-android-reference-matchers/index.html
index 5b37187..1fc4e0b 100644
--- a/api/shark/-android-reference-matchers/index.html
+++ b/api/shark/-android-reference-matchers/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
@@ -954,6 +954,10 @@
 <td><a href="-s-p-e-n_-g-e-s-t-u-r-e_-m-a-n-a-g-e-r/">SPEN_GESTURE_MANAGER</a>()</td>
 </tr>
 <tr>
+<td><a href="-u-i_-m-o-d-e_-m-a-n-a-g-e-r/">UI_MODE_MANAGER</a></td>
+<td><a href="-u-i_-m-o-d-e_-m-a-n-a-g-e-r/">UI_MODE_MANAGER</a>()</td>
+</tr>
+<tr>
 <td><a href="-d-r-e-a-m_-s-e-r-v-i-c-e/">DREAM_SERVICE</a></td>
 <td><a href="-d-r-e-a-m_-s-e-r-v-i-c-e/">DREAM_SERVICE</a>()</td>
 </tr>
@@ -1153,6 +1157,10 @@
 <td><a href="-i-r-e-q-u-e-s-t_-f-i-n-i-s-h_-c-a-l-l-b-a-c-k/">IREQUEST_FINISH_CALLBACK</a></td>
 <td><a href="-i-r-e-q-u-e-s-t_-f-i-n-i-s-h_-c-a-l-l-b-a-c-k/">IREQUEST_FINISH_CALLBACK</a>()</td>
 </tr>
+<tr>
+<td><a href="-p-e-r-m-i-s-s-i-o-n_-c-o-n-t-r-o-l-l-e-r_-m-a-n-a-g-e-r/">PERMISSION_CONTROLLER_MANAGER</a></td>
+<td><a href="-p-e-r-m-i-s-s-i-o-n_-c-o-n-t-r-o-l-l-e-r_-m-a-n-a-g-e-r/">PERMISSION_CONTROLLER_MANAGER</a>()</td>
+</tr>
 </tbody>
 </table>
 <h2 id="types">Types<a class="headerlink" href="#types" title="Permanent link">&para;</a></h2>
diff --git a/api/shark/-android-resource-id-names/-companion/index.html b/api/shark/-android-resource-id-names/-companion/index.html
index 70e2624..596d120 100644
--- a/api/shark/-android-resource-id-names/-companion/index.html
+++ b/api/shark/-android-resource-id-names/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-resource-id-names/-companion/read-from-heap/index.html b/api/shark/-android-resource-id-names/-companion/read-from-heap/index.html
index 8b8e078..c213f77 100644
--- a/api/shark/-android-resource-id-names/-companion/read-from-heap/index.html
+++ b/api/shark/-android-resource-id-names/-companion/read-from-heap/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-resource-id-names/-companion/save-to-memory/index.html b/api/shark/-android-resource-id-names/-companion/save-to-memory/index.html
index 2061c3d..d0d6097 100644
--- a/api/shark/-android-resource-id-names/-companion/save-to-memory/index.html
+++ b/api/shark/-android-resource-id-names/-companion/save-to-memory/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-resource-id-names/get/index.html b/api/shark/-android-resource-id-names/get/index.html
index 10d6a13..38bfb87 100644
--- a/api/shark/-android-resource-id-names/get/index.html
+++ b/api/shark/-android-resource-id-names/get/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-resource-id-names/index.html b/api/shark/-android-resource-id-names/index.html
index a6f08ad..2c513ec 100644
--- a/api/shark/-android-resource-id-names/index.html
+++ b/api/shark/-android-resource-id-names/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-services/alive-android-service-object-ids/index.html b/api/shark/-android-services/alive-android-service-object-ids/index.html
index 707737a..d571800 100644
--- a/api/shark/-android-services/alive-android-service-object-ids/index.html
+++ b/api/shark/-android-services/alive-android-service-object-ids/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-android-services/index.html b/api/shark/-android-services/index.html
index 008c00c..395f077 100644
--- a/api/shark/-android-services/index.html
+++ b/api/shark/-android-services/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-app-singleton-inspector/-app-singleton-inspector/index.html b/api/shark/-app-singleton-inspector/-app-singleton-inspector/index.html
index 79a6f00..ff49e54 100644
--- a/api/shark/-app-singleton-inspector/-app-singleton-inspector/index.html
+++ b/api/shark/-app-singleton-inspector/-app-singleton-inspector/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-app-singleton-inspector/index.html b/api/shark/-app-singleton-inspector/index.html
index 8bfe2fd..c5c31f3 100644
--- a/api/shark/-app-singleton-inspector/index.html
+++ b/api/shark/-app-singleton-inspector/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-app-singleton-inspector/inspect/index.html b/api/shark/-app-singleton-inspector/inspect/index.html
index 293dada..e73c1cf 100644
--- a/api/shark/-app-singleton-inspector/inspect/index.html
+++ b/api/shark/-app-singleton-inspector/inspect/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-application-leak/-application-leak/index.html b/api/shark/-application-leak/-application-leak/index.html
index c9fb7f8..ac89491 100644
--- a/api/shark/-application-leak/-application-leak/index.html
+++ b/api/shark/-application-leak/-application-leak/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-application-leak/-companion/index.html b/api/shark/-application-leak/-companion/index.html
index e0011a5..d80a341 100644
--- a/api/shark/-application-leak/-companion/index.html
+++ b/api/shark/-application-leak/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-application-leak/index.html b/api/shark/-application-leak/index.html
index e0a513d..a1c76a7 100644
--- a/api/shark/-application-leak/index.html
+++ b/api/shark/-application-leak/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-application-leak/leak-traces/index.html b/api/shark/-application-leak/leak-traces/index.html
index c35ab6a..9bcfe9c 100644
--- a/api/shark/-application-leak/leak-traces/index.html
+++ b/api/shark/-application-leak/leak-traces/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-application-leak/short-description/index.html b/api/shark/-application-leak/short-description/index.html
index e951f47..809a60b 100644
--- a/api/shark/-application-leak/short-description/index.html
+++ b/api/shark/-application-leak/short-description/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-application-leak/signature/index.html b/api/shark/-application-leak/signature/index.html
index 9304396..c13d879 100644
--- a/api/shark/-application-leak/signature/index.html
+++ b/api/shark/-application-leak/signature/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-application-leak/to-string/index.html b/api/shark/-application-leak/to-string/index.html
index 4323ef5..978ff81 100644
--- a/api/shark/-application-leak/to-string/index.html
+++ b/api/shark/-application-leak/to-string/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-byte-array-source-provider/-byte-array-source-provider/index.html b/api/shark/-byte-array-source-provider/-byte-array-source-provider/index.html
index 219d8aa..4ad8924 100644
--- a/api/shark/-byte-array-source-provider/-byte-array-source-provider/index.html
+++ b/api/shark/-byte-array-source-provider/-byte-array-source-provider/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-byte-array-source-provider/index.html b/api/shark/-byte-array-source-provider/index.html
index e90de25..28cfab3 100644
--- a/api/shark/-byte-array-source-provider/index.html
+++ b/api/shark/-byte-array-source-provider/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-byte-array-source-provider/open-random-access-source/index.html b/api/shark/-byte-array-source-provider/open-random-access-source/index.html
index 9c5ce72..a293377 100644
--- a/api/shark/-byte-array-source-provider/open-random-access-source/index.html
+++ b/api/shark/-byte-array-source-provider/open-random-access-source/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-byte-array-source-provider/open-streaming-source/index.html b/api/shark/-byte-array-source-provider/open-streaming-source/index.html
index 927be93..d08c56e 100644
--- a/api/shark/-byte-array-source-provider/open-streaming-source/index.html
+++ b/api/shark/-byte-array-source-provider/open-streaming-source/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-closeable-heap-graph/index.html b/api/shark/-closeable-heap-graph/index.html
index 12648f6..95d8b38 100644
--- a/api/shark/-closeable-heap-graph/index.html
+++ b/api/shark/-closeable-heap-graph/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-constant-memory-metrics-dual-source-provider/-constant-memory-metrics-dual-source-provider/index.html b/api/shark/-constant-memory-metrics-dual-source-provider/-constant-memory-metrics-dual-source-provider/index.html
index 8e625fb..fefdd13 100644
--- a/api/shark/-constant-memory-metrics-dual-source-provider/-constant-memory-metrics-dual-source-provider/index.html
+++ b/api/shark/-constant-memory-metrics-dual-source-provider/-constant-memory-metrics-dual-source-provider/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-constant-memory-metrics-dual-source-provider/byte-travel-range/index.html b/api/shark/-constant-memory-metrics-dual-source-provider/byte-travel-range/index.html
index 4dba163..986b542 100644
--- a/api/shark/-constant-memory-metrics-dual-source-provider/byte-travel-range/index.html
+++ b/api/shark/-constant-memory-metrics-dual-source-provider/byte-travel-range/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-constant-memory-metrics-dual-source-provider/index.html b/api/shark/-constant-memory-metrics-dual-source-provider/index.html
index 4a5600b..04b6fb9 100644
--- a/api/shark/-constant-memory-metrics-dual-source-provider/index.html
+++ b/api/shark/-constant-memory-metrics-dual-source-provider/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-constant-memory-metrics-dual-source-provider/open-random-access-source/index.html b/api/shark/-constant-memory-metrics-dual-source-provider/open-random-access-source/index.html
index 7f3d8a0..86c556d 100644
--- a/api/shark/-constant-memory-metrics-dual-source-provider/open-random-access-source/index.html
+++ b/api/shark/-constant-memory-metrics-dual-source-provider/open-random-access-source/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-constant-memory-metrics-dual-source-provider/open-streaming-source/index.html b/api/shark/-constant-memory-metrics-dual-source-provider/open-streaming-source/index.html
index 4556b72..6861a3a 100644
--- a/api/shark/-constant-memory-metrics-dual-source-provider/open-streaming-source/index.html
+++ b/api/shark/-constant-memory-metrics-dual-source-provider/open-streaming-source/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-constant-memory-metrics-dual-source-provider/random-access-byte-reads/index.html b/api/shark/-constant-memory-metrics-dual-source-provider/random-access-byte-reads/index.html
index 42ddce4..2e5cda0 100644
--- a/api/shark/-constant-memory-metrics-dual-source-provider/random-access-byte-reads/index.html
+++ b/api/shark/-constant-memory-metrics-dual-source-provider/random-access-byte-reads/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-constant-memory-metrics-dual-source-provider/random-access-byte-travel/index.html b/api/shark/-constant-memory-metrics-dual-source-provider/random-access-byte-travel/index.html
index 983affe..b153b1f 100644
--- a/api/shark/-constant-memory-metrics-dual-source-provider/random-access-byte-travel/index.html
+++ b/api/shark/-constant-memory-metrics-dual-source-provider/random-access-byte-travel/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-constant-memory-metrics-dual-source-provider/random-access-read-count/index.html b/api/shark/-constant-memory-metrics-dual-source-provider/random-access-read-count/index.html
index baaf553..9bd4253 100644
--- a/api/shark/-constant-memory-metrics-dual-source-provider/random-access-read-count/index.html
+++ b/api/shark/-constant-memory-metrics-dual-source-provider/random-access-read-count/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-decorated-path/-decorated-path/index.html b/api/shark/-decorated-path/-decorated-path/index.html
index ddb38f6..5806940 100644
--- a/api/shark/-decorated-path/-decorated-path/index.html
+++ b/api/shark/-decorated-path/-decorated-path/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-decorated-path/index.html b/api/shark/-decorated-path/index.html
index b8e5638..3040003 100644
--- a/api/shark/-decorated-path/index.html
+++ b/api/shark/-decorated-path/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-decorated-path/iterator/index.html b/api/shark/-decorated-path/iterator/index.html
index 3294c53..7b28207 100644
--- a/api/shark/-decorated-path/iterator/index.html
+++ b/api/shark/-decorated-path/iterator/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-decorated-path/relationships/index.html b/api/shark/-decorated-path/relationships/index.html
index 219cde4..3b70f99 100644
--- a/api/shark/-decorated-path/relationships/index.html
+++ b/api/shark/-decorated-path/relationships/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-decorated-path/reverse-relationships/index.html b/api/shark/-decorated-path/reverse-relationships/index.html
index 2c40be3..d77e5a7 100644
--- a/api/shark/-decorated-path/reverse-relationships/index.html
+++ b/api/shark/-decorated-path/reverse-relationships/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-deobfuscate-hprof-command/-deobfuscate-hprof-command/index.html b/api/shark/-deobfuscate-hprof-command/-deobfuscate-hprof-command/index.html
index 1ca25a3..e704136 100644
--- a/api/shark/-deobfuscate-hprof-command/-deobfuscate-hprof-command/index.html
+++ b/api/shark/-deobfuscate-hprof-command/-deobfuscate-hprof-command/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-deobfuscate-hprof-command/index.html b/api/shark/-deobfuscate-hprof-command/index.html
index bad9661..4d8b282 100644
--- a/api/shark/-deobfuscate-hprof-command/index.html
+++ b/api/shark/-deobfuscate-hprof-command/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-deobfuscate-hprof-command/run/index.html b/api/shark/-deobfuscate-hprof-command/run/index.html
index c240f8a..a8bd78c 100644
--- a/api/shark/-deobfuscate-hprof-command/run/index.html
+++ b/api/shark/-deobfuscate-hprof-command/run/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-dual-source-provider/index.html b/api/shark/-dual-source-provider/index.html
index 9253d6a..19492fd 100644
--- a/api/shark/-dual-source-provider/index.html
+++ b/api/shark/-dual-source-provider/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-dump-process-command/-companion/dump-heap/index.html b/api/shark/-dump-process-command/-companion/dump-heap/index.html
index b4d4618..dc97c45 100644
--- a/api/shark/-dump-process-command/-companion/dump-heap/index.html
+++ b/api/shark/-dump-process-command/-companion/dump-heap/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-dump-process-command/-companion/index.html b/api/shark/-dump-process-command/-companion/index.html
index 4ca186d..559c581 100644
--- a/api/shark/-dump-process-command/-companion/index.html
+++ b/api/shark/-dump-process-command/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-dump-process-command/-dump-process-command/index.html b/api/shark/-dump-process-command/-dump-process-command/index.html
index bbbc07a..03a7e59 100644
--- a/api/shark/-dump-process-command/-dump-process-command/index.html
+++ b/api/shark/-dump-process-command/-dump-process-command/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-dump-process-command/index.html b/api/shark/-dump-process-command/index.html
index 6a83d02..7c2e2b3 100644
--- a/api/shark/-dump-process-command/index.html
+++ b/api/shark/-dump-process-command/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-dump-process-command/run/index.html b/api/shark/-dump-process-command/run/index.html
index be39e8d..a9a2086 100644
--- a/api/shark/-dump-process-command/run/index.html
+++ b/api/shark/-dump-process-command/run/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-file-source-provider/-file-source-provider/index.html b/api/shark/-file-source-provider/-file-source-provider/index.html
index fd00a5e..cb384e3 100644
--- a/api/shark/-file-source-provider/-file-source-provider/index.html
+++ b/api/shark/-file-source-provider/-file-source-provider/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-file-source-provider/index.html b/api/shark/-file-source-provider/index.html
index c53b115..ff78c79 100644
--- a/api/shark/-file-source-provider/index.html
+++ b/api/shark/-file-source-provider/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-file-source-provider/open-random-access-source/index.html b/api/shark/-file-source-provider/open-random-access-source/index.html
index 55745fa..05afcfa 100644
--- a/api/shark/-file-source-provider/open-random-access-source/index.html
+++ b/api/shark/-file-source-provider/open-random-access-source/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-file-source-provider/open-streaming-source/index.html b/api/shark/-file-source-provider/open-streaming-source/index.html
index 92dd370..fd24d16 100644
--- a/api/shark/-file-source-provider/open-streaming-source/index.html
+++ b/api/shark/-file-source-provider/open-streaming-source/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-filtering-leaking-object-finder/-filtering-leaking-object-finder/index.html b/api/shark/-filtering-leaking-object-finder/-filtering-leaking-object-finder/index.html
index 97692de..2dad7cf 100644
--- a/api/shark/-filtering-leaking-object-finder/-filtering-leaking-object-finder/index.html
+++ b/api/shark/-filtering-leaking-object-finder/-filtering-leaking-object-finder/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-filtering-leaking-object-finder/-leaking-object-filter/index.html b/api/shark/-filtering-leaking-object-finder/-leaking-object-filter/index.html
index 9e7fb03..eacc6c4 100644
--- a/api/shark/-filtering-leaking-object-finder/-leaking-object-filter/index.html
+++ b/api/shark/-filtering-leaking-object-finder/-leaking-object-filter/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-filtering-leaking-object-finder/-leaking-object-filter/is-leaking-object/index.html b/api/shark/-filtering-leaking-object-finder/-leaking-object-filter/is-leaking-object/index.html
index 0ea77e1..aad868a 100644
--- a/api/shark/-filtering-leaking-object-finder/-leaking-object-filter/is-leaking-object/index.html
+++ b/api/shark/-filtering-leaking-object-finder/-leaking-object-filter/is-leaking-object/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-filtering-leaking-object-finder/find-leaking-object-ids/index.html b/api/shark/-filtering-leaking-object-finder/find-leaking-object-ids/index.html
index 85bee2b..f678776 100644
--- a/api/shark/-filtering-leaking-object-finder/find-leaking-object-ids/index.html
+++ b/api/shark/-filtering-leaking-object-finder/find-leaking-object-ids/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-filtering-leaking-object-finder/index.html b/api/shark/-filtering-leaking-object-finder/index.html
index 3a30043..8b3723e 100644
--- a/api/shark/-filtering-leaking-object-finder/index.html
+++ b/api/shark/-filtering-leaking-object-finder/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-find-leak-paths/-find-leak-paths/index.html b/api/shark/-find-leak-paths/-find-leak-paths/index.html
index 52f55db..0710058 100644
--- a/api/shark/-find-leak-paths/-find-leak-paths/index.html
+++ b/api/shark/-find-leak-paths/-find-leak-paths/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-find-leak-paths/index.html b/api/shark/-find-leak-paths/index.html
index 8f1408f..f0e82ef 100644
--- a/api/shark/-find-leak-paths/index.html
+++ b/api/shark/-find-leak-paths/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-find-leak-paths/leak-paths/index.html b/api/shark/-find-leak-paths/leak-paths/index.html
index 1e559fd..93a66a0 100644
--- a/api/shark/-find-leak-paths/leak-paths/index.html
+++ b/api/shark/-find-leak-paths/leak-paths/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-find-leak-paths/transaction/index.html b/api/shark/-find-leak-paths/transaction/index.html
index 587dd2a..58eb57d 100644
--- a/api/shark/-find-leak-paths/transaction/index.html
+++ b/api/shark/-find-leak-paths/transaction/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-debugger/-debugger/index.html b/api/shark/-gc-root/-debugger/-debugger/index.html
index fbe76fd..5bcc0d5 100644
--- a/api/shark/-gc-root/-debugger/-debugger/index.html
+++ b/api/shark/-gc-root/-debugger/-debugger/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-debugger/id/index.html b/api/shark/-gc-root/-debugger/id/index.html
index 5590f67..690f264 100644
--- a/api/shark/-gc-root/-debugger/id/index.html
+++ b/api/shark/-gc-root/-debugger/id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-debugger/index.html b/api/shark/-gc-root/-debugger/index.html
index 2b78725..46ba71e 100644
--- a/api/shark/-gc-root/-debugger/index.html
+++ b/api/shark/-gc-root/-debugger/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-finalizing/-finalizing/index.html b/api/shark/-gc-root/-finalizing/-finalizing/index.html
index 4da14e5..4af34f2 100644
--- a/api/shark/-gc-root/-finalizing/-finalizing/index.html
+++ b/api/shark/-gc-root/-finalizing/-finalizing/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-finalizing/id/index.html b/api/shark/-gc-root/-finalizing/id/index.html
index 31a8c8d..885ab59 100644
--- a/api/shark/-gc-root/-finalizing/id/index.html
+++ b/api/shark/-gc-root/-finalizing/id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-finalizing/index.html b/api/shark/-gc-root/-finalizing/index.html
index 7124b97..06e1cf4 100644
--- a/api/shark/-gc-root/-finalizing/index.html
+++ b/api/shark/-gc-root/-finalizing/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-interned-string/-interned-string/index.html b/api/shark/-gc-root/-interned-string/-interned-string/index.html
index e962498..0978f9f 100644
--- a/api/shark/-gc-root/-interned-string/-interned-string/index.html
+++ b/api/shark/-gc-root/-interned-string/-interned-string/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-interned-string/id/index.html b/api/shark/-gc-root/-interned-string/id/index.html
index d6089fc..20ccdf3 100644
--- a/api/shark/-gc-root/-interned-string/id/index.html
+++ b/api/shark/-gc-root/-interned-string/id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-interned-string/index.html b/api/shark/-gc-root/-interned-string/index.html
index e192533..f2aa61c 100644
--- a/api/shark/-gc-root/-interned-string/index.html
+++ b/api/shark/-gc-root/-interned-string/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-java-frame/-java-frame/index.html b/api/shark/-gc-root/-java-frame/-java-frame/index.html
index 1d616d2..84bca4b 100644
--- a/api/shark/-gc-root/-java-frame/-java-frame/index.html
+++ b/api/shark/-gc-root/-java-frame/-java-frame/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-java-frame/frame-number/index.html b/api/shark/-gc-root/-java-frame/frame-number/index.html
index fd9b140..76dcd0e 100644
--- a/api/shark/-gc-root/-java-frame/frame-number/index.html
+++ b/api/shark/-gc-root/-java-frame/frame-number/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-java-frame/id/index.html b/api/shark/-gc-root/-java-frame/id/index.html
index 74546b4..cbfbb07 100644
--- a/api/shark/-gc-root/-java-frame/id/index.html
+++ b/api/shark/-gc-root/-java-frame/id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-java-frame/index.html b/api/shark/-gc-root/-java-frame/index.html
index b81638a..3cbde9c 100644
--- a/api/shark/-gc-root/-java-frame/index.html
+++ b/api/shark/-gc-root/-java-frame/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-java-frame/thread-serial-number/index.html b/api/shark/-gc-root/-java-frame/thread-serial-number/index.html
index e027bf0..3f472b1 100644
--- a/api/shark/-gc-root/-java-frame/thread-serial-number/index.html
+++ b/api/shark/-gc-root/-java-frame/thread-serial-number/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-jni-global/-jni-global/index.html b/api/shark/-gc-root/-jni-global/-jni-global/index.html
index 2b3c440..05006a5 100644
--- a/api/shark/-gc-root/-jni-global/-jni-global/index.html
+++ b/api/shark/-gc-root/-jni-global/-jni-global/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-jni-global/id/index.html b/api/shark/-gc-root/-jni-global/id/index.html
index 6cdf003..9e18015 100644
--- a/api/shark/-gc-root/-jni-global/id/index.html
+++ b/api/shark/-gc-root/-jni-global/id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-jni-global/index.html b/api/shark/-gc-root/-jni-global/index.html
index f47b78f..ceed556 100644
--- a/api/shark/-gc-root/-jni-global/index.html
+++ b/api/shark/-gc-root/-jni-global/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-jni-global/jni-global-ref-id/index.html b/api/shark/-gc-root/-jni-global/jni-global-ref-id/index.html
index 9a85830..e106c8d 100644
--- a/api/shark/-gc-root/-jni-global/jni-global-ref-id/index.html
+++ b/api/shark/-gc-root/-jni-global/jni-global-ref-id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-jni-local/-jni-local/index.html b/api/shark/-gc-root/-jni-local/-jni-local/index.html
index 2c46b66..bba25b2 100644
--- a/api/shark/-gc-root/-jni-local/-jni-local/index.html
+++ b/api/shark/-gc-root/-jni-local/-jni-local/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-jni-local/frame-number/index.html b/api/shark/-gc-root/-jni-local/frame-number/index.html
index 7280119..d58c040 100644
--- a/api/shark/-gc-root/-jni-local/frame-number/index.html
+++ b/api/shark/-gc-root/-jni-local/frame-number/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-jni-local/id/index.html b/api/shark/-gc-root/-jni-local/id/index.html
index d801f19..5eec58f 100644
--- a/api/shark/-gc-root/-jni-local/id/index.html
+++ b/api/shark/-gc-root/-jni-local/id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-jni-local/index.html b/api/shark/-gc-root/-jni-local/index.html
index 0f5e9fb..3443d7e 100644
--- a/api/shark/-gc-root/-jni-local/index.html
+++ b/api/shark/-gc-root/-jni-local/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-jni-local/thread-serial-number/index.html b/api/shark/-gc-root/-jni-local/thread-serial-number/index.html
index 7ef303e..93db7cd 100644
--- a/api/shark/-gc-root/-jni-local/thread-serial-number/index.html
+++ b/api/shark/-gc-root/-jni-local/thread-serial-number/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-jni-monitor/-jni-monitor/index.html b/api/shark/-gc-root/-jni-monitor/-jni-monitor/index.html
index 366099b..f375ff5 100644
--- a/api/shark/-gc-root/-jni-monitor/-jni-monitor/index.html
+++ b/api/shark/-gc-root/-jni-monitor/-jni-monitor/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-jni-monitor/id/index.html b/api/shark/-gc-root/-jni-monitor/id/index.html
index 5dc70a2..0301dbb 100644
--- a/api/shark/-gc-root/-jni-monitor/id/index.html
+++ b/api/shark/-gc-root/-jni-monitor/id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-jni-monitor/index.html b/api/shark/-gc-root/-jni-monitor/index.html
index de1b0b7..c061902 100644
--- a/api/shark/-gc-root/-jni-monitor/index.html
+++ b/api/shark/-gc-root/-jni-monitor/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-jni-monitor/stack-depth/index.html b/api/shark/-gc-root/-jni-monitor/stack-depth/index.html
index 395e579..c323d12 100644
--- a/api/shark/-gc-root/-jni-monitor/stack-depth/index.html
+++ b/api/shark/-gc-root/-jni-monitor/stack-depth/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-jni-monitor/stack-trace-serial-number/index.html b/api/shark/-gc-root/-jni-monitor/stack-trace-serial-number/index.html
index 0f2770f..8777026 100644
--- a/api/shark/-gc-root/-jni-monitor/stack-trace-serial-number/index.html
+++ b/api/shark/-gc-root/-jni-monitor/stack-trace-serial-number/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-monitor-used/-monitor-used/index.html b/api/shark/-gc-root/-monitor-used/-monitor-used/index.html
index 076ef60..07077b7 100644
--- a/api/shark/-gc-root/-monitor-used/-monitor-used/index.html
+++ b/api/shark/-gc-root/-monitor-used/-monitor-used/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-monitor-used/id/index.html b/api/shark/-gc-root/-monitor-used/id/index.html
index 5af7af8..0d67faa 100644
--- a/api/shark/-gc-root/-monitor-used/id/index.html
+++ b/api/shark/-gc-root/-monitor-used/id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-monitor-used/index.html b/api/shark/-gc-root/-monitor-used/index.html
index 37c003e..3886cb7 100644
--- a/api/shark/-gc-root/-monitor-used/index.html
+++ b/api/shark/-gc-root/-monitor-used/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-native-stack/-native-stack/index.html b/api/shark/-gc-root/-native-stack/-native-stack/index.html
index 6623b93..5d2e82c 100644
--- a/api/shark/-gc-root/-native-stack/-native-stack/index.html
+++ b/api/shark/-gc-root/-native-stack/-native-stack/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-native-stack/id/index.html b/api/shark/-gc-root/-native-stack/id/index.html
index 45e6a8b..a09276e 100644
--- a/api/shark/-gc-root/-native-stack/id/index.html
+++ b/api/shark/-gc-root/-native-stack/id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-native-stack/index.html b/api/shark/-gc-root/-native-stack/index.html
index 7ec63e1..b9a996e 100644
--- a/api/shark/-gc-root/-native-stack/index.html
+++ b/api/shark/-gc-root/-native-stack/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-native-stack/thread-serial-number/index.html b/api/shark/-gc-root/-native-stack/thread-serial-number/index.html
index a690299..fec4986 100644
--- a/api/shark/-gc-root/-native-stack/thread-serial-number/index.html
+++ b/api/shark/-gc-root/-native-stack/thread-serial-number/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-reference-cleanup/-reference-cleanup/index.html b/api/shark/-gc-root/-reference-cleanup/-reference-cleanup/index.html
index 17b4e45..31ccafc 100644
--- a/api/shark/-gc-root/-reference-cleanup/-reference-cleanup/index.html
+++ b/api/shark/-gc-root/-reference-cleanup/-reference-cleanup/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-reference-cleanup/id/index.html b/api/shark/-gc-root/-reference-cleanup/id/index.html
index 85f69fa..c0d896b 100644
--- a/api/shark/-gc-root/-reference-cleanup/id/index.html
+++ b/api/shark/-gc-root/-reference-cleanup/id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-reference-cleanup/index.html b/api/shark/-gc-root/-reference-cleanup/index.html
index a7a90f7..43374bc 100644
--- a/api/shark/-gc-root/-reference-cleanup/index.html
+++ b/api/shark/-gc-root/-reference-cleanup/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-sticky-class/-sticky-class/index.html b/api/shark/-gc-root/-sticky-class/-sticky-class/index.html
index 535edd1..ba6ae83 100644
--- a/api/shark/-gc-root/-sticky-class/-sticky-class/index.html
+++ b/api/shark/-gc-root/-sticky-class/-sticky-class/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-sticky-class/id/index.html b/api/shark/-gc-root/-sticky-class/id/index.html
index c9c60da..a341fc3 100644
--- a/api/shark/-gc-root/-sticky-class/id/index.html
+++ b/api/shark/-gc-root/-sticky-class/id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-sticky-class/index.html b/api/shark/-gc-root/-sticky-class/index.html
index 15ed209..5d7a036 100644
--- a/api/shark/-gc-root/-sticky-class/index.html
+++ b/api/shark/-gc-root/-sticky-class/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-thread-block/-thread-block/index.html b/api/shark/-gc-root/-thread-block/-thread-block/index.html
index 06b1301..9695848 100644
--- a/api/shark/-gc-root/-thread-block/-thread-block/index.html
+++ b/api/shark/-gc-root/-thread-block/-thread-block/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-thread-block/id/index.html b/api/shark/-gc-root/-thread-block/id/index.html
index 63b76fd..23f6b21 100644
--- a/api/shark/-gc-root/-thread-block/id/index.html
+++ b/api/shark/-gc-root/-thread-block/id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-thread-block/index.html b/api/shark/-gc-root/-thread-block/index.html
index 677be13..aae5b0d 100644
--- a/api/shark/-gc-root/-thread-block/index.html
+++ b/api/shark/-gc-root/-thread-block/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-thread-block/thread-serial-number/index.html b/api/shark/-gc-root/-thread-block/thread-serial-number/index.html
index 9de859b..2d842e4 100644
--- a/api/shark/-gc-root/-thread-block/thread-serial-number/index.html
+++ b/api/shark/-gc-root/-thread-block/thread-serial-number/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-thread-object/-thread-object/index.html b/api/shark/-gc-root/-thread-object/-thread-object/index.html
index 4d6fa1f..2eae4d5 100644
--- a/api/shark/-gc-root/-thread-object/-thread-object/index.html
+++ b/api/shark/-gc-root/-thread-object/-thread-object/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-thread-object/id/index.html b/api/shark/-gc-root/-thread-object/id/index.html
index 3cc3ea3..7bdfa9d 100644
--- a/api/shark/-gc-root/-thread-object/id/index.html
+++ b/api/shark/-gc-root/-thread-object/id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-thread-object/index.html b/api/shark/-gc-root/-thread-object/index.html
index 61d9f81..a15511c 100644
--- a/api/shark/-gc-root/-thread-object/index.html
+++ b/api/shark/-gc-root/-thread-object/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-thread-object/stack-trace-serial-number/index.html b/api/shark/-gc-root/-thread-object/stack-trace-serial-number/index.html
index d07705b..c071609 100644
--- a/api/shark/-gc-root/-thread-object/stack-trace-serial-number/index.html
+++ b/api/shark/-gc-root/-thread-object/stack-trace-serial-number/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-thread-object/thread-serial-number/index.html b/api/shark/-gc-root/-thread-object/thread-serial-number/index.html
index 1535651..3439625 100644
--- a/api/shark/-gc-root/-thread-object/thread-serial-number/index.html
+++ b/api/shark/-gc-root/-thread-object/thread-serial-number/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-unknown/-unknown/index.html b/api/shark/-gc-root/-unknown/-unknown/index.html
index 2c76505..870b0a1 100644
--- a/api/shark/-gc-root/-unknown/-unknown/index.html
+++ b/api/shark/-gc-root/-unknown/-unknown/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-unknown/id/index.html b/api/shark/-gc-root/-unknown/id/index.html
index 2427fb4..0d53682 100644
--- a/api/shark/-gc-root/-unknown/id/index.html
+++ b/api/shark/-gc-root/-unknown/id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-unknown/index.html b/api/shark/-gc-root/-unknown/index.html
index 43bd6c4..2f4ead4 100644
--- a/api/shark/-gc-root/-unknown/index.html
+++ b/api/shark/-gc-root/-unknown/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-unreachable/-unreachable/index.html b/api/shark/-gc-root/-unreachable/-unreachable/index.html
index 829bd35..f232d0e 100644
--- a/api/shark/-gc-root/-unreachable/-unreachable/index.html
+++ b/api/shark/-gc-root/-unreachable/-unreachable/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-unreachable/id/index.html b/api/shark/-gc-root/-unreachable/id/index.html
index 5f2a8c3..f17c248 100644
--- a/api/shark/-gc-root/-unreachable/id/index.html
+++ b/api/shark/-gc-root/-unreachable/id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-unreachable/index.html b/api/shark/-gc-root/-unreachable/index.html
index d8158b5..b754e2f 100644
--- a/api/shark/-gc-root/-unreachable/index.html
+++ b/api/shark/-gc-root/-unreachable/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-vm-internal/-vm-internal/index.html b/api/shark/-gc-root/-vm-internal/-vm-internal/index.html
index 55ffaea..e3de240 100644
--- a/api/shark/-gc-root/-vm-internal/-vm-internal/index.html
+++ b/api/shark/-gc-root/-vm-internal/-vm-internal/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-vm-internal/id/index.html b/api/shark/-gc-root/-vm-internal/id/index.html
index c6ac01c..ced99ba 100644
--- a/api/shark/-gc-root/-vm-internal/id/index.html
+++ b/api/shark/-gc-root/-vm-internal/id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/-vm-internal/index.html b/api/shark/-gc-root/-vm-internal/index.html
index c267258..9d0e423 100644
--- a/api/shark/-gc-root/-vm-internal/index.html
+++ b/api/shark/-gc-root/-vm-internal/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/id/index.html b/api/shark/-gc-root/id/index.html
index 87e3d4b..a1f048a 100644
--- a/api/shark/-gc-root/id/index.html
+++ b/api/shark/-gc-root/id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-gc-root/index.html b/api/shark/-gc-root/index.html
index e3cb746..1f39096 100644
--- a/api/shark/-gc-root/index.html
+++ b/api/shark/-gc-root/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-graph-context/-graph-context/index.html b/api/shark/-graph-context/-graph-context/index.html
index f56942d..1ade59f 100644
--- a/api/shark/-graph-context/-graph-context/index.html
+++ b/api/shark/-graph-context/-graph-context/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-graph-context/contains/index.html b/api/shark/-graph-context/contains/index.html
index 18ecc15..90ec1d3 100644
--- a/api/shark/-graph-context/contains/index.html
+++ b/api/shark/-graph-context/contains/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-graph-context/get-or-put/index.html b/api/shark/-graph-context/get-or-put/index.html
index 17faa01..24e2cd6 100644
--- a/api/shark/-graph-context/get-or-put/index.html
+++ b/api/shark/-graph-context/get-or-put/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-graph-context/get/index.html b/api/shark/-graph-context/get/index.html
index 1a98a08..3e43ab8 100644
--- a/api/shark/-graph-context/get/index.html
+++ b/api/shark/-graph-context/get/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-graph-context/index.html b/api/shark/-graph-context/index.html
index 2c86de4..09a7e2e 100644
--- a/api/shark/-graph-context/index.html
+++ b/api/shark/-graph-context/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-graph-context/minus-assign/index.html b/api/shark/-graph-context/minus-assign/index.html
index 9144c19..ec171c7 100644
--- a/api/shark/-graph-context/minus-assign/index.html
+++ b/api/shark/-graph-context/minus-assign/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-graph-context/set/index.html b/api/shark/-graph-context/set/index.html
index 10557fb..aece000 100644
--- a/api/shark/-graph-context/set/index.html
+++ b/api/shark/-graph-context/set/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-analysis-exception/-companion/index.html b/api/shark/-heap-analysis-exception/-companion/index.html
index 66809de..1f2babe 100644
--- a/api/shark/-heap-analysis-exception/-companion/index.html
+++ b/api/shark/-heap-analysis-exception/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-analysis-exception/-heap-analysis-exception/index.html b/api/shark/-heap-analysis-exception/-heap-analysis-exception/index.html
index d80b93d..fff5a9b 100644
--- a/api/shark/-heap-analysis-exception/-heap-analysis-exception/index.html
+++ b/api/shark/-heap-analysis-exception/-heap-analysis-exception/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-analysis-exception/index.html b/api/shark/-heap-analysis-exception/index.html
index e195c32..eb5a92e 100644
--- a/api/shark/-heap-analysis-exception/index.html
+++ b/api/shark/-heap-analysis-exception/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-analysis-exception/to-string/index.html b/api/shark/-heap-analysis-exception/to-string/index.html
index ed94d20..c48d7c3 100644
--- a/api/shark/-heap-analysis-exception/to-string/index.html
+++ b/api/shark/-heap-analysis-exception/to-string/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-analysis-failure/-companion/index.html b/api/shark/-heap-analysis-failure/-companion/index.html
index a38922b..d5133d0 100644
--- a/api/shark/-heap-analysis-failure/-companion/index.html
+++ b/api/shark/-heap-analysis-failure/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-analysis-failure/-heap-analysis-failure/index.html b/api/shark/-heap-analysis-failure/-heap-analysis-failure/index.html
index efa6002..e77fb27 100644
--- a/api/shark/-heap-analysis-failure/-heap-analysis-failure/index.html
+++ b/api/shark/-heap-analysis-failure/-heap-analysis-failure/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-analysis-failure/analysis-duration-millis/index.html b/api/shark/-heap-analysis-failure/analysis-duration-millis/index.html
index 98fd433..42f0b5b 100644
--- a/api/shark/-heap-analysis-failure/analysis-duration-millis/index.html
+++ b/api/shark/-heap-analysis-failure/analysis-duration-millis/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-analysis-failure/created-at-time-millis/index.html b/api/shark/-heap-analysis-failure/created-at-time-millis/index.html
index bbb6a98..03aef46 100644
--- a/api/shark/-heap-analysis-failure/created-at-time-millis/index.html
+++ b/api/shark/-heap-analysis-failure/created-at-time-millis/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-analysis-failure/dump-duration-millis/index.html b/api/shark/-heap-analysis-failure/dump-duration-millis/index.html
index b6c8fa9..48ff107 100644
--- a/api/shark/-heap-analysis-failure/dump-duration-millis/index.html
+++ b/api/shark/-heap-analysis-failure/dump-duration-millis/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-analysis-failure/exception/index.html b/api/shark/-heap-analysis-failure/exception/index.html
index 473f612..aa61257 100644
--- a/api/shark/-heap-analysis-failure/exception/index.html
+++ b/api/shark/-heap-analysis-failure/exception/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-analysis-failure/heap-dump-file/index.html b/api/shark/-heap-analysis-failure/heap-dump-file/index.html
index c2df0db..e359c21 100644
--- a/api/shark/-heap-analysis-failure/heap-dump-file/index.html
+++ b/api/shark/-heap-analysis-failure/heap-dump-file/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-analysis-failure/index.html b/api/shark/-heap-analysis-failure/index.html
index 853d226..4a838fe 100644
--- a/api/shark/-heap-analysis-failure/index.html
+++ b/api/shark/-heap-analysis-failure/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-analysis-failure/to-string/index.html b/api/shark/-heap-analysis-failure/to-string/index.html
index 9863889..2efe43b 100644
--- a/api/shark/-heap-analysis-failure/to-string/index.html
+++ b/api/shark/-heap-analysis-failure/to-string/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-analysis-success/-companion/index.html b/api/shark/-heap-analysis-success/-companion/index.html
index a4846cb..395884e 100644
--- a/api/shark/-heap-analysis-success/-companion/index.html
+++ b/api/shark/-heap-analysis-success/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-analysis-success/-heap-analysis-success/index.html b/api/shark/-heap-analysis-success/-heap-analysis-success/index.html
index 53ce008..17ba75f 100644
--- a/api/shark/-heap-analysis-success/-heap-analysis-success/index.html
+++ b/api/shark/-heap-analysis-success/-heap-analysis-success/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-analysis-success/all-leaks/index.html b/api/shark/-heap-analysis-success/all-leaks/index.html
index 3307af8..9a9a6de 100644
--- a/api/shark/-heap-analysis-success/all-leaks/index.html
+++ b/api/shark/-heap-analysis-success/all-leaks/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-analysis-success/analysis-duration-millis/index.html b/api/shark/-heap-analysis-success/analysis-duration-millis/index.html
index 616577b..acd940f 100644
--- a/api/shark/-heap-analysis-success/analysis-duration-millis/index.html
+++ b/api/shark/-heap-analysis-success/analysis-duration-millis/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-analysis-success/application-leaks/index.html b/api/shark/-heap-analysis-success/application-leaks/index.html
index 9cf41f4..5c4f80b 100644
--- a/api/shark/-heap-analysis-success/application-leaks/index.html
+++ b/api/shark/-heap-analysis-success/application-leaks/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-analysis-success/created-at-time-millis/index.html b/api/shark/-heap-analysis-success/created-at-time-millis/index.html
index ae1b0b4..0654e93 100644
--- a/api/shark/-heap-analysis-success/created-at-time-millis/index.html
+++ b/api/shark/-heap-analysis-success/created-at-time-millis/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-analysis-success/dump-duration-millis/index.html b/api/shark/-heap-analysis-success/dump-duration-millis/index.html
index 71e61c4..72caec0 100644
--- a/api/shark/-heap-analysis-success/dump-duration-millis/index.html
+++ b/api/shark/-heap-analysis-success/dump-duration-millis/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-analysis-success/heap-dump-file/index.html b/api/shark/-heap-analysis-success/heap-dump-file/index.html
index 441cf48..c15719e 100644
--- a/api/shark/-heap-analysis-success/heap-dump-file/index.html
+++ b/api/shark/-heap-analysis-success/heap-dump-file/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-analysis-success/index.html b/api/shark/-heap-analysis-success/index.html
index 26fe0d3..8f24d6f 100644
--- a/api/shark/-heap-analysis-success/index.html
+++ b/api/shark/-heap-analysis-success/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-analysis-success/library-leaks/index.html b/api/shark/-heap-analysis-success/library-leaks/index.html
index 41eba36..c22ab41 100644
--- a/api/shark/-heap-analysis-success/library-leaks/index.html
+++ b/api/shark/-heap-analysis-success/library-leaks/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-analysis-success/metadata/index.html b/api/shark/-heap-analysis-success/metadata/index.html
index 479d529..842115e 100644
--- a/api/shark/-heap-analysis-success/metadata/index.html
+++ b/api/shark/-heap-analysis-success/metadata/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-analysis-success/to-string/index.html b/api/shark/-heap-analysis-success/to-string/index.html
index 7ec66cb..7a3bde8 100644
--- a/api/shark/-heap-analysis-success/to-string/index.html
+++ b/api/shark/-heap-analysis-success/to-string/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-analysis-success/unreachable-objects/index.html b/api/shark/-heap-analysis-success/unreachable-objects/index.html
index 12ecc3f..f721861 100644
--- a/api/shark/-heap-analysis-success/unreachable-objects/index.html
+++ b/api/shark/-heap-analysis-success/unreachable-objects/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-analysis/-companion/-d-u-m-p_-d-u-r-a-t-i-o-n_-u-n-k-n-o-w-n/index.html b/api/shark/-heap-analysis/-companion/-d-u-m-p_-d-u-r-a-t-i-o-n_-u-n-k-n-o-w-n/index.html
index bc699b5..a5d6d74 100644
--- a/api/shark/-heap-analysis/-companion/-d-u-m-p_-d-u-r-a-t-i-o-n_-u-n-k-n-o-w-n/index.html
+++ b/api/shark/-heap-analysis/-companion/-d-u-m-p_-d-u-r-a-t-i-o-n_-u-n-k-n-o-w-n/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-analysis/-companion/index.html b/api/shark/-heap-analysis/-companion/index.html
index 59a507d..fd5f2bb 100644
--- a/api/shark/-heap-analysis/-companion/index.html
+++ b/api/shark/-heap-analysis/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-analysis/analysis-duration-millis/index.html b/api/shark/-heap-analysis/analysis-duration-millis/index.html
index d90c851..390ccc4 100644
--- a/api/shark/-heap-analysis/analysis-duration-millis/index.html
+++ b/api/shark/-heap-analysis/analysis-duration-millis/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-analysis/created-at-time-millis/index.html b/api/shark/-heap-analysis/created-at-time-millis/index.html
index 349b643..17f044d 100644
--- a/api/shark/-heap-analysis/created-at-time-millis/index.html
+++ b/api/shark/-heap-analysis/created-at-time-millis/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-analysis/dump-duration-millis/index.html b/api/shark/-heap-analysis/dump-duration-millis/index.html
index 62807a8..45ac170 100644
--- a/api/shark/-heap-analysis/dump-duration-millis/index.html
+++ b/api/shark/-heap-analysis/dump-duration-millis/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-analysis/heap-dump-file/index.html b/api/shark/-heap-analysis/heap-dump-file/index.html
index cc33dc8..8b21da0 100644
--- a/api/shark/-heap-analysis/heap-dump-file/index.html
+++ b/api/shark/-heap-analysis/heap-dump-file/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-analysis/index.html b/api/shark/-heap-analysis/index.html
index 735f962..0959fb7 100644
--- a/api/shark/-heap-analysis/index.html
+++ b/api/shark/-heap-analysis/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-analyzer/-heap-analyzer/index.html b/api/shark/-heap-analyzer/-heap-analyzer/index.html
index 438f2ab..839a59a 100644
--- a/api/shark/-heap-analyzer/-heap-analyzer/index.html
+++ b/api/shark/-heap-analyzer/-heap-analyzer/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-analyzer/analyze/index.html b/api/shark/-heap-analyzer/analyze/index.html
index f7cce0f..6d662ef 100644
--- a/api/shark/-heap-analyzer/analyze/index.html
+++ b/api/shark/-heap-analyzer/analyze/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-analyzer/index.html b/api/shark/-heap-analyzer/index.html
index 3c6cdff..6f6ac87 100644
--- a/api/shark/-heap-analyzer/index.html
+++ b/api/shark/-heap-analyzer/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-dump-rule/-heap-dump-rule/index.html b/api/shark/-heap-dump-rule/-heap-dump-rule/index.html
index f446e99..7bfff7f 100644
--- a/api/shark/-heap-dump-rule/-heap-dump-rule/index.html
+++ b/api/shark/-heap-dump-rule/-heap-dump-rule/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-dump-rule/dump-heap/index.html b/api/shark/-heap-dump-rule/dump-heap/index.html
index 3e4644a..93d8579 100644
--- a/api/shark/-heap-dump-rule/dump-heap/index.html
+++ b/api/shark/-heap-dump-rule/dump-heap/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-dump-rule/index.html b/api/shark/-heap-dump-rule/index.html
index 974a0f0..a4ccaa2 100644
--- a/api/shark/-heap-dump-rule/index.html
+++ b/api/shark/-heap-dump-rule/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-field/-heap-field/index.html b/api/shark/-heap-field/-heap-field/index.html
index ea0897d..e73ba3c 100644
--- a/api/shark/-heap-field/-heap-field/index.html
+++ b/api/shark/-heap-field/-heap-field/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-field/declaring-class/index.html b/api/shark/-heap-field/declaring-class/index.html
index ca051cd..29198d3 100644
--- a/api/shark/-heap-field/declaring-class/index.html
+++ b/api/shark/-heap-field/declaring-class/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-field/index.html b/api/shark/-heap-field/index.html
index e80ed77..8566652 100644
--- a/api/shark/-heap-field/index.html
+++ b/api/shark/-heap-field/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-field/name/index.html b/api/shark/-heap-field/name/index.html
index 6cc9e10..f4030ee 100644
--- a/api/shark/-heap-field/name/index.html
+++ b/api/shark/-heap-field/name/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-field/value-as-class/index.html b/api/shark/-heap-field/value-as-class/index.html
index 01bbe14..c4d5cbb 100644
--- a/api/shark/-heap-field/value-as-class/index.html
+++ b/api/shark/-heap-field/value-as-class/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-field/value-as-instance/index.html b/api/shark/-heap-field/value-as-instance/index.html
index 8c0e091..a3bcd2e 100644
--- a/api/shark/-heap-field/value-as-instance/index.html
+++ b/api/shark/-heap-field/value-as-instance/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-field/value-as-object-array/index.html b/api/shark/-heap-field/value-as-object-array/index.html
index 17caa94..32018bf 100644
--- a/api/shark/-heap-field/value-as-object-array/index.html
+++ b/api/shark/-heap-field/value-as-object-array/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-field/value-as-primitive-array/index.html b/api/shark/-heap-field/value-as-primitive-array/index.html
index ee8f97c..cc4e5a5 100644
--- a/api/shark/-heap-field/value-as-primitive-array/index.html
+++ b/api/shark/-heap-field/value-as-primitive-array/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-field/value/index.html b/api/shark/-heap-field/value/index.html
index 01e2d83..9724cc8 100644
--- a/api/shark/-heap-field/value/index.html
+++ b/api/shark/-heap-field/value/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-graph/class-count/index.html b/api/shark/-heap-graph/class-count/index.html
index 015d3c3..7d93024 100644
--- a/api/shark/-heap-graph/class-count/index.html
+++ b/api/shark/-heap-graph/class-count/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-graph/classes/index.html b/api/shark/-heap-graph/classes/index.html
index e34b377..96d8e8c 100644
--- a/api/shark/-heap-graph/classes/index.html
+++ b/api/shark/-heap-graph/classes/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-graph/context/index.html b/api/shark/-heap-graph/context/index.html
index 5709424..23ad773 100644
--- a/api/shark/-heap-graph/context/index.html
+++ b/api/shark/-heap-graph/context/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-graph/find-class-by-name/index.html b/api/shark/-heap-graph/find-class-by-name/index.html
index 037ce10..8d0ee70 100644
--- a/api/shark/-heap-graph/find-class-by-name/index.html
+++ b/api/shark/-heap-graph/find-class-by-name/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-graph/find-heap-dump-index/index.html b/api/shark/-heap-graph/find-heap-dump-index/index.html
index a320c26..9944719 100644
--- a/api/shark/-heap-graph/find-heap-dump-index/index.html
+++ b/api/shark/-heap-graph/find-heap-dump-index/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-graph/find-object-by-heap-dump-index/index.html b/api/shark/-heap-graph/find-object-by-heap-dump-index/index.html
index 222621a..334b43d 100644
--- a/api/shark/-heap-graph/find-object-by-heap-dump-index/index.html
+++ b/api/shark/-heap-graph/find-object-by-heap-dump-index/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-graph/find-object-by-id-or-null/index.html b/api/shark/-heap-graph/find-object-by-id-or-null/index.html
index 8d03978..65acc3f 100644
--- a/api/shark/-heap-graph/find-object-by-id-or-null/index.html
+++ b/api/shark/-heap-graph/find-object-by-id-or-null/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-graph/find-object-by-id/index.html b/api/shark/-heap-graph/find-object-by-id/index.html
index 3ab5387..1f79c76 100644
--- a/api/shark/-heap-graph/find-object-by-id/index.html
+++ b/api/shark/-heap-graph/find-object-by-id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-graph/find-object-by-index/index.html b/api/shark/-heap-graph/find-object-by-index/index.html
index fcc695f..e32f60c 100644
--- a/api/shark/-heap-graph/find-object-by-index/index.html
+++ b/api/shark/-heap-graph/find-object-by-index/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-graph/gc-roots/index.html b/api/shark/-heap-graph/gc-roots/index.html
index 5a79893..0e48a0f 100644
--- a/api/shark/-heap-graph/gc-roots/index.html
+++ b/api/shark/-heap-graph/gc-roots/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-graph/identifier-byte-size/index.html b/api/shark/-heap-graph/identifier-byte-size/index.html
index 39ad74a..a7f32b9 100644
--- a/api/shark/-heap-graph/identifier-byte-size/index.html
+++ b/api/shark/-heap-graph/identifier-byte-size/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-graph/index.html b/api/shark/-heap-graph/index.html
index 3291167..2c881d9 100644
--- a/api/shark/-heap-graph/index.html
+++ b/api/shark/-heap-graph/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-graph/instance-count/index.html b/api/shark/-heap-graph/instance-count/index.html
index 4e30b47..0c0c0c7 100644
--- a/api/shark/-heap-graph/instance-count/index.html
+++ b/api/shark/-heap-graph/instance-count/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-graph/instances/index.html b/api/shark/-heap-graph/instances/index.html
index d7195a6..d8a3210 100644
--- a/api/shark/-heap-graph/instances/index.html
+++ b/api/shark/-heap-graph/instances/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-graph/object-array-count/index.html b/api/shark/-heap-graph/object-array-count/index.html
index 45c7e53..b0a33b4 100644
--- a/api/shark/-heap-graph/object-array-count/index.html
+++ b/api/shark/-heap-graph/object-array-count/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-graph/object-arrays/index.html b/api/shark/-heap-graph/object-arrays/index.html
index 088f37b..a7ad506 100644
--- a/api/shark/-heap-graph/object-arrays/index.html
+++ b/api/shark/-heap-graph/object-arrays/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-graph/object-count/index.html b/api/shark/-heap-graph/object-count/index.html
index a568116..0950d0e 100644
--- a/api/shark/-heap-graph/object-count/index.html
+++ b/api/shark/-heap-graph/object-count/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-graph/object-exists/index.html b/api/shark/-heap-graph/object-exists/index.html
index 23e1444..edef61a 100644
--- a/api/shark/-heap-graph/object-exists/index.html
+++ b/api/shark/-heap-graph/object-exists/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-graph/objects/index.html b/api/shark/-heap-graph/objects/index.html
index e09df03..2c9d7dd 100644
--- a/api/shark/-heap-graph/objects/index.html
+++ b/api/shark/-heap-graph/objects/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-graph/primitive-array-count/index.html b/api/shark/-heap-graph/primitive-array-count/index.html
index d0aae95..d730587 100644
--- a/api/shark/-heap-graph/primitive-array-count/index.html
+++ b/api/shark/-heap-graph/primitive-array-count/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-graph/primitive-arrays/index.html b/api/shark/-heap-graph/primitive-arrays/index.html
index 79a7aec..230b592 100644
--- a/api/shark/-heap-graph/primitive-arrays/index.html
+++ b/api/shark/-heap-graph/primitive-arrays/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-companion/index.html b/api/shark/-heap-object/-companion/index.html
index d17035d..3d693fd 100644
--- a/api/shark/-heap-object/-companion/index.html
+++ b/api/shark/-heap-object/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-class/class-hierarchy/index.html b/api/shark/-heap-object/-heap-class/class-hierarchy/index.html
index e41f277..c02e095 100644
--- a/api/shark/-heap-object/-heap-class/class-hierarchy/index.html
+++ b/api/shark/-heap-object/-heap-class/class-hierarchy/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-class/direct-instances/index.html b/api/shark/-heap-object/-heap-class/direct-instances/index.html
index a34bd68..d027df6 100644
--- a/api/shark/-heap-object/-heap-class/direct-instances/index.html
+++ b/api/shark/-heap-object/-heap-class/direct-instances/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-class/get/index.html b/api/shark/-heap-object/-heap-class/get/index.html
index 8724c9c..77205c5 100644
--- a/api/shark/-heap-object/-heap-class/get/index.html
+++ b/api/shark/-heap-object/-heap-class/get/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-class/graph/index.html b/api/shark/-heap-object/-heap-class/graph/index.html
index f2608a5..75d6e38 100644
--- a/api/shark/-heap-object/-heap-class/graph/index.html
+++ b/api/shark/-heap-object/-heap-class/graph/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-class/has-reference-instance-fields/index.html b/api/shark/-heap-object/-heap-class/has-reference-instance-fields/index.html
index 63abd60..c986e17 100644
--- a/api/shark/-heap-object/-heap-class/has-reference-instance-fields/index.html
+++ b/api/shark/-heap-object/-heap-class/has-reference-instance-fields/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-class/index.html b/api/shark/-heap-object/-heap-class/index.html
index 62e9450..c8740bc 100644
--- a/api/shark/-heap-object/-heap-class/index.html
+++ b/api/shark/-heap-object/-heap-class/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-class/instance-byte-size/index.html b/api/shark/-heap-object/-heap-class/instance-byte-size/index.html
index 5f5c132..7d3cd5e 100644
--- a/api/shark/-heap-object/-heap-class/instance-byte-size/index.html
+++ b/api/shark/-heap-object/-heap-class/instance-byte-size/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-class/instance-field-name/index.html b/api/shark/-heap-object/-heap-class/instance-field-name/index.html
index 610bd6b..212be03 100644
--- a/api/shark/-heap-object/-heap-class/instance-field-name/index.html
+++ b/api/shark/-heap-object/-heap-class/instance-field-name/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-class/instances/index.html b/api/shark/-heap-object/-heap-class/instances/index.html
index 2aa3eab..7d3858c 100644
--- a/api/shark/-heap-object/-heap-class/instances/index.html
+++ b/api/shark/-heap-object/-heap-class/instances/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-class/is-array-class/index.html b/api/shark/-heap-object/-heap-class/is-array-class/index.html
index 35b885f..30b7f11 100644
--- a/api/shark/-heap-object/-heap-class/is-array-class/index.html
+++ b/api/shark/-heap-object/-heap-class/is-array-class/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-class/is-object-array-class/index.html b/api/shark/-heap-object/-heap-class/is-object-array-class/index.html
index 570c34f..fb65660 100644
--- a/api/shark/-heap-object/-heap-class/is-object-array-class/index.html
+++ b/api/shark/-heap-object/-heap-class/is-object-array-class/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-class/is-primitive-array-class/index.html b/api/shark/-heap-object/-heap-class/is-primitive-array-class/index.html
index ad9c794..8d9560b 100644
--- a/api/shark/-heap-object/-heap-class/is-primitive-array-class/index.html
+++ b/api/shark/-heap-object/-heap-class/is-primitive-array-class/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-class/is-primitive-wrapper-class/index.html b/api/shark/-heap-object/-heap-class/is-primitive-wrapper-class/index.html
index ff48a7b..869757c 100644
--- a/api/shark/-heap-object/-heap-class/is-primitive-wrapper-class/index.html
+++ b/api/shark/-heap-object/-heap-class/is-primitive-wrapper-class/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-class/name/index.html b/api/shark/-heap-object/-heap-class/name/index.html
index 1fa92d5..e73b730 100644
--- a/api/shark/-heap-object/-heap-class/name/index.html
+++ b/api/shark/-heap-object/-heap-class/name/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-class/object-array-instances/index.html b/api/shark/-heap-object/-heap-class/object-array-instances/index.html
index 7d8b81f..373b5e2 100644
--- a/api/shark/-heap-object/-heap-class/object-array-instances/index.html
+++ b/api/shark/-heap-object/-heap-class/object-array-instances/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-class/object-id/index.html b/api/shark/-heap-object/-heap-class/object-id/index.html
index d31af36..c97dfe1 100644
--- a/api/shark/-heap-object/-heap-class/object-id/index.html
+++ b/api/shark/-heap-object/-heap-class/object-id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-class/object-index/index.html b/api/shark/-heap-object/-heap-class/object-index/index.html
index 9cdd9cb..357f5ea 100644
--- a/api/shark/-heap-object/-heap-class/object-index/index.html
+++ b/api/shark/-heap-object/-heap-class/object-index/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-class/primitive-array-instances/index.html b/api/shark/-heap-object/-heap-class/primitive-array-instances/index.html
index 60e9666..04537f4 100644
--- a/api/shark/-heap-object/-heap-class/primitive-array-instances/index.html
+++ b/api/shark/-heap-object/-heap-class/primitive-array-instances/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-class/read-fields-byte-size/index.html b/api/shark/-heap-object/-heap-class/read-fields-byte-size/index.html
index 3a7f51d..5a87519 100644
--- a/api/shark/-heap-object/-heap-class/read-fields-byte-size/index.html
+++ b/api/shark/-heap-object/-heap-class/read-fields-byte-size/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-class/read-record-fields/index.html b/api/shark/-heap-object/-heap-class/read-record-fields/index.html
index ad1747d..960fbf8 100644
--- a/api/shark/-heap-object/-heap-class/read-record-fields/index.html
+++ b/api/shark/-heap-object/-heap-class/read-record-fields/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-class/read-record-static-fields/index.html b/api/shark/-heap-object/-heap-class/read-record-static-fields/index.html
index b0251c0..d1c6791 100644
--- a/api/shark/-heap-object/-heap-class/read-record-static-fields/index.html
+++ b/api/shark/-heap-object/-heap-class/read-record-static-fields/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-class/read-record/index.html b/api/shark/-heap-object/-heap-class/read-record/index.html
index b035963..314fb81 100644
--- a/api/shark/-heap-object/-heap-class/read-record/index.html
+++ b/api/shark/-heap-object/-heap-class/read-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-class/read-static-field/index.html b/api/shark/-heap-object/-heap-class/read-static-field/index.html
index 8f131fe..f0343fc 100644
--- a/api/shark/-heap-object/-heap-class/read-static-field/index.html
+++ b/api/shark/-heap-object/-heap-class/read-static-field/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-class/read-static-fields/index.html b/api/shark/-heap-object/-heap-class/read-static-fields/index.html
index 75fa1f4..792dc14 100644
--- a/api/shark/-heap-object/-heap-class/read-static-fields/index.html
+++ b/api/shark/-heap-object/-heap-class/read-static-fields/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-class/record-size/index.html b/api/shark/-heap-object/-heap-class/record-size/index.html
index 8012a00..c4eccf7 100644
--- a/api/shark/-heap-object/-heap-class/record-size/index.html
+++ b/api/shark/-heap-object/-heap-class/record-size/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-class/simple-name/index.html b/api/shark/-heap-object/-heap-class/simple-name/index.html
index b268fc0..d43cf47 100644
--- a/api/shark/-heap-object/-heap-class/simple-name/index.html
+++ b/api/shark/-heap-object/-heap-class/simple-name/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-class/subclass-of/index.html b/api/shark/-heap-object/-heap-class/subclass-of/index.html
index e19b4c5..bf82e05 100644
--- a/api/shark/-heap-object/-heap-class/subclass-of/index.html
+++ b/api/shark/-heap-object/-heap-class/subclass-of/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-class/subclasses/index.html b/api/shark/-heap-object/-heap-class/subclasses/index.html
index 456115e..974475a 100644
--- a/api/shark/-heap-object/-heap-class/subclasses/index.html
+++ b/api/shark/-heap-object/-heap-class/subclasses/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-class/superclass-of/index.html b/api/shark/-heap-object/-heap-class/superclass-of/index.html
index 5d84e46..48b67e4 100644
--- a/api/shark/-heap-object/-heap-class/superclass-of/index.html
+++ b/api/shark/-heap-object/-heap-class/superclass-of/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-class/superclass/index.html b/api/shark/-heap-object/-heap-class/superclass/index.html
index 6c310e2..d026ab1 100644
--- a/api/shark/-heap-object/-heap-class/superclass/index.html
+++ b/api/shark/-heap-object/-heap-class/superclass/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-class/to-string/index.html b/api/shark/-heap-object/-heap-class/to-string/index.html
index b14861b..ccc41e6 100644
--- a/api/shark/-heap-object/-heap-class/to-string/index.html
+++ b/api/shark/-heap-object/-heap-class/to-string/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-instance/byte-size/index.html b/api/shark/-heap-object/-heap-instance/byte-size/index.html
index 092d925..8b0adfa 100644
--- a/api/shark/-heap-object/-heap-instance/byte-size/index.html
+++ b/api/shark/-heap-object/-heap-instance/byte-size/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-instance/get/index.html b/api/shark/-heap-object/-heap-instance/get/index.html
index a582379..9322f57 100644
--- a/api/shark/-heap-object/-heap-instance/get/index.html
+++ b/api/shark/-heap-object/-heap-instance/get/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-instance/graph/index.html b/api/shark/-heap-object/-heap-instance/graph/index.html
index fa7e247..4f98879 100644
--- a/api/shark/-heap-object/-heap-instance/graph/index.html
+++ b/api/shark/-heap-object/-heap-instance/graph/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-instance/index.html b/api/shark/-heap-object/-heap-instance/index.html
index c2c70be..1258de2 100644
--- a/api/shark/-heap-object/-heap-instance/index.html
+++ b/api/shark/-heap-object/-heap-instance/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-instance/instance-class-id/index.html b/api/shark/-heap-object/-heap-instance/instance-class-id/index.html
index e7fcd92..cc671cb 100644
--- a/api/shark/-heap-object/-heap-instance/instance-class-id/index.html
+++ b/api/shark/-heap-object/-heap-instance/instance-class-id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-instance/instance-class-name/index.html b/api/shark/-heap-object/-heap-instance/instance-class-name/index.html
index 71d01be..3245c50 100644
--- a/api/shark/-heap-object/-heap-instance/instance-class-name/index.html
+++ b/api/shark/-heap-object/-heap-instance/instance-class-name/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-instance/instance-class-simple-name/index.html b/api/shark/-heap-object/-heap-instance/instance-class-simple-name/index.html
index 4cdd9cb..8fcd0e1 100644
--- a/api/shark/-heap-object/-heap-instance/instance-class-simple-name/index.html
+++ b/api/shark/-heap-object/-heap-instance/instance-class-simple-name/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-instance/instance-class/index.html b/api/shark/-heap-object/-heap-instance/instance-class/index.html
index 106cd63..3d89f64 100644
--- a/api/shark/-heap-object/-heap-instance/instance-class/index.html
+++ b/api/shark/-heap-object/-heap-instance/instance-class/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-instance/instance-of/index.html b/api/shark/-heap-object/-heap-instance/instance-of/index.html
index 45ed1b9..979fa95 100644
--- a/api/shark/-heap-object/-heap-instance/instance-of/index.html
+++ b/api/shark/-heap-object/-heap-instance/instance-of/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-instance/is-primitive-wrapper/index.html b/api/shark/-heap-object/-heap-instance/is-primitive-wrapper/index.html
index b8e3426..dd3b66e 100644
--- a/api/shark/-heap-object/-heap-instance/is-primitive-wrapper/index.html
+++ b/api/shark/-heap-object/-heap-instance/is-primitive-wrapper/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-instance/object-id/index.html b/api/shark/-heap-object/-heap-instance/object-id/index.html
index 46e32b9..8edb58b 100644
--- a/api/shark/-heap-object/-heap-instance/object-id/index.html
+++ b/api/shark/-heap-object/-heap-instance/object-id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-instance/object-index/index.html b/api/shark/-heap-object/-heap-instance/object-index/index.html
index a08a6e3..7b6ad26 100644
--- a/api/shark/-heap-object/-heap-instance/object-index/index.html
+++ b/api/shark/-heap-object/-heap-instance/object-index/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-instance/read-as-java-string/index.html b/api/shark/-heap-object/-heap-instance/read-as-java-string/index.html
index ff19d5b..2f71c93 100644
--- a/api/shark/-heap-object/-heap-instance/read-as-java-string/index.html
+++ b/api/shark/-heap-object/-heap-instance/read-as-java-string/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-instance/read-field/index.html b/api/shark/-heap-object/-heap-instance/read-field/index.html
index a2c7d01..1834820 100644
--- a/api/shark/-heap-object/-heap-instance/read-field/index.html
+++ b/api/shark/-heap-object/-heap-instance/read-field/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-instance/read-fields/index.html b/api/shark/-heap-object/-heap-instance/read-fields/index.html
index 93a33db..1d4e79e 100644
--- a/api/shark/-heap-object/-heap-instance/read-fields/index.html
+++ b/api/shark/-heap-object/-heap-instance/read-fields/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-instance/read-record/index.html b/api/shark/-heap-object/-heap-instance/read-record/index.html
index 39ce7b8..bb8deb5 100644
--- a/api/shark/-heap-object/-heap-instance/read-record/index.html
+++ b/api/shark/-heap-object/-heap-instance/read-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-instance/record-size/index.html b/api/shark/-heap-object/-heap-instance/record-size/index.html
index 6d70eae..dcf8e5e 100644
--- a/api/shark/-heap-object/-heap-instance/record-size/index.html
+++ b/api/shark/-heap-object/-heap-instance/record-size/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-instance/to-string/index.html b/api/shark/-heap-object/-heap-instance/to-string/index.html
index 688135c..db645e6 100644
--- a/api/shark/-heap-object/-heap-instance/to-string/index.html
+++ b/api/shark/-heap-object/-heap-instance/to-string/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-object-array/array-class-id/index.html b/api/shark/-heap-object/-heap-object-array/array-class-id/index.html
index e693311..12594f0 100644
--- a/api/shark/-heap-object/-heap-object-array/array-class-id/index.html
+++ b/api/shark/-heap-object/-heap-object-array/array-class-id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-object-array/array-class-name/index.html b/api/shark/-heap-object/-heap-object-array/array-class-name/index.html
index ac65260..4c45047 100644
--- a/api/shark/-heap-object/-heap-object-array/array-class-name/index.html
+++ b/api/shark/-heap-object/-heap-object-array/array-class-name/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-object-array/array-class-simple-name/index.html b/api/shark/-heap-object/-heap-object-array/array-class-simple-name/index.html
index 512deb7..8b4acd2 100644
--- a/api/shark/-heap-object/-heap-object-array/array-class-simple-name/index.html
+++ b/api/shark/-heap-object/-heap-object-array/array-class-simple-name/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-object-array/array-class/index.html b/api/shark/-heap-object/-heap-object-array/array-class/index.html
index 2ae3526..7dd730c 100644
--- a/api/shark/-heap-object/-heap-object-array/array-class/index.html
+++ b/api/shark/-heap-object/-heap-object-array/array-class/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-object-array/byte-size/index.html b/api/shark/-heap-object/-heap-object-array/byte-size/index.html
index a194779..5a96af2 100644
--- a/api/shark/-heap-object/-heap-object-array/byte-size/index.html
+++ b/api/shark/-heap-object/-heap-object-array/byte-size/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-object-array/graph/index.html b/api/shark/-heap-object/-heap-object-array/graph/index.html
index 9ef9bc2..9a601c1 100644
--- a/api/shark/-heap-object/-heap-object-array/graph/index.html
+++ b/api/shark/-heap-object/-heap-object-array/graph/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-object-array/index.html b/api/shark/-heap-object/-heap-object-array/index.html
index fde152b..4a2c355 100644
--- a/api/shark/-heap-object/-heap-object-array/index.html
+++ b/api/shark/-heap-object/-heap-object-array/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-object-array/object-id/index.html b/api/shark/-heap-object/-heap-object-array/object-id/index.html
index b0ebfea..374df50 100644
--- a/api/shark/-heap-object/-heap-object-array/object-id/index.html
+++ b/api/shark/-heap-object/-heap-object-array/object-id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-object-array/object-index/index.html b/api/shark/-heap-object/-heap-object-array/object-index/index.html
index 725f89d..512b9da 100644
--- a/api/shark/-heap-object/-heap-object-array/object-index/index.html
+++ b/api/shark/-heap-object/-heap-object-array/object-index/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-object-array/read-elements/index.html b/api/shark/-heap-object/-heap-object-array/read-elements/index.html
index b0ec7cc..9f03b65 100644
--- a/api/shark/-heap-object/-heap-object-array/read-elements/index.html
+++ b/api/shark/-heap-object/-heap-object-array/read-elements/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-object-array/read-record/index.html b/api/shark/-heap-object/-heap-object-array/read-record/index.html
index 521c7bb..87c0206 100644
--- a/api/shark/-heap-object/-heap-object-array/read-record/index.html
+++ b/api/shark/-heap-object/-heap-object-array/read-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-object-array/record-size/index.html b/api/shark/-heap-object/-heap-object-array/record-size/index.html
index 688c9c0..1df50bd 100644
--- a/api/shark/-heap-object/-heap-object-array/record-size/index.html
+++ b/api/shark/-heap-object/-heap-object-array/record-size/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-object-array/to-string/index.html b/api/shark/-heap-object/-heap-object-array/to-string/index.html
index 19db884..1633189 100644
--- a/api/shark/-heap-object/-heap-object-array/to-string/index.html
+++ b/api/shark/-heap-object/-heap-object-array/to-string/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-primitive-array/array-class-name/index.html b/api/shark/-heap-object/-heap-primitive-array/array-class-name/index.html
index c7e2f9f..c9a5577 100644
--- a/api/shark/-heap-object/-heap-primitive-array/array-class-name/index.html
+++ b/api/shark/-heap-object/-heap-primitive-array/array-class-name/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-primitive-array/array-class/index.html b/api/shark/-heap-object/-heap-primitive-array/array-class/index.html
index 1575d2c..7f9a558 100644
--- a/api/shark/-heap-object/-heap-primitive-array/array-class/index.html
+++ b/api/shark/-heap-object/-heap-primitive-array/array-class/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-primitive-array/byte-size/index.html b/api/shark/-heap-object/-heap-primitive-array/byte-size/index.html
index b275f35..3325e78 100644
--- a/api/shark/-heap-object/-heap-primitive-array/byte-size/index.html
+++ b/api/shark/-heap-object/-heap-primitive-array/byte-size/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-primitive-array/graph/index.html b/api/shark/-heap-object/-heap-primitive-array/graph/index.html
index f5a3214..b2b6064 100644
--- a/api/shark/-heap-object/-heap-primitive-array/graph/index.html
+++ b/api/shark/-heap-object/-heap-primitive-array/graph/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-primitive-array/index.html b/api/shark/-heap-object/-heap-primitive-array/index.html
index e2ff933..84f35b2 100644
--- a/api/shark/-heap-object/-heap-primitive-array/index.html
+++ b/api/shark/-heap-object/-heap-primitive-array/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-primitive-array/object-id/index.html b/api/shark/-heap-object/-heap-primitive-array/object-id/index.html
index 250d764..909ad16 100644
--- a/api/shark/-heap-object/-heap-primitive-array/object-id/index.html
+++ b/api/shark/-heap-object/-heap-primitive-array/object-id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-primitive-array/object-index/index.html b/api/shark/-heap-object/-heap-primitive-array/object-index/index.html
index eeeb90f..5d87e5d 100644
--- a/api/shark/-heap-object/-heap-primitive-array/object-index/index.html
+++ b/api/shark/-heap-object/-heap-primitive-array/object-index/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-primitive-array/primitive-type/index.html b/api/shark/-heap-object/-heap-primitive-array/primitive-type/index.html
index ad314d2..92420bc 100644
--- a/api/shark/-heap-object/-heap-primitive-array/primitive-type/index.html
+++ b/api/shark/-heap-object/-heap-primitive-array/primitive-type/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-primitive-array/read-record/index.html b/api/shark/-heap-object/-heap-primitive-array/read-record/index.html
index 62e1f92..f507511 100644
--- a/api/shark/-heap-object/-heap-primitive-array/read-record/index.html
+++ b/api/shark/-heap-object/-heap-primitive-array/read-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-primitive-array/record-size/index.html b/api/shark/-heap-object/-heap-primitive-array/record-size/index.html
index 6b7c571..c2aee3d 100644
--- a/api/shark/-heap-object/-heap-primitive-array/record-size/index.html
+++ b/api/shark/-heap-object/-heap-primitive-array/record-size/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/-heap-primitive-array/to-string/index.html b/api/shark/-heap-object/-heap-primitive-array/to-string/index.html
index 350b67b..45e9240 100644
--- a/api/shark/-heap-object/-heap-primitive-array/to-string/index.html
+++ b/api/shark/-heap-object/-heap-primitive-array/to-string/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/as-class/index.html b/api/shark/-heap-object/as-class/index.html
index 97cdd1b..8e12490 100644
--- a/api/shark/-heap-object/as-class/index.html
+++ b/api/shark/-heap-object/as-class/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/as-instance/index.html b/api/shark/-heap-object/as-instance/index.html
index cf354f4..a9b0b86 100644
--- a/api/shark/-heap-object/as-instance/index.html
+++ b/api/shark/-heap-object/as-instance/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/as-object-array/index.html b/api/shark/-heap-object/as-object-array/index.html
index 8adcec3..ab217e7 100644
--- a/api/shark/-heap-object/as-object-array/index.html
+++ b/api/shark/-heap-object/as-object-array/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/as-primitive-array/index.html b/api/shark/-heap-object/as-primitive-array/index.html
index 5940b50..44190e6 100644
--- a/api/shark/-heap-object/as-primitive-array/index.html
+++ b/api/shark/-heap-object/as-primitive-array/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/graph/index.html b/api/shark/-heap-object/graph/index.html
index 30f98f0..e1ce73e 100644
--- a/api/shark/-heap-object/graph/index.html
+++ b/api/shark/-heap-object/graph/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/index.html b/api/shark/-heap-object/index.html
index 41581a6..ea520fd 100644
--- a/api/shark/-heap-object/index.html
+++ b/api/shark/-heap-object/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/object-id/index.html b/api/shark/-heap-object/object-id/index.html
index 20cdb1d..0f504bd 100644
--- a/api/shark/-heap-object/object-id/index.html
+++ b/api/shark/-heap-object/object-id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/object-index/index.html b/api/shark/-heap-object/object-index/index.html
index dfabaa5..4cd75d3 100644
--- a/api/shark/-heap-object/object-index/index.html
+++ b/api/shark/-heap-object/object-index/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/positive-object-id/index.html b/api/shark/-heap-object/positive-object-id/index.html
index b126642..621ec61 100644
--- a/api/shark/-heap-object/positive-object-id/index.html
+++ b/api/shark/-heap-object/positive-object-id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/read-record/index.html b/api/shark/-heap-object/read-record/index.html
index eede47d..f2c2bc6 100644
--- a/api/shark/-heap-object/read-record/index.html
+++ b/api/shark/-heap-object/read-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-object/record-size/index.html b/api/shark/-heap-object/record-size/index.html
index 07651da..496b2f9 100644
--- a/api/shark/-heap-object/record-size/index.html
+++ b/api/shark/-heap-object/record-size/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-value/-heap-value/index.html b/api/shark/-heap-value/-heap-value/index.html
index 021cc04..184ef13 100644
--- a/api/shark/-heap-value/-heap-value/index.html
+++ b/api/shark/-heap-value/-heap-value/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-value/as-boolean/index.html b/api/shark/-heap-value/as-boolean/index.html
index d23f6c8..3aea114 100644
--- a/api/shark/-heap-value/as-boolean/index.html
+++ b/api/shark/-heap-value/as-boolean/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-value/as-byte/index.html b/api/shark/-heap-value/as-byte/index.html
index 56ddaee..7df5e66 100644
--- a/api/shark/-heap-value/as-byte/index.html
+++ b/api/shark/-heap-value/as-byte/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-value/as-char/index.html b/api/shark/-heap-value/as-char/index.html
index cc7acae..6bbc8de 100644
--- a/api/shark/-heap-value/as-char/index.html
+++ b/api/shark/-heap-value/as-char/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-value/as-double/index.html b/api/shark/-heap-value/as-double/index.html
index fc4ba1e..4dbe0fa 100644
--- a/api/shark/-heap-value/as-double/index.html
+++ b/api/shark/-heap-value/as-double/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-value/as-float/index.html b/api/shark/-heap-value/as-float/index.html
index 11791ae..6079c0a 100644
--- a/api/shark/-heap-value/as-float/index.html
+++ b/api/shark/-heap-value/as-float/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-value/as-int/index.html b/api/shark/-heap-value/as-int/index.html
index 5309204..88ff599 100644
--- a/api/shark/-heap-value/as-int/index.html
+++ b/api/shark/-heap-value/as-int/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-value/as-long/index.html b/api/shark/-heap-value/as-long/index.html
index 374e0ec..1ab511a 100644
--- a/api/shark/-heap-value/as-long/index.html
+++ b/api/shark/-heap-value/as-long/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-value/as-non-null-object-id/index.html b/api/shark/-heap-value/as-non-null-object-id/index.html
index c0aa2fc..18a28fb 100644
--- a/api/shark/-heap-value/as-non-null-object-id/index.html
+++ b/api/shark/-heap-value/as-non-null-object-id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-value/as-object-id/index.html b/api/shark/-heap-value/as-object-id/index.html
index 3766226..8e11629 100644
--- a/api/shark/-heap-value/as-object-id/index.html
+++ b/api/shark/-heap-value/as-object-id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-value/as-object/index.html b/api/shark/-heap-value/as-object/index.html
index 2b03c12..2854887 100644
--- a/api/shark/-heap-value/as-object/index.html
+++ b/api/shark/-heap-value/as-object/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-value/as-short/index.html b/api/shark/-heap-value/as-short/index.html
index 769482a..3c2e9d0 100644
--- a/api/shark/-heap-value/as-short/index.html
+++ b/api/shark/-heap-value/as-short/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-value/graph/index.html b/api/shark/-heap-value/graph/index.html
index fdcf6ff..8d65956 100644
--- a/api/shark/-heap-value/graph/index.html
+++ b/api/shark/-heap-value/graph/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-value/holder/index.html b/api/shark/-heap-value/holder/index.html
index 0ab79d9..dcda59e 100644
--- a/api/shark/-heap-value/holder/index.html
+++ b/api/shark/-heap-value/holder/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-value/index.html b/api/shark/-heap-value/index.html
index 2c85c7d..75f2ab4 100644
--- a/api/shark/-heap-value/index.html
+++ b/api/shark/-heap-value/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-value/is-non-null-reference/index.html b/api/shark/-heap-value/is-non-null-reference/index.html
index f1a0008..813c5e2 100644
--- a/api/shark/-heap-value/is-non-null-reference/index.html
+++ b/api/shark/-heap-value/is-non-null-reference/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-value/is-null-reference/index.html b/api/shark/-heap-value/is-null-reference/index.html
index 6117f41..90ddea0 100644
--- a/api/shark/-heap-value/is-null-reference/index.html
+++ b/api/shark/-heap-value/is-null-reference/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-heap-value/read-as-java-string/index.html b/api/shark/-heap-value/read-as-java-string/index.html
index 6dffbd6..780d765 100644
--- a/api/shark/-heap-value/read-as-java-string/index.html
+++ b/api/shark/-heap-value/read-as-java-string/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-deobfuscator/-hprof-deobfuscator/index.html b/api/shark/-hprof-deobfuscator/-hprof-deobfuscator/index.html
index 034fa8f..bd1e45d 100644
--- a/api/shark/-hprof-deobfuscator/-hprof-deobfuscator/index.html
+++ b/api/shark/-hprof-deobfuscator/-hprof-deobfuscator/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-deobfuscator/deobfuscate/index.html b/api/shark/-hprof-deobfuscator/deobfuscate/index.html
index fab3308..463ba3b 100644
--- a/api/shark/-hprof-deobfuscator/deobfuscate/index.html
+++ b/api/shark/-hprof-deobfuscator/deobfuscate/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-deobfuscator/index.html b/api/shark/-hprof-deobfuscator/index.html
index 5e303fe..3fe26d9 100644
--- a/api/shark/-hprof-deobfuscator/index.html
+++ b/api/shark/-hprof-deobfuscator/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-header/-companion/index.html b/api/shark/-hprof-header/-companion/index.html
index 81601b5..fceaf88 100644
--- a/api/shark/-hprof-header/-companion/index.html
+++ b/api/shark/-hprof-header/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-header/-companion/parse-header-of/index.html b/api/shark/-hprof-header/-companion/parse-header-of/index.html
index c5a0a9b..dd858a6 100644
--- a/api/shark/-hprof-header/-companion/parse-header-of/index.html
+++ b/api/shark/-hprof-header/-companion/parse-header-of/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-header/-hprof-header/index.html b/api/shark/-hprof-header/-hprof-header/index.html
index 30d238f..537d020 100644
--- a/api/shark/-hprof-header/-hprof-header/index.html
+++ b/api/shark/-hprof-header/-hprof-header/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-header/heap-dump-timestamp/index.html b/api/shark/-hprof-header/heap-dump-timestamp/index.html
index c671973..6d63123 100644
--- a/api/shark/-hprof-header/heap-dump-timestamp/index.html
+++ b/api/shark/-hprof-header/heap-dump-timestamp/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-header/identifier-byte-size/index.html b/api/shark/-hprof-header/identifier-byte-size/index.html
index fdd5088..6e63d16 100644
--- a/api/shark/-hprof-header/identifier-byte-size/index.html
+++ b/api/shark/-hprof-header/identifier-byte-size/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-header/index.html b/api/shark/-hprof-header/index.html
index 3437c28..ba89e28 100644
--- a/api/shark/-hprof-header/index.html
+++ b/api/shark/-hprof-header/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-header/records-position/index.html b/api/shark/-hprof-header/records-position/index.html
index e8ec67d..f20f6e0 100644
--- a/api/shark/-hprof-header/records-position/index.html
+++ b/api/shark/-hprof-header/records-position/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-header/version/index.html b/api/shark/-hprof-header/version/index.html
index 759dbb4..febbe02 100644
--- a/api/shark/-hprof-header/version/index.html
+++ b/api/shark/-hprof-header/version/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-heap-graph/-companion/-i-n-t-e-r-n-a-l_-l-r-u_-c-a-c-h-e_-s-i-z-e/index.html b/api/shark/-hprof-heap-graph/-companion/-i-n-t-e-r-n-a-l_-l-r-u_-c-a-c-h-e_-s-i-z-e/index.html
index 7852ad5..72b9ac5 100644
--- a/api/shark/-hprof-heap-graph/-companion/-i-n-t-e-r-n-a-l_-l-r-u_-c-a-c-h-e_-s-i-z-e/index.html
+++ b/api/shark/-hprof-heap-graph/-companion/-i-n-t-e-r-n-a-l_-l-r-u_-c-a-c-h-e_-s-i-z-e/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-heap-graph/-companion/index.html b/api/shark/-hprof-heap-graph/-companion/index.html
index 916b0e8..b3cdcfc 100644
--- a/api/shark/-hprof-heap-graph/-companion/index.html
+++ b/api/shark/-hprof-heap-graph/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-heap-graph/-companion/open-heap-graph/index.html b/api/shark/-hprof-heap-graph/-companion/open-heap-graph/index.html
index fc511e2..1057506 100644
--- a/api/shark/-hprof-heap-graph/-companion/open-heap-graph/index.html
+++ b/api/shark/-hprof-heap-graph/-companion/open-heap-graph/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-heap-graph/class-count/index.html b/api/shark/-hprof-heap-graph/class-count/index.html
index 7754ae5..4161413 100644
--- a/api/shark/-hprof-heap-graph/class-count/index.html
+++ b/api/shark/-hprof-heap-graph/class-count/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-heap-graph/classes/index.html b/api/shark/-hprof-heap-graph/classes/index.html
index 87830d2..e6073d6 100644
--- a/api/shark/-hprof-heap-graph/classes/index.html
+++ b/api/shark/-hprof-heap-graph/classes/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-heap-graph/close/index.html b/api/shark/-hprof-heap-graph/close/index.html
index 7d53431..d30f82e 100644
--- a/api/shark/-hprof-heap-graph/close/index.html
+++ b/api/shark/-hprof-heap-graph/close/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-heap-graph/context/index.html b/api/shark/-hprof-heap-graph/context/index.html
index 7371c3a..b9724a6 100644
--- a/api/shark/-hprof-heap-graph/context/index.html
+++ b/api/shark/-hprof-heap-graph/context/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-heap-graph/find-class-by-name/index.html b/api/shark/-hprof-heap-graph/find-class-by-name/index.html
index 1ee3716..5b89a30 100644
--- a/api/shark/-hprof-heap-graph/find-class-by-name/index.html
+++ b/api/shark/-hprof-heap-graph/find-class-by-name/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-heap-graph/find-heap-dump-index/index.html b/api/shark/-hprof-heap-graph/find-heap-dump-index/index.html
index 12defdf..33f7f3c 100644
--- a/api/shark/-hprof-heap-graph/find-heap-dump-index/index.html
+++ b/api/shark/-hprof-heap-graph/find-heap-dump-index/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-heap-graph/find-object-by-heap-dump-index/index.html b/api/shark/-hprof-heap-graph/find-object-by-heap-dump-index/index.html
index f498274..b72867b 100644
--- a/api/shark/-hprof-heap-graph/find-object-by-heap-dump-index/index.html
+++ b/api/shark/-hprof-heap-graph/find-object-by-heap-dump-index/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-heap-graph/find-object-by-id-or-null/index.html b/api/shark/-hprof-heap-graph/find-object-by-id-or-null/index.html
index a29ae8f..f65cbea 100644
--- a/api/shark/-hprof-heap-graph/find-object-by-id-or-null/index.html
+++ b/api/shark/-hprof-heap-graph/find-object-by-id-or-null/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-heap-graph/find-object-by-id/index.html b/api/shark/-hprof-heap-graph/find-object-by-id/index.html
index a2b3dba..9cd783b 100644
--- a/api/shark/-hprof-heap-graph/find-object-by-id/index.html
+++ b/api/shark/-hprof-heap-graph/find-object-by-id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-heap-graph/find-object-by-index/index.html b/api/shark/-hprof-heap-graph/find-object-by-index/index.html
index 07a9fee..79d2d54 100644
--- a/api/shark/-hprof-heap-graph/find-object-by-index/index.html
+++ b/api/shark/-hprof-heap-graph/find-object-by-index/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-heap-graph/gc-roots/index.html b/api/shark/-hprof-heap-graph/gc-roots/index.html
index 263d255..0364a7b 100644
--- a/api/shark/-hprof-heap-graph/gc-roots/index.html
+++ b/api/shark/-hprof-heap-graph/gc-roots/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-heap-graph/identifier-byte-size/index.html b/api/shark/-hprof-heap-graph/identifier-byte-size/index.html
index 2c35a20..ba19bcb 100644
--- a/api/shark/-hprof-heap-graph/identifier-byte-size/index.html
+++ b/api/shark/-hprof-heap-graph/identifier-byte-size/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-heap-graph/index.html b/api/shark/-hprof-heap-graph/index.html
index 3f4bdb9..eb739ec 100644
--- a/api/shark/-hprof-heap-graph/index.html
+++ b/api/shark/-hprof-heap-graph/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-heap-graph/instance-count/index.html b/api/shark/-hprof-heap-graph/instance-count/index.html
index ffd8304..3f83fd2 100644
--- a/api/shark/-hprof-heap-graph/instance-count/index.html
+++ b/api/shark/-hprof-heap-graph/instance-count/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-heap-graph/instances/index.html b/api/shark/-hprof-heap-graph/instances/index.html
index f602f2f..dca4a5a 100644
--- a/api/shark/-hprof-heap-graph/instances/index.html
+++ b/api/shark/-hprof-heap-graph/instances/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-heap-graph/lru-cache-stats/index.html b/api/shark/-hprof-heap-graph/lru-cache-stats/index.html
index 0a6debf..dd20e8b 100644
--- a/api/shark/-hprof-heap-graph/lru-cache-stats/index.html
+++ b/api/shark/-hprof-heap-graph/lru-cache-stats/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-heap-graph/object-array-count/index.html b/api/shark/-hprof-heap-graph/object-array-count/index.html
index 4abd8cf..73409bc 100644
--- a/api/shark/-hprof-heap-graph/object-array-count/index.html
+++ b/api/shark/-hprof-heap-graph/object-array-count/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-heap-graph/object-arrays/index.html b/api/shark/-hprof-heap-graph/object-arrays/index.html
index e468631..cd0f84f 100644
--- a/api/shark/-hprof-heap-graph/object-arrays/index.html
+++ b/api/shark/-hprof-heap-graph/object-arrays/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-heap-graph/object-count/index.html b/api/shark/-hprof-heap-graph/object-count/index.html
index 897c6cd..f5ca3c2 100644
--- a/api/shark/-hprof-heap-graph/object-count/index.html
+++ b/api/shark/-hprof-heap-graph/object-count/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-heap-graph/object-exists/index.html b/api/shark/-hprof-heap-graph/object-exists/index.html
index 78f90ff..66c2021 100644
--- a/api/shark/-hprof-heap-graph/object-exists/index.html
+++ b/api/shark/-hprof-heap-graph/object-exists/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-heap-graph/objects/index.html b/api/shark/-hprof-heap-graph/objects/index.html
index 72c176d..8c3ddb1 100644
--- a/api/shark/-hprof-heap-graph/objects/index.html
+++ b/api/shark/-hprof-heap-graph/objects/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-heap-graph/primitive-array-count/index.html b/api/shark/-hprof-heap-graph/primitive-array-count/index.html
index eb198f6..6a94fd2 100644
--- a/api/shark/-hprof-heap-graph/primitive-array-count/index.html
+++ b/api/shark/-hprof-heap-graph/primitive-array-count/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-heap-graph/primitive-arrays/index.html b/api/shark/-hprof-heap-graph/primitive-arrays/index.html
index d7da498..d6b2f45 100644
--- a/api/shark/-hprof-heap-graph/primitive-arrays/index.html
+++ b/api/shark/-hprof-heap-graph/primitive-arrays/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-index/-companion/default-indexed-gc-root-tags/index.html b/api/shark/-hprof-index/-companion/default-indexed-gc-root-tags/index.html
index fed82a2..22445c0 100644
--- a/api/shark/-hprof-index/-companion/default-indexed-gc-root-tags/index.html
+++ b/api/shark/-hprof-index/-companion/default-indexed-gc-root-tags/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-index/-companion/index-records-of/index.html b/api/shark/-hprof-index/-companion/index-records-of/index.html
index e90057d..ac736a4 100644
--- a/api/shark/-hprof-index/-companion/index-records-of/index.html
+++ b/api/shark/-hprof-index/-companion/index-records-of/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-index/-companion/index.html b/api/shark/-hprof-index/-companion/index.html
index d21064c..ebbcc48 100644
--- a/api/shark/-hprof-index/-companion/index.html
+++ b/api/shark/-hprof-index/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-index/index.html b/api/shark/-hprof-index/index.html
index a9fff2f..6319404 100644
--- a/api/shark/-hprof-index/index.html
+++ b/api/shark/-hprof-index/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-index/open-heap-graph/index.html b/api/shark/-hprof-index/open-heap-graph/index.html
index 57036f2..0601c06 100644
--- a/api/shark/-hprof-index/open-heap-graph/index.html
+++ b/api/shark/-hprof-index/open-heap-graph/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-primitive-array-stripper/-hprof-primitive-array-stripper/index.html b/api/shark/-hprof-primitive-array-stripper/-hprof-primitive-array-stripper/index.html
index 2c1a575..e6a9407 100644
--- a/api/shark/-hprof-primitive-array-stripper/-hprof-primitive-array-stripper/index.html
+++ b/api/shark/-hprof-primitive-array-stripper/-hprof-primitive-array-stripper/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-primitive-array-stripper/index.html b/api/shark/-hprof-primitive-array-stripper/index.html
index 0c0ea64..bad41fe 100644
--- a/api/shark/-hprof-primitive-array-stripper/index.html
+++ b/api/shark/-hprof-primitive-array-stripper/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-primitive-array-stripper/strip-primitive-arrays/index.html b/api/shark/-hprof-primitive-array-stripper/strip-primitive-arrays/index.html
index 38405d4..b21fd86 100644
--- a/api/shark/-hprof-primitive-array-stripper/strip-primitive-arrays/index.html
+++ b/api/shark/-hprof-primitive-array-stripper/strip-primitive-arrays/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/-companion/index.html b/api/shark/-hprof-record-reader/-companion/index.html
index 36b499a..d13703b 100644
--- a/api/shark/-hprof-record-reader/-companion/index.html
+++ b/api/shark/-hprof-record-reader/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/bytes-read/index.html b/api/shark/-hprof-record-reader/bytes-read/index.html
index 6fb7fae..89f1890 100644
--- a/api/shark/-hprof-record-reader/bytes-read/index.html
+++ b/api/shark/-hprof-record-reader/bytes-read/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/index.html b/api/shark/-hprof-record-reader/index.html
index 39dcc6e..53fb06e 100644
--- a/api/shark/-hprof-record-reader/index.html
+++ b/api/shark/-hprof-record-reader/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-boolean-array/index.html b/api/shark/-hprof-record-reader/read-boolean-array/index.html
index 0be43ac..c1d3dc3 100644
--- a/api/shark/-hprof-record-reader/read-boolean-array/index.html
+++ b/api/shark/-hprof-record-reader/read-boolean-array/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-boolean/index.html b/api/shark/-hprof-record-reader/read-boolean/index.html
index d3b8449..08e65ce 100644
--- a/api/shark/-hprof-record-reader/read-boolean/index.html
+++ b/api/shark/-hprof-record-reader/read-boolean/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-byte-array/index.html b/api/shark/-hprof-record-reader/read-byte-array/index.html
index 9cf38a4..7680d2d 100644
--- a/api/shark/-hprof-record-reader/read-byte-array/index.html
+++ b/api/shark/-hprof-record-reader/read-byte-array/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-byte/index.html b/api/shark/-hprof-record-reader/read-byte/index.html
index 254ecee..6c43f62 100644
--- a/api/shark/-hprof-record-reader/read-byte/index.html
+++ b/api/shark/-hprof-record-reader/read-byte/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-char-array/index.html b/api/shark/-hprof-record-reader/read-char-array/index.html
index 3956e85..92e9fc9 100644
--- a/api/shark/-hprof-record-reader/read-char-array/index.html
+++ b/api/shark/-hprof-record-reader/read-char-array/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-char/index.html b/api/shark/-hprof-record-reader/read-char/index.html
index 64f5107..3e7899c 100644
--- a/api/shark/-hprof-record-reader/read-char/index.html
+++ b/api/shark/-hprof-record-reader/read-char/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-class-dump-record/index.html b/api/shark/-hprof-record-reader/read-class-dump-record/index.html
index 4095463..b20ba22 100644
--- a/api/shark/-hprof-record-reader/read-class-dump-record/index.html
+++ b/api/shark/-hprof-record-reader/read-class-dump-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-debugger-gc-root-record/index.html b/api/shark/-hprof-record-reader/read-debugger-gc-root-record/index.html
index 2603790..1abd97e 100644
--- a/api/shark/-hprof-record-reader/read-debugger-gc-root-record/index.html
+++ b/api/shark/-hprof-record-reader/read-debugger-gc-root-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-double-array/index.html b/api/shark/-hprof-record-reader/read-double-array/index.html
index fc17cd4..c556eba 100644
--- a/api/shark/-hprof-record-reader/read-double-array/index.html
+++ b/api/shark/-hprof-record-reader/read-double-array/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-double/index.html b/api/shark/-hprof-record-reader/read-double/index.html
index 93ac8f5..4993cae 100644
--- a/api/shark/-hprof-record-reader/read-double/index.html
+++ b/api/shark/-hprof-record-reader/read-double/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-finalizing-gc-root-record/index.html b/api/shark/-hprof-record-reader/read-finalizing-gc-root-record/index.html
index 06d3726..1384358 100644
--- a/api/shark/-hprof-record-reader/read-finalizing-gc-root-record/index.html
+++ b/api/shark/-hprof-record-reader/read-finalizing-gc-root-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-float-array/index.html b/api/shark/-hprof-record-reader/read-float-array/index.html
index 4cf4d7d..7849e96 100644
--- a/api/shark/-hprof-record-reader/read-float-array/index.html
+++ b/api/shark/-hprof-record-reader/read-float-array/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-float/index.html b/api/shark/-hprof-record-reader/read-float/index.html
index ac214e7..b51fac3 100644
--- a/api/shark/-hprof-record-reader/read-float/index.html
+++ b/api/shark/-hprof-record-reader/read-float/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-heap-dump-info-record/index.html b/api/shark/-hprof-record-reader/read-heap-dump-info-record/index.html
index b087b82..14b9572 100644
--- a/api/shark/-hprof-record-reader/read-heap-dump-info-record/index.html
+++ b/api/shark/-hprof-record-reader/read-heap-dump-info-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-id-array/index.html b/api/shark/-hprof-record-reader/read-id-array/index.html
index b3f2c9f..baf10f8 100644
--- a/api/shark/-hprof-record-reader/read-id-array/index.html
+++ b/api/shark/-hprof-record-reader/read-id-array/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-id/index.html b/api/shark/-hprof-record-reader/read-id/index.html
index 87a1827..8ff9dba 100644
--- a/api/shark/-hprof-record-reader/read-id/index.html
+++ b/api/shark/-hprof-record-reader/read-id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-instance-dump-record/index.html b/api/shark/-hprof-record-reader/read-instance-dump-record/index.html
index 3995c84..674e0f6 100644
--- a/api/shark/-hprof-record-reader/read-instance-dump-record/index.html
+++ b/api/shark/-hprof-record-reader/read-instance-dump-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-int-array/index.html b/api/shark/-hprof-record-reader/read-int-array/index.html
index 2f17d83..8f3a01b 100644
--- a/api/shark/-hprof-record-reader/read-int-array/index.html
+++ b/api/shark/-hprof-record-reader/read-int-array/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-int/index.html b/api/shark/-hprof-record-reader/read-int/index.html
index de3c9ea..c6d08d8 100644
--- a/api/shark/-hprof-record-reader/read-int/index.html
+++ b/api/shark/-hprof-record-reader/read-int/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-interned-string-gc-root-record/index.html b/api/shark/-hprof-record-reader/read-interned-string-gc-root-record/index.html
index 2b67774..4733331 100644
--- a/api/shark/-hprof-record-reader/read-interned-string-gc-root-record/index.html
+++ b/api/shark/-hprof-record-reader/read-interned-string-gc-root-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-java-frame-gc-root-record/index.html b/api/shark/-hprof-record-reader/read-java-frame-gc-root-record/index.html
index d8f74b6..53c6f77 100644
--- a/api/shark/-hprof-record-reader/read-java-frame-gc-root-record/index.html
+++ b/api/shark/-hprof-record-reader/read-java-frame-gc-root-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-jni-global-gc-root-record/index.html b/api/shark/-hprof-record-reader/read-jni-global-gc-root-record/index.html
index bd3385a..97e7726 100644
--- a/api/shark/-hprof-record-reader/read-jni-global-gc-root-record/index.html
+++ b/api/shark/-hprof-record-reader/read-jni-global-gc-root-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-jni-local-gc-root-record/index.html b/api/shark/-hprof-record-reader/read-jni-local-gc-root-record/index.html
index da2a8ce..29c24a7 100644
--- a/api/shark/-hprof-record-reader/read-jni-local-gc-root-record/index.html
+++ b/api/shark/-hprof-record-reader/read-jni-local-gc-root-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-jni-monitor-gc-root-record/index.html b/api/shark/-hprof-record-reader/read-jni-monitor-gc-root-record/index.html
index e119d77..c7a7017 100644
--- a/api/shark/-hprof-record-reader/read-jni-monitor-gc-root-record/index.html
+++ b/api/shark/-hprof-record-reader/read-jni-monitor-gc-root-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-load-class-record/index.html b/api/shark/-hprof-record-reader/read-load-class-record/index.html
index 8c58218..3d1894a 100644
--- a/api/shark/-hprof-record-reader/read-load-class-record/index.html
+++ b/api/shark/-hprof-record-reader/read-load-class-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-long-array/index.html b/api/shark/-hprof-record-reader/read-long-array/index.html
index 2441a6d..439f840 100644
--- a/api/shark/-hprof-record-reader/read-long-array/index.html
+++ b/api/shark/-hprof-record-reader/read-long-array/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-long/index.html b/api/shark/-hprof-record-reader/read-long/index.html
index e11cdc7..322ad43 100644
--- a/api/shark/-hprof-record-reader/read-long/index.html
+++ b/api/shark/-hprof-record-reader/read-long/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-monitor-used-gc-root-record/index.html b/api/shark/-hprof-record-reader/read-monitor-used-gc-root-record/index.html
index f7b6f02..84f058e 100644
--- a/api/shark/-hprof-record-reader/read-monitor-used-gc-root-record/index.html
+++ b/api/shark/-hprof-record-reader/read-monitor-used-gc-root-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-native-stack-gc-root-record/index.html b/api/shark/-hprof-record-reader/read-native-stack-gc-root-record/index.html
index 113628b..86d67dc 100644
--- a/api/shark/-hprof-record-reader/read-native-stack-gc-root-record/index.html
+++ b/api/shark/-hprof-record-reader/read-native-stack-gc-root-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-object-array-dump-record/index.html b/api/shark/-hprof-record-reader/read-object-array-dump-record/index.html
index 655d093..bf4a57f 100644
--- a/api/shark/-hprof-record-reader/read-object-array-dump-record/index.html
+++ b/api/shark/-hprof-record-reader/read-object-array-dump-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-primitive-array-dump-record/index.html b/api/shark/-hprof-record-reader/read-primitive-array-dump-record/index.html
index 91a1d27..3773b93 100644
--- a/api/shark/-hprof-record-reader/read-primitive-array-dump-record/index.html
+++ b/api/shark/-hprof-record-reader/read-primitive-array-dump-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-reference-cleanup-gc-root-record/index.html b/api/shark/-hprof-record-reader/read-reference-cleanup-gc-root-record/index.html
index 95459d4..6301ec2 100644
--- a/api/shark/-hprof-record-reader/read-reference-cleanup-gc-root-record/index.html
+++ b/api/shark/-hprof-record-reader/read-reference-cleanup-gc-root-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-short-array/index.html b/api/shark/-hprof-record-reader/read-short-array/index.html
index 6c023c5..8849267 100644
--- a/api/shark/-hprof-record-reader/read-short-array/index.html
+++ b/api/shark/-hprof-record-reader/read-short-array/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-short/index.html b/api/shark/-hprof-record-reader/read-short/index.html
index 97d19e8..65be45e 100644
--- a/api/shark/-hprof-record-reader/read-short/index.html
+++ b/api/shark/-hprof-record-reader/read-short/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-stack-frame-record/index.html b/api/shark/-hprof-record-reader/read-stack-frame-record/index.html
index 9a269fa..8600eed 100644
--- a/api/shark/-hprof-record-reader/read-stack-frame-record/index.html
+++ b/api/shark/-hprof-record-reader/read-stack-frame-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-stack-trace-record/index.html b/api/shark/-hprof-record-reader/read-stack-trace-record/index.html
index bf8d2b6..3f853b2 100644
--- a/api/shark/-hprof-record-reader/read-stack-trace-record/index.html
+++ b/api/shark/-hprof-record-reader/read-stack-trace-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-sticky-class-gc-root-record/index.html b/api/shark/-hprof-record-reader/read-sticky-class-gc-root-record/index.html
index fe7e186..4472ec9 100644
--- a/api/shark/-hprof-record-reader/read-sticky-class-gc-root-record/index.html
+++ b/api/shark/-hprof-record-reader/read-sticky-class-gc-root-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-string-record/index.html b/api/shark/-hprof-record-reader/read-string-record/index.html
index 9c821c0..26367d9 100644
--- a/api/shark/-hprof-record-reader/read-string-record/index.html
+++ b/api/shark/-hprof-record-reader/read-string-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-string/index.html b/api/shark/-hprof-record-reader/read-string/index.html
index 3bb8d8b..f413f11 100644
--- a/api/shark/-hprof-record-reader/read-string/index.html
+++ b/api/shark/-hprof-record-reader/read-string/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-thread-block-gc-root-record/index.html b/api/shark/-hprof-record-reader/read-thread-block-gc-root-record/index.html
index 6785efd..c406771 100644
--- a/api/shark/-hprof-record-reader/read-thread-block-gc-root-record/index.html
+++ b/api/shark/-hprof-record-reader/read-thread-block-gc-root-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-thread-object-gc-root-record/index.html b/api/shark/-hprof-record-reader/read-thread-object-gc-root-record/index.html
index 02b08fa..47d9b5b 100644
--- a/api/shark/-hprof-record-reader/read-thread-object-gc-root-record/index.html
+++ b/api/shark/-hprof-record-reader/read-thread-object-gc-root-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-unknown-gc-root-record/index.html b/api/shark/-hprof-record-reader/read-unknown-gc-root-record/index.html
index 8407fcc..f3f7593 100644
--- a/api/shark/-hprof-record-reader/read-unknown-gc-root-record/index.html
+++ b/api/shark/-hprof-record-reader/read-unknown-gc-root-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-unreachable-gc-root-record/index.html b/api/shark/-hprof-record-reader/read-unreachable-gc-root-record/index.html
index 6e4607e..8246e87 100644
--- a/api/shark/-hprof-record-reader/read-unreachable-gc-root-record/index.html
+++ b/api/shark/-hprof-record-reader/read-unreachable-gc-root-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-unsigned-byte/index.html b/api/shark/-hprof-record-reader/read-unsigned-byte/index.html
index 5eb334c..4cf1886 100644
--- a/api/shark/-hprof-record-reader/read-unsigned-byte/index.html
+++ b/api/shark/-hprof-record-reader/read-unsigned-byte/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-unsigned-int/index.html b/api/shark/-hprof-record-reader/read-unsigned-int/index.html
index 5610a7f..643d566 100644
--- a/api/shark/-hprof-record-reader/read-unsigned-int/index.html
+++ b/api/shark/-hprof-record-reader/read-unsigned-int/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-unsigned-short/index.html b/api/shark/-hprof-record-reader/read-unsigned-short/index.html
index 7675c91..97e45d0 100644
--- a/api/shark/-hprof-record-reader/read-unsigned-short/index.html
+++ b/api/shark/-hprof-record-reader/read-unsigned-short/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-utf8/index.html b/api/shark/-hprof-record-reader/read-utf8/index.html
index cacd83c..bf60545 100644
--- a/api/shark/-hprof-record-reader/read-utf8/index.html
+++ b/api/shark/-hprof-record-reader/read-utf8/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-value/index.html b/api/shark/-hprof-record-reader/read-value/index.html
index 7357cfe..f183a33 100644
--- a/api/shark/-hprof-record-reader/read-value/index.html
+++ b/api/shark/-hprof-record-reader/read-value/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/read-vm-internal-gc-root-record/index.html b/api/shark/-hprof-record-reader/read-vm-internal-gc-root-record/index.html
index 5eb0d30..f724759 100644
--- a/api/shark/-hprof-record-reader/read-vm-internal-gc-root-record/index.html
+++ b/api/shark/-hprof-record-reader/read-vm-internal-gc-root-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/size-of/index.html b/api/shark/-hprof-record-reader/size-of/index.html
index 9a8f16a..11ef8d0 100644
--- a/api/shark/-hprof-record-reader/size-of/index.html
+++ b/api/shark/-hprof-record-reader/size-of/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/skip-class-dump-constant-pool/index.html b/api/shark/-hprof-record-reader/skip-class-dump-constant-pool/index.html
index 4e5ffa9..6f01ecf 100644
--- a/api/shark/-hprof-record-reader/skip-class-dump-constant-pool/index.html
+++ b/api/shark/-hprof-record-reader/skip-class-dump-constant-pool/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/skip-class-dump-fields/index.html b/api/shark/-hprof-record-reader/skip-class-dump-fields/index.html
index b49d8ba..a06809f 100644
--- a/api/shark/-hprof-record-reader/skip-class-dump-fields/index.html
+++ b/api/shark/-hprof-record-reader/skip-class-dump-fields/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/skip-class-dump-header/index.html b/api/shark/-hprof-record-reader/skip-class-dump-header/index.html
index 3e1c53d..7f43e3c 100644
--- a/api/shark/-hprof-record-reader/skip-class-dump-header/index.html
+++ b/api/shark/-hprof-record-reader/skip-class-dump-header/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/skip-class-dump-record/index.html b/api/shark/-hprof-record-reader/skip-class-dump-record/index.html
index 4d92eba..791b36d 100644
--- a/api/shark/-hprof-record-reader/skip-class-dump-record/index.html
+++ b/api/shark/-hprof-record-reader/skip-class-dump-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/skip-class-dump-static-fields/index.html b/api/shark/-hprof-record-reader/skip-class-dump-static-fields/index.html
index 0ba1632..c812552 100644
--- a/api/shark/-hprof-record-reader/skip-class-dump-static-fields/index.html
+++ b/api/shark/-hprof-record-reader/skip-class-dump-static-fields/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/skip-heap-dump-info-record/index.html b/api/shark/-hprof-record-reader/skip-heap-dump-info-record/index.html
index 41941da..076348e 100644
--- a/api/shark/-hprof-record-reader/skip-heap-dump-info-record/index.html
+++ b/api/shark/-hprof-record-reader/skip-heap-dump-info-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/skip-id/index.html b/api/shark/-hprof-record-reader/skip-id/index.html
index 357c6e0..597c23e 100644
--- a/api/shark/-hprof-record-reader/skip-id/index.html
+++ b/api/shark/-hprof-record-reader/skip-id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/skip-instance-dump-record/index.html b/api/shark/-hprof-record-reader/skip-instance-dump-record/index.html
index a046786..f3db323 100644
--- a/api/shark/-hprof-record-reader/skip-instance-dump-record/index.html
+++ b/api/shark/-hprof-record-reader/skip-instance-dump-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/skip-object-array-dump-record/index.html b/api/shark/-hprof-record-reader/skip-object-array-dump-record/index.html
index 5acb8e7..3c39313 100644
--- a/api/shark/-hprof-record-reader/skip-object-array-dump-record/index.html
+++ b/api/shark/-hprof-record-reader/skip-object-array-dump-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/skip-primitive-array-dump-record/index.html b/api/shark/-hprof-record-reader/skip-primitive-array-dump-record/index.html
index 7ffa29f..a5e0278 100644
--- a/api/shark/-hprof-record-reader/skip-primitive-array-dump-record/index.html
+++ b/api/shark/-hprof-record-reader/skip-primitive-array-dump-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-reader/skip/index.html b/api/shark/-hprof-record-reader/skip/index.html
index a863b0e..3582c43 100644
--- a/api/shark/-hprof-record-reader/skip/index.html
+++ b/api/shark/-hprof-record-reader/skip/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-tag/-a-l-l-o-c_-s-i-t-e-s/index.html b/api/shark/-hprof-record-tag/-a-l-l-o-c_-s-i-t-e-s/index.html
index 7f430ee..2eea6df 100644
--- a/api/shark/-hprof-record-tag/-a-l-l-o-c_-s-i-t-e-s/index.html
+++ b/api/shark/-hprof-record-tag/-a-l-l-o-c_-s-i-t-e-s/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-tag/-c-l-a-s-s_-d-u-m-p/index.html b/api/shark/-hprof-record-tag/-c-l-a-s-s_-d-u-m-p/index.html
index 745f92d..d47eef5 100644
--- a/api/shark/-hprof-record-tag/-c-l-a-s-s_-d-u-m-p/index.html
+++ b/api/shark/-hprof-record-tag/-c-l-a-s-s_-d-u-m-p/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-tag/-c-o-n-t-r-o-l_-s-e-t-t-i-n-g-s/index.html b/api/shark/-hprof-record-tag/-c-o-n-t-r-o-l_-s-e-t-t-i-n-g-s/index.html
index 9f3e019..9583c2c 100644
--- a/api/shark/-hprof-record-tag/-c-o-n-t-r-o-l_-s-e-t-t-i-n-g-s/index.html
+++ b/api/shark/-hprof-record-tag/-c-o-n-t-r-o-l_-s-e-t-t-i-n-g-s/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-tag/-c-p-u_-s-a-m-p-l-e-s/index.html b/api/shark/-hprof-record-tag/-c-p-u_-s-a-m-p-l-e-s/index.html
index 85c2486..700443b 100644
--- a/api/shark/-hprof-record-tag/-c-p-u_-s-a-m-p-l-e-s/index.html
+++ b/api/shark/-hprof-record-tag/-c-p-u_-s-a-m-p-l-e-s/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-tag/-companion/index.html b/api/shark/-hprof-record-tag/-companion/index.html
index 89f69a4..95a5b31 100644
--- a/api/shark/-hprof-record-tag/-companion/index.html
+++ b/api/shark/-hprof-record-tag/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-tag/-companion/root-tags/index.html b/api/shark/-hprof-record-tag/-companion/root-tags/index.html
index 709eed4..501ccd9 100644
--- a/api/shark/-hprof-record-tag/-companion/root-tags/index.html
+++ b/api/shark/-hprof-record-tag/-companion/root-tags/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-tag/-e-n-d_-t-h-r-e-a-d/index.html b/api/shark/-hprof-record-tag/-e-n-d_-t-h-r-e-a-d/index.html
index d413970..ebd2862 100644
--- a/api/shark/-hprof-record-tag/-e-n-d_-t-h-r-e-a-d/index.html
+++ b/api/shark/-hprof-record-tag/-e-n-d_-t-h-r-e-a-d/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p/index.html b/api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p/index.html
index 9f598a2..e96f50c 100644
--- a/api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p/index.html
+++ b/api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p_-e-n-d/index.html b/api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p_-e-n-d/index.html
index 87d53ec..4639980 100644
--- a/api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p_-e-n-d/index.html
+++ b/api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p_-e-n-d/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p_-i-n-f-o/index.html b/api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p_-i-n-f-o/index.html
index 606c4fd..70bad05 100644
--- a/api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p_-i-n-f-o/index.html
+++ b/api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p_-i-n-f-o/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p_-s-e-g-m-e-n-t/index.html b/api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p_-s-e-g-m-e-n-t/index.html
index 430bc4f..b42cd12 100644
--- a/api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p_-s-e-g-m-e-n-t/index.html
+++ b/api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p_-s-e-g-m-e-n-t/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-tag/-h-e-a-p_-s-u-m-m-a-r-y/index.html b/api/shark/-hprof-record-tag/-h-e-a-p_-s-u-m-m-a-r-y/index.html
index 7d5814e..1c4e8f6 100644
--- a/api/shark/-hprof-record-tag/-h-e-a-p_-s-u-m-m-a-r-y/index.html
+++ b/api/shark/-hprof-record-tag/-h-e-a-p_-s-u-m-m-a-r-y/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-tag/-i-n-s-t-a-n-c-e_-d-u-m-p/index.html b/api/shark/-hprof-record-tag/-i-n-s-t-a-n-c-e_-d-u-m-p/index.html
index b2f5c65..90e7ba6 100644
--- a/api/shark/-hprof-record-tag/-i-n-s-t-a-n-c-e_-d-u-m-p/index.html
+++ b/api/shark/-hprof-record-tag/-i-n-s-t-a-n-c-e_-d-u-m-p/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-tag/-l-o-a-d_-c-l-a-s-s/index.html b/api/shark/-hprof-record-tag/-l-o-a-d_-c-l-a-s-s/index.html
index 52abe72..56cb8e8 100644
--- a/api/shark/-hprof-record-tag/-l-o-a-d_-c-l-a-s-s/index.html
+++ b/api/shark/-hprof-record-tag/-l-o-a-d_-c-l-a-s-s/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-tag/-o-b-j-e-c-t_-a-r-r-a-y_-d-u-m-p/index.html b/api/shark/-hprof-record-tag/-o-b-j-e-c-t_-a-r-r-a-y_-d-u-m-p/index.html
index 8a751b5..3c09b2f 100644
--- a/api/shark/-hprof-record-tag/-o-b-j-e-c-t_-a-r-r-a-y_-d-u-m-p/index.html
+++ b/api/shark/-hprof-record-tag/-o-b-j-e-c-t_-a-r-r-a-y_-d-u-m-p/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-tag/-p-r-i-m-i-t-i-v-e_-a-r-r-a-y_-d-u-m-p/index.html b/api/shark/-hprof-record-tag/-p-r-i-m-i-t-i-v-e_-a-r-r-a-y_-d-u-m-p/index.html
index 42c2c53..4fb1910 100644
--- a/api/shark/-hprof-record-tag/-p-r-i-m-i-t-i-v-e_-a-r-r-a-y_-d-u-m-p/index.html
+++ b/api/shark/-hprof-record-tag/-p-r-i-m-i-t-i-v-e_-a-r-r-a-y_-d-u-m-p/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-tag/-p-r-i-m-i-t-i-v-e_-a-r-r-a-y_-n-o-d-a-t-a/index.html b/api/shark/-hprof-record-tag/-p-r-i-m-i-t-i-v-e_-a-r-r-a-y_-n-o-d-a-t-a/index.html
index a3b2a2c..5789df7 100644
--- a/api/shark/-hprof-record-tag/-p-r-i-m-i-t-i-v-e_-a-r-r-a-y_-n-o-d-a-t-a/index.html
+++ b/api/shark/-hprof-record-tag/-p-r-i-m-i-t-i-v-e_-a-r-r-a-y_-n-o-d-a-t-a/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-tag/-r-o-o-t_-d-e-b-u-g-g-e-r/index.html b/api/shark/-hprof-record-tag/-r-o-o-t_-d-e-b-u-g-g-e-r/index.html
index 3877721..0ee4300 100644
--- a/api/shark/-hprof-record-tag/-r-o-o-t_-d-e-b-u-g-g-e-r/index.html
+++ b/api/shark/-hprof-record-tag/-r-o-o-t_-d-e-b-u-g-g-e-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-tag/-r-o-o-t_-f-i-n-a-l-i-z-i-n-g/index.html b/api/shark/-hprof-record-tag/-r-o-o-t_-f-i-n-a-l-i-z-i-n-g/index.html
index a97db1a..1032ecb 100644
--- a/api/shark/-hprof-record-tag/-r-o-o-t_-f-i-n-a-l-i-z-i-n-g/index.html
+++ b/api/shark/-hprof-record-tag/-r-o-o-t_-f-i-n-a-l-i-z-i-n-g/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-tag/-r-o-o-t_-i-n-t-e-r-n-e-d_-s-t-r-i-n-g/index.html b/api/shark/-hprof-record-tag/-r-o-o-t_-i-n-t-e-r-n-e-d_-s-t-r-i-n-g/index.html
index d93b600..180e6d4 100644
--- a/api/shark/-hprof-record-tag/-r-o-o-t_-i-n-t-e-r-n-e-d_-s-t-r-i-n-g/index.html
+++ b/api/shark/-hprof-record-tag/-r-o-o-t_-i-n-t-e-r-n-e-d_-s-t-r-i-n-g/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-tag/-r-o-o-t_-j-a-v-a_-f-r-a-m-e/index.html b/api/shark/-hprof-record-tag/-r-o-o-t_-j-a-v-a_-f-r-a-m-e/index.html
index 22f30cc..202c47e 100644
--- a/api/shark/-hprof-record-tag/-r-o-o-t_-j-a-v-a_-f-r-a-m-e/index.html
+++ b/api/shark/-hprof-record-tag/-r-o-o-t_-j-a-v-a_-f-r-a-m-e/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-tag/-r-o-o-t_-j-n-i_-g-l-o-b-a-l/index.html b/api/shark/-hprof-record-tag/-r-o-o-t_-j-n-i_-g-l-o-b-a-l/index.html
index df0fb8d..53289ff 100644
--- a/api/shark/-hprof-record-tag/-r-o-o-t_-j-n-i_-g-l-o-b-a-l/index.html
+++ b/api/shark/-hprof-record-tag/-r-o-o-t_-j-n-i_-g-l-o-b-a-l/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-tag/-r-o-o-t_-j-n-i_-l-o-c-a-l/index.html b/api/shark/-hprof-record-tag/-r-o-o-t_-j-n-i_-l-o-c-a-l/index.html
index ae761b5..a589cb9 100644
--- a/api/shark/-hprof-record-tag/-r-o-o-t_-j-n-i_-l-o-c-a-l/index.html
+++ b/api/shark/-hprof-record-tag/-r-o-o-t_-j-n-i_-l-o-c-a-l/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-tag/-r-o-o-t_-j-n-i_-m-o-n-i-t-o-r/index.html b/api/shark/-hprof-record-tag/-r-o-o-t_-j-n-i_-m-o-n-i-t-o-r/index.html
index 18f56c4..fab8c67 100644
--- a/api/shark/-hprof-record-tag/-r-o-o-t_-j-n-i_-m-o-n-i-t-o-r/index.html
+++ b/api/shark/-hprof-record-tag/-r-o-o-t_-j-n-i_-m-o-n-i-t-o-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-tag/-r-o-o-t_-m-o-n-i-t-o-r_-u-s-e-d/index.html b/api/shark/-hprof-record-tag/-r-o-o-t_-m-o-n-i-t-o-r_-u-s-e-d/index.html
index 65f6724..ddde2b9 100644
--- a/api/shark/-hprof-record-tag/-r-o-o-t_-m-o-n-i-t-o-r_-u-s-e-d/index.html
+++ b/api/shark/-hprof-record-tag/-r-o-o-t_-m-o-n-i-t-o-r_-u-s-e-d/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-tag/-r-o-o-t_-n-a-t-i-v-e_-s-t-a-c-k/index.html b/api/shark/-hprof-record-tag/-r-o-o-t_-n-a-t-i-v-e_-s-t-a-c-k/index.html
index 2ba0a5d..91770d0 100644
--- a/api/shark/-hprof-record-tag/-r-o-o-t_-n-a-t-i-v-e_-s-t-a-c-k/index.html
+++ b/api/shark/-hprof-record-tag/-r-o-o-t_-n-a-t-i-v-e_-s-t-a-c-k/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-tag/-r-o-o-t_-r-e-f-e-r-e-n-c-e_-c-l-e-a-n-u-p/index.html b/api/shark/-hprof-record-tag/-r-o-o-t_-r-e-f-e-r-e-n-c-e_-c-l-e-a-n-u-p/index.html
index ae0ab6e..fd7b188 100644
--- a/api/shark/-hprof-record-tag/-r-o-o-t_-r-e-f-e-r-e-n-c-e_-c-l-e-a-n-u-p/index.html
+++ b/api/shark/-hprof-record-tag/-r-o-o-t_-r-e-f-e-r-e-n-c-e_-c-l-e-a-n-u-p/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-tag/-r-o-o-t_-s-t-i-c-k-y_-c-l-a-s-s/index.html b/api/shark/-hprof-record-tag/-r-o-o-t_-s-t-i-c-k-y_-c-l-a-s-s/index.html
index 1256d6a..f14ec9d 100644
--- a/api/shark/-hprof-record-tag/-r-o-o-t_-s-t-i-c-k-y_-c-l-a-s-s/index.html
+++ b/api/shark/-hprof-record-tag/-r-o-o-t_-s-t-i-c-k-y_-c-l-a-s-s/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-tag/-r-o-o-t_-t-h-r-e-a-d_-b-l-o-c-k/index.html b/api/shark/-hprof-record-tag/-r-o-o-t_-t-h-r-e-a-d_-b-l-o-c-k/index.html
index b4f3682..f53b16d 100644
--- a/api/shark/-hprof-record-tag/-r-o-o-t_-t-h-r-e-a-d_-b-l-o-c-k/index.html
+++ b/api/shark/-hprof-record-tag/-r-o-o-t_-t-h-r-e-a-d_-b-l-o-c-k/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-tag/-r-o-o-t_-t-h-r-e-a-d_-o-b-j-e-c-t/index.html b/api/shark/-hprof-record-tag/-r-o-o-t_-t-h-r-e-a-d_-o-b-j-e-c-t/index.html
index afe17a1..ab0f9d9 100644
--- a/api/shark/-hprof-record-tag/-r-o-o-t_-t-h-r-e-a-d_-o-b-j-e-c-t/index.html
+++ b/api/shark/-hprof-record-tag/-r-o-o-t_-t-h-r-e-a-d_-o-b-j-e-c-t/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-tag/-r-o-o-t_-u-n-k-n-o-w-n/index.html b/api/shark/-hprof-record-tag/-r-o-o-t_-u-n-k-n-o-w-n/index.html
index 9b3e6bc..28d5384 100644
--- a/api/shark/-hprof-record-tag/-r-o-o-t_-u-n-k-n-o-w-n/index.html
+++ b/api/shark/-hprof-record-tag/-r-o-o-t_-u-n-k-n-o-w-n/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-tag/-r-o-o-t_-u-n-r-e-a-c-h-a-b-l-e/index.html b/api/shark/-hprof-record-tag/-r-o-o-t_-u-n-r-e-a-c-h-a-b-l-e/index.html
index 058df7d..0d0ceda 100644
--- a/api/shark/-hprof-record-tag/-r-o-o-t_-u-n-r-e-a-c-h-a-b-l-e/index.html
+++ b/api/shark/-hprof-record-tag/-r-o-o-t_-u-n-r-e-a-c-h-a-b-l-e/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-tag/-r-o-o-t_-v-m_-i-n-t-e-r-n-a-l/index.html b/api/shark/-hprof-record-tag/-r-o-o-t_-v-m_-i-n-t-e-r-n-a-l/index.html
index 0113d0b..67f26d5 100644
--- a/api/shark/-hprof-record-tag/-r-o-o-t_-v-m_-i-n-t-e-r-n-a-l/index.html
+++ b/api/shark/-hprof-record-tag/-r-o-o-t_-v-m_-i-n-t-e-r-n-a-l/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-tag/-s-t-a-c-k_-f-r-a-m-e/index.html b/api/shark/-hprof-record-tag/-s-t-a-c-k_-f-r-a-m-e/index.html
index d4c8aef..43ebc86 100644
--- a/api/shark/-hprof-record-tag/-s-t-a-c-k_-f-r-a-m-e/index.html
+++ b/api/shark/-hprof-record-tag/-s-t-a-c-k_-f-r-a-m-e/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-tag/-s-t-a-c-k_-t-r-a-c-e/index.html b/api/shark/-hprof-record-tag/-s-t-a-c-k_-t-r-a-c-e/index.html
index 1a08051..c1e4490 100644
--- a/api/shark/-hprof-record-tag/-s-t-a-c-k_-t-r-a-c-e/index.html
+++ b/api/shark/-hprof-record-tag/-s-t-a-c-k_-t-r-a-c-e/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-tag/-s-t-a-r-t_-t-h-r-e-a-d/index.html b/api/shark/-hprof-record-tag/-s-t-a-r-t_-t-h-r-e-a-d/index.html
index 3890e4a..e9c76f9 100644
--- a/api/shark/-hprof-record-tag/-s-t-a-r-t_-t-h-r-e-a-d/index.html
+++ b/api/shark/-hprof-record-tag/-s-t-a-r-t_-t-h-r-e-a-d/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-tag/-s-t-r-i-n-g_-i-n_-u-t-f8/index.html b/api/shark/-hprof-record-tag/-s-t-r-i-n-g_-i-n_-u-t-f8/index.html
index 7b25ef1..a366f88 100644
--- a/api/shark/-hprof-record-tag/-s-t-r-i-n-g_-i-n_-u-t-f8/index.html
+++ b/api/shark/-hprof-record-tag/-s-t-r-i-n-g_-i-n_-u-t-f8/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-tag/-u-n-l-o-a-d_-c-l-a-s-s/index.html b/api/shark/-hprof-record-tag/-u-n-l-o-a-d_-c-l-a-s-s/index.html
index c48eef6..df22d35 100644
--- a/api/shark/-hprof-record-tag/-u-n-l-o-a-d_-c-l-a-s-s/index.html
+++ b/api/shark/-hprof-record-tag/-u-n-l-o-a-d_-c-l-a-s-s/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-tag/index.html b/api/shark/-hprof-record-tag/index.html
index c0fc95e..6ecd08c 100644
--- a/api/shark/-hprof-record-tag/index.html
+++ b/api/shark/-hprof-record-tag/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record-tag/tag/index.html b/api/shark/-hprof-record-tag/tag/index.html
index 6509afc..960e033 100644
--- a/api/shark/-hprof-record-tag/tag/index.html
+++ b/api/shark/-hprof-record-tag/tag/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-end-record/index.html b/api/shark/-hprof-record/-heap-dump-end-record/index.html
index 4d72e64..400bf62 100644
--- a/api/shark/-hprof-record/-heap-dump-end-record/index.html
+++ b/api/shark/-hprof-record/-heap-dump-end-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-gc-root-record/-gc-root-record/index.html b/api/shark/-hprof-record/-heap-dump-record/-gc-root-record/-gc-root-record/index.html
index 9e860e3..10ef29d 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-gc-root-record/-gc-root-record/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-gc-root-record/-gc-root-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-gc-root-record/gc-root/index.html b/api/shark/-hprof-record/-heap-dump-record/-gc-root-record/gc-root/index.html
index eaa402d..3c0ba97 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-gc-root-record/gc-root/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-gc-root-record/gc-root/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-gc-root-record/index.html b/api/shark/-hprof-record/-heap-dump-record/-gc-root-record/index.html
index 410b7a6..e49e61e 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-gc-root-record/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-gc-root-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-heap-dump-info-record/-heap-dump-info-record/index.html b/api/shark/-hprof-record/-heap-dump-record/-heap-dump-info-record/-heap-dump-info-record/index.html
index 44f9ea8..1de7449 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-heap-dump-info-record/-heap-dump-info-record/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-heap-dump-info-record/-heap-dump-info-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-heap-dump-info-record/heap-id/index.html b/api/shark/-hprof-record/-heap-dump-record/-heap-dump-info-record/heap-id/index.html
index 118f2b2..14457f0 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-heap-dump-info-record/heap-id/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-heap-dump-info-record/heap-id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-heap-dump-info-record/heap-name-string-id/index.html b/api/shark/-hprof-record/-heap-dump-record/-heap-dump-info-record/heap-name-string-id/index.html
index ad36592..bbf1f1e 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-heap-dump-info-record/heap-name-string-id/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-heap-dump-info-record/heap-name-string-id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-heap-dump-info-record/index.html b/api/shark/-hprof-record/-heap-dump-record/-heap-dump-info-record/index.html
index ce562c9..42fad24 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-heap-dump-info-record/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-heap-dump-info-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-class-dump-record/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-class-dump-record/index.html
index f2d83c9..5de0323 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-class-dump-record/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-class-dump-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-field-record/-field-record/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-field-record/-field-record/index.html
index 95a060c..c0a0919 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-field-record/-field-record/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-field-record/-field-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-field-record/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-field-record/index.html
index 75099f4..6bb13ef 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-field-record/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-field-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-field-record/name-string-id/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-field-record/name-string-id/index.html
index e34884b..71fb336 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-field-record/name-string-id/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-field-record/name-string-id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-field-record/type/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-field-record/type/index.html
index dc8a20a..1828ee2 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-field-record/type/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-field-record/type/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/-static-field-record/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/-static-field-record/index.html
index 954a0ec..57d471c 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/-static-field-record/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/-static-field-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/index.html
index ac03aa4..89a8205 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/name-string-id/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/name-string-id/index.html
index d042f05..22a6b4e 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/name-string-id/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/name-string-id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/type/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/type/index.html
index 6923e07..6af4966 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/type/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/type/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/value/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/value/index.html
index 0e48d5a..9a82c36 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/value/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/value/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/class-loader-id/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/class-loader-id/index.html
index aa13199..627b1a0 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/class-loader-id/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/class-loader-id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/fields/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/fields/index.html
index 1d41a5c..004b05e 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/fields/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/fields/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/id/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/id/index.html
index b785b0b..d3268f5 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/id/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/index.html
index 2bdab0e..c564cb8 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/instance-size/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/instance-size/index.html
index 98dfddd..869f822 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/instance-size/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/instance-size/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/protection-domain-id/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/protection-domain-id/index.html
index 4da6131..16f4437 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/protection-domain-id/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/protection-domain-id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/signers-id/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/signers-id/index.html
index c1f961c..51c1c0f 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/signers-id/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/signers-id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/stack-trace-serial-number/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/stack-trace-serial-number/index.html
index ed8c17b..7af9e2a 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/stack-trace-serial-number/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/stack-trace-serial-number/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/static-fields/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/static-fields/index.html
index e1e366f..fbd3845 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/static-fields/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/static-fields/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/superclass-id/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/superclass-id/index.html
index 8de3539..71d672d 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/superclass-id/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/superclass-id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/-instance-dump-record/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/-instance-dump-record/index.html
index 3e2be87..067299e 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/-instance-dump-record/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/-instance-dump-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/class-id/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/class-id/index.html
index 42a9229..ec2a67d 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/class-id/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/class-id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/field-values/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/field-values/index.html
index 074e837..5285d0d 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/field-values/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/field-values/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/id/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/id/index.html
index c55aa97..863dee7 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/id/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/index.html
index e260148..947c715 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/stack-trace-serial-number/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/stack-trace-serial-number/index.html
index 64b5063..3499f33 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/stack-trace-serial-number/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/stack-trace-serial-number/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/-object-array-dump-record/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/-object-array-dump-record/index.html
index e7a1433..478c8a6 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/-object-array-dump-record/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/-object-array-dump-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/array-class-id/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/array-class-id/index.html
index cc1b7f2..f6d811a 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/array-class-id/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/array-class-id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/element-ids/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/element-ids/index.html
index 6b4cf46..e9b57dc 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/element-ids/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/element-ids/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/id/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/id/index.html
index 4f902ff..f7c1e66 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/id/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/index.html
index 886e284..0a60080 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/stack-trace-serial-number/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/stack-trace-serial-number/index.html
index 44f0302..1e3dda5 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/stack-trace-serial-number/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/stack-trace-serial-number/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/-boolean-array-dump/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/-boolean-array-dump/index.html
index a93310b..89acea3 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/-boolean-array-dump/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/-boolean-array-dump/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/array/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/array/index.html
index 73fa28a..1a95b8c 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/array/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/array/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/id/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/id/index.html
index e6083de..07a0bac 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/id/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/index.html
index f828806..4e6dcc7 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/size/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/size/index.html
index b12fa09..1e03c32 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/size/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/size/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/stack-trace-serial-number/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/stack-trace-serial-number/index.html
index 4590de1..2575fff 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/stack-trace-serial-number/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/stack-trace-serial-number/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/-byte-array-dump/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/-byte-array-dump/index.html
index 22d623e..cb765ec 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/-byte-array-dump/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/-byte-array-dump/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/array/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/array/index.html
index 64438bb..f3d1b86 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/array/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/array/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/id/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/id/index.html
index e469de6..0d313a2 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/id/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/index.html
index cd30f9b..7f3cedb 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/size/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/size/index.html
index a78da21..527257b 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/size/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/size/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/stack-trace-serial-number/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/stack-trace-serial-number/index.html
index d4b2997..3fa8bf3 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/stack-trace-serial-number/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/stack-trace-serial-number/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/-char-array-dump/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/-char-array-dump/index.html
index c9e7508..6ab4863 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/-char-array-dump/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/-char-array-dump/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/array/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/array/index.html
index 12f109f..6b0a3c2 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/array/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/array/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/id/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/id/index.html
index bc12909..6c78af8 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/id/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/index.html
index ea913c2..c71f383 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/size/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/size/index.html
index 825f5af..98c9428 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/size/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/size/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/stack-trace-serial-number/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/stack-trace-serial-number/index.html
index 79ecb01..2801c07 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/stack-trace-serial-number/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/stack-trace-serial-number/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/-double-array-dump/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/-double-array-dump/index.html
index 671b14b..6caa3b5 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/-double-array-dump/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/-double-array-dump/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/array/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/array/index.html
index dbbd92a..37bb852 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/array/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/array/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/id/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/id/index.html
index 9f7fc53..57145d8 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/id/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/index.html
index d24386c..a31d8cf 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/size/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/size/index.html
index 4abb163..9ba74fb 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/size/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/size/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/stack-trace-serial-number/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/stack-trace-serial-number/index.html
index fbf626a..e17cedb 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/stack-trace-serial-number/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/stack-trace-serial-number/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/-float-array-dump/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/-float-array-dump/index.html
index 8456053..b54525c 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/-float-array-dump/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/-float-array-dump/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/array/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/array/index.html
index bec2c63..41056bd 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/array/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/array/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/id/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/id/index.html
index c9c8956..e3ab67c 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/id/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/index.html
index bc0211b..00adcd8 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/size/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/size/index.html
index 222e056..3ae677d 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/size/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/size/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/stack-trace-serial-number/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/stack-trace-serial-number/index.html
index 3665cc1..f6b5f99 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/stack-trace-serial-number/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/stack-trace-serial-number/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/-int-array-dump/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/-int-array-dump/index.html
index 6b63197..c5ef9f6 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/-int-array-dump/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/-int-array-dump/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/array/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/array/index.html
index bbe9ce7..45ce3ba 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/array/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/array/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/id/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/id/index.html
index e4b140c..3ab3586 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/id/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/index.html
index 673ef5f..d1042cc 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/size/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/size/index.html
index 31ae7af..b47a1df 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/size/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/size/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/stack-trace-serial-number/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/stack-trace-serial-number/index.html
index c323db6..63e58b2 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/stack-trace-serial-number/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/stack-trace-serial-number/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/-long-array-dump/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/-long-array-dump/index.html
index 415badf..5cc22b2 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/-long-array-dump/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/-long-array-dump/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/array/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/array/index.html
index 8f44ea1..f2e1247 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/array/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/array/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/id/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/id/index.html
index 7eaf3b2..fafed87 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/id/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/index.html
index 51eb07b..7d90d1f 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/size/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/size/index.html
index 1dece29..806ca44 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/size/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/size/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/stack-trace-serial-number/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/stack-trace-serial-number/index.html
index 32049e2..d766a30 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/stack-trace-serial-number/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/stack-trace-serial-number/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/-short-array-dump/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/-short-array-dump/index.html
index 9c29299..241785b 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/-short-array-dump/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/-short-array-dump/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/array/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/array/index.html
index 5b55d87..88268cb 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/array/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/array/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/id/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/id/index.html
index 8d3a9b8..fbca525 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/id/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/index.html
index b9d5b86..2485b23 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/size/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/size/index.html
index a4535eb..043cd7a 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/size/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/size/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/stack-trace-serial-number/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/stack-trace-serial-number/index.html
index d8225ae..a302c48 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/stack-trace-serial-number/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/stack-trace-serial-number/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/id/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/id/index.html
index 1a9c0df..190db0e 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/id/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/index.html
index 18d636a..32dbaed 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/size/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/size/index.html
index 31a0451..e3e4b76 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/size/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/size/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/stack-trace-serial-number/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/stack-trace-serial-number/index.html
index c52639f..b343050 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/stack-trace-serial-number/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/stack-trace-serial-number/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/-object-record/index.html b/api/shark/-hprof-record/-heap-dump-record/-object-record/index.html
index 71ac521..708be2b 100644
--- a/api/shark/-hprof-record/-heap-dump-record/-object-record/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/-object-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-heap-dump-record/index.html b/api/shark/-hprof-record/-heap-dump-record/index.html
index 61ab640..1fdc65e 100644
--- a/api/shark/-hprof-record/-heap-dump-record/index.html
+++ b/api/shark/-hprof-record/-heap-dump-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-load-class-record/-load-class-record/index.html b/api/shark/-hprof-record/-load-class-record/-load-class-record/index.html
index a75f115..2bdea28 100644
--- a/api/shark/-hprof-record/-load-class-record/-load-class-record/index.html
+++ b/api/shark/-hprof-record/-load-class-record/-load-class-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-load-class-record/class-name-string-id/index.html b/api/shark/-hprof-record/-load-class-record/class-name-string-id/index.html
index a1f6aad..db81520 100644
--- a/api/shark/-hprof-record/-load-class-record/class-name-string-id/index.html
+++ b/api/shark/-hprof-record/-load-class-record/class-name-string-id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-load-class-record/class-serial-number/index.html b/api/shark/-hprof-record/-load-class-record/class-serial-number/index.html
index 58b7735..cf3fdca 100644
--- a/api/shark/-hprof-record/-load-class-record/class-serial-number/index.html
+++ b/api/shark/-hprof-record/-load-class-record/class-serial-number/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-load-class-record/id/index.html b/api/shark/-hprof-record/-load-class-record/id/index.html
index 8d08646..6758d11 100644
--- a/api/shark/-hprof-record/-load-class-record/id/index.html
+++ b/api/shark/-hprof-record/-load-class-record/id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-load-class-record/index.html b/api/shark/-hprof-record/-load-class-record/index.html
index 966caf1..0185129 100644
--- a/api/shark/-hprof-record/-load-class-record/index.html
+++ b/api/shark/-hprof-record/-load-class-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-load-class-record/stack-trace-serial-number/index.html b/api/shark/-hprof-record/-load-class-record/stack-trace-serial-number/index.html
index 894c360..c8f6d84 100644
--- a/api/shark/-hprof-record/-load-class-record/stack-trace-serial-number/index.html
+++ b/api/shark/-hprof-record/-load-class-record/stack-trace-serial-number/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-stack-frame-record/-stack-frame-record/index.html b/api/shark/-hprof-record/-stack-frame-record/-stack-frame-record/index.html
index ecb3782..961f019 100644
--- a/api/shark/-hprof-record/-stack-frame-record/-stack-frame-record/index.html
+++ b/api/shark/-hprof-record/-stack-frame-record/-stack-frame-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-stack-frame-record/class-serial-number/index.html b/api/shark/-hprof-record/-stack-frame-record/class-serial-number/index.html
index 0242cbe..ad3cf6e 100644
--- a/api/shark/-hprof-record/-stack-frame-record/class-serial-number/index.html
+++ b/api/shark/-hprof-record/-stack-frame-record/class-serial-number/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-stack-frame-record/id/index.html b/api/shark/-hprof-record/-stack-frame-record/id/index.html
index f2eb233..7bb1c98 100644
--- a/api/shark/-hprof-record/-stack-frame-record/id/index.html
+++ b/api/shark/-hprof-record/-stack-frame-record/id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-stack-frame-record/index.html b/api/shark/-hprof-record/-stack-frame-record/index.html
index d1f8f0b..d057c98 100644
--- a/api/shark/-hprof-record/-stack-frame-record/index.html
+++ b/api/shark/-hprof-record/-stack-frame-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-stack-frame-record/line-number/index.html b/api/shark/-hprof-record/-stack-frame-record/line-number/index.html
index 3120ea2..516b852 100644
--- a/api/shark/-hprof-record/-stack-frame-record/line-number/index.html
+++ b/api/shark/-hprof-record/-stack-frame-record/line-number/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-stack-frame-record/method-name-string-id/index.html b/api/shark/-hprof-record/-stack-frame-record/method-name-string-id/index.html
index 517729b..acb56eb 100644
--- a/api/shark/-hprof-record/-stack-frame-record/method-name-string-id/index.html
+++ b/api/shark/-hprof-record/-stack-frame-record/method-name-string-id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-stack-frame-record/method-signature-string-id/index.html b/api/shark/-hprof-record/-stack-frame-record/method-signature-string-id/index.html
index 1df4e92..c493673 100644
--- a/api/shark/-hprof-record/-stack-frame-record/method-signature-string-id/index.html
+++ b/api/shark/-hprof-record/-stack-frame-record/method-signature-string-id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-stack-frame-record/source-file-name-string-id/index.html b/api/shark/-hprof-record/-stack-frame-record/source-file-name-string-id/index.html
index 8ac495c..91cb245 100644
--- a/api/shark/-hprof-record/-stack-frame-record/source-file-name-string-id/index.html
+++ b/api/shark/-hprof-record/-stack-frame-record/source-file-name-string-id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-stack-trace-record/-stack-trace-record/index.html b/api/shark/-hprof-record/-stack-trace-record/-stack-trace-record/index.html
index 2b7b003..6d283cb 100644
--- a/api/shark/-hprof-record/-stack-trace-record/-stack-trace-record/index.html
+++ b/api/shark/-hprof-record/-stack-trace-record/-stack-trace-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-stack-trace-record/index.html b/api/shark/-hprof-record/-stack-trace-record/index.html
index 8412951..07390f8 100644
--- a/api/shark/-hprof-record/-stack-trace-record/index.html
+++ b/api/shark/-hprof-record/-stack-trace-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-stack-trace-record/stack-frame-ids/index.html b/api/shark/-hprof-record/-stack-trace-record/stack-frame-ids/index.html
index fa66932..9aaef8c 100644
--- a/api/shark/-hprof-record/-stack-trace-record/stack-frame-ids/index.html
+++ b/api/shark/-hprof-record/-stack-trace-record/stack-frame-ids/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-stack-trace-record/stack-trace-serial-number/index.html b/api/shark/-hprof-record/-stack-trace-record/stack-trace-serial-number/index.html
index 07f6af7..c891822 100644
--- a/api/shark/-hprof-record/-stack-trace-record/stack-trace-serial-number/index.html
+++ b/api/shark/-hprof-record/-stack-trace-record/stack-trace-serial-number/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-stack-trace-record/thread-serial-number/index.html b/api/shark/-hprof-record/-stack-trace-record/thread-serial-number/index.html
index 3150f62..dbdd881 100644
--- a/api/shark/-hprof-record/-stack-trace-record/thread-serial-number/index.html
+++ b/api/shark/-hprof-record/-stack-trace-record/thread-serial-number/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-string-record/-string-record/index.html b/api/shark/-hprof-record/-string-record/-string-record/index.html
index f0e6a22..8f3ba3f 100644
--- a/api/shark/-hprof-record/-string-record/-string-record/index.html
+++ b/api/shark/-hprof-record/-string-record/-string-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-string-record/id/index.html b/api/shark/-hprof-record/-string-record/id/index.html
index b5d0f00..92f0d26 100644
--- a/api/shark/-hprof-record/-string-record/id/index.html
+++ b/api/shark/-hprof-record/-string-record/id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-string-record/index.html b/api/shark/-hprof-record/-string-record/index.html
index 04545f2..ee6899a 100644
--- a/api/shark/-hprof-record/-string-record/index.html
+++ b/api/shark/-hprof-record/-string-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/-string-record/string/index.html b/api/shark/-hprof-record/-string-record/string/index.html
index 7b35313..f26f1ea 100644
--- a/api/shark/-hprof-record/-string-record/string/index.html
+++ b/api/shark/-hprof-record/-string-record/string/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-record/index.html b/api/shark/-hprof-record/index.html
index 8ed19cd..9c583dc 100644
--- a/api/shark/-hprof-record/index.html
+++ b/api/shark/-hprof-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-version/-a-n-d-r-o-i-d/index.html b/api/shark/-hprof-version/-a-n-d-r-o-i-d/index.html
index 7fc6e53..60128ae 100644
--- a/api/shark/-hprof-version/-a-n-d-r-o-i-d/index.html
+++ b/api/shark/-hprof-version/-a-n-d-r-o-i-d/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-version/-j-d-k1_2_-b-e-t-a3/index.html b/api/shark/-hprof-version/-j-d-k1_2_-b-e-t-a3/index.html
index 08c75ac..9ced976 100644
--- a/api/shark/-hprof-version/-j-d-k1_2_-b-e-t-a3/index.html
+++ b/api/shark/-hprof-version/-j-d-k1_2_-b-e-t-a3/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-version/-j-d-k1_2_-b-e-t-a4/index.html b/api/shark/-hprof-version/-j-d-k1_2_-b-e-t-a4/index.html
index a17d4cb..147841b 100644
--- a/api/shark/-hprof-version/-j-d-k1_2_-b-e-t-a4/index.html
+++ b/api/shark/-hprof-version/-j-d-k1_2_-b-e-t-a4/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-version/-j-d-k_6/index.html b/api/shark/-hprof-version/-j-d-k_6/index.html
index b942258..9310e78 100644
--- a/api/shark/-hprof-version/-j-d-k_6/index.html
+++ b/api/shark/-hprof-version/-j-d-k_6/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-version/index.html b/api/shark/-hprof-version/index.html
index 6d7dce4..ed2f067 100644
--- a/api/shark/-hprof-version/index.html
+++ b/api/shark/-hprof-version/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-version/version-string/index.html b/api/shark/-hprof-version/version-string/index.html
index 3d1fc46..b81a384 100644
--- a/api/shark/-hprof-version/version-string/index.html
+++ b/api/shark/-hprof-version/version-string/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-writer-helper/-class-definition/-class-definition/index.html b/api/shark/-hprof-writer-helper/-class-definition/-class-definition/index.html
index 5802fe1..5d4cdf8 100644
--- a/api/shark/-hprof-writer-helper/-class-definition/-class-definition/index.html
+++ b/api/shark/-hprof-writer-helper/-class-definition/-class-definition/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-writer-helper/-class-definition/index.html b/api/shark/-hprof-writer-helper/-class-definition/index.html
index 7cb65ed..2a4ce4d 100644
--- a/api/shark/-hprof-writer-helper/-class-definition/index.html
+++ b/api/shark/-hprof-writer-helper/-class-definition/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-writer-helper/-class-definition/static-field/index.html b/api/shark/-hprof-writer-helper/-class-definition/static-field/index.html
index d5be5be..8f27949 100644
--- a/api/shark/-hprof-writer-helper/-class-definition/static-field/index.html
+++ b/api/shark/-hprof-writer-helper/-class-definition/static-field/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-writer-helper/-hprof-writer-helper/index.html b/api/shark/-hprof-writer-helper/-hprof-writer-helper/index.html
index f709577..2a51cd1 100644
--- a/api/shark/-hprof-writer-helper/-hprof-writer-helper/index.html
+++ b/api/shark/-hprof-writer-helper/-hprof-writer-helper/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-writer-helper/-instance-and-class-definition/-instance-and-class-definition/index.html b/api/shark/-hprof-writer-helper/-instance-and-class-definition/-instance-and-class-definition/index.html
index 73910b6..700380d 100644
--- a/api/shark/-hprof-writer-helper/-instance-and-class-definition/-instance-and-class-definition/index.html
+++ b/api/shark/-hprof-writer-helper/-instance-and-class-definition/-instance-and-class-definition/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-writer-helper/-instance-and-class-definition/field/index.html b/api/shark/-hprof-writer-helper/-instance-and-class-definition/field/index.html
index 11c5052..13ffb3e 100644
--- a/api/shark/-hprof-writer-helper/-instance-and-class-definition/field/index.html
+++ b/api/shark/-hprof-writer-helper/-instance-and-class-definition/field/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-writer-helper/-instance-and-class-definition/index.html b/api/shark/-hprof-writer-helper/-instance-and-class-definition/index.html
index f1610a2..933bde6 100644
--- a/api/shark/-hprof-writer-helper/-instance-and-class-definition/index.html
+++ b/api/shark/-hprof-writer-helper/-instance-and-class-definition/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-writer-helper/-instance-and-class-definition/static-field/index.html b/api/shark/-hprof-writer-helper/-instance-and-class-definition/static-field/index.html
index 0ecd84f..3e88ae9 100644
--- a/api/shark/-hprof-writer-helper/-instance-and-class-definition/static-field/index.html
+++ b/api/shark/-hprof-writer-helper/-instance-and-class-definition/static-field/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-writer-helper/array-class/index.html b/api/shark/-hprof-writer-helper/array-class/index.html
index 22016c5..62bca9e 100644
--- a/api/shark/-hprof-writer-helper/array-class/index.html
+++ b/api/shark/-hprof-writer-helper/array-class/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-writer-helper/char-array-dump/index.html b/api/shark/-hprof-writer-helper/char-array-dump/index.html
index d6c3a47..b90f3a3 100644
--- a/api/shark/-hprof-writer-helper/char-array-dump/index.html
+++ b/api/shark/-hprof-writer-helper/char-array-dump/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-writer-helper/clazz/index.html b/api/shark/-hprof-writer-helper/clazz/index.html
index f2e3455..4a2664e 100644
--- a/api/shark/-hprof-writer-helper/clazz/index.html
+++ b/api/shark/-hprof-writer-helper/clazz/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-writer-helper/close/index.html b/api/shark/-hprof-writer-helper/close/index.html
index 7e225a4..568d3b6 100644
--- a/api/shark/-hprof-writer-helper/close/index.html
+++ b/api/shark/-hprof-writer-helper/close/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-writer-helper/gc-root/index.html b/api/shark/-hprof-writer-helper/gc-root/index.html
index a20a320..20fc98e 100644
--- a/api/shark/-hprof-writer-helper/gc-root/index.html
+++ b/api/shark/-hprof-writer-helper/gc-root/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-writer-helper/index.html b/api/shark/-hprof-writer-helper/index.html
index ea12d49..313dac8 100644
--- a/api/shark/-hprof-writer-helper/index.html
+++ b/api/shark/-hprof-writer-helper/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-writer-helper/instance/index.html b/api/shark/-hprof-writer-helper/instance/index.html
index fd36527..ed97226 100644
--- a/api/shark/-hprof-writer-helper/instance/index.html
+++ b/api/shark/-hprof-writer-helper/instance/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-writer-helper/keyed-weak-reference/index.html b/api/shark/-hprof-writer-helper/keyed-weak-reference/index.html
index 12379b7..c6a346c 100644
--- a/api/shark/-hprof-writer-helper/keyed-weak-reference/index.html
+++ b/api/shark/-hprof-writer-helper/keyed-weak-reference/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-writer-helper/object-array-of/index.html b/api/shark/-hprof-writer-helper/object-array-of/index.html
index f835b32..3cdef2b 100644
--- a/api/shark/-hprof-writer-helper/object-array-of/index.html
+++ b/api/shark/-hprof-writer-helper/object-array-of/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-writer-helper/object-array/index.html b/api/shark/-hprof-writer-helper/object-array/index.html
index e3ac61f..fcfd06d 100644
--- a/api/shark/-hprof-writer-helper/object-array/index.html
+++ b/api/shark/-hprof-writer-helper/object-array/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-writer-helper/primitive-long-array/index.html b/api/shark/-hprof-writer-helper/primitive-long-array/index.html
index b48725c..f47b6ba 100644
--- a/api/shark/-hprof-writer-helper/primitive-long-array/index.html
+++ b/api/shark/-hprof-writer-helper/primitive-long-array/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-writer-helper/string-record/index.html b/api/shark/-hprof-writer-helper/string-record/index.html
index 4a3c6e0..8bbb345 100644
--- a/api/shark/-hprof-writer-helper/string-record/index.html
+++ b/api/shark/-hprof-writer-helper/string-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-writer-helper/string/index.html b/api/shark/-hprof-writer-helper/string/index.html
index a3a985f..cd5104a 100644
--- a/api/shark/-hprof-writer-helper/string/index.html
+++ b/api/shark/-hprof-writer-helper/string/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-writer-helper/watched-instance/index.html b/api/shark/-hprof-writer-helper/watched-instance/index.html
index dd8ea4f..88f4447 100644
--- a/api/shark/-hprof-writer-helper/watched-instance/index.html
+++ b/api/shark/-hprof-writer-helper/watched-instance/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-writer/-companion/index.html b/api/shark/-hprof-writer/-companion/index.html
index d43aaee..487ba12 100644
--- a/api/shark/-hprof-writer/-companion/index.html
+++ b/api/shark/-hprof-writer/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-writer/-companion/open-writer-for/index.html b/api/shark/-hprof-writer/-companion/open-writer-for/index.html
index 890e402..c91aa61 100644
--- a/api/shark/-hprof-writer/-companion/open-writer-for/index.html
+++ b/api/shark/-hprof-writer/-companion/open-writer-for/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-writer/close/index.html b/api/shark/-hprof-writer/close/index.html
index d181c34..b920cad 100644
--- a/api/shark/-hprof-writer/close/index.html
+++ b/api/shark/-hprof-writer/close/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-writer/hprof-header/index.html b/api/shark/-hprof-writer/hprof-header/index.html
index 06dbbbd..68168b3 100644
--- a/api/shark/-hprof-writer/hprof-header/index.html
+++ b/api/shark/-hprof-writer/hprof-header/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-writer/index.html b/api/shark/-hprof-writer/index.html
index 2380978..6e66a69 100644
--- a/api/shark/-hprof-writer/index.html
+++ b/api/shark/-hprof-writer/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-writer/values-to-bytes/index.html b/api/shark/-hprof-writer/values-to-bytes/index.html
index 155599c..395c2d1 100644
--- a/api/shark/-hprof-writer/values-to-bytes/index.html
+++ b/api/shark/-hprof-writer/values-to-bytes/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-hprof-writer/write/index.html b/api/shark/-hprof-writer/write/index.html
index 0ed7134..f457b86 100644
--- a/api/shark/-hprof-writer/write/index.html
+++ b/api/shark/-hprof-writer/write/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-ignored-reference-matcher/-ignored-reference-matcher/index.html b/api/shark/-ignored-reference-matcher/-ignored-reference-matcher/index.html
index 6dff61e..2a08210 100644
--- a/api/shark/-ignored-reference-matcher/-ignored-reference-matcher/index.html
+++ b/api/shark/-ignored-reference-matcher/-ignored-reference-matcher/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-ignored-reference-matcher/index.html b/api/shark/-ignored-reference-matcher/index.html
index 7661766..0a1017b 100644
--- a/api/shark/-ignored-reference-matcher/index.html
+++ b/api/shark/-ignored-reference-matcher/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-ignored-reference-matcher/pattern/index.html b/api/shark/-ignored-reference-matcher/pattern/index.html
index 08268e1..b95af7a 100644
--- a/api/shark/-ignored-reference-matcher/pattern/index.html
+++ b/api/shark/-ignored-reference-matcher/pattern/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-ignored-reference-matcher/to-string/index.html b/api/shark/-ignored-reference-matcher/to-string/index.html
index bdbb9ff..dd05792 100644
--- a/api/shark/-ignored-reference-matcher/to-string/index.html
+++ b/api/shark/-ignored-reference-matcher/to-string/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-interactive-command/-c-o-m-m-a-n-d/-a-n-a-l-y-z-e/index.html b/api/shark/-interactive-command/-c-o-m-m-a-n-d/-a-n-a-l-y-z-e/index.html
index b9eb59b..1788f27 100644
--- a/api/shark/-interactive-command/-c-o-m-m-a-n-d/-a-n-a-l-y-z-e/index.html
+++ b/api/shark/-interactive-command/-c-o-m-m-a-n-d/-a-n-a-l-y-z-e/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-interactive-command/-c-o-m-m-a-n-d/-a-r-r-a-y/index.html b/api/shark/-interactive-command/-c-o-m-m-a-n-d/-a-r-r-a-y/index.html
index e73a26b..f0976a8 100644
--- a/api/shark/-interactive-command/-c-o-m-m-a-n-d/-a-r-r-a-y/index.html
+++ b/api/shark/-interactive-command/-c-o-m-m-a-n-d/-a-r-r-a-y/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-interactive-command/-c-o-m-m-a-n-d/-c-l-a-s-s/index.html b/api/shark/-interactive-command/-c-o-m-m-a-n-d/-c-l-a-s-s/index.html
index 3136806..9e9168a 100644
--- a/api/shark/-interactive-command/-c-o-m-m-a-n-d/-c-l-a-s-s/index.html
+++ b/api/shark/-interactive-command/-c-o-m-m-a-n-d/-c-l-a-s-s/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-interactive-command/-c-o-m-m-a-n-d/-companion/index.html b/api/shark/-interactive-command/-c-o-m-m-a-n-d/-companion/index.html
index 37af0fb..5f00f55 100644
--- a/api/shark/-interactive-command/-c-o-m-m-a-n-d/-companion/index.html
+++ b/api/shark/-interactive-command/-c-o-m-m-a-n-d/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-interactive-command/-c-o-m-m-a-n-d/-companion/matches-command/index.html b/api/shark/-interactive-command/-c-o-m-m-a-n-d/-companion/matches-command/index.html
index 7cb968c..bdf067d 100644
--- a/api/shark/-interactive-command/-c-o-m-m-a-n-d/-companion/matches-command/index.html
+++ b/api/shark/-interactive-command/-c-o-m-m-a-n-d/-companion/matches-command/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-interactive-command/-c-o-m-m-a-n-d/-d-e-t-a-i-l-e-d_-p-a-t-h_-t-o_-i-n-s-t-a-n-c-e/index.html b/api/shark/-interactive-command/-c-o-m-m-a-n-d/-d-e-t-a-i-l-e-d_-p-a-t-h_-t-o_-i-n-s-t-a-n-c-e/index.html
index c6f5908..96006c1 100644
--- a/api/shark/-interactive-command/-c-o-m-m-a-n-d/-d-e-t-a-i-l-e-d_-p-a-t-h_-t-o_-i-n-s-t-a-n-c-e/index.html
+++ b/api/shark/-interactive-command/-c-o-m-m-a-n-d/-d-e-t-a-i-l-e-d_-p-a-t-h_-t-o_-i-n-s-t-a-n-c-e/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-interactive-command/-c-o-m-m-a-n-d/-e-x-i-t/index.html b/api/shark/-interactive-command/-c-o-m-m-a-n-d/-e-x-i-t/index.html
index 727da9b..1fe41c1 100644
--- a/api/shark/-interactive-command/-c-o-m-m-a-n-d/-e-x-i-t/index.html
+++ b/api/shark/-interactive-command/-c-o-m-m-a-n-d/-e-x-i-t/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-interactive-command/-c-o-m-m-a-n-d/-h-e-l-p/index.html b/api/shark/-interactive-command/-c-o-m-m-a-n-d/-h-e-l-p/index.html
index 7550315..66e34d0 100644
--- a/api/shark/-interactive-command/-c-o-m-m-a-n-d/-h-e-l-p/index.html
+++ b/api/shark/-interactive-command/-c-o-m-m-a-n-d/-h-e-l-p/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-interactive-command/-c-o-m-m-a-n-d/-i-n-s-t-a-n-c-e/index.html b/api/shark/-interactive-command/-c-o-m-m-a-n-d/-i-n-s-t-a-n-c-e/index.html
index ef16ec2..b1d9c42 100644
--- a/api/shark/-interactive-command/-c-o-m-m-a-n-d/-i-n-s-t-a-n-c-e/index.html
+++ b/api/shark/-interactive-command/-c-o-m-m-a-n-d/-i-n-s-t-a-n-c-e/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-interactive-command/-c-o-m-m-a-n-d/-p-a-t-h_-t-o_-i-n-s-t-a-n-c-e/index.html b/api/shark/-interactive-command/-c-o-m-m-a-n-d/-p-a-t-h_-t-o_-i-n-s-t-a-n-c-e/index.html
index 4f4d80e..648e556 100644
--- a/api/shark/-interactive-command/-c-o-m-m-a-n-d/-p-a-t-h_-t-o_-i-n-s-t-a-n-c-e/index.html
+++ b/api/shark/-interactive-command/-c-o-m-m-a-n-d/-p-a-t-h_-t-o_-i-n-s-t-a-n-c-e/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-interactive-command/-c-o-m-m-a-n-d/command-name/index.html b/api/shark/-interactive-command/-c-o-m-m-a-n-d/command-name/index.html
index 7ffbbeb..4097df5 100644
--- a/api/shark/-interactive-command/-c-o-m-m-a-n-d/command-name/index.html
+++ b/api/shark/-interactive-command/-c-o-m-m-a-n-d/command-name/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-interactive-command/-c-o-m-m-a-n-d/help/index.html b/api/shark/-interactive-command/-c-o-m-m-a-n-d/help/index.html
index 5711194..cd24c6f 100644
--- a/api/shark/-interactive-command/-c-o-m-m-a-n-d/help/index.html
+++ b/api/shark/-interactive-command/-c-o-m-m-a-n-d/help/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-interactive-command/-c-o-m-m-a-n-d/index.html b/api/shark/-interactive-command/-c-o-m-m-a-n-d/index.html
index e1160f4..c80fe12 100644
--- a/api/shark/-interactive-command/-c-o-m-m-a-n-d/index.html
+++ b/api/shark/-interactive-command/-c-o-m-m-a-n-d/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-interactive-command/-c-o-m-m-a-n-d/pattern-help/index.html b/api/shark/-interactive-command/-c-o-m-m-a-n-d/pattern-help/index.html
index fa3a4b4..c1ab39f 100644
--- a/api/shark/-interactive-command/-c-o-m-m-a-n-d/pattern-help/index.html
+++ b/api/shark/-interactive-command/-c-o-m-m-a-n-d/pattern-help/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-interactive-command/-c-o-m-m-a-n-d/pattern/index.html b/api/shark/-interactive-command/-c-o-m-m-a-n-d/pattern/index.html
index 8be6c41..ac39d97 100644
--- a/api/shark/-interactive-command/-c-o-m-m-a-n-d/pattern/index.html
+++ b/api/shark/-interactive-command/-c-o-m-m-a-n-d/pattern/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-interactive-command/-c-o-m-m-a-n-d/suffix/index.html b/api/shark/-interactive-command/-c-o-m-m-a-n-d/suffix/index.html
index 9834afb..abf8ba2 100644
--- a/api/shark/-interactive-command/-c-o-m-m-a-n-d/suffix/index.html
+++ b/api/shark/-interactive-command/-c-o-m-m-a-n-d/suffix/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-interactive-command/-c-o-m-m-a-n-d/to-string/index.html b/api/shark/-interactive-command/-c-o-m-m-a-n-d/to-string/index.html
index cb10c61..b49cc1a 100644
--- a/api/shark/-interactive-command/-c-o-m-m-a-n-d/to-string/index.html
+++ b/api/shark/-interactive-command/-c-o-m-m-a-n-d/to-string/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-interactive-command/-interactive-command/index.html b/api/shark/-interactive-command/-interactive-command/index.html
index 4717267..0a794eb 100644
--- a/api/shark/-interactive-command/-interactive-command/index.html
+++ b/api/shark/-interactive-command/-interactive-command/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-interactive-command/index.html b/api/shark/-interactive-command/index.html
index a236e23..241ab19 100644
--- a/api/shark/-interactive-command/index.html
+++ b/api/shark/-interactive-command/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-interactive-command/run/index.html b/api/shark/-interactive-command/run/index.html
index 46f44ac..5124f93 100644
--- a/api/shark/-interactive-command/run/index.html
+++ b/api/shark/-interactive-command/run/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-jvm-test-heap-dumper/dump-heap/index.html b/api/shark/-jvm-test-heap-dumper/dump-heap/index.html
index c57b441..cd69c64 100644
--- a/api/shark/-jvm-test-heap-dumper/dump-heap/index.html
+++ b/api/shark/-jvm-test-heap-dumper/dump-heap/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-jvm-test-heap-dumper/index.html b/api/shark/-jvm-test-heap-dumper/index.html
index f5f6630..200241b 100644
--- a/api/shark/-jvm-test-heap-dumper/index.html
+++ b/api/shark/-jvm-test-heap-dumper/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-keyed-weak-reference-finder/find-leaking-object-ids/index.html b/api/shark/-keyed-weak-reference-finder/find-leaking-object-ids/index.html
index 631d354..bc0e36e 100644
--- a/api/shark/-keyed-weak-reference-finder/find-leaking-object-ids/index.html
+++ b/api/shark/-keyed-weak-reference-finder/find-leaking-object-ids/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-keyed-weak-reference-finder/heap-dump-uptime-millis/index.html b/api/shark/-keyed-weak-reference-finder/heap-dump-uptime-millis/index.html
index 25d0def..f438f50 100644
--- a/api/shark/-keyed-weak-reference-finder/heap-dump-uptime-millis/index.html
+++ b/api/shark/-keyed-weak-reference-finder/heap-dump-uptime-millis/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-keyed-weak-reference-finder/index.html b/api/shark/-keyed-weak-reference-finder/index.html
index 7faf902..19a4091 100644
--- a/api/shark/-keyed-weak-reference-finder/index.html
+++ b/api/shark/-keyed-weak-reference-finder/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace-object/-companion/index.html b/api/shark/-leak-trace-object/-companion/index.html
index 7ec4d4e..027ff7d 100644
--- a/api/shark/-leak-trace-object/-companion/index.html
+++ b/api/shark/-leak-trace-object/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace-object/-leak-trace-object/index.html b/api/shark/-leak-trace-object/-leak-trace-object/index.html
index 53998a2..9e63cec 100644
--- a/api/shark/-leak-trace-object/-leak-trace-object/index.html
+++ b/api/shark/-leak-trace-object/-leak-trace-object/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace-object/-leaking-status/-l-e-a-k-i-n-g/index.html b/api/shark/-leak-trace-object/-leaking-status/-l-e-a-k-i-n-g/index.html
index cf9090c..1ce98ea 100644
--- a/api/shark/-leak-trace-object/-leaking-status/-l-e-a-k-i-n-g/index.html
+++ b/api/shark/-leak-trace-object/-leaking-status/-l-e-a-k-i-n-g/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace-object/-leaking-status/-n-o-t_-l-e-a-k-i-n-g/index.html b/api/shark/-leak-trace-object/-leaking-status/-n-o-t_-l-e-a-k-i-n-g/index.html
index 8fade2f..ac04e3d 100644
--- a/api/shark/-leak-trace-object/-leaking-status/-n-o-t_-l-e-a-k-i-n-g/index.html
+++ b/api/shark/-leak-trace-object/-leaking-status/-n-o-t_-l-e-a-k-i-n-g/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace-object/-leaking-status/-u-n-k-n-o-w-n/index.html b/api/shark/-leak-trace-object/-leaking-status/-u-n-k-n-o-w-n/index.html
index 594ae79..80a9ab1 100644
--- a/api/shark/-leak-trace-object/-leaking-status/-u-n-k-n-o-w-n/index.html
+++ b/api/shark/-leak-trace-object/-leaking-status/-u-n-k-n-o-w-n/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace-object/-leaking-status/index.html b/api/shark/-leak-trace-object/-leaking-status/index.html
index e06f4c5..04fc3b04 100644
--- a/api/shark/-leak-trace-object/-leaking-status/index.html
+++ b/api/shark/-leak-trace-object/-leaking-status/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace-object/-object-type/-a-r-r-a-y/index.html b/api/shark/-leak-trace-object/-object-type/-a-r-r-a-y/index.html
index f0e480e..b5a3416 100644
--- a/api/shark/-leak-trace-object/-object-type/-a-r-r-a-y/index.html
+++ b/api/shark/-leak-trace-object/-object-type/-a-r-r-a-y/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace-object/-object-type/-c-l-a-s-s/index.html b/api/shark/-leak-trace-object/-object-type/-c-l-a-s-s/index.html
index abc819f..598f987 100644
--- a/api/shark/-leak-trace-object/-object-type/-c-l-a-s-s/index.html
+++ b/api/shark/-leak-trace-object/-object-type/-c-l-a-s-s/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace-object/-object-type/-i-n-s-t-a-n-c-e/index.html b/api/shark/-leak-trace-object/-object-type/-i-n-s-t-a-n-c-e/index.html
index d307d00..e80e08d 100644
--- a/api/shark/-leak-trace-object/-object-type/-i-n-s-t-a-n-c-e/index.html
+++ b/api/shark/-leak-trace-object/-object-type/-i-n-s-t-a-n-c-e/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace-object/-object-type/index.html b/api/shark/-leak-trace-object/-object-type/index.html
index 169843b..1fd5d6a 100644
--- a/api/shark/-leak-trace-object/-object-type/index.html
+++ b/api/shark/-leak-trace-object/-object-type/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace-object/class-name/index.html b/api/shark/-leak-trace-object/class-name/index.html
index dfb1f09..a87020d 100644
--- a/api/shark/-leak-trace-object/class-name/index.html
+++ b/api/shark/-leak-trace-object/class-name/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace-object/class-simple-name/index.html b/api/shark/-leak-trace-object/class-simple-name/index.html
index 475c60c..8f2c185 100644
--- a/api/shark/-leak-trace-object/class-simple-name/index.html
+++ b/api/shark/-leak-trace-object/class-simple-name/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace-object/index.html b/api/shark/-leak-trace-object/index.html
index 4b539f8..b66d953 100644
--- a/api/shark/-leak-trace-object/index.html
+++ b/api/shark/-leak-trace-object/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace-object/labels/index.html b/api/shark/-leak-trace-object/labels/index.html
index c8e28c6..4f7a990 100644
--- a/api/shark/-leak-trace-object/labels/index.html
+++ b/api/shark/-leak-trace-object/labels/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace-object/leaking-status-reason/index.html b/api/shark/-leak-trace-object/leaking-status-reason/index.html
index b0b3d9b..4448469 100644
--- a/api/shark/-leak-trace-object/leaking-status-reason/index.html
+++ b/api/shark/-leak-trace-object/leaking-status-reason/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace-object/leaking-status/index.html b/api/shark/-leak-trace-object/leaking-status/index.html
index fc9e95c..3211fe3 100644
--- a/api/shark/-leak-trace-object/leaking-status/index.html
+++ b/api/shark/-leak-trace-object/leaking-status/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace-object/retained-heap-byte-size/index.html b/api/shark/-leak-trace-object/retained-heap-byte-size/index.html
index 0943595..cd80985 100644
--- a/api/shark/-leak-trace-object/retained-heap-byte-size/index.html
+++ b/api/shark/-leak-trace-object/retained-heap-byte-size/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace-object/retained-object-count/index.html b/api/shark/-leak-trace-object/retained-object-count/index.html
index 6a5d9ee..ea1efb3 100644
--- a/api/shark/-leak-trace-object/retained-object-count/index.html
+++ b/api/shark/-leak-trace-object/retained-object-count/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace-object/to-string/index.html b/api/shark/-leak-trace-object/to-string/index.html
index 36f743b..f47c691 100644
--- a/api/shark/-leak-trace-object/to-string/index.html
+++ b/api/shark/-leak-trace-object/to-string/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace-object/type-name/index.html b/api/shark/-leak-trace-object/type-name/index.html
index 46f81e4..f28a371 100644
--- a/api/shark/-leak-trace-object/type-name/index.html
+++ b/api/shark/-leak-trace-object/type-name/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace-object/type/index.html b/api/shark/-leak-trace-object/type/index.html
index 241cfb2..b6d39c7 100644
--- a/api/shark/-leak-trace-object/type/index.html
+++ b/api/shark/-leak-trace-object/type/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace-reference/-companion/index.html b/api/shark/-leak-trace-reference/-companion/index.html
index 1d94686..dba4e79 100644
--- a/api/shark/-leak-trace-reference/-companion/index.html
+++ b/api/shark/-leak-trace-reference/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace-reference/-leak-trace-reference/index.html b/api/shark/-leak-trace-reference/-leak-trace-reference/index.html
index 69269bc..c7fcccd 100644
--- a/api/shark/-leak-trace-reference/-leak-trace-reference/index.html
+++ b/api/shark/-leak-trace-reference/-leak-trace-reference/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace-reference/-reference-type/-a-r-r-a-y_-e-n-t-r-y/index.html b/api/shark/-leak-trace-reference/-reference-type/-a-r-r-a-y_-e-n-t-r-y/index.html
index 9645818..c68b1c8 100644
--- a/api/shark/-leak-trace-reference/-reference-type/-a-r-r-a-y_-e-n-t-r-y/index.html
+++ b/api/shark/-leak-trace-reference/-reference-type/-a-r-r-a-y_-e-n-t-r-y/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace-reference/-reference-type/-i-n-s-t-a-n-c-e_-f-i-e-l-d/index.html b/api/shark/-leak-trace-reference/-reference-type/-i-n-s-t-a-n-c-e_-f-i-e-l-d/index.html
index ddf003c..64cdaf4 100644
--- a/api/shark/-leak-trace-reference/-reference-type/-i-n-s-t-a-n-c-e_-f-i-e-l-d/index.html
+++ b/api/shark/-leak-trace-reference/-reference-type/-i-n-s-t-a-n-c-e_-f-i-e-l-d/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace-reference/-reference-type/-l-o-c-a-l/index.html b/api/shark/-leak-trace-reference/-reference-type/-l-o-c-a-l/index.html
index 50df834..ca4a19c 100644
--- a/api/shark/-leak-trace-reference/-reference-type/-l-o-c-a-l/index.html
+++ b/api/shark/-leak-trace-reference/-reference-type/-l-o-c-a-l/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace-reference/-reference-type/-s-t-a-t-i-c_-f-i-e-l-d/index.html b/api/shark/-leak-trace-reference/-reference-type/-s-t-a-t-i-c_-f-i-e-l-d/index.html
index a13f974..125df38 100644
--- a/api/shark/-leak-trace-reference/-reference-type/-s-t-a-t-i-c_-f-i-e-l-d/index.html
+++ b/api/shark/-leak-trace-reference/-reference-type/-s-t-a-t-i-c_-f-i-e-l-d/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace-reference/-reference-type/index.html b/api/shark/-leak-trace-reference/-reference-type/index.html
index 7b07586..b1e3cef 100644
--- a/api/shark/-leak-trace-reference/-reference-type/index.html
+++ b/api/shark/-leak-trace-reference/-reference-type/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace-reference/index.html b/api/shark/-leak-trace-reference/index.html
index 41fe5de..4f7502d 100644
--- a/api/shark/-leak-trace-reference/index.html
+++ b/api/shark/-leak-trace-reference/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace-reference/origin-object/index.html b/api/shark/-leak-trace-reference/origin-object/index.html
index 8621e43..78b444a 100644
--- a/api/shark/-leak-trace-reference/origin-object/index.html
+++ b/api/shark/-leak-trace-reference/origin-object/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace-reference/owning-class-name/index.html b/api/shark/-leak-trace-reference/owning-class-name/index.html
index 8ac4b0e..07791d4 100644
--- a/api/shark/-leak-trace-reference/owning-class-name/index.html
+++ b/api/shark/-leak-trace-reference/owning-class-name/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace-reference/owning-class-simple-name/index.html b/api/shark/-leak-trace-reference/owning-class-simple-name/index.html
index 157dafd..12ae052 100644
--- a/api/shark/-leak-trace-reference/owning-class-simple-name/index.html
+++ b/api/shark/-leak-trace-reference/owning-class-simple-name/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace-reference/reference-display-name/index.html b/api/shark/-leak-trace-reference/reference-display-name/index.html
index 2bec834..bd468d4 100644
--- a/api/shark/-leak-trace-reference/reference-display-name/index.html
+++ b/api/shark/-leak-trace-reference/reference-display-name/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace-reference/reference-generic-name/index.html b/api/shark/-leak-trace-reference/reference-generic-name/index.html
index b1f28d7..51e765e 100644
--- a/api/shark/-leak-trace-reference/reference-generic-name/index.html
+++ b/api/shark/-leak-trace-reference/reference-generic-name/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace-reference/reference-name/index.html b/api/shark/-leak-trace-reference/reference-name/index.html
index 594ddaf..4f27cc3 100644
--- a/api/shark/-leak-trace-reference/reference-name/index.html
+++ b/api/shark/-leak-trace-reference/reference-name/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace-reference/reference-type/index.html b/api/shark/-leak-trace-reference/reference-type/index.html
index 1377582..2ae2d62 100644
--- a/api/shark/-leak-trace-reference/reference-type/index.html
+++ b/api/shark/-leak-trace-reference/reference-type/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace/-companion/index.html b/api/shark/-leak-trace/-companion/index.html
index 9c81d01..ed17209 100644
--- a/api/shark/-leak-trace/-companion/index.html
+++ b/api/shark/-leak-trace/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace/-gc-root-type/-companion/from-gc-root/index.html b/api/shark/-leak-trace/-gc-root-type/-companion/from-gc-root/index.html
index 70d0385..8c698f3 100644
--- a/api/shark/-leak-trace/-gc-root-type/-companion/from-gc-root/index.html
+++ b/api/shark/-leak-trace/-gc-root-type/-companion/from-gc-root/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace/-gc-root-type/-companion/index.html b/api/shark/-leak-trace/-gc-root-type/-companion/index.html
index 943abd1..a53f15e 100644
--- a/api/shark/-leak-trace/-gc-root-type/-companion/index.html
+++ b/api/shark/-leak-trace/-gc-root-type/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace/-gc-root-type/-j-a-v-a_-f-r-a-m-e/index.html b/api/shark/-leak-trace/-gc-root-type/-j-a-v-a_-f-r-a-m-e/index.html
index 330a6a1..6401cd4 100644
--- a/api/shark/-leak-trace/-gc-root-type/-j-a-v-a_-f-r-a-m-e/index.html
+++ b/api/shark/-leak-trace/-gc-root-type/-j-a-v-a_-f-r-a-m-e/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace/-gc-root-type/-j-n-i_-g-l-o-b-a-l/index.html b/api/shark/-leak-trace/-gc-root-type/-j-n-i_-g-l-o-b-a-l/index.html
index 03af387..59f28b4 100644
--- a/api/shark/-leak-trace/-gc-root-type/-j-n-i_-g-l-o-b-a-l/index.html
+++ b/api/shark/-leak-trace/-gc-root-type/-j-n-i_-g-l-o-b-a-l/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace/-gc-root-type/-j-n-i_-l-o-c-a-l/index.html b/api/shark/-leak-trace/-gc-root-type/-j-n-i_-l-o-c-a-l/index.html
index 0c2614f..936345f 100644
--- a/api/shark/-leak-trace/-gc-root-type/-j-n-i_-l-o-c-a-l/index.html
+++ b/api/shark/-leak-trace/-gc-root-type/-j-n-i_-l-o-c-a-l/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace/-gc-root-type/-j-n-i_-m-o-n-i-t-o-r/index.html b/api/shark/-leak-trace/-gc-root-type/-j-n-i_-m-o-n-i-t-o-r/index.html
index 715c09c..25cd279 100644
--- a/api/shark/-leak-trace/-gc-root-type/-j-n-i_-m-o-n-i-t-o-r/index.html
+++ b/api/shark/-leak-trace/-gc-root-type/-j-n-i_-m-o-n-i-t-o-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace/-gc-root-type/-m-o-n-i-t-o-r_-u-s-e-d/index.html b/api/shark/-leak-trace/-gc-root-type/-m-o-n-i-t-o-r_-u-s-e-d/index.html
index 7954f63..bfcdcf3 100644
--- a/api/shark/-leak-trace/-gc-root-type/-m-o-n-i-t-o-r_-u-s-e-d/index.html
+++ b/api/shark/-leak-trace/-gc-root-type/-m-o-n-i-t-o-r_-u-s-e-d/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace/-gc-root-type/-n-a-t-i-v-e_-s-t-a-c-k/index.html b/api/shark/-leak-trace/-gc-root-type/-n-a-t-i-v-e_-s-t-a-c-k/index.html
index ccd9630..75ba115 100644
--- a/api/shark/-leak-trace/-gc-root-type/-n-a-t-i-v-e_-s-t-a-c-k/index.html
+++ b/api/shark/-leak-trace/-gc-root-type/-n-a-t-i-v-e_-s-t-a-c-k/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace/-gc-root-type/-s-t-i-c-k-y_-c-l-a-s-s/index.html b/api/shark/-leak-trace/-gc-root-type/-s-t-i-c-k-y_-c-l-a-s-s/index.html
index 9f684e3..de527bd 100644
--- a/api/shark/-leak-trace/-gc-root-type/-s-t-i-c-k-y_-c-l-a-s-s/index.html
+++ b/api/shark/-leak-trace/-gc-root-type/-s-t-i-c-k-y_-c-l-a-s-s/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace/-gc-root-type/-t-h-r-e-a-d_-b-l-o-c-k/index.html b/api/shark/-leak-trace/-gc-root-type/-t-h-r-e-a-d_-b-l-o-c-k/index.html
index 5adb93a..dfb67b2 100644
--- a/api/shark/-leak-trace/-gc-root-type/-t-h-r-e-a-d_-b-l-o-c-k/index.html
+++ b/api/shark/-leak-trace/-gc-root-type/-t-h-r-e-a-d_-b-l-o-c-k/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace/-gc-root-type/-t-h-r-e-a-d_-o-b-j-e-c-t/index.html b/api/shark/-leak-trace/-gc-root-type/-t-h-r-e-a-d_-o-b-j-e-c-t/index.html
index a14fd0e..9344b6f 100644
--- a/api/shark/-leak-trace/-gc-root-type/-t-h-r-e-a-d_-o-b-j-e-c-t/index.html
+++ b/api/shark/-leak-trace/-gc-root-type/-t-h-r-e-a-d_-o-b-j-e-c-t/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace/-gc-root-type/description/index.html b/api/shark/-leak-trace/-gc-root-type/description/index.html
index ef954f4..700590d 100644
--- a/api/shark/-leak-trace/-gc-root-type/description/index.html
+++ b/api/shark/-leak-trace/-gc-root-type/description/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace/-gc-root-type/index.html b/api/shark/-leak-trace/-gc-root-type/index.html
index d7a2896..665271a 100644
--- a/api/shark/-leak-trace/-gc-root-type/index.html
+++ b/api/shark/-leak-trace/-gc-root-type/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace/-leak-trace/index.html b/api/shark/-leak-trace/-leak-trace/index.html
index 58e9ea4..a3654a6 100644
--- a/api/shark/-leak-trace/-leak-trace/index.html
+++ b/api/shark/-leak-trace/-leak-trace/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace/gc-root-type/index.html b/api/shark/-leak-trace/gc-root-type/index.html
index a545ed0..7608229 100644
--- a/api/shark/-leak-trace/gc-root-type/index.html
+++ b/api/shark/-leak-trace/gc-root-type/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace/index.html b/api/shark/-leak-trace/index.html
index 043fee4..8a9d054 100644
--- a/api/shark/-leak-trace/index.html
+++ b/api/shark/-leak-trace/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace/leaking-object/index.html b/api/shark/-leak-trace/leaking-object/index.html
index 3e5b759..a994da6 100644
--- a/api/shark/-leak-trace/leaking-object/index.html
+++ b/api/shark/-leak-trace/leaking-object/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace/reference-path-element-is-suspect/index.html b/api/shark/-leak-trace/reference-path-element-is-suspect/index.html
index 374b5d4..58b6985 100644
--- a/api/shark/-leak-trace/reference-path-element-is-suspect/index.html
+++ b/api/shark/-leak-trace/reference-path-element-is-suspect/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace/reference-path/index.html b/api/shark/-leak-trace/reference-path/index.html
index 02f9fbc..7d9510a 100644
--- a/api/shark/-leak-trace/reference-path/index.html
+++ b/api/shark/-leak-trace/reference-path/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace/retained-heap-byte-size/index.html b/api/shark/-leak-trace/retained-heap-byte-size/index.html
index e9873cf..a99864c 100644
--- a/api/shark/-leak-trace/retained-heap-byte-size/index.html
+++ b/api/shark/-leak-trace/retained-heap-byte-size/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace/retained-object-count/index.html b/api/shark/-leak-trace/retained-object-count/index.html
index 1b61f44..6c98454 100644
--- a/api/shark/-leak-trace/retained-object-count/index.html
+++ b/api/shark/-leak-trace/retained-object-count/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace/signature/index.html b/api/shark/-leak-trace/signature/index.html
index 2abee88..1b18dc0 100644
--- a/api/shark/-leak-trace/signature/index.html
+++ b/api/shark/-leak-trace/signature/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace/suspect-reference-subpath/index.html b/api/shark/-leak-trace/suspect-reference-subpath/index.html
index c77b8a4..8c00e8c 100644
--- a/api/shark/-leak-trace/suspect-reference-subpath/index.html
+++ b/api/shark/-leak-trace/suspect-reference-subpath/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace/to-simple-path-string/index.html b/api/shark/-leak-trace/to-simple-path-string/index.html
index a241244..9000e0b 100644
--- a/api/shark/-leak-trace/to-simple-path-string/index.html
+++ b/api/shark/-leak-trace/to-simple-path-string/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak-trace/to-string/index.html b/api/shark/-leak-trace/to-string/index.html
index e895596..48cce22 100644
--- a/api/shark/-leak-trace/to-string/index.html
+++ b/api/shark/-leak-trace/to-string/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak/-companion/index.html b/api/shark/-leak/-companion/index.html
index d136a6a..3be2363 100644
--- a/api/shark/-leak/-companion/index.html
+++ b/api/shark/-leak/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak/index.html b/api/shark/-leak/index.html
index c7a2c66..408d937 100644
--- a/api/shark/-leak/index.html
+++ b/api/shark/-leak/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak/leak-traces/index.html b/api/shark/-leak/leak-traces/index.html
index 226b5e4..851bc8a 100644
--- a/api/shark/-leak/leak-traces/index.html
+++ b/api/shark/-leak/leak-traces/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak/short-description/index.html b/api/shark/-leak/short-description/index.html
index 44b3ce9..87db657 100644
--- a/api/shark/-leak/short-description/index.html
+++ b/api/shark/-leak/short-description/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak/signature/index.html b/api/shark/-leak/signature/index.html
index 9c33151..7dda9fe 100644
--- a/api/shark/-leak/signature/index.html
+++ b/api/shark/-leak/signature/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak/to-string/index.html b/api/shark/-leak/to-string/index.html
index ec9cc3e..2783127 100644
--- a/api/shark/-leak/to-string/index.html
+++ b/api/shark/-leak/to-string/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak/total-retained-heap-byte-size/index.html b/api/shark/-leak/total-retained-heap-byte-size/index.html
index 4659d90..13c8091 100644
--- a/api/shark/-leak/total-retained-heap-byte-size/index.html
+++ b/api/shark/-leak/total-retained-heap-byte-size/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leak/total-retained-object-count/index.html b/api/shark/-leak/total-retained-object-count/index.html
index 35d3cf4..398f5d4 100644
--- a/api/shark/-leak/total-retained-object-count/index.html
+++ b/api/shark/-leak/total-retained-object-count/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leaking-object-finder/-companion/index.html b/api/shark/-leaking-object-finder/-companion/index.html
index 21b0a59..b7e2700 100644
--- a/api/shark/-leaking-object-finder/-companion/index.html
+++ b/api/shark/-leaking-object-finder/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leaking-object-finder/-companion/invoke/index.html b/api/shark/-leaking-object-finder/-companion/invoke/index.html
index 1560863..de7f867 100644
--- a/api/shark/-leaking-object-finder/-companion/invoke/index.html
+++ b/api/shark/-leaking-object-finder/-companion/invoke/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leaking-object-finder/find-leaking-object-ids/index.html b/api/shark/-leaking-object-finder/find-leaking-object-ids/index.html
index f653d35..cede979 100644
--- a/api/shark/-leaking-object-finder/find-leaking-object-ids/index.html
+++ b/api/shark/-leaking-object-finder/find-leaking-object-ids/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-leaking-object-finder/index.html b/api/shark/-leaking-object-finder/index.html
index 6b398e6..953724d 100644
--- a/api/shark/-leaking-object-finder/index.html
+++ b/api/shark/-leaking-object-finder/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-library-leak-reference-matcher/-library-leak-reference-matcher/index.html b/api/shark/-library-leak-reference-matcher/-library-leak-reference-matcher/index.html
index eeab3d0..86453be 100644
--- a/api/shark/-library-leak-reference-matcher/-library-leak-reference-matcher/index.html
+++ b/api/shark/-library-leak-reference-matcher/-library-leak-reference-matcher/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-library-leak-reference-matcher/description/index.html b/api/shark/-library-leak-reference-matcher/description/index.html
index 7cdc215..4cd1694 100644
--- a/api/shark/-library-leak-reference-matcher/description/index.html
+++ b/api/shark/-library-leak-reference-matcher/description/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-library-leak-reference-matcher/index.html b/api/shark/-library-leak-reference-matcher/index.html
index d15207b..4ffb95a 100644
--- a/api/shark/-library-leak-reference-matcher/index.html
+++ b/api/shark/-library-leak-reference-matcher/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-library-leak-reference-matcher/pattern-applies/index.html b/api/shark/-library-leak-reference-matcher/pattern-applies/index.html
index 06a0561..c991114 100644
--- a/api/shark/-library-leak-reference-matcher/pattern-applies/index.html
+++ b/api/shark/-library-leak-reference-matcher/pattern-applies/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-library-leak-reference-matcher/pattern/index.html b/api/shark/-library-leak-reference-matcher/pattern/index.html
index cc9fbd1..229b745 100644
--- a/api/shark/-library-leak-reference-matcher/pattern/index.html
+++ b/api/shark/-library-leak-reference-matcher/pattern/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-library-leak-reference-matcher/to-string/index.html b/api/shark/-library-leak-reference-matcher/to-string/index.html
index 031491b..332c337 100644
--- a/api/shark/-library-leak-reference-matcher/to-string/index.html
+++ b/api/shark/-library-leak-reference-matcher/to-string/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-library-leak/-companion/index.html b/api/shark/-library-leak/-companion/index.html
index 4123cd3..9119f45 100644
--- a/api/shark/-library-leak/-companion/index.html
+++ b/api/shark/-library-leak/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-library-leak/-library-leak/index.html b/api/shark/-library-leak/-library-leak/index.html
index c19beff..52af501 100644
--- a/api/shark/-library-leak/-library-leak/index.html
+++ b/api/shark/-library-leak/-library-leak/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-library-leak/description/index.html b/api/shark/-library-leak/description/index.html
index 66ab6fe..9113c86 100644
--- a/api/shark/-library-leak/description/index.html
+++ b/api/shark/-library-leak/description/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-library-leak/index.html b/api/shark/-library-leak/index.html
index c578441..c2f30b9 100644
--- a/api/shark/-library-leak/index.html
+++ b/api/shark/-library-leak/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-library-leak/leak-traces/index.html b/api/shark/-library-leak/leak-traces/index.html
index 7bffa23..73dd53a 100644
--- a/api/shark/-library-leak/leak-traces/index.html
+++ b/api/shark/-library-leak/leak-traces/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-library-leak/pattern/index.html b/api/shark/-library-leak/pattern/index.html
index 36502c1..992d4c5 100644
--- a/api/shark/-library-leak/pattern/index.html
+++ b/api/shark/-library-leak/pattern/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-library-leak/short-description/index.html b/api/shark/-library-leak/short-description/index.html
index 2455f70..f9ea6f3 100644
--- a/api/shark/-library-leak/short-description/index.html
+++ b/api/shark/-library-leak/short-description/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-library-leak/signature/index.html b/api/shark/-library-leak/signature/index.html
index a66c986..752a0f5 100644
--- a/api/shark/-library-leak/signature/index.html
+++ b/api/shark/-library-leak/signature/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-library-leak/to-string/index.html b/api/shark/-library-leak/to-string/index.html
index bb6a58d..a6924fd 100644
--- a/api/shark/-library-leak/to-string/index.html
+++ b/api/shark/-library-leak/to-string/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-metadata-extractor/-companion/-n-o_-o-p/index.html b/api/shark/-metadata-extractor/-companion/-n-o_-o-p/index.html
index df7f52f..274fd04 100644
--- a/api/shark/-metadata-extractor/-companion/-n-o_-o-p/index.html
+++ b/api/shark/-metadata-extractor/-companion/-n-o_-o-p/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-metadata-extractor/-companion/index.html b/api/shark/-metadata-extractor/-companion/index.html
index 7415c72..4b50acb 100644
--- a/api/shark/-metadata-extractor/-companion/index.html
+++ b/api/shark/-metadata-extractor/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-metadata-extractor/-companion/invoke/index.html b/api/shark/-metadata-extractor/-companion/invoke/index.html
index d7eddd4..25a10c3 100644
--- a/api/shark/-metadata-extractor/-companion/invoke/index.html
+++ b/api/shark/-metadata-extractor/-companion/invoke/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-metadata-extractor/extract-metadata/index.html b/api/shark/-metadata-extractor/extract-metadata/index.html
index 3fda1fc..cbdf404 100644
--- a/api/shark/-metadata-extractor/extract-metadata/index.html
+++ b/api/shark/-metadata-extractor/extract-metadata/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-metadata-extractor/index.html b/api/shark/-metadata-extractor/index.html
index 5565fd3..55e10da 100644
--- a/api/shark/-metadata-extractor/index.html
+++ b/api/shark/-metadata-extractor/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-neo4-j-command/-companion/-p-h-a-n-t-o-m_-r-e-f-e-r-e-n-c-e/index.html b/api/shark/-neo4-j-command/-companion/-p-h-a-n-t-o-m_-r-e-f-e-r-e-n-c-e/index.html
index b50473e..d91b4a4 100644
--- a/api/shark/-neo4-j-command/-companion/-p-h-a-n-t-o-m_-r-e-f-e-r-e-n-c-e/index.html
+++ b/api/shark/-neo4-j-command/-companion/-p-h-a-n-t-o-m_-r-e-f-e-r-e-n-c-e/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-neo4-j-command/-companion/-r-e-f-e-r-e-n-c-e/index.html b/api/shark/-neo4-j-command/-companion/-r-e-f-e-r-e-n-c-e/index.html
index c26a617..0da8891 100644
--- a/api/shark/-neo4-j-command/-companion/-r-e-f-e-r-e-n-c-e/index.html
+++ b/api/shark/-neo4-j-command/-companion/-r-e-f-e-r-e-n-c-e/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-neo4-j-command/-companion/-s-o-f-t_-r-e-f-e-r-e-n-c-e/index.html b/api/shark/-neo4-j-command/-companion/-s-o-f-t_-r-e-f-e-r-e-n-c-e/index.html
index ff2adf5..5a97425 100644
--- a/api/shark/-neo4-j-command/-companion/-s-o-f-t_-r-e-f-e-r-e-n-c-e/index.html
+++ b/api/shark/-neo4-j-command/-companion/-s-o-f-t_-r-e-f-e-r-e-n-c-e/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-neo4-j-command/-companion/-w-e-a-k_-r-e-f-e-r-e-n-c-e/index.html b/api/shark/-neo4-j-command/-companion/-w-e-a-k_-r-e-f-e-r-e-n-c-e/index.html
index 544acdd..0212bd9 100644
--- a/api/shark/-neo4-j-command/-companion/-w-e-a-k_-r-e-f-e-r-e-n-c-e/index.html
+++ b/api/shark/-neo4-j-command/-companion/-w-e-a-k_-r-e-f-e-r-e-n-c-e/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-neo4-j-command/-companion/dump/index.html b/api/shark/-neo4-j-command/-companion/dump/index.html
index bdf9dac..6733d45 100644
--- a/api/shark/-neo4-j-command/-companion/dump/index.html
+++ b/api/shark/-neo4-j-command/-companion/dump/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-neo4-j-command/-companion/heap-value-as-string/index.html b/api/shark/-neo4-j-command/-companion/heap-value-as-string/index.html
index 027bee5..6c58bcb 100644
--- a/api/shark/-neo4-j-command/-companion/heap-value-as-string/index.html
+++ b/api/shark/-neo4-j-command/-companion/heap-value-as-string/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-neo4-j-command/-companion/index.html b/api/shark/-neo4-j-command/-companion/index.html
index 6527a87..4af706a 100644
--- a/api/shark/-neo4-j-command/-companion/index.html
+++ b/api/shark/-neo4-j-command/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-neo4-j-command/-neo4-j-command/index.html b/api/shark/-neo4-j-command/-neo4-j-command/index.html
index 2bc8044..231edd1 100644
--- a/api/shark/-neo4-j-command/-neo4-j-command/index.html
+++ b/api/shark/-neo4-j-command/-neo4-j-command/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-neo4-j-command/index.html b/api/shark/-neo4-j-command/index.html
index 83ef754..22e133f 100644
--- a/api/shark/-neo4-j-command/index.html
+++ b/api/shark/-neo4-j-command/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-neo4-j-command/run/index.html b/api/shark/-neo4-j-command/run/index.html
index 2170f15..980680a 100644
--- a/api/shark/-neo4-j-command/run/index.html
+++ b/api/shark/-neo4-j-command/run/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-object-inspector/-companion/index.html b/api/shark/-object-inspector/-companion/index.html
index a61aacb..72bf6c3 100644
--- a/api/shark/-object-inspector/-companion/index.html
+++ b/api/shark/-object-inspector/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-object-inspector/-companion/invoke/index.html b/api/shark/-object-inspector/-companion/invoke/index.html
index 74aa118..f60f12e 100644
--- a/api/shark/-object-inspector/-companion/invoke/index.html
+++ b/api/shark/-object-inspector/-companion/invoke/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-object-inspector/index.html b/api/shark/-object-inspector/index.html
index db91a98..d2177bd 100644
--- a/api/shark/-object-inspector/index.html
+++ b/api/shark/-object-inspector/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-object-inspector/inspect/index.html b/api/shark/-object-inspector/inspect/index.html
index c0a7bc2..40f8e44 100644
--- a/api/shark/-object-inspector/inspect/index.html
+++ b/api/shark/-object-inspector/inspect/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-object-inspectors/-a-n-o-n-y-m-o-u-s_-c-l-a-s-s/index.html b/api/shark/-object-inspectors/-a-n-o-n-y-m-o-u-s_-c-l-a-s-s/index.html
index 5105d45..2091c17 100644
--- a/api/shark/-object-inspectors/-a-n-o-n-y-m-o-u-s_-c-l-a-s-s/index.html
+++ b/api/shark/-object-inspectors/-a-n-o-n-y-m-o-u-s_-c-l-a-s-s/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-object-inspectors/-a-n-o-n-y-m-o-u-s_-c-l-a-s-s/inspect/index.html b/api/shark/-object-inspectors/-a-n-o-n-y-m-o-u-s_-c-l-a-s-s/inspect/index.html
index 88c4cf6..a2d33a8 100644
--- a/api/shark/-object-inspectors/-a-n-o-n-y-m-o-u-s_-c-l-a-s-s/inspect/index.html
+++ b/api/shark/-object-inspectors/-a-n-o-n-y-m-o-u-s_-c-l-a-s-s/inspect/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-object-inspectors/-c-l-a-s-s-l-o-a-d-e-r/index.html b/api/shark/-object-inspectors/-c-l-a-s-s-l-o-a-d-e-r/index.html
index 5bdc74b..7005f3a 100644
--- a/api/shark/-object-inspectors/-c-l-a-s-s-l-o-a-d-e-r/index.html
+++ b/api/shark/-object-inspectors/-c-l-a-s-s-l-o-a-d-e-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-object-inspectors/-c-l-a-s-s-l-o-a-d-e-r/inspect/index.html b/api/shark/-object-inspectors/-c-l-a-s-s-l-o-a-d-e-r/inspect/index.html
index 946e7d0..d605bdb 100644
--- a/api/shark/-object-inspectors/-c-l-a-s-s-l-o-a-d-e-r/inspect/index.html
+++ b/api/shark/-object-inspectors/-c-l-a-s-s-l-o-a-d-e-r/inspect/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-object-inspectors/-c-l-a-s-s/index.html b/api/shark/-object-inspectors/-c-l-a-s-s/index.html
index 525e596..86d8e08 100644
--- a/api/shark/-object-inspectors/-c-l-a-s-s/index.html
+++ b/api/shark/-object-inspectors/-c-l-a-s-s/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-object-inspectors/-c-l-a-s-s/inspect/index.html b/api/shark/-object-inspectors/-c-l-a-s-s/inspect/index.html
index 0cd14c9..bcb77de 100644
--- a/api/shark/-object-inspectors/-c-l-a-s-s/inspect/index.html
+++ b/api/shark/-object-inspectors/-c-l-a-s-s/inspect/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-object-inspectors/-companion/create-leaking-object-filters/index.html b/api/shark/-object-inspectors/-companion/create-leaking-object-filters/index.html
index 17fd3a1..a476e20 100644
--- a/api/shark/-object-inspectors/-companion/create-leaking-object-filters/index.html
+++ b/api/shark/-object-inspectors/-companion/create-leaking-object-filters/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-object-inspectors/-companion/index.html b/api/shark/-object-inspectors/-companion/index.html
index 5ac4087..a4e8916 100644
--- a/api/shark/-object-inspectors/-companion/index.html
+++ b/api/shark/-object-inspectors/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-object-inspectors/-companion/jdk-defaults/index.html b/api/shark/-object-inspectors/-companion/jdk-defaults/index.html
index db539f6..e4e8927 100644
--- a/api/shark/-object-inspectors/-companion/jdk-defaults/index.html
+++ b/api/shark/-object-inspectors/-companion/jdk-defaults/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-object-inspectors/-companion/jdk-leaking-object-filters/index.html b/api/shark/-object-inspectors/-companion/jdk-leaking-object-filters/index.html
index bf5e6e5..44d5240 100644
--- a/api/shark/-object-inspectors/-companion/jdk-leaking-object-filters/index.html
+++ b/api/shark/-object-inspectors/-companion/jdk-leaking-object-filters/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-object-inspectors/-k-e-y-e-d_-w-e-a-k_-r-e-f-e-r-e-n-c-e/index.html b/api/shark/-object-inspectors/-k-e-y-e-d_-w-e-a-k_-r-e-f-e-r-e-n-c-e/index.html
index d3b2980..ade09ee 100644
--- a/api/shark/-object-inspectors/-k-e-y-e-d_-w-e-a-k_-r-e-f-e-r-e-n-c-e/index.html
+++ b/api/shark/-object-inspectors/-k-e-y-e-d_-w-e-a-k_-r-e-f-e-r-e-n-c-e/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-object-inspectors/-k-e-y-e-d_-w-e-a-k_-r-e-f-e-r-e-n-c-e/inspect/index.html b/api/shark/-object-inspectors/-k-e-y-e-d_-w-e-a-k_-r-e-f-e-r-e-n-c-e/inspect/index.html
index 48a65d1..e911145 100644
--- a/api/shark/-object-inspectors/-k-e-y-e-d_-w-e-a-k_-r-e-f-e-r-e-n-c-e/inspect/index.html
+++ b/api/shark/-object-inspectors/-k-e-y-e-d_-w-e-a-k_-r-e-f-e-r-e-n-c-e/inspect/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-object-inspectors/-t-h-r-e-a-d/index.html b/api/shark/-object-inspectors/-t-h-r-e-a-d/index.html
index f210c7e..b0d66ea 100644
--- a/api/shark/-object-inspectors/-t-h-r-e-a-d/index.html
+++ b/api/shark/-object-inspectors/-t-h-r-e-a-d/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-object-inspectors/-t-h-r-e-a-d/inspect/index.html b/api/shark/-object-inspectors/-t-h-r-e-a-d/inspect/index.html
index d0522a9..216c001 100644
--- a/api/shark/-object-inspectors/-t-h-r-e-a-d/inspect/index.html
+++ b/api/shark/-object-inspectors/-t-h-r-e-a-d/inspect/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-object-inspectors/index.html b/api/shark/-object-inspectors/index.html
index 1d89199..6fbc360 100644
--- a/api/shark/-object-inspectors/index.html
+++ b/api/shark/-object-inspectors/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-object-reporter/-object-reporter/index.html b/api/shark/-object-reporter/-object-reporter/index.html
index 77c8a4e..4257976 100644
--- a/api/shark/-object-reporter/-object-reporter/index.html
+++ b/api/shark/-object-reporter/-object-reporter/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-object-reporter/heap-object/index.html b/api/shark/-object-reporter/heap-object/index.html
index cb15b23..ae8b39b 100644
--- a/api/shark/-object-reporter/heap-object/index.html
+++ b/api/shark/-object-reporter/heap-object/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-object-reporter/index.html b/api/shark/-object-reporter/index.html
index c2a8d08..77f985c 100644
--- a/api/shark/-object-reporter/index.html
+++ b/api/shark/-object-reporter/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-object-reporter/labels/index.html b/api/shark/-object-reporter/labels/index.html
index 2f2f97a..fb9d63f 100644
--- a/api/shark/-object-reporter/labels/index.html
+++ b/api/shark/-object-reporter/labels/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-object-reporter/leaking-reasons/index.html b/api/shark/-object-reporter/leaking-reasons/index.html
index 4622a77..9ebadd7 100644
--- a/api/shark/-object-reporter/leaking-reasons/index.html
+++ b/api/shark/-object-reporter/leaking-reasons/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-object-reporter/not-leaking-reasons/index.html b/api/shark/-object-reporter/not-leaking-reasons/index.html
index 0e07c34..9e277b6 100644
--- a/api/shark/-object-reporter/not-leaking-reasons/index.html
+++ b/api/shark/-object-reporter/not-leaking-reasons/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-object-reporter/when-instance-of/index.html b/api/shark/-object-reporter/when-instance-of/index.html
index 8058345..8cef579 100644
--- a/api/shark/-object-reporter/when-instance-of/index.html
+++ b/api/shark/-object-reporter/when-instance-of/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-on-analysis-progress-listener/-companion/-n-o_-o-p/index.html b/api/shark/-on-analysis-progress-listener/-companion/-n-o_-o-p/index.html
index f3cc423..7e6c984 100644
--- a/api/shark/-on-analysis-progress-listener/-companion/-n-o_-o-p/index.html
+++ b/api/shark/-on-analysis-progress-listener/-companion/-n-o_-o-p/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-on-analysis-progress-listener/-companion/index.html b/api/shark/-on-analysis-progress-listener/-companion/index.html
index 98991cc..1647c7b 100644
--- a/api/shark/-on-analysis-progress-listener/-companion/index.html
+++ b/api/shark/-on-analysis-progress-listener/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-on-analysis-progress-listener/-companion/invoke/index.html b/api/shark/-on-analysis-progress-listener/-companion/invoke/index.html
index 0254d91..bd27724 100644
--- a/api/shark/-on-analysis-progress-listener/-companion/invoke/index.html
+++ b/api/shark/-on-analysis-progress-listener/-companion/invoke/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-on-analysis-progress-listener/-step/-b-u-i-l-d-i-n-g_-l-e-a-k_-t-r-a-c-e-s/index.html b/api/shark/-on-analysis-progress-listener/-step/-b-u-i-l-d-i-n-g_-l-e-a-k_-t-r-a-c-e-s/index.html
index acfac4a..9414df7 100644
--- a/api/shark/-on-analysis-progress-listener/-step/-b-u-i-l-d-i-n-g_-l-e-a-k_-t-r-a-c-e-s/index.html
+++ b/api/shark/-on-analysis-progress-listener/-step/-b-u-i-l-d-i-n-g_-l-e-a-k_-t-r-a-c-e-s/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-on-analysis-progress-listener/-step/-c-o-m-p-u-t-i-n-g_-n-a-t-i-v-e_-r-e-t-a-i-n-e-d_-s-i-z-e/index.html b/api/shark/-on-analysis-progress-listener/-step/-c-o-m-p-u-t-i-n-g_-n-a-t-i-v-e_-r-e-t-a-i-n-e-d_-s-i-z-e/index.html
index bb27c5d..c651b78 100644
--- a/api/shark/-on-analysis-progress-listener/-step/-c-o-m-p-u-t-i-n-g_-n-a-t-i-v-e_-r-e-t-a-i-n-e-d_-s-i-z-e/index.html
+++ b/api/shark/-on-analysis-progress-listener/-step/-c-o-m-p-u-t-i-n-g_-n-a-t-i-v-e_-r-e-t-a-i-n-e-d_-s-i-z-e/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-on-analysis-progress-listener/-step/-c-o-m-p-u-t-i-n-g_-r-e-t-a-i-n-e-d_-s-i-z-e/index.html b/api/shark/-on-analysis-progress-listener/-step/-c-o-m-p-u-t-i-n-g_-r-e-t-a-i-n-e-d_-s-i-z-e/index.html
index e6440f1..f0af106 100644
--- a/api/shark/-on-analysis-progress-listener/-step/-c-o-m-p-u-t-i-n-g_-r-e-t-a-i-n-e-d_-s-i-z-e/index.html
+++ b/api/shark/-on-analysis-progress-listener/-step/-c-o-m-p-u-t-i-n-g_-r-e-t-a-i-n-e-d_-s-i-z-e/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-on-analysis-progress-listener/-step/-e-x-t-r-a-c-t-i-n-g_-m-e-t-a-d-a-t-a/index.html b/api/shark/-on-analysis-progress-listener/-step/-e-x-t-r-a-c-t-i-n-g_-m-e-t-a-d-a-t-a/index.html
index 945f140..f3d3345 100644
--- a/api/shark/-on-analysis-progress-listener/-step/-e-x-t-r-a-c-t-i-n-g_-m-e-t-a-d-a-t-a/index.html
+++ b/api/shark/-on-analysis-progress-listener/-step/-e-x-t-r-a-c-t-i-n-g_-m-e-t-a-d-a-t-a/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-on-analysis-progress-listener/-step/-f-i-n-d-i-n-g_-d-o-m-i-n-a-t-o-r-s/index.html b/api/shark/-on-analysis-progress-listener/-step/-f-i-n-d-i-n-g_-d-o-m-i-n-a-t-o-r-s/index.html
index 7865de8..e39d383 100644
--- a/api/shark/-on-analysis-progress-listener/-step/-f-i-n-d-i-n-g_-d-o-m-i-n-a-t-o-r-s/index.html
+++ b/api/shark/-on-analysis-progress-listener/-step/-f-i-n-d-i-n-g_-d-o-m-i-n-a-t-o-r-s/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-on-analysis-progress-listener/-step/-f-i-n-d-i-n-g_-p-a-t-h-s_-t-o_-r-e-t-a-i-n-e-d_-o-b-j-e-c-t-s/index.html b/api/shark/-on-analysis-progress-listener/-step/-f-i-n-d-i-n-g_-p-a-t-h-s_-t-o_-r-e-t-a-i-n-e-d_-o-b-j-e-c-t-s/index.html
index 79c1ef2..f1b8bfd 100644
--- a/api/shark/-on-analysis-progress-listener/-step/-f-i-n-d-i-n-g_-p-a-t-h-s_-t-o_-r-e-t-a-i-n-e-d_-o-b-j-e-c-t-s/index.html
+++ b/api/shark/-on-analysis-progress-listener/-step/-f-i-n-d-i-n-g_-p-a-t-h-s_-t-o_-r-e-t-a-i-n-e-d_-o-b-j-e-c-t-s/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-on-analysis-progress-listener/-step/-f-i-n-d-i-n-g_-r-e-t-a-i-n-e-d_-o-b-j-e-c-t-s/index.html b/api/shark/-on-analysis-progress-listener/-step/-f-i-n-d-i-n-g_-r-e-t-a-i-n-e-d_-o-b-j-e-c-t-s/index.html
index 2634eec..ace8ccb 100644
--- a/api/shark/-on-analysis-progress-listener/-step/-f-i-n-d-i-n-g_-r-e-t-a-i-n-e-d_-o-b-j-e-c-t-s/index.html
+++ b/api/shark/-on-analysis-progress-listener/-step/-f-i-n-d-i-n-g_-r-e-t-a-i-n-e-d_-o-b-j-e-c-t-s/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-on-analysis-progress-listener/-step/-i-n-s-p-e-c-t-i-n-g_-o-b-j-e-c-t-s/index.html b/api/shark/-on-analysis-progress-listener/-step/-i-n-s-p-e-c-t-i-n-g_-o-b-j-e-c-t-s/index.html
index 24dd54e..691c98f 100644
--- a/api/shark/-on-analysis-progress-listener/-step/-i-n-s-p-e-c-t-i-n-g_-o-b-j-e-c-t-s/index.html
+++ b/api/shark/-on-analysis-progress-listener/-step/-i-n-s-p-e-c-t-i-n-g_-o-b-j-e-c-t-s/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-on-analysis-progress-listener/-step/-p-a-r-s-i-n-g_-h-e-a-p_-d-u-m-p/index.html b/api/shark/-on-analysis-progress-listener/-step/-p-a-r-s-i-n-g_-h-e-a-p_-d-u-m-p/index.html
index 7a25797..7bf6e41 100644
--- a/api/shark/-on-analysis-progress-listener/-step/-p-a-r-s-i-n-g_-h-e-a-p_-d-u-m-p/index.html
+++ b/api/shark/-on-analysis-progress-listener/-step/-p-a-r-s-i-n-g_-h-e-a-p_-d-u-m-p/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-on-analysis-progress-listener/-step/-r-e-p-o-r-t-i-n-g_-h-e-a-p_-a-n-a-l-y-s-i-s/index.html b/api/shark/-on-analysis-progress-listener/-step/-r-e-p-o-r-t-i-n-g_-h-e-a-p_-a-n-a-l-y-s-i-s/index.html
index b6531a3..f4224f9 100644
--- a/api/shark/-on-analysis-progress-listener/-step/-r-e-p-o-r-t-i-n-g_-h-e-a-p_-a-n-a-l-y-s-i-s/index.html
+++ b/api/shark/-on-analysis-progress-listener/-step/-r-e-p-o-r-t-i-n-g_-h-e-a-p_-a-n-a-l-y-s-i-s/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-on-analysis-progress-listener/-step/human-readable-name/index.html b/api/shark/-on-analysis-progress-listener/-step/human-readable-name/index.html
index b6f7906..7ebdb32 100644
--- a/api/shark/-on-analysis-progress-listener/-step/human-readable-name/index.html
+++ b/api/shark/-on-analysis-progress-listener/-step/human-readable-name/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-on-analysis-progress-listener/-step/index.html b/api/shark/-on-analysis-progress-listener/-step/index.html
index 1495634..f0343a6 100644
--- a/api/shark/-on-analysis-progress-listener/-step/index.html
+++ b/api/shark/-on-analysis-progress-listener/-step/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-on-analysis-progress-listener/index.html b/api/shark/-on-analysis-progress-listener/index.html
index b86002c..eee2e7f 100644
--- a/api/shark/-on-analysis-progress-listener/index.html
+++ b/api/shark/-on-analysis-progress-listener/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-on-analysis-progress-listener/on-analysis-progress/index.html b/api/shark/-on-analysis-progress-listener/on-analysis-progress/index.html
index aa78a10..d9a2813 100644
--- a/api/shark/-on-analysis-progress-listener/on-analysis-progress/index.html
+++ b/api/shark/-on-analysis-progress-listener/on-analysis-progress/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-on-hprof-record-listener/-companion/index.html b/api/shark/-on-hprof-record-listener/-companion/index.html
index b6c7221..36dde41 100644
--- a/api/shark/-on-hprof-record-listener/-companion/index.html
+++ b/api/shark/-on-hprof-record-listener/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-on-hprof-record-listener/-companion/invoke/index.html b/api/shark/-on-hprof-record-listener/-companion/invoke/index.html
index f02a31a..f59c2fd 100644
--- a/api/shark/-on-hprof-record-listener/-companion/invoke/index.html
+++ b/api/shark/-on-hprof-record-listener/-companion/invoke/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-on-hprof-record-listener/index.html b/api/shark/-on-hprof-record-listener/index.html
index c25b8e8..ca7cead 100644
--- a/api/shark/-on-hprof-record-listener/index.html
+++ b/api/shark/-on-hprof-record-listener/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-on-hprof-record-listener/on-hprof-record/index.html b/api/shark/-on-hprof-record-listener/on-hprof-record/index.html
index 947f4d3..fc2d7b0 100644
--- a/api/shark/-on-hprof-record-listener/on-hprof-record/index.html
+++ b/api/shark/-on-hprof-record-listener/on-hprof-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-on-hprof-record-tag-listener/-companion/index.html b/api/shark/-on-hprof-record-tag-listener/-companion/index.html
index 913991a..9d3e83e 100644
--- a/api/shark/-on-hprof-record-tag-listener/-companion/index.html
+++ b/api/shark/-on-hprof-record-tag-listener/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-on-hprof-record-tag-listener/-companion/invoke/index.html b/api/shark/-on-hprof-record-tag-listener/-companion/invoke/index.html
index 87fd9f3..12b0149 100644
--- a/api/shark/-on-hprof-record-tag-listener/-companion/invoke/index.html
+++ b/api/shark/-on-hprof-record-tag-listener/-companion/invoke/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-on-hprof-record-tag-listener/index.html b/api/shark/-on-hprof-record-tag-listener/index.html
index d3dbe85..570b11e 100644
--- a/api/shark/-on-hprof-record-tag-listener/index.html
+++ b/api/shark/-on-hprof-record-tag-listener/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-on-hprof-record-tag-listener/on-hprof-record/index.html b/api/shark/-on-hprof-record-tag-listener/on-hprof-record/index.html
index 00a65e9..765c65f 100644
--- a/api/shark/-on-hprof-record-tag-listener/on-hprof-record/index.html
+++ b/api/shark/-on-hprof-record-tag-listener/on-hprof-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-primitive-type/-b-o-o-l-e-a-n/index.html b/api/shark/-primitive-type/-b-o-o-l-e-a-n/index.html
index 61d1151..bcc5230 100644
--- a/api/shark/-primitive-type/-b-o-o-l-e-a-n/index.html
+++ b/api/shark/-primitive-type/-b-o-o-l-e-a-n/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-primitive-type/-b-y-t-e/index.html b/api/shark/-primitive-type/-b-y-t-e/index.html
index 48da99e..56e5064 100644
--- a/api/shark/-primitive-type/-b-y-t-e/index.html
+++ b/api/shark/-primitive-type/-b-y-t-e/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-primitive-type/-c-h-a-r/index.html b/api/shark/-primitive-type/-c-h-a-r/index.html
index 01f9dfd..5d139ce 100644
--- a/api/shark/-primitive-type/-c-h-a-r/index.html
+++ b/api/shark/-primitive-type/-c-h-a-r/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-primitive-type/-companion/-r-e-f-e-r-e-n-c-e_-h-p-r-o-f_-t-y-p-e/index.html b/api/shark/-primitive-type/-companion/-r-e-f-e-r-e-n-c-e_-h-p-r-o-f_-t-y-p-e/index.html
index 2ea3a06..dcb6d9f 100644
--- a/api/shark/-primitive-type/-companion/-r-e-f-e-r-e-n-c-e_-h-p-r-o-f_-t-y-p-e/index.html
+++ b/api/shark/-primitive-type/-companion/-r-e-f-e-r-e-n-c-e_-h-p-r-o-f_-t-y-p-e/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-primitive-type/-companion/byte-size-by-hprof-type/index.html b/api/shark/-primitive-type/-companion/byte-size-by-hprof-type/index.html
index 8019f5e..335eeb7 100644
--- a/api/shark/-primitive-type/-companion/byte-size-by-hprof-type/index.html
+++ b/api/shark/-primitive-type/-companion/byte-size-by-hprof-type/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-primitive-type/-companion/index.html b/api/shark/-primitive-type/-companion/index.html
index 5250759..d8dc789 100644
--- a/api/shark/-primitive-type/-companion/index.html
+++ b/api/shark/-primitive-type/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-primitive-type/-companion/primitive-type-by-hprof-type/index.html b/api/shark/-primitive-type/-companion/primitive-type-by-hprof-type/index.html
index e0e065a..f1cb059 100644
--- a/api/shark/-primitive-type/-companion/primitive-type-by-hprof-type/index.html
+++ b/api/shark/-primitive-type/-companion/primitive-type-by-hprof-type/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-primitive-type/-d-o-u-b-l-e/index.html b/api/shark/-primitive-type/-d-o-u-b-l-e/index.html
index c637c9d..c1f6af4 100644
--- a/api/shark/-primitive-type/-d-o-u-b-l-e/index.html
+++ b/api/shark/-primitive-type/-d-o-u-b-l-e/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-primitive-type/-f-l-o-a-t/index.html b/api/shark/-primitive-type/-f-l-o-a-t/index.html
index ef87e8d..a7d71c6 100644
--- a/api/shark/-primitive-type/-f-l-o-a-t/index.html
+++ b/api/shark/-primitive-type/-f-l-o-a-t/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-primitive-type/-i-n-t/index.html b/api/shark/-primitive-type/-i-n-t/index.html
index 140190a..a7aeee7 100644
--- a/api/shark/-primitive-type/-i-n-t/index.html
+++ b/api/shark/-primitive-type/-i-n-t/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-primitive-type/-l-o-n-g/index.html b/api/shark/-primitive-type/-l-o-n-g/index.html
index 4ea5a1b..3260190 100644
--- a/api/shark/-primitive-type/-l-o-n-g/index.html
+++ b/api/shark/-primitive-type/-l-o-n-g/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-primitive-type/-s-h-o-r-t/index.html b/api/shark/-primitive-type/-s-h-o-r-t/index.html
index ed09a75..9f504e6 100644
--- a/api/shark/-primitive-type/-s-h-o-r-t/index.html
+++ b/api/shark/-primitive-type/-s-h-o-r-t/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-primitive-type/byte-size/index.html b/api/shark/-primitive-type/byte-size/index.html
index 7d48455..40d53a9 100644
--- a/api/shark/-primitive-type/byte-size/index.html
+++ b/api/shark/-primitive-type/byte-size/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-primitive-type/hprof-type/index.html b/api/shark/-primitive-type/hprof-type/index.html
index 37dc450..e4922ca 100644
--- a/api/shark/-primitive-type/hprof-type/index.html
+++ b/api/shark/-primitive-type/hprof-type/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-primitive-type/index.html b/api/shark/-primitive-type/index.html
index 0bccbcf..6923b71 100644
--- a/api/shark/-primitive-type/index.html
+++ b/api/shark/-primitive-type/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-proguard-mapping-helper/-class/-class/index.html b/api/shark/-proguard-mapping-helper/-class/-class/index.html
index 847288f..c96e0fc 100644
--- a/api/shark/-proguard-mapping-helper/-class/-class/index.html
+++ b/api/shark/-proguard-mapping-helper/-class/-class/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-proguard-mapping-helper/-class/field-mappings/index.html b/api/shark/-proguard-mapping-helper/-class/field-mappings/index.html
index 8d59b7f..42d9949 100644
--- a/api/shark/-proguard-mapping-helper/-class/field-mappings/index.html
+++ b/api/shark/-proguard-mapping-helper/-class/field-mappings/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-proguard-mapping-helper/-class/index.html b/api/shark/-proguard-mapping-helper/-class/index.html
index 5986df2..b8d8d0f 100644
--- a/api/shark/-proguard-mapping-helper/-class/index.html
+++ b/api/shark/-proguard-mapping-helper/-class/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-proguard-mapping-helper/-class/name-mapping/index.html b/api/shark/-proguard-mapping-helper/-class/name-mapping/index.html
index eaab1f2..a9db735 100644
--- a/api/shark/-proguard-mapping-helper/-class/name-mapping/index.html
+++ b/api/shark/-proguard-mapping-helper/-class/name-mapping/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-proguard-mapping-helper/-proguard-mapping-helper/index.html b/api/shark/-proguard-mapping-helper/-proguard-mapping-helper/index.html
index f68894c..fa87adb 100644
--- a/api/shark/-proguard-mapping-helper/-proguard-mapping-helper/index.html
+++ b/api/shark/-proguard-mapping-helper/-proguard-mapping-helper/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-proguard-mapping-helper/clazz/index.html b/api/shark/-proguard-mapping-helper/clazz/index.html
index 9c8f1ce..eb0a9c9 100644
--- a/api/shark/-proguard-mapping-helper/clazz/index.html
+++ b/api/shark/-proguard-mapping-helper/clazz/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-proguard-mapping-helper/field/index.html b/api/shark/-proguard-mapping-helper/field/index.html
index 838c96e..b1ab065 100644
--- a/api/shark/-proguard-mapping-helper/field/index.html
+++ b/api/shark/-proguard-mapping-helper/field/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-proguard-mapping-helper/index.html b/api/shark/-proguard-mapping-helper/index.html
index ff542a8..80bbeb7 100644
--- a/api/shark/-proguard-mapping-helper/index.html
+++ b/api/shark/-proguard-mapping-helper/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-proguard-mapping-reader/-companion/index.html b/api/shark/-proguard-mapping-reader/-companion/index.html
index 4c4df0f..3c29aea 100644
--- a/api/shark/-proguard-mapping-reader/-companion/index.html
+++ b/api/shark/-proguard-mapping-reader/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-proguard-mapping-reader/-proguard-mapping-reader/index.html b/api/shark/-proguard-mapping-reader/-proguard-mapping-reader/index.html
index 273c1e1..4e63e46 100644
--- a/api/shark/-proguard-mapping-reader/-proguard-mapping-reader/index.html
+++ b/api/shark/-proguard-mapping-reader/-proguard-mapping-reader/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-proguard-mapping-reader/index.html b/api/shark/-proguard-mapping-reader/index.html
index 45243e4..e3401d9 100644
--- a/api/shark/-proguard-mapping-reader/index.html
+++ b/api/shark/-proguard-mapping-reader/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-proguard-mapping-reader/read-proguard-mapping/index.html b/api/shark/-proguard-mapping-reader/read-proguard-mapping/index.html
index 181ef0a..1fda693 100644
--- a/api/shark/-proguard-mapping-reader/read-proguard-mapping/index.html
+++ b/api/shark/-proguard-mapping-reader/read-proguard-mapping/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-proguard-mapping/-proguard-mapping/index.html b/api/shark/-proguard-mapping/-proguard-mapping/index.html
index 0c8e04e..f88b71f 100644
--- a/api/shark/-proguard-mapping/-proguard-mapping/index.html
+++ b/api/shark/-proguard-mapping/-proguard-mapping/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-proguard-mapping/add-mapping/index.html b/api/shark/-proguard-mapping/add-mapping/index.html
index 1ad8b33..01fc448 100644
--- a/api/shark/-proguard-mapping/add-mapping/index.html
+++ b/api/shark/-proguard-mapping/add-mapping/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-proguard-mapping/deobfuscate-class-name/index.html b/api/shark/-proguard-mapping/deobfuscate-class-name/index.html
index 5eded2a..c041ab7 100644
--- a/api/shark/-proguard-mapping/deobfuscate-class-name/index.html
+++ b/api/shark/-proguard-mapping/deobfuscate-class-name/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-proguard-mapping/deobfuscate-field-name/index.html b/api/shark/-proguard-mapping/deobfuscate-field-name/index.html
index 98f73e8..48daf0b 100644
--- a/api/shark/-proguard-mapping/deobfuscate-field-name/index.html
+++ b/api/shark/-proguard-mapping/deobfuscate-field-name/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-proguard-mapping/index.html b/api/shark/-proguard-mapping/index.html
index 90f767e..aeaefe7 100644
--- a/api/shark/-proguard-mapping/index.html
+++ b/api/shark/-proguard-mapping/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-random-access-hprof-reader/-companion/index.html b/api/shark/-random-access-hprof-reader/-companion/index.html
index 2d10a78..0b556bc 100644
--- a/api/shark/-random-access-hprof-reader/-companion/index.html
+++ b/api/shark/-random-access-hprof-reader/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-random-access-hprof-reader/-companion/open-reader-for/index.html b/api/shark/-random-access-hprof-reader/-companion/open-reader-for/index.html
index 38c143b..e8e036f 100644
--- a/api/shark/-random-access-hprof-reader/-companion/open-reader-for/index.html
+++ b/api/shark/-random-access-hprof-reader/-companion/open-reader-for/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-random-access-hprof-reader/close/index.html b/api/shark/-random-access-hprof-reader/close/index.html
index 3ee04ab..d14a4e7 100644
--- a/api/shark/-random-access-hprof-reader/close/index.html
+++ b/api/shark/-random-access-hprof-reader/close/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-random-access-hprof-reader/index.html b/api/shark/-random-access-hprof-reader/index.html
index 8182662..8efaac3 100644
--- a/api/shark/-random-access-hprof-reader/index.html
+++ b/api/shark/-random-access-hprof-reader/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-random-access-hprof-reader/read-record/index.html b/api/shark/-random-access-hprof-reader/read-record/index.html
index 9a0226f..7ad2746 100644
--- a/api/shark/-random-access-hprof-reader/read-record/index.html
+++ b/api/shark/-random-access-hprof-reader/read-record/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-random-access-source-provider/index.html b/api/shark/-random-access-source-provider/index.html
index 76c2a7e..3c66db8 100644
--- a/api/shark/-random-access-source-provider/index.html
+++ b/api/shark/-random-access-source-provider/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-random-access-source-provider/open-random-access-source/index.html b/api/shark/-random-access-source-provider/open-random-access-source/index.html
index 2476a9a..00c6d36 100644
--- a/api/shark/-random-access-source-provider/open-random-access-source/index.html
+++ b/api/shark/-random-access-source-provider/open-random-access-source/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-random-access-source/as-streaming-source/index.html b/api/shark/-random-access-source/as-streaming-source/index.html
index 836a5e8..16cad25 100644
--- a/api/shark/-random-access-source/as-streaming-source/index.html
+++ b/api/shark/-random-access-source/as-streaming-source/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-random-access-source/index.html b/api/shark/-random-access-source/index.html
index 5e8e861..da6bdcf 100644
--- a/api/shark/-random-access-source/index.html
+++ b/api/shark/-random-access-source/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-random-access-source/read/index.html b/api/shark/-random-access-source/read/index.html
index 081e636..9aac3fe 100644
--- a/api/shark/-random-access-source/read/index.html
+++ b/api/shark/-random-access-source/read/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-reference-matcher/index.html b/api/shark/-reference-matcher/index.html
index 391e102..ea48c4a 100644
--- a/api/shark/-reference-matcher/index.html
+++ b/api/shark/-reference-matcher/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-reference-matcher/pattern/index.html b/api/shark/-reference-matcher/pattern/index.html
index b3f96c7..6f45088 100644
--- a/api/shark/-reference-matcher/pattern/index.html
+++ b/api/shark/-reference-matcher/pattern/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-reference-pattern/-companion/index.html b/api/shark/-reference-pattern/-companion/index.html
index 0cee73d..cf4c33d 100644
--- a/api/shark/-reference-pattern/-companion/index.html
+++ b/api/shark/-reference-pattern/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-reference-pattern/-instance-field-pattern/-companion/index.html b/api/shark/-reference-pattern/-instance-field-pattern/-companion/index.html
index 45f5dcd..f650867 100644
--- a/api/shark/-reference-pattern/-instance-field-pattern/-companion/index.html
+++ b/api/shark/-reference-pattern/-instance-field-pattern/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-reference-pattern/-instance-field-pattern/-instance-field-pattern/index.html b/api/shark/-reference-pattern/-instance-field-pattern/-instance-field-pattern/index.html
index 3ea9533..f2c87ca 100644
--- a/api/shark/-reference-pattern/-instance-field-pattern/-instance-field-pattern/index.html
+++ b/api/shark/-reference-pattern/-instance-field-pattern/-instance-field-pattern/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-reference-pattern/-instance-field-pattern/class-name/index.html b/api/shark/-reference-pattern/-instance-field-pattern/class-name/index.html
index 5d39c22..eea266c 100644
--- a/api/shark/-reference-pattern/-instance-field-pattern/class-name/index.html
+++ b/api/shark/-reference-pattern/-instance-field-pattern/class-name/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-reference-pattern/-instance-field-pattern/field-name/index.html b/api/shark/-reference-pattern/-instance-field-pattern/field-name/index.html
index e8c2e68..d24f60c 100644
--- a/api/shark/-reference-pattern/-instance-field-pattern/field-name/index.html
+++ b/api/shark/-reference-pattern/-instance-field-pattern/field-name/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-reference-pattern/-instance-field-pattern/index.html b/api/shark/-reference-pattern/-instance-field-pattern/index.html
index 3e6473b..7ed5ad9 100644
--- a/api/shark/-reference-pattern/-instance-field-pattern/index.html
+++ b/api/shark/-reference-pattern/-instance-field-pattern/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-reference-pattern/-instance-field-pattern/to-string/index.html b/api/shark/-reference-pattern/-instance-field-pattern/to-string/index.html
index ff48537..452c2be 100644
--- a/api/shark/-reference-pattern/-instance-field-pattern/to-string/index.html
+++ b/api/shark/-reference-pattern/-instance-field-pattern/to-string/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-reference-pattern/-java-local-pattern/-companion/index.html b/api/shark/-reference-pattern/-java-local-pattern/-companion/index.html
index 10c6ee6..2cc4c80 100644
--- a/api/shark/-reference-pattern/-java-local-pattern/-companion/index.html
+++ b/api/shark/-reference-pattern/-java-local-pattern/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-reference-pattern/-java-local-pattern/-java-local-pattern/index.html b/api/shark/-reference-pattern/-java-local-pattern/-java-local-pattern/index.html
index 5cd03b0..6c0e9d1 100644
--- a/api/shark/-reference-pattern/-java-local-pattern/-java-local-pattern/index.html
+++ b/api/shark/-reference-pattern/-java-local-pattern/-java-local-pattern/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-reference-pattern/-java-local-pattern/index.html b/api/shark/-reference-pattern/-java-local-pattern/index.html
index 3fd3688..aa04be5 100644
--- a/api/shark/-reference-pattern/-java-local-pattern/index.html
+++ b/api/shark/-reference-pattern/-java-local-pattern/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-reference-pattern/-java-local-pattern/thread-name/index.html b/api/shark/-reference-pattern/-java-local-pattern/thread-name/index.html
index 1bee08d..d4d51f2 100644
--- a/api/shark/-reference-pattern/-java-local-pattern/thread-name/index.html
+++ b/api/shark/-reference-pattern/-java-local-pattern/thread-name/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-reference-pattern/-java-local-pattern/to-string/index.html b/api/shark/-reference-pattern/-java-local-pattern/to-string/index.html
index db8e390..54107cf 100644
--- a/api/shark/-reference-pattern/-java-local-pattern/to-string/index.html
+++ b/api/shark/-reference-pattern/-java-local-pattern/to-string/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-reference-pattern/-native-global-variable-pattern/-companion/index.html b/api/shark/-reference-pattern/-native-global-variable-pattern/-companion/index.html
index 2dcb1dd..795e812 100644
--- a/api/shark/-reference-pattern/-native-global-variable-pattern/-companion/index.html
+++ b/api/shark/-reference-pattern/-native-global-variable-pattern/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-reference-pattern/-native-global-variable-pattern/-native-global-variable-pattern/index.html b/api/shark/-reference-pattern/-native-global-variable-pattern/-native-global-variable-pattern/index.html
index 11d6910..25c1ec0 100644
--- a/api/shark/-reference-pattern/-native-global-variable-pattern/-native-global-variable-pattern/index.html
+++ b/api/shark/-reference-pattern/-native-global-variable-pattern/-native-global-variable-pattern/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-reference-pattern/-native-global-variable-pattern/class-name/index.html b/api/shark/-reference-pattern/-native-global-variable-pattern/class-name/index.html
index 90bba11..25418fb 100644
--- a/api/shark/-reference-pattern/-native-global-variable-pattern/class-name/index.html
+++ b/api/shark/-reference-pattern/-native-global-variable-pattern/class-name/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-reference-pattern/-native-global-variable-pattern/index.html b/api/shark/-reference-pattern/-native-global-variable-pattern/index.html
index 1cf8a88..9033fb3 100644
--- a/api/shark/-reference-pattern/-native-global-variable-pattern/index.html
+++ b/api/shark/-reference-pattern/-native-global-variable-pattern/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-reference-pattern/-native-global-variable-pattern/to-string/index.html b/api/shark/-reference-pattern/-native-global-variable-pattern/to-string/index.html
index d941d53..cf65215 100644
--- a/api/shark/-reference-pattern/-native-global-variable-pattern/to-string/index.html
+++ b/api/shark/-reference-pattern/-native-global-variable-pattern/to-string/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-reference-pattern/-static-field-pattern/-companion/index.html b/api/shark/-reference-pattern/-static-field-pattern/-companion/index.html
index e8db93e..675a2e5 100644
--- a/api/shark/-reference-pattern/-static-field-pattern/-companion/index.html
+++ b/api/shark/-reference-pattern/-static-field-pattern/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-reference-pattern/-static-field-pattern/-static-field-pattern/index.html b/api/shark/-reference-pattern/-static-field-pattern/-static-field-pattern/index.html
index 9efb757..ec273d9 100644
--- a/api/shark/-reference-pattern/-static-field-pattern/-static-field-pattern/index.html
+++ b/api/shark/-reference-pattern/-static-field-pattern/-static-field-pattern/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-reference-pattern/-static-field-pattern/class-name/index.html b/api/shark/-reference-pattern/-static-field-pattern/class-name/index.html
index f644455..c78a17d 100644
--- a/api/shark/-reference-pattern/-static-field-pattern/class-name/index.html
+++ b/api/shark/-reference-pattern/-static-field-pattern/class-name/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-reference-pattern/-static-field-pattern/field-name/index.html b/api/shark/-reference-pattern/-static-field-pattern/field-name/index.html
index cd95714..fe26eb7 100644
--- a/api/shark/-reference-pattern/-static-field-pattern/field-name/index.html
+++ b/api/shark/-reference-pattern/-static-field-pattern/field-name/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-reference-pattern/-static-field-pattern/index.html b/api/shark/-reference-pattern/-static-field-pattern/index.html
index 1179d7f..4f43835 100644
--- a/api/shark/-reference-pattern/-static-field-pattern/index.html
+++ b/api/shark/-reference-pattern/-static-field-pattern/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-reference-pattern/-static-field-pattern/to-string/index.html b/api/shark/-reference-pattern/-static-field-pattern/to-string/index.html
index e4d6c80..d3ce104 100644
--- a/api/shark/-reference-pattern/-static-field-pattern/to-string/index.html
+++ b/api/shark/-reference-pattern/-static-field-pattern/to-string/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-reference-pattern/index.html b/api/shark/-reference-pattern/index.html
index 05d0938..e185831 100644
--- a/api/shark/-reference-pattern/index.html
+++ b/api/shark/-reference-pattern/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-shark-cli-command/-command-params/-command-params/index.html b/api/shark/-shark-cli-command/-command-params/-command-params/index.html
index 58ed75a..4cb1be2 100644
--- a/api/shark/-shark-cli-command/-command-params/-command-params/index.html
+++ b/api/shark/-shark-cli-command/-command-params/-command-params/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-shark-cli-command/-command-params/index.html b/api/shark/-shark-cli-command/-command-params/index.html
index 9336129..70558d4 100644
--- a/api/shark/-shark-cli-command/-command-params/index.html
+++ b/api/shark/-shark-cli-command/-command-params/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-shark-cli-command/-command-params/obfuscation-mapping-path/index.html b/api/shark/-shark-cli-command/-command-params/obfuscation-mapping-path/index.html
index 4dbe5a6..df8c51a 100644
--- a/api/shark/-shark-cli-command/-command-params/obfuscation-mapping-path/index.html
+++ b/api/shark/-shark-cli-command/-command-params/obfuscation-mapping-path/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-shark-cli-command/-command-params/source/index.html b/api/shark/-shark-cli-command/-command-params/source/index.html
index 5276f33..f622d0b 100644
--- a/api/shark/-shark-cli-command/-command-params/source/index.html
+++ b/api/shark/-shark-cli-command/-command-params/source/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-shark-cli-command/-companion/echo-newline/index.html b/api/shark/-shark-cli-command/-companion/echo-newline/index.html
index 7f5d0a2..02d0cba 100644
--- a/api/shark/-shark-cli-command/-companion/echo-newline/index.html
+++ b/api/shark/-shark-cli-command/-companion/echo-newline/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-shark-cli-command/-companion/echo/index.html b/api/shark/-shark-cli-command/-companion/echo/index.html
index eacc759..a019522 100644
--- a/api/shark/-shark-cli-command/-companion/echo/index.html
+++ b/api/shark/-shark-cli-command/-companion/echo/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-shark-cli-command/-companion/index.html b/api/shark/-shark-cli-command/-companion/index.html
index 86804a0..623db33 100644
--- a/api/shark/-shark-cli-command/-companion/index.html
+++ b/api/shark/-shark-cli-command/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-shark-cli-command/-companion/retrieve-heap-dump-file/index.html b/api/shark/-shark-cli-command/-companion/retrieve-heap-dump-file/index.html
index fc07d2a..f37356f 100644
--- a/api/shark/-shark-cli-command/-companion/retrieve-heap-dump-file/index.html
+++ b/api/shark/-shark-cli-command/-companion/retrieve-heap-dump-file/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-shark-cli-command/-companion/run-command/index.html b/api/shark/-shark-cli-command/-companion/run-command/index.html
index 24fef5f..5649b08 100644
--- a/api/shark/-shark-cli-command/-companion/run-command/index.html
+++ b/api/shark/-shark-cli-command/-companion/run-command/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-shark-cli-command/-companion/shark-cli-params/index.html b/api/shark/-shark-cli-command/-companion/shark-cli-params/index.html
index d0b050b..561459b 100644
--- a/api/shark/-shark-cli-command/-companion/shark-cli-params/index.html
+++ b/api/shark/-shark-cli-command/-companion/shark-cli-params/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-shark-cli-command/-heap-dump-source/-hprof-file-source/-hprof-file-source/index.html b/api/shark/-shark-cli-command/-heap-dump-source/-hprof-file-source/-hprof-file-source/index.html
index 8f0c0b9..90d8ccc 100644
--- a/api/shark/-shark-cli-command/-heap-dump-source/-hprof-file-source/-hprof-file-source/index.html
+++ b/api/shark/-shark-cli-command/-heap-dump-source/-hprof-file-source/-hprof-file-source/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-shark-cli-command/-heap-dump-source/-hprof-file-source/file/index.html b/api/shark/-shark-cli-command/-heap-dump-source/-hprof-file-source/file/index.html
index 6eff6e9..9906db1 100644
--- a/api/shark/-shark-cli-command/-heap-dump-source/-hprof-file-source/file/index.html
+++ b/api/shark/-shark-cli-command/-heap-dump-source/-hprof-file-source/file/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-shark-cli-command/-heap-dump-source/-hprof-file-source/index.html b/api/shark/-shark-cli-command/-heap-dump-source/-hprof-file-source/index.html
index 993bef8..6a48b61 100644
--- a/api/shark/-shark-cli-command/-heap-dump-source/-hprof-file-source/index.html
+++ b/api/shark/-shark-cli-command/-heap-dump-source/-hprof-file-source/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-shark-cli-command/-heap-dump-source/-process-source/-process-source/index.html b/api/shark/-shark-cli-command/-heap-dump-source/-process-source/-process-source/index.html
index d50f178..30b908a 100644
--- a/api/shark/-shark-cli-command/-heap-dump-source/-process-source/-process-source/index.html
+++ b/api/shark/-shark-cli-command/-heap-dump-source/-process-source/-process-source/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-shark-cli-command/-heap-dump-source/-process-source/device-id/index.html b/api/shark/-shark-cli-command/-heap-dump-source/-process-source/device-id/index.html
index 110d476..0e1205b 100644
--- a/api/shark/-shark-cli-command/-heap-dump-source/-process-source/device-id/index.html
+++ b/api/shark/-shark-cli-command/-heap-dump-source/-process-source/device-id/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-shark-cli-command/-heap-dump-source/-process-source/index.html b/api/shark/-shark-cli-command/-heap-dump-source/-process-source/index.html
index 0e29225..526d3f2 100644
--- a/api/shark/-shark-cli-command/-heap-dump-source/-process-source/index.html
+++ b/api/shark/-shark-cli-command/-heap-dump-source/-process-source/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-shark-cli-command/-heap-dump-source/-process-source/process-name/index.html b/api/shark/-shark-cli-command/-heap-dump-source/-process-source/process-name/index.html
index 1bf28de..f6f4680 100644
--- a/api/shark/-shark-cli-command/-heap-dump-source/-process-source/process-name/index.html
+++ b/api/shark/-shark-cli-command/-heap-dump-source/-process-source/process-name/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-shark-cli-command/-heap-dump-source/index.html b/api/shark/-shark-cli-command/-heap-dump-source/index.html
index f42f542..8d24956 100644
--- a/api/shark/-shark-cli-command/-heap-dump-source/index.html
+++ b/api/shark/-shark-cli-command/-heap-dump-source/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-shark-cli-command/-shark-cli-command/index.html b/api/shark/-shark-cli-command/-shark-cli-command/index.html
index cfa2539..a5cc480 100644
--- a/api/shark/-shark-cli-command/-shark-cli-command/index.html
+++ b/api/shark/-shark-cli-command/-shark-cli-command/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-shark-cli-command/index.html b/api/shark/-shark-cli-command/index.html
index e52e2c2..34df8f8 100644
--- a/api/shark/-shark-cli-command/index.html
+++ b/api/shark/-shark-cli-command/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-shark-cli-command/run/index.html b/api/shark/-shark-cli-command/run/index.html
index 604a82c..f5f59d1 100644
--- a/api/shark/-shark-cli-command/run/index.html
+++ b/api/shark/-shark-cli-command/run/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-shark-log/-logger/d/index.html b/api/shark/-shark-log/-logger/d/index.html
index ca421a3..d970e6d 100644
--- a/api/shark/-shark-log/-logger/d/index.html
+++ b/api/shark/-shark-log/-logger/d/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-shark-log/-logger/index.html b/api/shark/-shark-log/-logger/index.html
index c00fc6a..b872127 100644
--- a/api/shark/-shark-log/-logger/index.html
+++ b/api/shark/-shark-log/-logger/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-shark-log/d/index.html b/api/shark/-shark-log/d/index.html
index 4e52e86..82e6910 100644
--- a/api/shark/-shark-log/d/index.html
+++ b/api/shark/-shark-log/d/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-shark-log/index.html b/api/shark/-shark-log/index.html
index 78314f7..2b7ebfe 100644
--- a/api/shark/-shark-log/index.html
+++ b/api/shark/-shark-log/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-shark-log/logger/index.html b/api/shark/-shark-log/logger/index.html
index b86ff98..1b37815 100644
--- a/api/shark/-shark-log/logger/index.html
+++ b/api/shark/-shark-log/logger/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-streaming-hprof-reader/-companion/index.html b/api/shark/-streaming-hprof-reader/-companion/index.html
index 6f4bd42..d16ab29 100644
--- a/api/shark/-streaming-hprof-reader/-companion/index.html
+++ b/api/shark/-streaming-hprof-reader/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-streaming-hprof-reader/-companion/reader-for/index.html b/api/shark/-streaming-hprof-reader/-companion/reader-for/index.html
index 3aeca30..ed43b03 100644
--- a/api/shark/-streaming-hprof-reader/-companion/reader-for/index.html
+++ b/api/shark/-streaming-hprof-reader/-companion/reader-for/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-streaming-hprof-reader/index.html b/api/shark/-streaming-hprof-reader/index.html
index 1619dc7..d44aa49 100644
--- a/api/shark/-streaming-hprof-reader/index.html
+++ b/api/shark/-streaming-hprof-reader/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-streaming-hprof-reader/read-records/index.html b/api/shark/-streaming-hprof-reader/read-records/index.html
index e7097a7..f83dca1 100644
--- a/api/shark/-streaming-hprof-reader/read-records/index.html
+++ b/api/shark/-streaming-hprof-reader/read-records/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-streaming-record-reader-adapter/-companion/as-hprof-tags/index.html b/api/shark/-streaming-record-reader-adapter/-companion/as-hprof-tags/index.html
index e982de2..6373745 100644
--- a/api/shark/-streaming-record-reader-adapter/-companion/as-hprof-tags/index.html
+++ b/api/shark/-streaming-record-reader-adapter/-companion/as-hprof-tags/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-streaming-record-reader-adapter/-companion/as-streaming-record-reader/index.html b/api/shark/-streaming-record-reader-adapter/-companion/as-streaming-record-reader/index.html
index c69bad9..e9857e5 100644
--- a/api/shark/-streaming-record-reader-adapter/-companion/as-streaming-record-reader/index.html
+++ b/api/shark/-streaming-record-reader-adapter/-companion/as-streaming-record-reader/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-streaming-record-reader-adapter/-companion/index.html b/api/shark/-streaming-record-reader-adapter/-companion/index.html
index 0d1a9b1..e510961 100644
--- a/api/shark/-streaming-record-reader-adapter/-companion/index.html
+++ b/api/shark/-streaming-record-reader-adapter/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-streaming-record-reader-adapter/-streaming-record-reader-adapter/index.html b/api/shark/-streaming-record-reader-adapter/-streaming-record-reader-adapter/index.html
index aa496b6..7092fcb 100644
--- a/api/shark/-streaming-record-reader-adapter/-streaming-record-reader-adapter/index.html
+++ b/api/shark/-streaming-record-reader-adapter/-streaming-record-reader-adapter/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-streaming-record-reader-adapter/index.html b/api/shark/-streaming-record-reader-adapter/index.html
index dd92a08..66c1452 100644
--- a/api/shark/-streaming-record-reader-adapter/index.html
+++ b/api/shark/-streaming-record-reader-adapter/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-streaming-record-reader-adapter/read-records/index.html b/api/shark/-streaming-record-reader-adapter/read-records/index.html
index 6aa4c1a..27b500e 100644
--- a/api/shark/-streaming-record-reader-adapter/read-records/index.html
+++ b/api/shark/-streaming-record-reader-adapter/read-records/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-streaming-source-provider/index.html b/api/shark/-streaming-source-provider/index.html
index d897b37..65bc37c 100644
--- a/api/shark/-streaming-source-provider/index.html
+++ b/api/shark/-streaming-source-provider/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-streaming-source-provider/open-streaming-source/index.html b/api/shark/-streaming-source-provider/open-streaming-source/index.html
index df03b3a..2089d27 100644
--- a/api/shark/-streaming-source-provider/open-streaming-source/index.html
+++ b/api/shark/-streaming-source-provider/open-streaming-source/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-strip-hprof-command/-strip-hprof-command/index.html b/api/shark/-strip-hprof-command/-strip-hprof-command/index.html
index bed7051..8e01f68 100644
--- a/api/shark/-strip-hprof-command/-strip-hprof-command/index.html
+++ b/api/shark/-strip-hprof-command/-strip-hprof-command/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-strip-hprof-command/index.html b/api/shark/-strip-hprof-command/index.html
index 9dc875f..3bf5420 100644
--- a/api/shark/-strip-hprof-command/index.html
+++ b/api/shark/-strip-hprof-command/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-strip-hprof-command/run/index.html b/api/shark/-strip-hprof-command/run/index.html
index 52cffcc..39c1d4a 100644
--- a/api/shark/-strip-hprof-command/run/index.html
+++ b/api/shark/-strip-hprof-command/run/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-throwing-cancelable-file-source-provider/-throwing-cancelable-file-source-provider/index.html b/api/shark/-throwing-cancelable-file-source-provider/-throwing-cancelable-file-source-provider/index.html
index 3678e03..d2997da 100644
--- a/api/shark/-throwing-cancelable-file-source-provider/-throwing-cancelable-file-source-provider/index.html
+++ b/api/shark/-throwing-cancelable-file-source-provider/-throwing-cancelable-file-source-provider/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-throwing-cancelable-file-source-provider/index.html b/api/shark/-throwing-cancelable-file-source-provider/index.html
index 835d378..4b7520a 100644
--- a/api/shark/-throwing-cancelable-file-source-provider/index.html
+++ b/api/shark/-throwing-cancelable-file-source-provider/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-throwing-cancelable-file-source-provider/open-random-access-source/index.html b/api/shark/-throwing-cancelable-file-source-provider/open-random-access-source/index.html
index bc685b2..df23b2d 100644
--- a/api/shark/-throwing-cancelable-file-source-provider/open-random-access-source/index.html
+++ b/api/shark/-throwing-cancelable-file-source-provider/open-random-access-source/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-throwing-cancelable-file-source-provider/open-streaming-source/index.html b/api/shark/-throwing-cancelable-file-source-provider/open-streaming-source/index.html
index 2b4ca34..497d187 100644
--- a/api/shark/-throwing-cancelable-file-source-provider/open-streaming-source/index.html
+++ b/api/shark/-throwing-cancelable-file-source-provider/open-streaming-source/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-value-holder/-boolean-holder/-boolean-holder/index.html b/api/shark/-value-holder/-boolean-holder/-boolean-holder/index.html
index c7f9c8a..d83d963 100644
--- a/api/shark/-value-holder/-boolean-holder/-boolean-holder/index.html
+++ b/api/shark/-value-holder/-boolean-holder/-boolean-holder/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-value-holder/-boolean-holder/index.html b/api/shark/-value-holder/-boolean-holder/index.html
index 95b8347..c2374c1 100644
--- a/api/shark/-value-holder/-boolean-holder/index.html
+++ b/api/shark/-value-holder/-boolean-holder/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-value-holder/-boolean-holder/value/index.html b/api/shark/-value-holder/-boolean-holder/value/index.html
index 2da0294..35042bb 100644
--- a/api/shark/-value-holder/-boolean-holder/value/index.html
+++ b/api/shark/-value-holder/-boolean-holder/value/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-value-holder/-byte-holder/-byte-holder/index.html b/api/shark/-value-holder/-byte-holder/-byte-holder/index.html
index 4e248d8..02dcdc0 100644
--- a/api/shark/-value-holder/-byte-holder/-byte-holder/index.html
+++ b/api/shark/-value-holder/-byte-holder/-byte-holder/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-value-holder/-byte-holder/index.html b/api/shark/-value-holder/-byte-holder/index.html
index b26824b..ce4a5d7 100644
--- a/api/shark/-value-holder/-byte-holder/index.html
+++ b/api/shark/-value-holder/-byte-holder/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-value-holder/-byte-holder/value/index.html b/api/shark/-value-holder/-byte-holder/value/index.html
index aaaef36..ac7fe56 100644
--- a/api/shark/-value-holder/-byte-holder/value/index.html
+++ b/api/shark/-value-holder/-byte-holder/value/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-value-holder/-char-holder/-char-holder/index.html b/api/shark/-value-holder/-char-holder/-char-holder/index.html
index 04a5a16..eda4412 100644
--- a/api/shark/-value-holder/-char-holder/-char-holder/index.html
+++ b/api/shark/-value-holder/-char-holder/-char-holder/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-value-holder/-char-holder/index.html b/api/shark/-value-holder/-char-holder/index.html
index af62aa8..284c475 100644
--- a/api/shark/-value-holder/-char-holder/index.html
+++ b/api/shark/-value-holder/-char-holder/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-value-holder/-char-holder/value/index.html b/api/shark/-value-holder/-char-holder/value/index.html
index 805a322..8d2604c 100644
--- a/api/shark/-value-holder/-char-holder/value/index.html
+++ b/api/shark/-value-holder/-char-holder/value/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-value-holder/-companion/-n-u-l-l_-r-e-f-e-r-e-n-c-e/index.html b/api/shark/-value-holder/-companion/-n-u-l-l_-r-e-f-e-r-e-n-c-e/index.html
index bf29467..030cdd0 100644
--- a/api/shark/-value-holder/-companion/-n-u-l-l_-r-e-f-e-r-e-n-c-e/index.html
+++ b/api/shark/-value-holder/-companion/-n-u-l-l_-r-e-f-e-r-e-n-c-e/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-value-holder/-companion/index.html b/api/shark/-value-holder/-companion/index.html
index f047848..bcd1cd2 100644
--- a/api/shark/-value-holder/-companion/index.html
+++ b/api/shark/-value-holder/-companion/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-value-holder/-double-holder/-double-holder/index.html b/api/shark/-value-holder/-double-holder/-double-holder/index.html
index 9e8724c..a9a1360 100644
--- a/api/shark/-value-holder/-double-holder/-double-holder/index.html
+++ b/api/shark/-value-holder/-double-holder/-double-holder/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-value-holder/-double-holder/index.html b/api/shark/-value-holder/-double-holder/index.html
index 1093910..c1e72c1 100644
--- a/api/shark/-value-holder/-double-holder/index.html
+++ b/api/shark/-value-holder/-double-holder/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-value-holder/-double-holder/value/index.html b/api/shark/-value-holder/-double-holder/value/index.html
index 74e40f1..e945e93 100644
--- a/api/shark/-value-holder/-double-holder/value/index.html
+++ b/api/shark/-value-holder/-double-holder/value/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-value-holder/-float-holder/-float-holder/index.html b/api/shark/-value-holder/-float-holder/-float-holder/index.html
index 5f40079..c09ee2a 100644
--- a/api/shark/-value-holder/-float-holder/-float-holder/index.html
+++ b/api/shark/-value-holder/-float-holder/-float-holder/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-value-holder/-float-holder/index.html b/api/shark/-value-holder/-float-holder/index.html
index 250728b..3ca5c88 100644
--- a/api/shark/-value-holder/-float-holder/index.html
+++ b/api/shark/-value-holder/-float-holder/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-value-holder/-float-holder/value/index.html b/api/shark/-value-holder/-float-holder/value/index.html
index aaee0c9..ceac6bf 100644
--- a/api/shark/-value-holder/-float-holder/value/index.html
+++ b/api/shark/-value-holder/-float-holder/value/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-value-holder/-int-holder/-int-holder/index.html b/api/shark/-value-holder/-int-holder/-int-holder/index.html
index a12cbab..1700ee5 100644
--- a/api/shark/-value-holder/-int-holder/-int-holder/index.html
+++ b/api/shark/-value-holder/-int-holder/-int-holder/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-value-holder/-int-holder/index.html b/api/shark/-value-holder/-int-holder/index.html
index ef73e4a..39303c0 100644
--- a/api/shark/-value-holder/-int-holder/index.html
+++ b/api/shark/-value-holder/-int-holder/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-value-holder/-int-holder/value/index.html b/api/shark/-value-holder/-int-holder/value/index.html
index ce480a8..bf6b54c 100644
--- a/api/shark/-value-holder/-int-holder/value/index.html
+++ b/api/shark/-value-holder/-int-holder/value/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-value-holder/-long-holder/-long-holder/index.html b/api/shark/-value-holder/-long-holder/-long-holder/index.html
index 8f47059..a1a951a 100644
--- a/api/shark/-value-holder/-long-holder/-long-holder/index.html
+++ b/api/shark/-value-holder/-long-holder/-long-holder/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-value-holder/-long-holder/index.html b/api/shark/-value-holder/-long-holder/index.html
index 6443fc3..d05e214 100644
--- a/api/shark/-value-holder/-long-holder/index.html
+++ b/api/shark/-value-holder/-long-holder/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-value-holder/-long-holder/value/index.html b/api/shark/-value-holder/-long-holder/value/index.html
index 96f2aaa..2015095 100644
--- a/api/shark/-value-holder/-long-holder/value/index.html
+++ b/api/shark/-value-holder/-long-holder/value/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-value-holder/-reference-holder/-reference-holder/index.html b/api/shark/-value-holder/-reference-holder/-reference-holder/index.html
index 6ae7bba..62aa59e 100644
--- a/api/shark/-value-holder/-reference-holder/-reference-holder/index.html
+++ b/api/shark/-value-holder/-reference-holder/-reference-holder/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-value-holder/-reference-holder/index.html b/api/shark/-value-holder/-reference-holder/index.html
index 630c45f..3dabc9d 100644
--- a/api/shark/-value-holder/-reference-holder/index.html
+++ b/api/shark/-value-holder/-reference-holder/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-value-holder/-reference-holder/is-null/index.html b/api/shark/-value-holder/-reference-holder/is-null/index.html
index e64d80b..1223ec6 100644
--- a/api/shark/-value-holder/-reference-holder/is-null/index.html
+++ b/api/shark/-value-holder/-reference-holder/is-null/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-value-holder/-reference-holder/value/index.html b/api/shark/-value-holder/-reference-holder/value/index.html
index f35a65f..aa6b3a1 100644
--- a/api/shark/-value-holder/-reference-holder/value/index.html
+++ b/api/shark/-value-holder/-reference-holder/value/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-value-holder/-short-holder/-short-holder/index.html b/api/shark/-value-holder/-short-holder/-short-holder/index.html
index 254eee1..04289a0 100644
--- a/api/shark/-value-holder/-short-holder/-short-holder/index.html
+++ b/api/shark/-value-holder/-short-holder/-short-holder/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-value-holder/-short-holder/index.html b/api/shark/-value-holder/-short-holder/index.html
index dc14fa7..c788c96 100644
--- a/api/shark/-value-holder/-short-holder/index.html
+++ b/api/shark/-value-holder/-short-holder/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-value-holder/-short-holder/value/index.html b/api/shark/-value-holder/-short-holder/value/index.html
index 1d90f99..6fc4338 100644
--- a/api/shark/-value-holder/-short-holder/value/index.html
+++ b/api/shark/-value-holder/-short-holder/value/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/-value-holder/index.html b/api/shark/-value-holder/index.html
index 6ad03f0..eb89a9e 100644
--- a/api/shark/-value-holder/index.html
+++ b/api/shark/-value-holder/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/as-hprof-bytes/index.html b/api/shark/as-hprof-bytes/index.html
index 9af745c..ca58857 100644
--- a/api/shark/as-hprof-bytes/index.html
+++ b/api/shark/as-hprof-bytes/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/create/index.html b/api/shark/create/index.html
index 318d80c..8cde515 100644
--- a/api/shark/create/index.html
+++ b/api/shark/create/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/dump-to-bytes/index.html b/api/shark/dump-to-bytes/index.html
index b25a798..fcffaee 100644
--- a/api/shark/dump-to-bytes/index.html
+++ b/api/shark/dump-to-bytes/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/dump/index.html b/api/shark/dump/index.html
index 25d3358..1d78a5b 100644
--- a/api/shark/dump/index.html
+++ b/api/shark/dump/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/hex-identity-hash-code/index.html b/api/shark/hex-identity-hash-code/index.html
index 27a0718..c3495ab 100644
--- a/api/shark/hex-identity-hash-code/index.html
+++ b/api/shark/hex-identity-hash-code/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/identity-hash-code/index.html b/api/shark/identity-hash-code/index.html
index 2d2646d..3bbfc20 100644
--- a/api/shark/identity-hash-code/index.html
+++ b/api/shark/identity-hash-code/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/index.html b/api/shark/index.html
index ba641bf..5fdf0b6 100644
--- a/api/shark/index.html
+++ b/api/shark/index.html
@@ -84,7 +84,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/api/shark/main/index.html b/api/shark/main/index.html
index f2fd857..da36e06 100644
--- a/api/shark/main/index.html
+++ b/api/shark/main/index.html
@@ -80,7 +80,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/blog-articles/index.html b/blog-articles/index.html
index a7a8be9..56c3ce3 100644
--- a/blog-articles/index.html
+++ b/blog-articles/index.html
@@ -79,7 +79,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/changelog/index.html b/changelog/index.html
index 2b26bfd..33d0154 100644
--- a/changelog/index.html
+++ b/changelog/index.html
@@ -82,7 +82,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
@@ -745,6 +745,13 @@
     <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
       
         <li class="md-nav__item">
+  <a href="#version-214-2024-04-17" class="md-nav__link">
+    Version 2.14 (2024-04-17)
+  </a>
+  
+</li>
+      
+        <li class="md-nav__item">
   <a href="#version-30-alpha-1-2024-01-09" class="md-nav__link">
     Version 3.0 Alpha 1 (2024-01-09)
   </a>
@@ -1607,6 +1614,13 @@
     <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
       
         <li class="md-nav__item">
+  <a href="#version-214-2024-04-17" class="md-nav__link">
+    Version 2.14 (2024-04-17)
+  </a>
+  
+</li>
+      
+        <li class="md-nav__item">
   <a href="#version-30-alpha-1-2024-01-09" class="md-nav__link">
     Version 3.0 Alpha 1 (2024-01-09)
   </a>
@@ -2457,8 +2471,17 @@
   
   <h1 id="change-log">Change Log<a class="headerlink" href="#change-log" title="Permanent link">&para;</a></h1>
 <p>Please thank our <a href="https://github.com/square/leakcanary/graphs/contributors">contributors</a> 🙏 🙏 🙏.</p>
+<h2 id="version-214-2024-04-17">Version 2.14 (2024-04-17)<a class="headerlink" href="#version-214-2024-04-17" title="Permanent link">&para;</a></h2>
+<ul>
+<li>🐛 <a href="https://github.com/square/leakcanary/issues/2650">#2650</a> Removed accidental usage of <code>SettableFuture</code>, a <code>WorkManager</code> internal class, which will be removed in a <strong>future release</strong> of WorkManager. After updating WorkManager to that future release, <strong>all versions of LeakCanary from 2.8 to 2.13 will crash on leak analysis</strong>. To avoid a nasty surprise in the near future, <strong>update to LeakCanary 2.14</strong>.</li>
+<li>🔨 <a href="https://github.com/square/leakcanary/pull/2660">#2660</a> Add proguard mapping support for LeakCanary release.</li>
+<li>🐛 <a href="https://github.com/square/leakcanary/issues/2531">#2531</a> Heap dump &amp; leak lists not preserving list position when navigating.</li>
+<li>🐤 <a href="https://github.com/square/leakcanary/pull/2615">#2615</a> Automatic fix of AOSP PermissionControllerManager leak (<a href="https://issuetracker.google.com/issues/318415056">issuetracker.google.com/issues/318415056</a>).</li>
+<li>🐤 <a href="https://github.com/square/leakcanary/issues/2559">#2559</a> Ignore <code>UiModeManager</code> AOSP leak.</li>
+<li>💥 <a href="https://github.com/square/leakcanary/issues/2643">#2643</a> Fixed rare crash on RenderHeapDumpScreen.</li>
+</ul>
 <h2 id="version-30-alpha-1-2024-01-09">Version 3.0 Alpha 1 (2024-01-09)<a class="headerlink" href="#version-30-alpha-1-2024-01-09" title="Permanent link">&para;</a></h2>
-<p>These alpha releases mark the start of the work on LeakCanary 3. It&rsquo;s not stable! While I intend to rework some APIs, I also want to minimize migration work. The best way to ensure migrations will go smoothly is to try upgrading to a 3.0 alpha and to let me know if you get any compile or runtime error.</p>
+<p>This alpha release marks the start of the work on LeakCanary 3. It&rsquo;s not stable! While I intend to rework some APIs, I also want to minimize migration work. The best way to ensure migrations will go smoothly is to try upgrading to a 3.0 alpha and to let me know if you get any compile or runtime error.</p>
 <h3 id="heap-growth">Heap Growth<a class="headerlink" href="#heap-growth" title="Permanent link">&para;</a></h3>
 <p>New APIs, not stable yet: the <code>shark-heap-growth</code> artifact contains APIs for writing test scenarios that detect repeated heap growth.</p>
 <p>Here&rsquo;s how it&rsquo;s used with an Espresso test:</p>
diff --git a/code_of_conduct/index.html b/code_of_conduct/index.html
index c67be6a..24ed2a1 100644
--- a/code_of_conduct/index.html
+++ b/code_of_conduct/index.html
@@ -84,7 +84,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/dev-env/index.html b/dev-env/index.html
index 739cd6e..dc0017f 100644
--- a/dev-env/index.html
+++ b/dev-env/index.html
@@ -84,7 +84,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/faq/index.html b/faq/index.html
index dec0053..b1a6464 100644
--- a/faq/index.html
+++ b/faq/index.html
@@ -84,7 +84,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/fundamentals-fixing-a-memory-leak/index.html b/fundamentals-fixing-a-memory-leak/index.html
index a7d9f42..b73a108 100644
--- a/fundamentals-fixing-a-memory-leak/index.html
+++ b/fundamentals-fixing-a-memory-leak/index.html
@@ -84,7 +84,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/fundamentals-how-leakcanary-works/index.html b/fundamentals-how-leakcanary-works/index.html
index d3d8c38..a70fd15 100644
--- a/fundamentals-how-leakcanary-works/index.html
+++ b/fundamentals-how-leakcanary-works/index.html
@@ -84,7 +84,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/fundamentals/index.html b/fundamentals/index.html
index 2b4796a..d7a84d6 100644
--- a/fundamentals/index.html
+++ b/fundamentals/index.html
@@ -84,7 +84,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/getting_started/index.html b/getting_started/index.html
index 7cb331f..fed8757 100644
--- a/getting_started/index.html
+++ b/getting_started/index.html
@@ -84,7 +84,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
@@ -773,7 +773,7 @@
 <p>To use LeakCanary, add the <code>leakcanary-android</code> dependency to your app&rsquo;s <code>build.gradle</code> file:</p>
 <div class="highlight"><pre><span></span><code><span class="n">dependencies</span><span class="w"> </span><span class="o">{</span>
 <span class="w">  </span><span class="c1">// debugImplementation because LeakCanary should only run in debug builds.</span>
-<span class="w">  </span><span class="n">debugImplementation</span><span class="w"> </span><span class="s1">&#39;com.squareup.leakcanary:leakcanary-android:2.13&#39;</span>
+<span class="w">  </span><span class="n">debugImplementation</span><span class="w"> </span><span class="s1">&#39;com.squareup.leakcanary:leakcanary-android:2.14&#39;</span>
 <span class="o">}</span>
 </code></pre></div>
 <p><strong>That&rsquo;s it, there is no code change needed!</strong></p>
diff --git a/how_to_help/index.html b/how_to_help/index.html
index 95de1c3..b58fee4 100644
--- a/how_to_help/index.html
+++ b/how_to_help/index.html
@@ -84,7 +84,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/index.html b/index.html
index bf76310..923dfd0 100644
--- a/index.html
+++ b/index.html
@@ -82,7 +82,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="./changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="./how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="./changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="./how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/leakcanary-for-releases/index.html b/leakcanary-for-releases/index.html
index 9fac6e1..9a50c54 100644
--- a/leakcanary-for-releases/index.html
+++ b/leakcanary-for-releases/index.html
@@ -84,7 +84,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
@@ -846,9 +846,9 @@
 <p>LeakCanary provides an artifact dedicated to detecting leaks in release builds:</p>
 <div class="highlight"><pre><span></span><code><span class="n">dependencies</span><span class="w"> </span><span class="o">{</span>
 <span class="w">  </span><span class="c1">// LeakCanary for releases</span>
-<span class="w">  </span><span class="n">releaseImplementation</span><span class="w"> </span><span class="s1">&#39;com.squareup.leakcanary:leakcanary-android-release:2.13&#39;</span>
+<span class="w">  </span><span class="n">releaseImplementation</span><span class="w"> </span><span class="s1">&#39;com.squareup.leakcanary:leakcanary-android-release:2.14&#39;</span>
 <span class="w">  </span><span class="c1">// Optional: detect retained objects. This helps but is not required.</span>
-<span class="w">  </span><span class="n">releaseImplementation</span><span class="w"> </span><span class="s1">&#39;com.squareup.leakcanary:leakcanary-object-watcher-android:2.13&#39;</span>
+<span class="w">  </span><span class="n">releaseImplementation</span><span class="w"> </span><span class="s1">&#39;com.squareup.leakcanary:leakcanary-object-watcher-android:2.14&#39;</span>
 <span class="o">}</span>
 </code></pre></div>
 <p>Here&rsquo;s a code example that runs a heap analysis when the screen is turned off or the app enters background, checking first if a <a href="https://firebase.google.com/products/remote-config">Firebase Remote Config</a> flag is turned on, and uploading the result to Bugsnag:</p>
diff --git a/recipes/index.html b/recipes/index.html
index 07b6b8c..7cbf996 100644
--- a/recipes/index.html
+++ b/recipes/index.html
@@ -84,7 +84,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
@@ -1126,7 +1126,7 @@
 <p>The <code>com.squareup.leakcanary:leakcanary-android</code> dependency should only be used in debug builds. It depends on <code>com.squareup.leakcanary:leakcanary-object-watcher-android</code> which you can use in release builds to track and count retained instances.</p>
 <p>In your <code>build.gradle</code>:</p>
 <div class="highlight"><pre><span></span><code>dependencies {
-  implementation &#39;com.squareup.leakcanary:leakcanary-object-watcher-android:2.13&#39;
+  implementation &#39;com.squareup.leakcanary:leakcanary-object-watcher-android:2.14&#39;
 }
 </code></pre></div>
 <p>In your leak reporting code:
@@ -1327,8 +1327,8 @@
 <p>While LeakCanary was designed to work out of the box on Android, it can run on any JVM with a bit of configuration.</p>
 <p>Add the ObjectWatcher and Shark dependencies to your build file:</p>
 <div class="highlight"><pre><span></span><code><span class="n">dependencies</span><span class="w"> </span><span class="o">{</span>
-<span class="w">  </span><span class="n">implementation</span><span class="w"> </span><span class="s1">&#39;com.squareup.leakcanary:leakcanary-object-watcher:2.13&#39;</span>
-<span class="w">  </span><span class="n">implementation</span><span class="w"> </span><span class="s1">&#39;com.squareup.leakcanary:shark:2.13&#39;</span>
+<span class="w">  </span><span class="n">implementation</span><span class="w"> </span><span class="s1">&#39;com.squareup.leakcanary:leakcanary-object-watcher:2.14&#39;</span>
+<span class="w">  </span><span class="n">implementation</span><span class="w"> </span><span class="s1">&#39;com.squareup.leakcanary:shark:2.14&#39;</span>
 <span class="o">}</span>
 </code></pre></div>
 <p>Define a <code>HotSpotHeapDumper</code> to dump the heap:</p>
diff --git a/recorded-presentations/index.html b/recorded-presentations/index.html
index 0696479..b957308 100644
--- a/recorded-presentations/index.html
+++ b/recorded-presentations/index.html
@@ -79,7 +79,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/releasing/index.html b/releasing/index.html
index ad9aaee..fb2dca7 100644
--- a/releasing/index.html
+++ b/releasing/index.html
@@ -84,7 +84,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
@@ -1014,7 +1014,7 @@
 <li>
 <p>Update the current version and next version in <code>mkdocs.yml</code>
 <div class="highlight"><pre><span></span><code>sed<span class="w"> </span>-i<span class="w"> </span><span class="s1">&#39;&#39;</span><span class="w"> </span><span class="s1">&#39;s/3.0-alpha-2/NEXT/&#39;</span><span class="w"> </span>mkdocs.yml
-sed<span class="w"> </span>-i<span class="w"> </span><span class="s1">&#39;&#39;</span><span class="w"> </span><span class="s1">&#39;s/2.13/3.0-alpha-2/&#39;</span><span class="w"> </span>mkdocs.yml
+sed<span class="w"> </span>-i<span class="w"> </span><span class="s1">&#39;&#39;</span><span class="w"> </span><span class="s1">&#39;s/2.14/3.0-alpha-2/&#39;</span><span class="w"> </span>mkdocs.yml
 </code></pre></div></p>
 </li>
 <li>
@@ -1048,7 +1048,7 @@
 </code></pre></div></p>
 </li>
 <li>
-<p>Update the changelog (<a href="https://github.com/square/leakcanary/compare/v2.13...main">commit list</a>)
+<p>Update the changelog (<a href="https://github.com/square/leakcanary/compare/v2.14...main">commit list</a>)
 <div class="highlight"><pre><span></span><code>mate docs/changelog.md
 </code></pre></div></p>
 </li>
diff --git a/search/search_index.json b/search/search_index.json
index 8452d72..1a8425c 100644
--- a/search/search_index.json
+++ b/search/search_index.json
@@ -1 +1 @@
-{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"LeakCanary \ud83d\udc24","text":"<p>LeakCanary is a memory leak detection library for Android.</p> <p> </p> <p>LeakCanary\u2019s knowledge of the internals of the Android Framework gives it a unique ability to narrow down the cause of each leak, helping developers dramatically reduce jank, <code>Application Not Responding</code> freezes and <code>OutOfMemoryError</code> crashes.</p> <p>Get started!</p> <p>Quote</p> <p>\u201cA small leak will sink a great ship.\u201d - Benjamin Franklin</p>"},{"location":"blog-articles/","title":"Blog Articles","text":"<ul> <li>Memory Leaks in Android</li> <li>Detect memory leaks in your instrumentation tests using LeakCanary</li> <li>9 ways to avoid memory leaks in Android</li> <li>LeakCanary - Deobfuscation Feature Explained</li> <li>LeakCanary - An in-depth example of Android memory-leaks in MVP architecture</li> <li>Detecting memory leaks in Android applications</li> </ul> <p>Your article should be here, please update this list! Any technical level welcome.</p>"},{"location":"changelog/","title":"Change Log","text":"<p>Please thank our contributors \ud83d\ude4f \ud83d\ude4f \ud83d\ude4f.</p>"},{"location":"changelog/#version-30-alpha-1-2024-01-09","title":"Version 3.0 Alpha 1 (2024-01-09)","text":"<p>These alpha releases mark the start of the work on LeakCanary 3. It\u2019s not stable! While I intend to rework some APIs, I also want to minimize migration work. The best way to ensure migrations will go smoothly is to try upgrading to a 3.0 alpha and to let me know if you get any compile or runtime error.</p>"},{"location":"changelog/#heap-growth","title":"Heap Growth","text":"<p>New APIs, not stable yet: the <code>shark-heap-growth</code> artifact contains APIs for writing test scenarios that detect repeated heap growth.</p> <p>Here\u2019s how it\u2019s used with an Espresso test:</p> <pre><code>class MyEspressoTest {\n\n@Test\nfun greeter_says_hello_does_not_leak() {\n// Runs in a loop until the heap stops growing or we reach max heap dumps.\nval heapTraversal = HeapGrowthDetector.detectRepeatedHeapGrowth {\n// Runs repeatedly until the heap stops growing or we reach maxHeapDumps.\nonView(withId(R.id.name_field)).perform(typeText(\"Steve\"))\nonView(withId(R.id.greet_button)).perform(click())\nonView(withText(\"Hello Steve!\")).check(matches(isDisplayed()))\n}\n\nassertThat(heapTraversal.growingNodes).isEmpty()\n}\n}\n</code></pre> <p>Here\u2019s an example set up, this is all very manual for now.</p> <p>Add the new dependency:</p> <pre><code>dependencies {\nandroidTestImplementation 'com.squareup.leakcanary:shark-heap-growth:3.0-alpha-1'\nandroidTestImplementation 'com.squareup.leakcanary:leakcanary-android-core:3.0-alpha-1'\n}\n</code></pre> <p>Create an implementation setup for Espresso in process UI tests:</p> <pre><code>import leakcanary.AndroidDebugHeapDumper\nimport shark.AndroidReferenceMatchers\nimport shark.AndroidReferenceReaderFactory\nimport shark.CloseableHeapGraph\nimport shark.DiffingHeapGrowthDetector\nimport shark.HeapGraphProvider\nimport shark.HeapTraversal\nimport shark.HprofHeapGraph.Companion.openHeapGraph\nimport shark.IgnoredReferenceMatcher\nimport shark.LiveHeapGrowthDetector\nimport shark.LoopingHeapGrowthDetector\nimport shark.MatchingGcRootProvider\nimport shark.ReferencePattern.InstanceFieldPattern\nimport java.io.File\nimport java.text.SimpleDateFormat\nimport java.util.Date\nimport java.util.Locale\n\n/**\n * Heap growth detector for in process Espresso UI tests.\n *\n * Call [LiveHeapGrowthDetector.detectRepeatedHeapGrowth] with a scenario to repeat,\n * then assert that the resulting [shark.HeapTraversalWithDiff.growingNodes] is empty.\n */\nval HeapGrowthDetector by lazy {\nval referenceMatchers = AndroidReferenceMatchers.appDefaults +\nHeapTraversal.ignoredReferences +\n// https://cs.android.com/android/_/android/platform/frameworks/base/+/6985fb39f07294fb979b14ba0ebabfd2fea06d34\nIgnoredReferenceMatcher(InstanceFieldPattern(\"android.os.StrictMode\", \"sLastVmViolationTime\"))\n\nval dateFormat = SimpleDateFormat(\"yyyy-MM-dd_HH-mm-ss_SSS'-heap-growth.hprof'\", Locale.US)\nval uploadedTracesDirectory = File(\"/sdcard/traces/\")\nuploadedTracesDirectory.mkdirs()\ncheck(uploadedTracesDirectory.exists()) {\n\"Expected heap dump folder to exist: ${uploadedTracesDirectory.absolutePath}\"\n}\n\nval heapGraphProvider = HeapGraphProvider {\nval fileName = dateFormat.format(Date())\nval heapDumpFile = File(uploadedTracesDirectory, fileName)\nAndroidDebugHeapDumper.dumpHeap(heapDumpFile)\ncheck(heapDumpFile.exists()) {\n\"Expected file to exist after heap dump: ${heapDumpFile.absolutePath}\"\n}\nval realGraph = heapDumpFile.openHeapGraph()\nobject : CloseableHeapGraph by realGraph {\noverride fun close() {\nrealGraph.close()\nheapDumpFile.delete()\n}\n}\n}\n\nLiveHeapGrowthDetector(\nmaxHeapDumps = 5,\nheapGraphProvider = heapGraphProvider,\nscenarioLoopsPerDump = 5,\ndetector = LoopingHeapGrowthDetector(\nDiffingHeapGrowthDetector(\nreferenceReaderFactory = AndroidReferenceReaderFactory(referenceMatchers),\ngcRootProvider = MatchingGcRootProvider(referenceMatchers)\n)\n)\n)\n}\n</code></pre> <p>Ensure your UI tests have enough heap by updating <code>src/androidTest/AndroidManifest.xml</code>:</p> <pre><code>&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\n&lt;manifest\nxmlns:android=\"http://schemas.android.com/apk/res/android\"&gt;\n\n&lt;!-- Performing the heap growth analysis in process requires more heap. --&gt;\n&lt;application\nandroid:largeHeap=\"true\"/&gt;\n&lt;/manifest&gt;\n</code></pre>"},{"location":"changelog/#reference-readers","title":"Reference readers","text":"<p>New APIs, not stable yet: <code>ReferenceReader</code> implementations aka expanders, are now public APIs. The names might change. These class define how LeakCanary traverses the graph, and allow for the creating of virtual references, as introduced here. These new APIs make it possible to add support for more custom data structures, and they\u2019re also useful when working directly with the <code>shark</code> APIs (for example, these APIs were necessary to build the heap growth detection tooling mentioned above).</p>"},{"location":"changelog/#objectwatcher-apis-refactor","title":"ObjectWatcher APIs refactor","text":"<p>#2612 is a first attempt at refactoring the reachability APIs. I already found backward compatibility issues (#2617), will fix in the next alpha, and probably still change the API shape.</p> <p>The general purpose of this refactor is to move away from the static singletons and high coupling of the current implementation, making the reachability APIs more useful in a variaty of contexts.</p>"},{"location":"changelog/#other-bug-fixes-and-improvements","title":"Other bug fixes and improvements \ud83d\udc1b\ud83d\udd28","text":"<ul> <li>Bumped Kotlin to 1.8.21</li> <li>Dropped support for detecting support fragment leaks: apps should all have migrated to Android X by now, and if not they can easily add their own implementation back.</li> </ul> <p>This list reflects only a subset of all changes. For more details, the full diff.</p>"},{"location":"changelog/#version-213-2024-01-03","title":"Version 2.13 (2024-01-03)","text":"<ul> <li>\ud83d\udc1b #2565 Fix AndroidX Fragments incorrectly marked as leaking if detached but not destroyed.</li> <li>\ud83d\udca5 #2568 Fixed missing <code>RECEIVER_EXPORTED</code> flag when calling <code>registerReceiver()</code> on API 34+.</li> <li>\ud83d\udd28 #2555 Binder stubs are now called out in leak traces.</li> <li>\ud83d\udc24 #2601 Added several known manufacturer &amp; framework leaks.</li> </ul>"},{"location":"changelog/#version-212-2023-06-29","title":"Version 2.12 (2023-06-29)","text":"<ul> <li>\ud83d\udca5 #2527 <code>LifecycleRegistry</code> in <code>androidx.lifecycle:lifecycle-runtime</code> was migrated to kotlin and its <code>mState</code> field name changed to <code>state</code> which broke LeakCanary expectations.</li> <li>\ud83d\udc24 #2545 Added several known manufacturer &amp; framework leaks.</li> </ul>"},{"location":"changelog/#version-211-2023-05-17","title":"Version 2.11 (2023-05-17)","text":"<ul> <li>\ud83d\udc1b #1764 Ignore phantom classes that were unloaded than reloaded (long time LeakCanary bug).</li> <li>\ud83d\udc1b #2471 Fix LeakCanary introducing a weird leak in Google\u2019s CI infra.</li> <li>\ud83d\udc1b #2496 Fix broken ViewModel leak detection</li> </ul>"},{"location":"changelog/#version-210-2022-11-10","title":"Version 2.10 (2022-11-10)","text":""},{"location":"changelog/#experimental-neo4j-heap-dump-exploration","title":"Experimental Neo4j heap dump exploration","text":"<p><code>shark-cli</code> has a new experiment <code>neo4j</code> command that will convert a heap dump into an embedded Neo4j database and then open Neo4j Browser to explore the heap dump.</p> <pre><code>brew install leakcanary-shark\n\nshark-cli --process com.example.app.debug neo4j\n</code></pre> <p></p>"},{"location":"changelog/#other-bug-fixes-and-improvements_1","title":"Other bug fixes and improvements \ud83d\udc1b\ud83d\udd28","text":"<ul> <li>\ud83d\udc24 #2440 Add Android 13 <code>POST_NOTICICATIONS</code> permission as well as a new <code>LeakCanary.Config.showNotifications</code> config to disable notifications entirely.</li> <li>\ud83d\udc24 #2416 Add Android 13 monochrome icon.</li> <li>\ud83d\udca5 #2371 Fix db crash when navigating heap dump screen.</li> <li>\ud83d\udc1b #2393 Allow LeakCanary to be defined as an AndroidX Startup dependency.</li> <li>\ud83d\udca5 #2430 Fix ShortcutManager crash on Android TV.</li> <li>\ud83d\udca5 #2382 Fix heap dump close crash.</li> </ul> <p>This list reflects only a subset of all changes. For more details, see the 2.10 Milestone and the full diff.</p>"},{"location":"changelog/#version-291-2022-04-20","title":"Version 2.9.1 (2022-04-20)","text":""},{"location":"changelog/#preface","title":"Preface","text":"<p>What are some things you\u2019d like to see in a future LeakCanary 3 version? Tell me on Twitter!</p> <p>Some ideas I\u2019m playing with:</p> <ul> <li>Moving heap analysis leak visualisation to a separate single app (written with Compose!) available on the PlayStore.</li> <li>Bumping Okio to 3.0</li> <li>Multiplatform heap analysis? Analyze a JVM heap dump in your browser?!</li> <li>Visualize the heap dominators / retained size as a treemap.</li> <li>A backend for LeakCanary?</li> </ul> <p>Anyway, that\u2019s still very much the future, let\u2019s talk about what\u2019s in <code>2.9.1</code> now!</p>"},{"location":"changelog/#new-metrics-in-heap-analysis-metadata","title":"New metrics in heap analysis metadata","text":"<p>I built LeakCanary to help fix leaks, but in doing so I accidentally wrote a fairly flexible heap dump parser. Since we\u2019re parsing the heap to find leaks anyway, we might as well report additional interesting metrics. Here\u2019s what you\u2019ll now see in the heap dump metadata:</p> <ul> <li>Class count: count of loaded classes</li> <li>Instance count</li> <li>Primitive array count</li> <li>Object array count</li> <li>Thread count</li> <li>Heap total bytes</li> <li>Bitmap count</li> <li>Bitmap total bytes</li> <li>Large bitmap count (bitmaps with more pixels than 1.1x the pixels on screen)</li> <li>Large bitmap total bytes</li> <li>SQLiteDatabase in memory (open or closed, as well as their file path)</li> </ul> <p>This is just a first pass, feedback and ideas welcome!</p>"},{"location":"changelog/#performance-improvements","title":"Performance improvements","text":"<p>The heap analysis now traverses the heap dump using <code>RandomAccessFile</code> instead of <code>FileChannel.transferTo()</code> and is now 40% faster on API 23 and 20% faster on newer APIs. Also, sticky class GC roots are now deduplicated, which great reduces the memory footprint of LeakCanary on API 23 (#2324). You can read about the related investigation on py.hashnode.dev.</p>"},{"location":"changelog/#breaking-change-failtestonleakrunlistener-deleted","title":"Breaking change:  FailTestOnLeakRunListener deleted","text":"<p><code>FailTestOnLeakRunListener</code>, <code>FailTestOnLeak</code> and <code>FailAnnotatedTestOnLeakRunListener</code> were deprecated in LeakCanary 2.8 as they rely on hacking the Android Test library internals which have since changed, and have been replaced by <code>LeakAssertions.assertNoLeak()</code> and the <code>DetectLeaksAfterTestSuccess</code> test rule. I was initially planning of keep these around, but as I tried to increase API level coverage in LeakCanary I needed to upgrade the Android Test library to a more recent version, and the hacks now had compilation errors. So they\u2019re gone: #2282. If you can\u2019t use the test rules just yet, you\u2019re welcome to copy paste the listener implementations in your own codebase.</p>"},{"location":"changelog/#other-bug-fixes-and-improvements_2","title":"Other bug fixes and improvements \ud83d\udc1b\ud83d\udd28","text":"<ul> <li>\ud83d\udca5 #2367 Fixed <code>AndroidLeakFixes.FLUSH_HANDLER_THREADS</code> (<code>HandlerThread</code> can have a null <code>Looper</code>).</li> <li>\ud83d\udca5 #2286 Update Curtains to include Proguard rules and prevent <code>WindowCallbackWrapper</code> crashes.</li> <li>\ud83d\udca5 #2294 Fixed <code>WindowDelegateCallback.onMenuOpened()</code> crash.</li> <li>\ud83d\udc24 #2328 Fixed ToastEventListener leak. Sorry \ud83d\ude2c!</li> <li>\ud83d\udca5 #2310 Fixed crash when using WorkManager &lt; 2.1.0.</li> <li>\ud83d\udca5 #2342 Fixed crash when <code>HashSet.map</code> is null (which isn\u2019t supposed to happen, oh well, Android \ud83e\udd37\u200d\u2642\ufe0f).</li> <li>\ud83d\udc1b #2117 Fixed StrictMode disk read violations.</li> <li>\ud83d\udca5 #2351 Fixed a race causing a startup crash.</li> <li>\ud83d\udca5 #2315 Fixed crash when using Okio 1.14.</li> <li>\ud83d\udc1b #2182 Fixed multi rescheduling of <code>BackgroundListener$checkAppInBackground</code>.</li> <li>\ud83d\udca5 #2360 Fixed SQLiteOpenHelper concurrent creation crash.</li> </ul> <p>This list reflects only a subset of all changes. For more details, see the 2.9 Milestone and the full diff.</p>"},{"location":"changelog/#version-281-2022-01-06","title":"Version 2.8.1 (2022-01-06)","text":"<p>This is a bugfix release, a quick follow up to <code>2.8</code> which had a few major issues \ud83d\ude05. If you haven\u2019t yet, you should definitely read the <code>2.8</code> changelog.</p>"},{"location":"changelog/#thanks","title":"Thanks","text":"<p>Please thank @dicosta, @Goooler, @plnice, @preetha1326 for their contributions, bug reports and feature requests \ud83d\ude4f \ud83d\ude4f \ud83d\ude4f.</p>"},{"location":"changelog/#crash-fixes","title":"Crash fixes \ud83d\udca5\ud83d\udca5\ud83d\udca5","text":"<p>This patch release fixes not 1, not 2, but 3 crashes!</p> <ul> <li>\ud83d\udca5 #2268 WorkManager expedited request crashes before API 31.</li> <li>\ud83d\udca5 #2270 Updating <code>LeakCanary.config</code> crashes when <code>AppWatcher</code> is not installed.</li> <li>\ud83d\udca5 #2271 Analysis failure on API 25 because <code>HashMap$Entry</code> became <code>HashMap$HashMapEntry</code> (on API 25) before it finally changed to <code>HashMap$Node</code>.</li> </ul> <p>For more details, see the 2.8.1 Milestone and the full diff.</p>"},{"location":"changelog/#version-28-2022-01-04","title":"Version 2.8 (2022-01-04)","text":"<p>Note: please update to <code>2.8.1</code> instead.</p>"},{"location":"changelog/#preface_1","title":"Preface","text":"<p>The last release was 9 months ago. What happened?! Well, soon after releasing LeakCanary 2.7, I had my 2nd baby, a wonderful daughter \ud83d\ude0d. Having 2 young kids leaves a lot less time available for Open Source work\u2026 but it\u2019s worth it!</p> <p>\u2015 P.Y.</p>"},{"location":"changelog/#thanks_1","title":"Thanks","text":"<p>Please thank @aaronweihe, @alhah, @Andre-max, @AoraMD, @BraisGabin, @breezenan, @Goooler, @iliaskomp @Jeff11, @jmnwong, @IdioticMadman, @keyur1sst, @lchen8, @leinardi, @Maragues, @mars885, @mateuszkwiecinski, @matiash, @maxxx, @preetha1326, @SimonMarquis, @slavonnet, @Sonphil, @summerlyr, @SUPERCILEX, @utwyko, @ZacSweers, @ziranshang, @zoltish for their contributions, bug reports and feature requests \ud83d\ude4f \ud83d\ude4f \ud83d\ude4f.</p>"},{"location":"changelog/#improved-support-for-data-structure-internals","title":"Improved support for data structure internals","text":"<p>\ud83e\udd13 Inspired by Android Studio, LeakCanary\u2019s node discovery during heap graph traversal is now abstracted away. This allows overlaying logical structure over common data structure internals.</p> <p>\ud83d\ude05 WHAT?!</p> <p>\ud83d\udc49 This means we can make known data structures look more like their APIs than their internals. For example, developers tend to think of setting a <code>HashMap</code> entry as <code>map[\"key\"] = value</code> rather than <code>map.table[hash(\"key\")].next.next.next = Node(value)</code>, which is what LeakCanary would previously show in its leak traces.</p> <p>Let\u2019s look at a <code>HashMap</code> example:</p> <pre><code>class CheckoutController {\n\nval tabs = HashMap&lt;String, Tab&gt;()\n\nfun addItemsTab(tab: Tab) {\ntabs[\"ItemsTab\"] = tab\n}\n}\n</code></pre> <p>If the <code>Tab</code> instance holds on to a view, we might see a leak trace that would look like this:</p> <pre><code>\u2502 ...\n\u251c\u2500 com.example.CheckoutController instance\n\u2502    \u2193 CheckoutController.tabs\n\u251c\u2500 java.util.HashMap instance\n\u2502    \u2193 HashMap.table\n\u251c\u2500 java.util.HashMap$Node[] array\n\u2502    \u2193 HashMap$Node[42]\n\u251c\u2500 java.util.HashMap$Node instance\n\u2502    \u2193 HashMap$Node.next\n\u251c\u2500 java.util.HashMap$Node instance\n\u2502    \u2193 HashMap$Node.value\n\u251c\u2500 com.example.Tab instance\n\u2502 ...\n</code></pre> <p>With the improved data structure support, the leak trace is much clearer (also note how the <code>ItemsTab</code> string key is now surfaced):</p> <pre><code>\u2502 ...\n\u251c\u2500 com.example.CheckoutController instance\n\u2502    \u2193 CheckoutController.tabs\n\u251c\u2500 java.util.HashMap instance\n\u2502    \u2193 HashMap[ItemsTab]\n\u251c\u2500 com.example.Tab instance\n\u2502 ...\n</code></pre> <p>Another benefit of this change is that leak signatures become less dependent of the runtime, and therefore are more consistent. This is especially true for any data structure that relies on a linked list (<code>HashMap</code>, <code>LinkedList</code>, <code>MessageQueue</code>, \u2026). Currently LeakCanary supports a limited set of common data structures from Apache Harmony, Open JDK, and the Android SDK. Let me know what else you need!</p>"},{"location":"changelog/#objectanimator-leaks","title":"ObjectAnimator leaks","text":"<p>LeakCanary will now detect leaks that trigger when forgetting to cancel <code>ObjectAnimator</code>. This new feature is enabled by the node discovery changes described above!</p> <p>Let\u2019s say you accidentally start an infinite <code>ObjectAnimator</code> and never cancel it, like so:</p> <pre><code>class ExampleActivity : Activity() {\n\noverride fun onCreate(savedInstanceState: Bundle?) {\nsuper.onCreate(savedInstanceState)\nsetContentView(R.layout.main_activity)\nfindViewById&lt;Button&gt;(R.id.button).setOnClickListener { view -&gt;\nObjectAnimator.ofFloat(view, View.ALPHA, 0.1f, 0.2f).apply {\nduration = 100\nrepeatMode = ValueAnimator.REVERSE\nrepeatCount = ValueAnimator.INFINITE\nstart()\n}\n}\n}\n}\n</code></pre> <p>In previous releases, LeakCanary would detect that the animated view is leaking but it wouldn\u2019t be able to find the leak and instead would report it as an unreachable object: An unreachable object is still in memory but LeakCanary could not find a strong reference path from GC roots.</p> <p>LeakCanary now reports the leak and adds animator state information, helping detect and fix any infinite <code>ObjectAnimator</code>.</p> <pre><code>\u252c\u2500\u2500\u2500\n\u2502 GC Root: Thread object\n\u2502\n\u251c\u2500 java.lang.Thread instance\n\u2502    Leaking: NO (the main thread always runs)\n\u2502    Thread name: 'main'\n\u2502    \u2193 Thread.threadLocals\n\u2502             ~~~~~~~~~~~~\n...\n\u251c\u2500 android.animation.ObjectAnimator instance\n\u2502    Leaking: UNKNOWN\n\u2502    mListeners = null\n\u2502    mPropertyName = null\n\u2502    mProperty.mName = alpha\n\u2502    mProperty.mType = java.lang.Float\n\u2502    mInitialized = true\n\u2502    mStarted = true\n\u2502    mRunning = true\n\u2502    mAnimationEndRequested = false\n\u2502    mDuration = 100\n\u2502    mStartDelay = 0\n\u2502    mRepeatCount = INFINITE (-1)\n\u2502    mRepeatMode = REVERSE (2)\n\u2502    \u2193 ObjectAnimator.mTarget\n\u2502                     ~~~~~~~\n\u2570\u2192 android.widget.Button instance\n     Leaking: YES (View.mContext references a destroyed activity)\n</code></pre> <p>To learn more, see this AOSP issue: ObjectAnimator.mTarget weak ref creates memory leaks on infinite animators.</p>"},{"location":"changelog/#leak-detection-in-tests","title":"Leak detection in tests","text":"<p>Previous releases of <code>leakcanary-android-instrumentation</code> introduced a <code>FailTestOnLeakRunListener</code> which could run leak detection after each UI tests. Unfortunately <code>FailTestOnLeakRunListener</code> relied on a hack around <code>androidx.test</code> internals to report failures. The internals keep changing with every <code>androidx.test</code> release and breaking <code>FailTestOnLeakRunListener</code> \ud83d\ude2d.</p> <p><code>FailTestOnLeakRunListener</code> is now deprecated (\ud83d\udc4b) and replaced by the <code>DetectLeaksAfterTestSuccess</code> test rule, which you can add to your test like any normal test rule.</p> <p>Additionally, you can call <code>LeakAssertions.assertNoLeak()</code> from anywhere in your instrumentation tests. You can also annotate tests with <code>@SkipLeakDetection</code> (for that to work you\u2019ll also need to set up the <code>TestDescriptionHolder</code> test rule).</p> <pre><code>class CartTest {\n@get:Rule\nval rules = RuleChain.outerRule(TestDescriptionHolder)\n.around(DetectLeaksAfterTestSuccess())\n.around(ActivityScenarioRule(CartActivity::class.java))\n\n@Test\nfun addItemToCart() {\n// ...\n}\n\n@SkipLeakDetection(\"See #1234\")\n@Test\nfun removeItemFromCart() {\n// ...\n}\n}\n</code></pre>"},{"location":"changelog/#android-12","title":"Android 12","text":"<p>Hopefully this time we fixed everything that Android 12 broke: missing <code>exported:true</code> tags, missing pending intent flags, and <code>ForegroundServiceStartNotAllowedException</code> crashes. If not, let us know! Can\u2019t wait for Android 13 to break everything again \ud83e\udd2c.</p>"},{"location":"changelog/#workmanager","title":"WorkManager","text":"<p>Running an Android Service without crashing (<code>ForegroundServiceStartNotAllowedException</code>\u2026) is becoming harder with every release of Android, so I got rid of the LeakCanary heap analyzer service! Instead, LeakCanary leverages WorkManager if you already have it as a dependency. If you don\u2019t use WorkManager, then LeakCanary will fall back to using a simple thread.</p> <p>Note: I recommend using at least WorkManager 2.7.0 as it adds the <code>WorkRequest.Builder.setExpedited()</code> API which LeakCanary leverages if available.</p>"},{"location":"changelog/#multi-process","title":"Multi process","text":"<p>Switching to WorkManager also impacts the LeakCanary multi process approach, which now leverages WorkManager remote jobs. Blog on how I got this working: WorkManager multi-process for libraries.</p> <p>Multi process is harder to get right so you should only use this if LeakCanary frequently runs out of memory while performing the heap analysis. Here are the updated set up steps:</p> <p>1) Add the <code>leakcanary-android-process</code> dependency and keep the <code>leakcanary-android</code> dependency.</p> <pre><code>dependencies {\ndebugImplementation 'com.squareup.leakcanary:leakcanary-android:2.8'\ndebugImplementation 'com.squareup.leakcanary:leakcanary-android-process:2.8'\n}\n</code></pre> <p>2) Skip the initialization code in the <code>Application</code> class</p> <pre><code>class ExampleApplication : Application() {\n\noverride fun onCreate() {\nif (LeakCanaryProcess.isInAnalyzerProcess(this)) {\nreturn\n}\nsuper.onCreate()\n// normal init goes here, skipped in :leakcanary process.\n}\n}\n</code></pre> <p>That\u2019s it! Note that event listeners (see below) related to the analysis will fire in the remote process.</p>"},{"location":"changelog/#androidx-app-startup","title":"AndroidX App Startup","text":"<p>LeakCanary now optionally supports the AndroidX App Startup library. All you need to do is replace the <code>leakcanary-android</code> dependency with <code>leakcanary-android-startup</code>:</p> <pre><code>dependencies {\n// Remove the normal leakcanary-android dependency\n// debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.8'\ndebugImplementation 'com.squareup.leakcanary:leakcanary-android-startup:2.8'\n}\n</code></pre> <p>Note 1: <code>leakcanary-android</code> adds the code for automatic installl to <code>leakcanary-android-core</code>. If you\u2019re calling <code>AppWatcher.manualInstall()</code>, you can depend directly on <code>leakcanary-android-core</code> instead of <code>leakcanary-android</code>, and you won\u2019t need the disable any automatic install.</p> <p>Note 2: the same principle applies to <code>leakcanary-object-watcher-android</code>: it depends on <code>leakcanary-object-watcher-android-core</code> and adds automatic install, while <code>leakcanary-object-watcher-android-startup</code> leverages the App Startup library. Same for <code>plumber-android</code>, <code>plumber-android-core</code> and  <code>plumber-android-startup</code>.</p>"},{"location":"changelog/#event-listeners","title":"Event listeners","text":"<p><code>LeakCanary.Config</code> has a new <code>eventListeners</code> field allowing you to react to LeakCanary\u2019s lifecycle. If you want to customize this, you most likely should be keeping the default list of listeners and add or remove from it.</p> <p>For example, if you want to disable the LeakCanary toast:</p> <pre><code>LeakCanary.config = LeakCanary.config.run {\ncopy(\neventListeners = eventListeners.filter {\nit !is ToastEventListener\n}\n)\n}\n</code></pre> <p>If you want to upload heap analysis results:</p> <pre><code>LeakCanary.config = LeakCanary.config.run {\ncopy(\neventListeners = eventListeners + EventListener { event -&gt;\nif (event is HeapAnalysisSucceeded) {\n// Upload event.heapAnalysis\n}\n}\n)\n}\n</code></pre> <p>Note: <code>Leakcanary.Config.onHeapAnalyzedListener</code> still works but is now deprecated.</p> <p>Feedback welcome on this new API!</p>"},{"location":"changelog/#other-bug-fixes-and-improvements_3","title":"Other bug fixes and improvements \ud83d\udc1b\ud83d\udd28","text":"<ul> <li>#2096 Opening / sharing heap dump files now supports LeakCanary as an option.</li> <li>#2210 First Compose dedicated object inspectors!</li> <li>#2121 Support for customizing the heap dumper.</li> </ul> <p>This list reflects only a subset of all changes. For more details, see the 2.8 Milestone and the full diff.</p>"},{"location":"changelog/#version-27-2021-03-26","title":"Version 2.7 (2021-03-26)","text":"<p>Please thank @chao2zhang, @ihrupin, @jzbrooks, @msfjarvis, @reneargento, @Unpublished for their contributions, bug reports and feature requests \ud83d\ude4f \ud83d\ude4f \ud83d\ude4f.</p>"},{"location":"changelog/#finer-grained-root-view-watching","title":"Finer grained root view watching","text":"<p>In version 2.6, LeakCanary added detection of root views retained after  <code>View.onDetachedFromWindow()</code>. This helps find more leaks, but unfortunately some Android widgets keep a detached root view around to reattach it later (e.g. spinner). App developers also sometimes do the same with dialogs, keeping a single instance around and calling <code>show()</code> and <code>hide()</code> as needed. As a result, LeakCanary would report leaks that were actually not leaks.</p> <p>In version 2.7, the default behavior changed: LeakCanary will continue to detect leaks of toasts, but will ignore root views created by a PopupWindow (which is what Android widgets use). It will also ignore root views created by a dialog by default, and you can turn this back on by setting the <code>leak_canary_watcher_watch_dismissed_dialogs</code> resource boolean to true:</p> <pre><code>&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\n&lt;resources&gt;\n&lt;bool name=\"leak_canary_watcher_watch_dismissed_dialogs\"&gt;true&lt;/bool&gt;\n&lt;/resources&gt;\n</code></pre> <p>This is implemented using a new Square library: Curtains.</p>"},{"location":"changelog/#targeting-android-12","title":"Targeting Android 12","text":"<p>We fixed two issues for apps that want to target Android 12:</p> <ul> <li>#2074 Activities that use intent filters must declare the <code>android:exported</code> attribute.</li> <li>#2079 PendingIntent requires the <code>FLAG_IMMUTABLE</code> flag.</li> </ul>"},{"location":"changelog/#bug-fixes-and-improvements","title":"Bug fixes and improvements \ud83d\udc1b\ud83d\udd28","text":"<ul> <li>#2075 Fixed crash when sharing heap dumps.</li> <li>#2067 Fixed crash when opening leaks from older versions (before 2.6) of LeakCanary.</li> <li>#2049 Fixed Plumber crash due to R8 shaking AndroidLeakFixes.</li> <li>#2084 Fixed Shark crash when used from multiple threads.</li> <li>#2054 \ud83d\ude48\ud83d\ude49\ud83d\ude4a Blocked Monkeys from deleting leaks.</li> <li>#2069 Added X button to the root leak activity (for custom devices with no back button)</li> <li>#2091 Added receiver details if LoadedApk shows up in the leaktrace.</li> <li>#2083 Added service status details (created or not) to leaktrace.</li> <li>#2099 Retry button if analysis fails.</li> <li>#2066 When heap analysis in UI tests is skipped and NoAnalysis is returned, NoAnalysis now includes a reason to help debug why it didn\u2019t run.</li> <li>#2000 The LeakCanary CI now leverages GitHub actions instead of Travis.</li> </ul> <p>For more details, see the 2.7 Milestone and the full diff.</p>"},{"location":"changelog/#version-26-christmas-release-2020-12-24","title":"Version 2.6 - Christmas Release \ud83c\udf84 (2020-12-24)","text":"<p>Please thank @chao2zhang, @ChaosLeung, @LitterSun, @mickverm, @opatry, @Thomas-Vos, @tricknology, @rahul-a, @samoylenkodmitry, @sing0055, @ubiratansoares for their contributions, bug reports and feature requests \ud83d\ude4f \ud83d\ude4f \ud83d\ude4f.</p> <p>This Christmas Release includes several external contributions and a bunch of cool new features! \ud83c\udf81\ud83c\udf81</p>"},{"location":"changelog/#detecting-root-views-retained-after-viewondetachedfromwindow","title":"Detecting root views retained after <code>View.onDetachedFromWindow()</code>","text":"<p>On Android, every displayed view hierarchy is attached to a window, whether it be the view hierarchy of an activity, a dialog, a toast or a chat head. After a view hierarchy is detached from its window, it should be garbage collected.</p> <p>LeakCanary already detects leaks of activity view hierarchies because retained detached views reference their activity context and LeakCanary detects activities retained after <code>Activity.onDestroy()</code>. In this new release, LeakCanary will now detect the leak of a dialog view hierarchy as soon as that dialog is dismissed, or any other view that is passed to WindowManager.removeView().</p>"},{"location":"changelog/#detecting-services-retained-after-serviceondestroy","title":"Detecting services retained after <code>Service.onDestroy()</code>","text":"<p>After an Android service is destroyed, it should be garbage collected. Unfortunately, the Android SDK does not provide any generic API to observe the service lifecycle. We worked around that using reflection on greylist APIs (details in #2014). Let\u2019s hope this motivates the Android team to build the APIs developers need.</p>"},{"location":"changelog/#configuring-retained-object-detection","title":"Configuring retained object detection","text":"<p>With the detection of 2 new types of retained objects, we\u2019re also adding APIs to configure which watchers should be installed as well as adding filtering capabilities.</p> <p>First, disable the automatic install:</p> <pre><code>&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\n&lt;resources&gt;\n&lt;bool name=\"leak_canary_watcher_auto_install\"&gt;false&lt;/bool&gt;\n&lt;/resources&gt;\n</code></pre> <p>Then you can install LeakCanary manually. LeakCanary 2.6 comes with 4 watchers installed by default: <code>ActivityWatcher</code>, <code>FragmentAndViewModelWatcher</code>, <code>RootViewWatcher</code>, <code>ServiceWatcher</code>. Here\u2019s an example to get all the default watchers except <code>ServiceWatcher</code>:</p> <pre><code>class DebugExampleApplication : ExampleApplication() {\n\noverride fun onCreate() {\nsuper.onCreate()\n\nval watchersToInstall = AppWatcher.appDefaultWatchers(application)\n.filter { it !is ServiceWatcher }\n\nAppWatcher.manualInstall(\napplication = application,\nwatchersToInstall = watchersToInstall\n)\n}\n}\n</code></pre> <p>LeakCanary introduces a new functional (SAM) interface implemented by <code>ObjectWatcher</code>: <code>ReachabilityWatcher</code>, with a <code>ReachabilityWatcher.expectWeaklyReachable()</code> method that replaces the now deprecated <code>ObjectWatcher.watch()</code> method. You can create the default watcher instances with a custom <code>ReachabilityWatcher</code> that delegates to <code>AppWatcher.objectWatcher</code> but filters out specific instances (e.g. <code>BadSdkLeakingFragment</code>):</p> <pre><code>class DebugExampleApplication : ExampleApplication() {\n\noverride fun onCreate() {\nsuper.onCreate()\n\nval delegate = ReachabilityWatcher { watchedObject, description -&gt;\nif (watchedObject !is BadSdkLeakingFragment) {\nAppWatcher.objectWatcher.expectWeaklyReachable(watchedObject, description)\n}\n}\n\nval watchersToInstall = AppWatcher.appDefaultWatchers(application, delegate)\n\nAppWatcher.manualInstall(\napplication = application,\nwatchersToInstall = watchersToInstall\n)\n}\n}\n</code></pre> <p>With these new configuration options, <code>AppWatcher.config</code> is now deprecated and a no-op.</p>"},{"location":"changelog/#dumping-the-heap-on-screen-off","title":"Dumping the heap on screen off","text":"<p>The default threshold to dump the heap is 5 retained objects when the app is visible, and 1 retained object when the app is not visible. Up until now, visible meant \u201cthe app has at least one activity in started state\u201d. In LeakCanary 2.6, the app will now be considered not visible if the device screen is off, lowering the threshold to trigger heap dumps when you turn off the device screen.</p>"},{"location":"changelog/#leakcanary-for-releases","title":"LeakCanary for releases","text":"<p>LeakCanary 2.6 introduces a new artifact: <code>leakcanary-android-release</code>. This artifact exposes APIs to run a heap analysis in release builds, in production.</p> <p>Danger</p> <p>Everything about this is experimental. Running a heap analysis in production is not a very common thing to do, and we\u2019re still learning and experimenting with this. Also, both the artifact name and the APIs may change.</p> <pre><code>dependencies {\n// debugImplementation because LeakCanary should only run in debug builds.\ndebugImplementation 'com.squareup.leakcanary:leakcanary-android:2.6'\n\n// NEW: LeakCanary for releases!\nreleaseImplementation 'com.squareup.leakcanary:leakcanary-android-release:2.6'\n// Optional: detect retained objects. This helps but is not required.\nreleaseImplementation 'com.squareup.leakcanary:leakcanary-object-watcher-android:2.6'\n}\n</code></pre> <p>Here\u2019s a code example that runs a heap analysis when the screen is turned off or the app enters background, checking first if a Firebase Remote Config flag is turned on, and uploading the result to Bugsnag:</p> <pre><code>class ReleaseExampleApplication : ExampleApplication() {\n\n// Cancels heap analysis if \"heap_analysis_flag\" is false.\nprivate val flagInterceptor by lazy {\nobject : HeapAnalysisInterceptor {\n\nval remoteConfig: FirebaseRemoteConfig = TODO()\n\noverride fun intercept(chain: Chain): HeapAnalysisJob.Result {\nif (remoteConfig.getBoolean(\"heap_analysis_flag\")) {\nchain.job.cancel(\"heap_analysis_flag false\")\n}\nreturn chain.proceed()\n}\n}\n}\n\nprivate val analysisClient by lazy {\nHeapAnalysisClient(\n// Use private app storage. cacheDir is never backed up which is important.\nheapDumpDirectoryProvider = { cacheDir },\n// stripHeapDump: remove all user data from hprof before analysis.\nconfig = HeapAnalysisConfig(stripHeapDump = true),\n// Default interceptors may cancel analysis for several other reasons.\ninterceptors = listOf(flagInterceptor) + HeapAnalysisClient.defaultInterceptors(this)\n)\n}\n\nprivate val analysisExecutor by lazy {\nExecutors.newSingleThreadExecutor {\nthread(start = false, name = \"Heap analysis executor\") {\nandroid.os.Process.setThreadPriority(THREAD_PRIORITY_BACKGROUND)\nit.run()\n}\n}\n}\n\nprivate val analysisCallback: (Result) -&gt; Unit by lazy {\nval uploader = BugsnagHeapAnalysisUploader(this@ReleaseExampleApplication)\n{ result -&gt;\nif (result is Done) {\nuploader.upload(result.analysis)\n}\n}\n}\n\noverride fun onCreate() {\nsuper.onCreate()\n\n// Delete any remaining heap dump (if we crashed)\nanalysisExecutor.execute {\nanalysisClient.deleteHeapDumpFiles()\n}\n\n// Starts heap analysis on background importance\nBackgroundTrigger(\napplication = this,\nanalysisClient = analysisClient,\nanalysisExecutor = analysisExecutor,\nanalysisCallback = analysisCallback\n).start()\n\n// Starts heap analysis when screen off\nScreenOffTrigger(\napplication = this,\nanalysisClient = analysisClient,\nanalysisExecutor = analysisExecutor,\nanalysisCallback = analysisCallback\n).start()\n}\n\n/**\n   * Call this to trigger heap analysis manually, e.g. from\n   * a help button.\n   *\n   * This method returns a `HeapAnalysisJob` on which you can\n   * call `HeapAnalysisJob.cancel()` at any time.\n   */\nfun triggerHeapAnalysisNow(): HeapAnalysisJob {\nval job = analysisClient.newJob()\nanalysisExecutor.execute {\nval result = job.execute()\nanalysisCallback(result)\n}\nreturn job\n}\n}\n</code></pre> <p>The Bugsnag uploader:</p> <pre><code>class BugsnagHeapAnalysisUploader(applicationContext: Application) {\n\nprivate val bugsnagClient: Client\n\ninit {\nbugsnagClient = Client(\napplicationContext,\nBUGSNAG_API_KEY,\nDO_NOT_ENABLE_EXCEPTION_HANDLER\n)\nbugsnagClient.setSendThreads(false)\n}\n\nfun upload(heapAnalysis: HeapAnalysis) {\nwhen (heapAnalysis) {\nis HeapAnalysisSuccess -&gt; {\nval exception = HeapAnalysisReport()\nbugsnagClient.notify(exception) { report -&gt;\nval metaData = report.error.metaData\nmetaData.addToTab(\"Heap Analysis\", \"result\", heapAnalysis.toString())\n}\n}\nis HeapAnalysisFailure -&gt; {\n// Please file any reported failure to\n// https://github.com/square/leakcanary/issues\nbugsnagClient.notify(heapAnalysis.exception)\n}\n}\n}\n\n// Exception with fake unique stacktrace to send all reports to the same error entry.\nclass HeapAnalysisReport : Exception(\"Check the HEAP ANALYSIS tab\") {\noverride fun fillInStackTrace(): Throwable {\nstackTrace = arrayOf(\nStackTraceElement(\n\"HeapAnalysisReport\",\n\"analyzeHeap\",\n\"HeapAnalysisReport.kt\",\n1\n)\n)\nreturn this\n}\n}\n\ncompanion object {\nprivate const val BUGSNAG_API_KEY = YOUR_BUGSNAG_API_KEY\nprivate const val DO_NOT_ENABLE_EXCEPTION_HANDLER = false\n}\n}\n</code></pre>"},{"location":"changelog/#more-leak-fixes-in-plumber","title":"More leak fixes in Plumber","text":"<p>We added 3 new automatic fixes for known AOSP leaks in <code>plumber-android</code> (details: #1993). As a reminder, <code>plumber-android</code> is automatically included when you add <code>leakcanary-android</code>, and you can add it manually for build types that don\u2019t include LeakCanary:</p> <pre><code>dependencies {\n  // leakcanary-android adds plumber-android to debug builds\n  debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.6'\n\n  // This adds plumber-android to all build types\n  implementation 'com.squareup.leakcanary:plumber-android:2.6'\n}\n</code></pre>"},{"location":"changelog/#bug-fixes-and-improvements_1","title":"Bug fixes and improvements \ud83d\udc1b\ud83d\udd28","text":"<ul> <li>#1948 Leakcanary is now compiled against Kotlin 1.4 (while staying 1.3 compatible) to support Functional (SAM) interfaces.</li> <li>#1956 The retained object size is displayed as a human readable output (KB, MB, \u2026).</li> <li>#1976 Improved default object inspectors and leak finders for <code>View</code> and <code>Context</code>.</li> <li>#1972 Fields are printed with the parent class name that holds the field in leak traces.</li> <li>#1981 Fixed StrictMode policy violation (main thread read from disk).</li> <li>#1977 Report objects that are not strongly reachable.</li> <li>#2018 &amp; #2019 Fixed crashes in LeakCanary UI (discovered by Monkey tests).</li> <li>#2015 Fixed crash on Android &lt; 16.</li> <li>#2023 Fixed crash in plugin projects.</li> </ul> <p>For more details, see the 2.6 Milestone and the full diff.</p>"},{"location":"changelog/#version-25-2020-10-01","title":"Version 2.5 (2020-10-01)","text":"<p>Please thank @Amokrane, @Armaxis, @askont, @chao2zhang, @daniil-shevtsov, @eygraber, @msfjarvis, @mzgreen, @lchen8, @rpattabi, @sahil2441, @SylvainGirod, @vhow for their contributions, bug reports and feature requests \ud83d\ude4f \ud83d\ude4f \ud83d\ude4f.</p>"},{"location":"changelog/#heap-analysis-is-twice-as-fast","title":"Heap analysis is twice as fast \ud83d\udc24\ud83d\udca8","text":"<p>No one asked, so we delivered! We rewrote several core components in Shark (LeakCanary\u2019s heap analyzer) to dramatically reduce IO reads and allocations while keeping memory constant. More details on Twitter: thread by @ArtemChubaryan and thread by @Piwai.</p>"},{"location":"changelog/#compute-retained-size-within-the-leak-trace","title":"Compute retained size within the leak trace","text":"<p>Previously, LeakCanary computed the retained size for the leaking object (the last object in the leak trace). However, the bad reference causing objects to leak is often higher up in the leak trace and everything that it holds onto is actually leaking. So LeakCanary now computes the retained size for all the objects in the leaktrace that have a LEAKING or UNKNOWN status:</p> <pre><code>\u252c\u2500\u2500\u2500\n\u2502 GC Root: System class\n\u2502\n\u251c\u2500 com.example.MySingleton class\n\u2502    Leaking: NO (a class is never leaking)\n\u2502    \u2193 static MySingleton.leakedView\n\u2502                         ~~~~~~~~~~\n\u251c\u2500 android.widget.TextView instance\n\u2502    Leaking: YES (View.mContext references a destroyed activity)\n\u2502    Retaining 46326 bytes in 942 objects\n\u2502    \u2193 TextView.mContext\n\u2570\u2192 com.example.MainActivity instance\n\u200b     Leaking: YES (Activity#mDestroyed is true)\n\u200b     Retaining 1432 bytes in 36 objects\n</code></pre>"},{"location":"changelog/#disable-leakcanary-from-the-ui","title":"Disable LeakCanary from the UI","text":"<p>New toggle to disable heap dumping, which can be useful for QA, or when doing a product demo. LeakCanary will still show a notification when an object is retained.</p> <p></p>"},{"location":"changelog/#deobfuscating-hprof-files","title":"Deobfuscating hprof files","text":"<p>The Shark CLI can now deobfuscate heap dumps:</p> <pre><code>brew install leakcanary-shark\n\nshark-cli --hprof heapdump.hprof -m mapping.txt deobfuscate-hprof\n</code></pre>"},{"location":"changelog/#bug-fixes-and-improvements_2","title":"Bug fixes and improvements \ud83d\udc1b\ud83d\udd28","text":"<ul> <li>Heap analysis text results now wrap to a max width when sharing them from the LeakCanary activity or printing to logcat. This will make it harder to miss details that are lost at the end of long lines of text.</li> <li>The <code>leak_canary_watcher_auto_install</code>, <code>leak_canary_allow_in_non_debuggable_build</code> and <code>leak_canary_plumber_auto_install</code> resource booleans were meant to be public.</li> <li>We sprinkled a few <code>@JvmStatic</code> to help Java consummers.</li> <li>Fixed crash when no browser installed.</li> <li>Use distinct group for LeakCanary notifications.</li> <li>The heap analysis result now includes the heap dump duration because it looks like Android 11 heap dumps are sometimes super slow. We also added more perf related metrics.</li> <li>Disable logging when AppWatcher runs in release builds.</li> <li>Highlight library leak patterns directly within the leak traces.</li> <li>Improved inspections for Context, View and ContextImpl.</li> </ul> <p>For more details, see the 2.5 Milestone and the full diff.</p>"},{"location":"changelog/#version-24-2020-06-10","title":"Version 2.4 (2020-06-10)","text":"<p>Please thank @0x109, @andersu, @antoniomerlin, @bishiboosh, @ckesc, @jrodbx, @LouisCAD, @marcardar, @OlivierGenez, @pyricau, @runningcode, @seljad, @worldsnas for their contributions, bug reports and feature requests.</p>"},{"location":"changelog/#plumber-android-is-a-new-artifact-that-fixes-known-android-leaks","title":"<code>plumber-android</code> is a new artifact that fixes known Android leaks \ud83d\udebd\ud83d\udd27","text":"<p>LeakCanary reports all leaks, including leaks caused by a known bug in 3rd party code that you do not have control over (reported as Library leaks). That can be annoying! LeakCanary now ships with a new dependency, <code>plumber-android</code>, which performs hacks at runtime to fix some of these known leaks. This releases has fixes for 11 known leaks, but this is just the beginning. Contributions welcome! \ud83d\ude4f</p> <p>Note that since the <code>leakcanary-android</code> dependency is usually added as a <code>debugImplementation</code> dependency, the <code>plumber-android</code> is transitively added only in debug builds, so it will not fix leaks in your release builds. You can add the dependency directly as <code>implementation</code> to get these fixes in release builds as well:</p> <pre><code>dependencies {\nimplementation 'com.squareup.leakcanary:plumber-android:2.4'\n}\n</code></pre> <p>Warning</p> <p>While several of these fixes already ship in release builds of Square apps, this is the first official release of <code>plumber-android</code>, so you should consider it experimental.</p>"},{"location":"changelog/#analyzing-leaks-from-the-cli-is-easier-than-ever","title":"Analyzing leaks from the CLI is easier than ever \ud83c\udf7a","text":"<p>The Shark CLI can now be installed via Homebrew</p> <pre><code>brew install leakcanary-shark\n</code></pre> <p>You can then look for leaks in apps on any connected device, for example:</p> <pre><code>$ shark-cli --device emulator-5554 --process com.example.app.debug analyze\n</code></pre>"},{"location":"changelog/#support-for-android-test-orchestrator","title":"Support for Android Test Orchestrator \ud83c\udfbc","text":"<p>If you set up LeakCanary to report test failures when detecting leaks in instrumentation tests, it now works with Android Test Orchestrator as well. No change required, LeakCanary will automatically detect thatAndroid Test Orchestrator is running and hook into it.</p>"},{"location":"changelog/#no-more-master-branch","title":"No more <code>master</code> branch","text":"<p>The branch name <code>master</code> comes from the master / slave terminology. We renamed the default branch to <code>main</code>, a small step towards making the LeakCanary community a safer space. Here\u2019s a good thread on this topic.</p>"},{"location":"changelog/#bug-fixes-and-improvements_3","title":"Bug fixes and improvements \ud83d\udc1b\ud83d\udd28","text":"<ul> <li>URLs in Library Leak descriptions are now clickable</li> <li>Fixed ordering issues causing improper config with manual setup. A related change is that <code>AppWatcher.Config.enabled</code> is now deprecated.</li> <li>Fixed possible OutOfMemoryError failure when computing retained size: we were loading to memory large arrays from the heap dump just to get their size.</li> </ul> <p>For more details, see the 2.4 Milestone and the full diff.</p>"},{"location":"changelog/#version-23-2020-04-08","title":"Version 2.3 (2020-04-08)","text":"<p>This is a minor release on the feature front, but a large release on the documentation front!</p> <p>Many thanks to @adamfit, @Amokrane, @Armaxis, @artnc, @burakeregar, @ClaasJG, @clementcontet, @ckesc, @cketti, @fbenbassat, @Guneetgstar, @Igorxp5, @JLLeitschuh, @KidAndroid, @ligi, @mzgreen, @pyricau, @sprintuu, @tevjef, @thrlr123 for the contributions, bug reports and feature requests.</p> <p>We asked for help and immediately started seeing more contributions. Thanks all! Check out the How to help page.</p>"},{"location":"changelog/#leakcanary-will-now-crash-in-release-builds","title":"LeakCanary will now crash in release builds","text":"<p>Despite the documentation insisting on using <code>debugImplementation</code>, we\u2019ve seen apps ship LeakCanary in release builds. Mistakes happen, so we\u2019ve made that mistake harder to miss by making LeakCanary crash when included in release builds.</p> <p>Learn More: LeakCanary in release builds.</p>"},{"location":"changelog/#doc-site","title":"Doc site \ud83d\udec0\ud83d\udca5","text":"<p>The doc site content has changed quite a bit! We applied advice from Google\u2019s tech writing guide. If you\u2019ve been confused by Library Leaks before, check out see the new Categorizing leaks section. Take a look around, let us know what you think.</p>"},{"location":"changelog/#bug-fixes-and-improvements_4","title":"Bug fixes and improvements \ud83d\ude09","text":"<ul> <li>The new deobfuscation Gradle plugin wasn\u2019t working with Gradle 3.6, this is now fixed. Also removed the requirement for the plugin to be applied after AGP.</li> <li>Fixed 2 crashes (#1768 &amp; #1769) in the LeakCanary UI found by a sneaky monkey runner \ud83d\ude48.</li> <li>The LeakCanary UI updates immediately when a heap analysis is added or deleted.</li> <li>Fixed a crash when updating from LeakCanary 2.0.</li> <li>The About section of the LeakCanary now surfaces whether heap dumping is currently enabled.</li> <li>Fixed process not exiting in SharkCLI on Windows.</li> <li>Improved error message when obfuscation mappings appear to be missing.</li> </ul> <p>For more details, see the 2.3 Milestone and the full diff.</p>"},{"location":"changelog/#version-22-2020-02-05","title":"Version 2.2 (2020-02-05)","text":"<p>We\u2019ve got some good stuff for the first release of the decade!</p> <p>Many thanks to @AndroidInternal, @Armaxis, @lic2050, @mzgreen, @orenktaboola, @personshelldon, @Plastix, @pyricau for the contributions, bug reports and feature requests.</p>"},{"location":"changelog/#viewmodel-leak-detection","title":"ViewModel leak detection","text":"<p>Android ViewModels are really cool! Their lifecycle is much nicer than fragments or activities, but sometimes mistakes happen. LeakCanary will now automatically detect ViewModel leaks and report any ViewModel instance retained after its <code>onCleared()</code> method was called.</p>"},{"location":"changelog/#android-tv","title":"Android TV","text":"<p>LeakCanary is finally coming to big screens near you! Best part - no additional setup is required, just enable it like you would for a mobile device. Now whenever there\u2019s a leak - you will see a helpful Toast appear with all the details. Make sure to check out our new Android TV section and chill!</p>"},{"location":"changelog/#java-friendly-config-builders","title":"Java-friendly Config builders","text":"<p>It was brought to our attention that configuring <code>LeakCanary</code> and <code>AppWatcher</code> was a miserable experience from Java code. Well, not anymore!</p> <p>Now you can use <code>LeakCanary.Config.Builder</code> and <code>AppWatcher.Config.Builder</code> to have idiomatic Java when updating the configurations. For example:</p> <pre><code>LeakCanary.Config config = LeakCanary.getConfig().newBuilder()\n  .retainedVisibleThreshold(3)\n  .computeRetainedHeapSize(false)\n  .build();\nLeakCanary.setConfig(config);\n</code></pre> <p>If you notice any other problems when using LeakCanary from Java, please file an issue! We take Java-interop seriously and will be happy to improve LeakCanary\u2019s API!</p> <p>For more details, see the 2.2 Milestone and the full diff.</p>"},{"location":"changelog/#version-21-2019-12-31","title":"Version 2.1 (2019-12-31)","text":"<p>A special New Year\u2019s Eve release \ud83e\udd73, the next release will be in another decade \ud83d\ude0e!</p> <p>Many thanks to @adamfit, @alexander-smityuk, @Armaxis, @BraisGabin, @devism, @ditclear, @jrodbx, @jstefanowski, @Maragues, @mzgreen, @pyricau for the contributions, bug reports and feature requests.</p>"},{"location":"changelog/#a-gradle-plugin-for-obfuscated-apps","title":"A Gradle plugin for obfuscated apps","text":"<p>It\u2019s fairly common for teams to have a QA build that is tested before making the release build. Usually that build will be obfuscated (via Proguard or R8), but also add LeakCanary to detect leaks during QA. This leads to obfuscated leak traces, which are hard to understand \ud83e\udd2f. Check out our new Gradle deobfuscation plugin and rejoice!</p>"},{"location":"changelog/#ui-twix-tweaks","title":"UI twix tweaks","text":"<p>In 2.0 we changed the LeakCanary UI and UX, and built a foundation on which 2.1 extends.</p> <p></p> <ul> <li>Since 2.0, Leaks are grouped by their distinct signature. In 2.1 there\u2019s a <code>New</code> tag that will show until you open up a leak. There\u2019s also a <code>Library Leak</code> tag for leaks that are known to be caused by a bug in the Android Framework or Google libraries, and the library leak description now shows up in the UI.</li> <li>The type of the Java objects (class, instance, array) is now displayed in the LeakTrace, e.g. see <code>FontsContract class</code> and <code>ExampleApplication instance</code> above.</li> <li>The type of the GC root now shows up at the root of the leak trace. Makes sense!</li> <li>The leak result notification has an importance now set to MAX so that it\u2019ll show up right in your face. If you turn it off, the canary will haunt you in your dreams \ud83d\udc24\ud83d\udc7b. To save your sanity and your device battery, automatic heap dumps now won\u2019t happen more often than once per minute.</li> <li>The resource id name for <code>View</code> instances is now displayed in the leak trace. You shouldn\u2019t look at the implementation.</li> </ul> <pre><code>\u251c\u2500 android.widget.TextView instance\n\u2502    View.mID = R.id.helper_text\n</code></pre>"},{"location":"changelog/#documentation-goodies","title":"Documentation goodies","text":"<ul> <li>The Fundamentals page was entirely rewritten, split into 3 pages and moved to its own tab. Please read it and provide feedback!</li> <li>At Square, we have been uploading leaks to Bugsnag for 3 years now, so that no leak ever gets missed. Follow this recipe!</li> <li>Did you know you can run LeakCanary in a JVM?</li> </ul>"},{"location":"changelog/#api-breaking-bettering-changes","title":"API breaking bettering changes","text":"<ul> <li>The APIs of the <code>Leak</code> and <code>LeakTrace</code> classes have significantly changed, e.g. all <code>LeakTrace</code> instances with an identical signature are grouped under the same Leak object. Despite these breaking changes, this release version is a minor update. Oh noes, what about semantic versioning \ud83d\ude31? Ask Don Quixote.</li> <li>You can now customize the way LeakCanary finds the leaking objects in the heap dump. For example, here\u2019s the configuration SharkCli uses to find leaks in heap dumps of apps that don\u2019t even have the LeakCanary dependency:</li> </ul> <pre><code>LeakCanary.config = LeakCanary.config.copy(\nleakingObjectFinder = FilteringLeakingObjectFinder(\nAndroidObjectInspectors.appLeakingObjectFilters\n)\n)\n</code></pre> <ul> <li>LeakCanary automatically disables itself in tests by detecting that the <code>org.junit.Test</code> is in the classpath. Unfortunately, some apps ship Junit in their app debug classpath (e.g. when using OkHttp MockWebServer). You can now customize which class is used to detect tests:</li> </ul> <pre><code>&lt;resources&gt;\n&lt;string name=\"leak_canary_test_class_name\"&gt;assertk.Assert&lt;/string&gt;\n&lt;/resources&gt;\n</code></pre>"},{"location":"changelog/#interactive-cli","title":"Interactive CLI","text":"<p>Shark CLI was rewritten on top of Clikt:</p> <pre><code>$ shark-cli\nUsage: shark-cli [OPTIONS] COMMAND [ARGS]...\n\n                 ^`.                 .=\"\"=.\n ^_              \\  \\               / _  _ \\\n\\ \\             {   \\             |  d  b  |\n{  \\           /     `~~~--__     \\   /\\   /\n {   \\___----~~'              `~~-_/'-=\\/=-'\\,\n  \\                         /// a  `~.      \\ \\\n  / /~~~~-, ,__.    ,      ///  __,,,,)      \\ |\n  \\/      \\/    `~~~;   ,---~~-_`/ \\        / \\/\n                   /   /            '.    .'\n                  '._.'             _|`~~`|_\n                                    /|\\  /|\\\n\nOptions:\n  -p, --process NAME              Full or partial name of a process, e.g.\n                                  \"example\" would match \"com.example.app\"\n-d, --device ID                 device/emulator id\n  -m, --obfuscation-mapping PATH  path to obfuscation mapping file\n  --verbose / --no-verbose        provide additional details as to what\n                                  shark-cli is doing\n  -h, --hprof FILE                path to a .hprof file\n  --help                          Show this message and exit\n\nCommands:\n  interactive   Explore a heap dump.\n  analyze       Analyze a heap dump.\n  dump-process  Dump the heap and pull the hprof file.\n  strip-hprof   Replace all primitive arrays from the provided heap dump with\n                arrays of zeroes and generate a new \"-stripped.hprof\" file.\n</code></pre> <p>There\u2019s a new <code>interactive</code> command which enables exploring the heap dump from the command line:</p> <pre><code>$ shark-cli -h heapdump.hprof interactive\nEnter command [help]:\nhelp\n\nAvailable commands:\n  analyze                   Analyze the heap dump.\n  class NAME@ID             Show class with a matching NAME and Object ID.\n  instance CLASS_NAME@ID    Show instance with a matching CLASS_NAME and Object\nID.\n  array CLASS_NAME@ID       Show array instance with a matching CLASS_NAME and\nObject ID.\n  -&gt;instance CLASS_NAME@ID  Show path from GC Roots to instance.\n  ~&gt;instance CLASS_NAME@ID  Show path from GC Roots to instance, highlighting\nsuspect references.\n  help                      Show this message.\n  exit                      Exit this interactive prompt.\n</code></pre> <p>We\u2019re currently exploring the idea of adding support for SQL queries, feedback welcome!</p> <p>For more details, see the 2.1 Milestone and the full diff.</p>"},{"location":"changelog/#version-20-2019-11-27","title":"Version 2.0 (2019-11-27)","text":"<p>In the past 7 months, LeakCanary went through 3 alphas and 5 betas, encompassing 23 contributors over 493 commits, 35826 insertions and 10156 deletions.</p>"},{"location":"changelog/#should-i-upgrade","title":"Should I upgrade?","text":"<p>YES! LeakCanary 2 is so much better, it might make you excited when you see a new memory leak. Follow the upgrade guide, you won\u2019t regret it!</p>"},{"location":"changelog/#so-whats-changed-since-163","title":"So, what\u2019s changed since 1.6.3?","text":"<p>Everything. The LeakCanary codebase went from ~6000 lines of Java to ~16000 lines of Kotlin, excluding comments &amp; blanks.</p> <p>Isn\u2019t Kotlin supposed to drastically reduce the amount of boilerplate code?</p> <p>Absolutely! And it did. But then, we wrote more code. LeakCanary used to depend on HAHA, a repackaging of perflib, the heap dump parser used by Android Studio. Unfortunately perflib was slow and used too much memory, so LeakCanary now includes its own heap dump parser: Shark. The extra code comes from Shark, but also from having a lot more automated tests, and an improved UI layer.</p> <p>One major difference: when the app is in foreground, LeakCanary 2 will not trigger on every retained instance. Instead it will wait until the app goes in background or to reach a threashold of 5 retained instances in foreground. The analysis will then find all the leaks at once, and group identical leaks in the results UI. Please read the Fundamentals section to learn more!</p>"},{"location":"changelog/#random-facts","title":"Random facts","text":"<ul> <li>You can customize the Leaks launcher icon and label: learn more here.</li> <li>If you ` press on your main activity launcher icon, you should see a LeakCanary dynamic shortcut. You can then long press that to drop it on your home screen, and the launcher shows that it\u2019s the leaks launcher for your app.</li> <li>Out of the box, LeakCanary tracks all fragments flavors: AOSP, Support Library and Android X.</li> <li>From within the leak screen, you can share a leak to stack overflow. You can also share a heap dump, or import and analyze a heap dump from another device.</li> <li>You can run LeakCanary from your computer command line, on any debuggable app even if that app doesn\u2019t have LeakCanary: learn more here.</li> <li>The new documentation is fully searchable and includes the API documentation. Try the search bar \u2934.</li> <li>A large 160Mb heap dump uses 2Gb memory when opening it in Android Studio, but only 40Mb with Shark.</li> </ul>"},{"location":"changelog/#changes-since-20-beta-5","title":"Changes since 2.0 Beta 5","text":"<ul> <li>Shark CLI supports multiple connected devices #1642</li> <li>Fixed missing sources from Maven Central #1643</li> <li>Updated notification icon to avoid confusion with Twitter DM notifications, and added icons to bottom navigation bar #1648</li> <li>Automatic leak detection for support library fragments #1611</li> </ul> <p>Many thanks to @AndreasBoehm, @jrodbx, @pyricau for the contributions, bug reports and feature requests.</p> <p>For more details, see the 2.0 Milestone and the full diff.</p>"},{"location":"changelog/#version-20-beta-5-2019-11-25","title":"Version 2.0 Beta 5 (2019-11-25)","text":"<ul> <li>Major bugfix: native gc roots were accidentally ignored in Beta 4, as a result some leaks were not found #1634</li> <li>Fixed Lint warning (<code>leak_canary_about_message</code> string triggered multiple substitutions warning) #1630</li> </ul> <p>Many thanks to @DanEdgarTarget, @msfjarvis, @PaulWoitaschek, @pyricau, @ZacSweers for the contributions, bug reports and feature requests.</p> <p>For more details, see the 2.0-beta-5 Milestone and the full diff.</p>"},{"location":"changelog/#version-20-beta-4-2019-11-18","title":"Version 2.0 Beta 4 (2019-11-18)","text":"<ul> <li>Improved string rendering for heap analysis results</li> <li>UX redesign #1445</li> <li>Support for pattern matching of native reference leaks #1562</li> <li>Added support for deobfuscation using Proguard mapping files in Shark #1499. This isn\u2019t directly supported in LeakCanary yet.</li> <li>Added support for extracting metadata from the heap dump (see the recipe) #1519</li> <li>Improved auto disabling of LeakCanary in Unit and UI tests #1552</li> <li>Several performance improvements when parsing heap dumps</li> <li>Fixed several bugs and crashes</li> <li>Added new known leak patterns</li> </ul> <p>Many thanks to @Armaxis, @BraisGabin, @bric3, @elihart, @fernandospr, @flickator, @gabrysgab, @JorgeDLS, @lannyf77, @msfjarvis, @mzgreen, @ozmium, @PaulWoitaschek, @pyricau, @shelpy, @vRallev, @ZacSweers for the contributions, bug reports and feature requests.</p> <p>For more details, see the 2.0-beta-4 Milestone and the full diff.</p>"},{"location":"changelog/#version-20-beta-3-2019-08-22","title":"Version 2.0 Beta 3 (2019-08-22)","text":"<ul> <li>Baseline memory usage for large hprofs divided by 3 and removed memory spikes #1543</li> <li>Fixed crash when LeakCanary is initialized from another process #1529</li> <li>Java local references are deprioritized to look for longer alternative paths #1525</li> <li>Fixed <code>JavaLocalPattern</code> not matching on Lollipop #1524</li> </ul> <p>Many thanks to @Armaxis, @elihart, @emartynov, @hmcgreevy-instil, @pyricau for the contributions, bug reports and feature requests.</p> <p>For more details, see the 2.0-beta-3 Milestone and the full diff.</p>"},{"location":"changelog/#version-20-beta-2-2019-08-02","title":"Version 2.0 Beta 2 (2019-08-02)","text":"<ul> <li>Fixed Leak analysis failed: Object id not found in heap dump. #1516</li> <li>10x speed increase of hprof indexing on large heap dumps #1520</li> </ul> <p>Many thanks to @kolphi, @pyricau, @ZacSweers for the contributions, bug reports and feature requests.</p> <p>For more details, see the 2.0-beta-2 Milestone and the full diff.</p>"},{"location":"changelog/#version-20-beta-1-2019-07-30","title":"Version 2.0 Beta 1 (2019-07-30)","text":"<ul> <li>New standalone library! Shark is the heap analyzer that powers LeakCanary 2, and it can run in any Java VM. It comes with a CLI: you can now run <code>shark-cli analyze-process com.example.myapp</code> from your computer.</li> <li>New Heap Explorer directly on device! Open a Heap Analysis in LeakCanary, tap the options menu and select \u201cHeap Explorer\u201d. This is still experimental and not very user friendly, contributions welcome!</li> <li>Large API rewrite to improve usability. If you used the alpha with a customized configuration, there are breaking changes. Of note: LeakSentry became AppWatcher, RefWatcher became ObjectWatcher, AndroidExcludedRefs became AndroidReferenceMatchers, AnalysisResultListener became OnHeapAnalyzedListener, AndroidLeakTraceInspectors became AndroidObjectInspectors.</li> <li>The entire API surface is now documented and the documentation is available on this website: see the LeakCanary API tab at the top.</li> <li>Removed the dependency on Android X. No more configuration issues! #1462</li> <li>Added Proguard rules for LeakCanary and ObjectWatcher. #1500</li> <li>Display LeakCanary version in the About screen. #1448</li> <li>Bug fixes, new reference matchers and object inspectors</li> </ul> <p>Many thanks to @arctouch-carlosottoboni, @jemaystermind, @kushagrakumar27, @pyricau, @snkashis for the contributions, bug reports and feature requests.</p> <p>For more details, see the 2.0-beta-1 Milestone and the full diff.</p>"},{"location":"changelog/#version-20-alpha-3-2019-07-04","title":"Version 2.0 Alpha 3 (2019-07-04)","text":"<ul> <li>#1401 LeakCanary can now import all hprof files created from prior LeakCanary versions.</li> <li>#1414 New API: <code>RefWatcher.retainedInstances</code> which returns the instances that are currently considered retained.</li> <li>#1419 New APIs: <code>LeakCanary.Config.maxStoredHeapDumps</code> (default 7) and <code>LeakCanary.Config.requestWriteExternalStoragePermission</code> (default false). LeakCanary won\u2019t ask for the external storage permission anymore by default.</li> <li>#1338 API change: <code>LeakCanary.Config.exclusionsFactory</code> replaced with <code>LeakCanary.Config.knownReferences</code> (simpler use), <code>LeakCanary.Config.leakInspectors</code> and <code>LeakCanary.Config.labelers</code> merged into <code>LeakCanary.Config.leakTraceInspectors</code> which provides access to the entire leak trace as well as a new graph oriented API that replaces the low level hprof parser API.</li> <li>#1382 LeakCanary now disables automatic heap dumping when running in AndroidX UI tests.</li> <li>#1424 API rename: <code>RefWatcher.hasRetainedReferences</code> =&gt; <code>RefWatcher.hasRetainedInstances</code>, <code>RefWatcher.retainedReferenceCount</code> =&gt; <code>RefWatcher.retainedInstanceCount</code>, <code>RefWatcher.hasWatchedReferences</code> =&gt; <code>RefWatcher.hasWatchedInstances</code>, <code>RefWatcher.removeKeysRetainedBeforeHeapDump</code> =&gt; <code>RefWatcher.removeInstancesRetainedBeforeHeapDump</code>, <code>RefWatcher.clearWatchedReferences</code> =&gt; <code>RefWatcher.clearWatchedInstances</code>.</li> <li>#1432 #1438 #1440 New \u201cwon\u2019t fix\u201d leaks and leak trace inspectors</li> <li>#1374 #1364 #1366 #1417 #1399 #1416 #1407 #1427 #1385 Bug and crash fixes</li> </ul> <p>Many thanks to @1step2hell, @afollestad, @ansman, @bjdodson, @BraisGabin, @EBfVince, @jaredsburrows, @pforhan, @pyricau, @tellypresence, @wiyarmir for the contributions, bug reports and feature requests.</p> <p>For more details, see the 2.0-alpha-3 Milestone and the full diff.</p>"},{"location":"changelog/#version-20-alpha-2-2019-05-21","title":"Version 2.0 Alpha 2 (2019-05-21)","text":"<ul> <li>#1040 Import and analyze hprof files from other devices</li> <li>#1344 Computing retained size</li> <li>#1325 New notification showing current count of retained instances</li> <li>#1079 \u201cExcluded\u201d leaks have been renamed to \u201cWon\u2019t fix\u201d leaks to clarify meaning.</li> <li>#1328 New leaks are called out in the UI.</li> <li>#1327 LeakSentry can be enabled / disabled and is automatically disabled in non debuggable builds.</li> <li>#1173 Experimental: now reporting leaks that only go through weak references (previously reported as \u201cno path to instance\u201d)</li> <li>#1339 Readded support for Thread name based exclusions</li> <li>#1312 Fixed bug causing LeakCanary to stop detecting leaks after the app is killed.</li> <li>#1310 #1313 #1314 #1340 #1337 Many API changes</li> <li>#1296 #1293 #1306 #1336 Fixed several crashes.</li> </ul> <p>Many thanks to @forrestbice, @Foso, @Goddchen, @marcosholgado, @orionlee, @pyricau, @satoshun, @ZacSweers for the contributions!</p> <p>For more details, see the 2.0-alpha-2 Milestone and the full diff.</p>"},{"location":"changelog/#version-20-alpha-1-2019-04-23","title":"Version 2.0 Alpha 1 (2019-04-23)","text":"<ul> <li>New logo, thanks @flickator!</li> <li>Entirely rewritten to 100% Kotlin</li> <li>Multiple leaks detected in one analysis<ul> <li>The heap is dumped when the app goes in the background, or when a minimum of 5 leaks is reached in the foreground.</li> </ul> </li> <li>Leak grouping<ul> <li>Leaks that share similar causes are grouped in the UI.</li> <li>New screens to see the list of groups and each group.</li> <li>Improved leaktrace strings to highlight leak causes.</li> <li>Leaks can be shared to Stack Overflow</li> </ul> </li> <li>New library: LeakSentry.<ul> <li>Detects when objects are leaking and triggers LeakCanary</li> <li>Can be used independently in production, for instance to report the number of leaking instances on an OutOfMemoryError crash.</li> </ul> </li> <li>New heap parser<ul> <li>Uses 90% less memory and 6 times faster than the prior heap parser.</li> <li>Runs in the same process as the app on a low priority thread.</li> <li>No more dependency on Perflib and TroveJ. New dependency on Okio.</li> <li>The old parser is still available as <code>leakcanary-android-perflib</code> but will be removed after alpha.</li> </ul> </li> <li>Labelers can add any string content to leak elements</li> <li>0 code setup, just add the one debug dependency.</li> <li>Simpler configuration options</li> <li>Updated from support library to Android X</li> </ul> <p>Many thanks to @BraisGabin, @colinmarsch, @jrodbx, @flickator, @JakeWharton, @pyricau, @WhatsEmo for the contributions!</p> <p>For more details, see the 2.0-alpha-1 Milestone and the full diff.</p>"},{"location":"changelog/#version-163-2019-01-10","title":"Version 1.6.3 (2019-01-10)","text":"<ul> <li>#1163 Fixed leaks being incorrectly classified as \u201cno leak\u201d due to missed GC Roots.</li> <li>#1153 <code>LeakCanary.isInAnalyzerProcess</code> now correctly returns true in the analyzer process prior to any first leak (could be triggered by starting the leak result activity).</li> <li>#1158 Stopped enabling DisplayLeakActivity when not using DisplayLeakService.</li> <li>#1135 Fixed IndexOutOfBoundsException for leak traces of size 1.</li> <li>#1163 Keep \u201cno leak\u201d heap dumps.</li> </ul> <p>Many thanks to @KMaragh, @pyricau, @SebRut for the code contributions!</p> <p>For more details, see the 1.6.3 Milestone and the full diff.</p>"},{"location":"changelog/#version-162-2018-10-16","title":"Version 1.6.2 (2018-10-16)","text":"<ul> <li>#1067 Fixed TransactionTooLargeException crash (leak analysis would never complete).</li> <li>#1061 Detection of Fragment view leaks after Fragment#onDestroyView().</li> <li>#1076 Added the FOREGROUND_SERVICE permission for Android P.</li> <li>#1062 The LeakCanary toast now always shows correctly. It doesn\u2019t show if there is no activity in foreground.</li> <li>#1115 Reenabled the DisplayLeakActivity icon on fresh installs.</li> <li>#1100 Added nullability annotations to improve Kotlin support.</li> <li>Updates to excluded leaks (commits).</li> <li>Updates to reachability inspectors (commits).</li> </ul> <p>Many thanks to @fractalwrench, @ZacSweers, @Goddchen, @igokoro, @IlyaGulya, @JakeWharton, @javmarina, @jokermonn, @jrodbx, @Parseus, @pyricau, @scottkennedy for the code contributions!</p>"},{"location":"changelog/#public-api-changes","title":"Public API changes","text":"<ul> <li>Subclasses of <code>AbstractAnalysisResultService</code> should now override <code>onHeapAnalyzed(@NonNull AnalyzedHeap analyzedHeap)</code> instead of <code>onHeapAnalyzed(@NonNull HeapDump heapDump, @NonNull AnalysisResult result)</code></li> </ul> <p>For more details, see the 1.6.2 Milestone and the full diff.</p>"},{"location":"changelog/#version-161-2018-06-21","title":"Version 1.6.1 (2018-06-21)","text":"<ul> <li>#727 Improved leak analysis: LeakCanary now identifies and highlights the potential causes of the leak.</li> <li>#1011 We noticed that computing the retained heap size could take a long time, so it\u2019s now optional and off by default.</li> <li>#633 Support for detecting leaks in instrumentation tests (see the wiki).</li> <li>#985 Ability to convert leak traces into stack traces for easy remote reporting (see the wiki).</li> <li>#983 Support for watching destroyed Fragments.</li> <li>#846 LeakCanary now uses foreground services and displays a notification when the analysis is in progress. This also fixes crashes when analyzing in background on O+.</li> <li>The LeakCanary icon (to start to DisplayLeakActivity) is now hidden by default, and only enabled after the first leak is found.</li> <li>#775 Fixed crash when sharing heap dumps on O+ and added a dependency to the support-core-utils library.</li> <li>#930 DisplayLeakActivity has a responsive icon.</li> <li>#685 Stopped doing IO on main thread in DisplayLeakActivity (fixes StrictMode errors).</li> <li>#999 Updated HAHA to 2.0.4, which uses Trove4j as an external dependency (from jcenter) instead of rebundling it. This is to clarify licences (Apache v2 vs LGPL 2.1).</li> <li>Several bug and crash fixes.</li> </ul> <p>Many thanks to @AdityaAnand1, @alhah, @christxph, @csoon03, @daqi, @JakeWharton, @jankovd, @jrodbx, @kurtisnelson, @NightlyNexus, @pyricau, @SalvatoreT, @shmuelr, @tokou, @xueqiushi  for the code contributions!</p> <p>Note: we made a 1.6 release but quickly followed up with 1.6.1 due to #1058.</p>"},{"location":"changelog/#public-api-changes_1","title":"Public API changes","text":"<ul> <li>The installed ref watcher singleton is now available via <code>LeakCanary.installedRefWatcher()</code></li> <li><code>AnalysisResult.leakTraceAsFakeException()</code> returns an exception that can be used to report and group leak traces to a tool like Bugsnag or Crashlytics.</li> <li>New <code>InstrumentationLeakDetector</code> and <code>FailTestOnLeakRunListener</code> APIs for detecting leaks in instrumentation tests.</li> <li>New <code>Reachability.Inspector</code> and <code>RefWatcherBuilder.stethoscopeClasses()</code> API to establish reachability and help identify leak causes.</li> <li>Watching activities can be disabled with <code>AndroidRefWatcherBuilder.watchActivities(false)</code>, watching fragments can be disabled with <code>AndroidRefWatcherBuilder.watchFragments(false)</code></li> <li><code>LeakCanary.setDisplayLeakActivityDirectoryProvider()</code> is deprecated and replaced with <code>LeakCanary.setLeakDirectoryProvider()</code></li> <li>New <code>RefWatcherBuilder.computeRetainedHeapSize()</code> API to enable the computing of the retained heap size (off by default).</li> </ul> <p>For more details, see the 1.6.1 Milestone and the full diff.</p>"},{"location":"changelog/#version-154-2017-09-22","title":"Version 1.5.4 (2017-09-22)","text":"<ul> <li>Restore Java 7 compatibility in leakcanary-watcher</li> </ul>"},{"location":"changelog/#version-153-2017-09-17","title":"Version 1.5.3 (2017-09-17)","text":"<ul> <li>Fix broken 1.5.2 build</li> <li>Convert leakcanary-watcher from Android library to Java library</li> <li>Disable finish animations in RequestStoragePermissionActivity</li> <li>Corrected README sample for Robolectric tests</li> </ul> <p>For more details, see the full diff.</p>"},{"location":"changelog/#version-152-2017-08-09","title":"Version 1.5.2 (2017-08-09)","text":"<ul> <li>New excluded leaks</li> <li>Move Leakcanary UI into leak analyzer process</li> <li>Ignore computing retained sizes for bitmaps on O+</li> <li>Add notification channel for persistent messages on O+</li> <li>Exclude permission activity from recents menu</li> <li>Updated README and sample for handling Robolectric tests</li> </ul> <p>For more details, see the full diff.</p>"},{"location":"changelog/#version-151-2017-04-25","title":"Version 1.5.1 (2017-04-25)","text":"<ul> <li>New excluded leaks</li> <li>Fix java.util.MissingFormatArgumentException in DisplayLeakService</li> <li>Separate task affinities for different apps</li> <li>Bump minSdk to 14</li> <li>Fix HahaHelper for O Preview</li> </ul> <p>For more details, see the full diff.</p>"},{"location":"changelog/#version-15-2016-09-28","title":"Version 1.5 (2016-09-28)","text":"<ul> <li>New excluded leaks</li> <li>Added <code>LeakCanary.isInAnalyzerProcess()</code> to the no-op jar</li> <li>Fixed several file access issues:<ul> <li>No more cleanup on startup, we rotate the heap dump files on every new heap dump.</li> <li>LeakCanary now falls back to the app directory until it can write to the external storage.</li> </ul> </li> <li>Leak notifications now each use a distinct notification instead of erasing each other.</li> <li>If LeakCanary can\u2019t perform a heap dump for any reason (e.g. analysis in progress, debugger attached), it retries later with an exponential backoff.</li> <li>Added confirmation dialog when user deletes all leaks.</li> <li>Replace the two LeakCanary configuration methods with a builder that provides more flexibility, see <code>LeakCanary.refWatcher()</code>.</li> </ul> <p>For more details, see the full diff.</p>"},{"location":"changelog/#public-api-changes_2","title":"Public API changes","text":"<ul> <li>New <code>HeapAnalyzer.findTrackedReferences()</code> method for headless analysis when you have no context on what leaked.</li> <li>Added <code>LeakCanary.isInAnalyzerProcess()</code> to the no-op jar</li> <li>Added <code>LeakCanary.refWatcher()</code> which returns an <code>AndroidRefWatcherBuilder</code> that extends <code>RefWatcherBuilder</code> and lets you fully customize the <code>RefWatcher</code> instance.</li> <li>Removed <code>LeakCanary.install(Application, Class)</code> and <code>LeakCanary.androidWatcher(Context, HeapDump.Listener, ExcludedRefs)</code>.</li> <li>Removed <code>R.integer.leak_canary_max_stored_leaks</code> and <code>R.integer.leak_canary_watch_delay_millis</code>, those can now be set via <code>LeakCanary.refWatcher()</code>.</li> <li>Updated the <code>LeakDirectoryProvider</code> API to centralize all file related responsibilities.</li> <li><code>RefWatcher</code> is now constructed with a <code>WatchExecutor</code> which executes a <code>Retryable</code>, instead of an <code>Executor</code> that executes a <code>Runnable</code>.</li> <li><code>HeapDumper.NO_DUMP</code> was renamed <code>HeapDumper.RETRY_LATER</code></li> </ul>"},{"location":"changelog/#version-14-2016-09-11","title":"Version 1.4 (2016-09-11)","text":"<ul> <li>Fix false negative where GC root is of type android.os.Binder #482</li> <li>Update HAHA to 2.0.3; clear compiler warnings #563</li> <li>Correct some mistakes in German translation #516</li> <li>Don\u2019t loop when storage permission denied #422</li> <li>Remove old references to \u201c__\u201d prefixed resources #477</li> <li>Fix permission crash for DisplayLeakActivity on M #382</li> <li>Fix NPE when thread name not found in heap dump #417</li> <li>Add version info to stacktrace #473</li> </ul>"},{"location":"changelog/#version-14-beta2-2016-03-23","title":"Version 1.4-beta2 (2016-03-23)","text":"<ul> <li>Add reason for ignoring to analysis result #365.</li> <li>Lower memory usage when parsing heap dumps on M #223.</li> <li>Fix NPE in LeakCanaryInternals.isInServiceProcess() #449.</li> <li>New ignored Android SDK leaks #297,#322.</li> <li>Use leakcanary-android-no-op in test builds #143.</li> <li>Fixes to allow LeakCanary to work with ProGuard #398.</li> <li>Optimize png assets #406.</li> <li>Fix delete button not working on error views #408.</li> <li>Add German translation #437.</li> </ul>"},{"location":"changelog/#version-14-beta1-2016-01-08","title":"Version 1.4-beta1 (2016-01-08)","text":"<ul> <li>Switched to HAHA 2.0.2 with uses Perflib instead of MAT under the hood #219. This fixes crashes and improves speed a lot.</li> <li>We can now parse Android M heap dumps #267, although there are still memory issues (see #223).</li> <li>Excluded leaks are now reported as well and available in the display leak activity.</li> <li>Added ProGuard configuration for #132.</li> <li>Many new ignored Android SDK leaks.</li> <li>Added excluded leaks to text report #119.</li> <li>Added LeakCanary SHA to text report #120.</li> <li>Added CanaryLog API to replace the logger: #201.</li> <li>Renamed all resources to begin with <code>leak_canary_</code> instead of <code>__leak_canary</code>#161</li> <li>No crash when heap dump fails #226.</li> <li>Add retained size to leak reports #162.</li> </ul>"},{"location":"changelog/#public-api-changes_3","title":"Public API changes","text":"<ul> <li>AnalysisResult.failure is now a <code>Throwable</code> instead of an <code>Exception</code>. Main goal is to catch and correctly report OOMs while parsing.</li> <li>Added ARRAY_ENTRY to LeakTraceElement.Type for references through array entries.</li> <li>Renamed <code>ExcludedRefs</code> fields.</li> <li>Each <code>ExcludedRef</code> entry can now be ignored entirely or \u201ckept only if no other path\u201d.</li> <li>Added support for ignoring all fields (static and non static) for a given class.</li> </ul>"},{"location":"changelog/#version-131-2015-05-16","title":"Version 1.3.1 (2015-05-16)","text":"<ul> <li>Heap dumps and analysis results are now saved on the sd card: #21.</li> <li><code>ExcludedRef</code> and <code>AndroidExcludedRefs</code> are customizable: #12 #73.</li> <li>7 new ignored Android SDK leaks: #1 #4 #32 #89 #82 #97.</li> <li>Fixed 3 crashes in LeakCanary: #37 #46 #66.</li> <li>Fixed StrictMode thread policy violations: #15.</li> <li>Updated <code>minSdkVersion</code> from <code>9</code> to <code>8</code>: #57.</li> <li>Added LeakCanary version name to <code>LeakCanary.leakInfo()</code>: #49.</li> <li><code>leakcanary-android-no-op</code> is lighter, it does not depend on <code>leakcanary-watcher</code> anymore, only 2 classes now: #74.</li> <li>Adding field state details to the text leak trace.</li> <li>A Toast is displayed while the heap dump is in progress to warn that the UI will freeze: #20. You can customize the toast by providing your own layout named <code>__leak_canary_heap_dump_toast.xml</code> (e.g. you could make it an empty layout).</li> <li>If the analysis fails, the result and heap dump are kept so that it can be reported to LeakCanary: #102.</li> <li>Update to HAHA 1.3 to fix a 2 crashes #3 46</li> </ul>"},{"location":"changelog/#public-api-changes_4","title":"Public API changes","text":"<ul> <li>When upgrading from 1.3 to 1.3.1, previously saved heap dumps will not be readable any more, but they won\u2019t be removed from the app directory. You should probably uninstall your app.</li> <li>Added <code>android.permission.WRITE_EXTERNAL_STORAGE</code> to <code>leakcanary-android</code> artifact.</li> <li><code>LeakCanary.androidWatcher()</code> parameter types have changed (+ExcludedRefs).</li> <li><code>LeakCanary.leakInfo()</code> parameter types have changed (+boolean)</li> <li><code>ExcludedRef</code> is now serializable and immutable, instances can be created using <code>ExcludedRef.Builder</code>.</li> <li><code>ExcludedRef</code> is available in <code>HeapDump</code></li> <li><code>AndroidExcludedRefs</code> is an enum, you can now pick the leaks you want to ignore in <code>AndroidExcludedRefs</code> by creating an <code>EnumSet</code> and calling <code>AndroidExcludedRefs.createBuilder()</code>.</li> <li><code>AndroidExcludedRefs.createAppDefaults()</code> &amp; <code>AndroidExcludedRefs.createAndroidDefaults()</code> return a <code>ExcludedRef.Builder</code>.</li> <li><code>ExcludedRef</code> moved from <code>leakcanary-analyzer</code> to <code>leakcanary-watcher</code></li> </ul>"},{"location":"changelog/#version-13-2015-05-08","title":"Version 1.3 (2015-05-08)","text":"<p>Initial release.</p>"},{"location":"changelog/#dependencies","title":"Dependencies","text":""},{"location":"code_of_conduct/","title":"Open Source Code of Conduct","text":"<p>At Square, we are committed to contributing to the open source community and simplifying the process of releasing and managing open source software. We\u2019ve seen incredible support and enthusiasm from thousands of people who have already contributed to our projects\u200a\u2014\u200aand we want to ensure our community continues to be truly open for everyone.</p> <p>This code of conduct outlines our expectations for participants, as well as steps to reporting unacceptable behavior. We are committed to providing a welcoming and inspiring community for all and expect our code of conduct to be honored.</p> <p>Square\u2019s open source community strives to:</p> <ul> <li> <p>Be open: We invite anyone to participate in any aspect of our projects. Our community is    open, and any responsibility can be carried by a contributor who demonstrates the required    capacity and competence.</p> </li> <li> <p>Be considerate: People use our work, and we depend on the work of others. Consider users and    colleagues before taking action. For example, changes to code, infrastructure, policy, and    documentation may negatively impact others.</p> </li> <li> <p>Be respectful: We expect people to work together to resolve conflict, assume good intentions,    and act with empathy. Do not turn disagreements into personal attacks.</p> </li> <li> <p>Be collaborative: Collaboration reduces redundancy and improves the quality of our work. We    strive for transparency within our open source community, and we work closely with upstream    developers and others in the free software community to coordinate our efforts.</p> </li> <li> <p>Be pragmatic: Questions are encouraged and should be asked early in the process to avoid    problems later. Be thoughtful and considerate when seeking out the appropriate forum for your    questions. Those who are asked should be responsive and helpful.</p> </li> <li> <p>Step down considerately: Members of every project come and go. When somebody leaves or    disengages from the project, they should make it known and take the proper steps to ensure that    others can pick up where they left off.</p> </li> </ul> <p>This code is not exhaustive or complete. It serves to distill our common understanding of a collaborative, shared environment, and goals. We expect it to be followed in spirit as much as in the letter.</p>"},{"location":"code_of_conduct/#diversity-statement","title":"Diversity Statement","text":"<p>We encourage everyone to participate and are committed to building a community for all. Although we may not be able to satisfy everyone, we all agree that everyone is equal.</p> <p>Whenever a participant has made a mistake, we expect them to take responsibility for it. If someone has been harmed or offended, it is our responsibility to listen carefully and respectfully, and do our best to right the wrong.</p> <p>Although this list cannot be exhaustive, we explicitly honor diversity in age, culture, ethnicity, gender identity or expression, language, national origin, political beliefs, profession, race, religion, sexual orientation, socioeconomic status, and technical ability. We will not tolerate discrimination based on any of the protected characteristics above, including participants with disabilities.</p>"},{"location":"code_of_conduct/#reporting-issues","title":"Reporting Issues","text":"<p>If you experience or witness unacceptable behavior\u200a\u2014\u200aor have any other concerns\u200a\u2014\u200aplease report it by emailing codeofconduct@squareup.com. For more details, please see our Reporting Guidelines below.</p>"},{"location":"code_of_conduct/#thanks","title":"Thanks","text":"<p>Some of the ideas and wording for the statements and guidelines above were based on work by the Twitter, Ubuntu, GDC, and Django communities. We are thankful for their work.</p>"},{"location":"code_of_conduct/#reporting-guide","title":"Reporting Guide","text":"<p>If you experience or witness unacceptable behavior\u200a\u2014\u200aor have any other concerns\u200a\u2014\u200aplease report it by emailing codeofconduct@squareup.com. All reports will be handled with discretion.</p> <p>In your report please include:</p> <ul> <li>Your contact information.</li> <li>Names (real, nicknames, or pseudonyms) of any individuals involved. If there are additional    witnesses, please include them as well.</li> <li>Your account of what occurred, and if you believe the incident is ongoing. If there is a publicly    available record (e.g. a mailing list archive or a public IRC logger), please include a link.</li> <li>Any additional information that may be helpful.</li> </ul> <p>After filing a report, a representative from the Square Code of Conduct committee will contact you personally. The committee will then review the incident, follow up with any additional questions, and make a decision as to how to respond.</p> <p>Anyone asked to stop unacceptable behavior is expected to comply immediately. If an individual engages in unacceptable behavior, the Square Code of Conduct committee may take any action they deem appropriate, up to and including a permanent ban from all of Square spaces without warning.</p>"},{"location":"dev-env/","title":"Dev Environment for LeakCanary contributors","text":""},{"location":"dev-env/#setup","title":"Setup","text":"<ul> <li>Download Android Studio.</li> <li>We use two spaces code indentation, use <code>SquareAndroid</code> code style settings from https://github.com/square/java-code-styles.</li> <li>Build with <code>./gradlew build</code>.</li> <li>Running the failing UI tests to confirm leak detection correctly fails UI tests: <code>./gradlew leakcanary-android-sample:connectedCheck</code>.</li> <li>Normal UI tests: <code>./gradlew leakcanary-android-core:connectedCheck</code>.</li> </ul>"},{"location":"dev-env/#static-code-analysis","title":"Static Code Analysis","text":"<ul> <li>LeakCanary uses Detekt for static Code analysis.</li> <li>Analyze the entire project with <code>./gradlew check</code> or particular modules with <code>./gradlew :module-name:check</code>. Detekt will fail the build if any ruleset violations are found. You should fix all issues before pushing the branch to remote.</li> <li>There\u2019s also a git pre-push hook that will run analysis automatically before pushing a branch to the remote. If there are any violations - it will prevent the push. Fix the issues!</li> <li>You can bypass the git hook though; Travis CI will still run checks and will fail if any violations are found. </li> <li>Detekt report will be printed in the console and saved to <code>/moduleDir/build/reports/</code>.</li> </ul>"},{"location":"dev-env/#deploying-locally","title":"Deploying locally","text":"<p>To deploy LeakCanary to your local maven repository, run the following command, changing the path to the path of your local repository:</p> <pre><code>./gradlew uploadArchives -PSNAPSHOT_REPOSITORY_URL=file:///Users/py/.m2/repository\n</code></pre> <p>Then add the SNAPSHOT dependency and <code>mavenLocal()</code> repository to your project:</p> <pre><code>dependencies {\n  debugImplementation 'com.squareup.leakcanary:leakcanary-android:3.0-alpha-2-SNAPSHOT'\n}\n\nrepositories {\n  mavenLocal()\n}\n</code></pre>"},{"location":"dev-env/#deploying-the-docs-locally","title":"Deploying the docs locally","text":"<p>Installing or updating the docs dependencies:</p> <pre><code>pip install --requirement docs/requirements.txt\n</code></pre> <p>Deploying locally</p> <pre><code>mkdocs serve\n</code></pre>"},{"location":"faq/","title":"FAQ","text":""},{"location":"faq/#can-a-leak-be-caused-by-the-android-sdk","title":"Can a leak be caused by the Android SDK?","text":"<p>Yes. There are a number of known memory leaks that have been fixed over time in AOSP as well as in manufacturer implementations. When such a leak occurs, there is little you can do as an app developer to fix it. For that reason, LeakCanary has a built-in list of known Android leaks to recognize, called Library Leaks (see Categorizing leaks).</p> <p>If you find a new one, please create an issue (choose \ud83e\udd16Leak in Android SDK / support library) and follow these steps:</p> <ol> <li>Provide the entire leak trace information (including metadata), and use backticks (`) for formatting.</li> <li>Read the AOSP source for that version of Android, and try to figure out why it happens. You can easily navigate through SDK versions by switching branches on the GitHub mirror: android/platform_frameworks_base.</li> <li>Check if it happens on the latest version of Android, and otherwise use blame to find when it was fixed.</li> <li>If it\u2019s still happening, build a simple repro case.</li> <li>File an issue on b.android.com with the leak trace and the repro case. Please remember to follow up the issue when there are new responses. b/176886060 is a good example of effective and respectful communication.</li> <li>Create a PR in LeakCanary to update AndroidReferenceMatchers. Optional: if you find a hack to clear that leak on previous versions of Android, feel free to document it.</li> </ol>"},{"location":"faq/#how-do-i-know-if-leakcanary-is-running","title":"How do I know if LeakCanary is running?","text":"<p>You can confirm that LeakCanary starts correctly by filtering on the LeakCanary tag in Logcat:</p> <pre><code>$ adb logcat | grep LeakCanary\n\nD/LeakCanary: Installing AppWatcher\n</code></pre> <p>If you do not see <code>Installing AppWatcher</code> in the logs, check your dependencies (<code>./gradlew app:dependencies</code>) and make sure LeakCanary is there.</p> <p>Note that LeakCanary is automatically disabled in tests (see LeakCanary test environment detection):</p> <pre><code>$ adb logcat | grep LeakCanary\n\nD/LeakCanary: Installing AppWatcher\nD/LeakCanary: JUnit detected in classpath, app is running tests =&gt; disabling heap dumping &amp; analysis\nD/LeakCanary: Updated LeakCanary.config: Config(dumpHeap=false)\n</code></pre>"},{"location":"faq/#where-does-leakcanary-store-heap-dumps","title":"Where does LeakCanary store heap dumps?","text":"<p>The default behavior is to store heap dumps in a <code>leakcanary</code> folder under the app directory. If the app has been granted the <code>android.permission.WRITE_EXTERNAL_STORAGE</code> permission, then heap dumps will be stored in a <code>leakcanary-com.example</code> folder (where <code>com.example</code> is your app package name) under the <code>Download</code> folder of the external storage. If the app has not been granted the <code>android.permission.WRITE_EXTERNAL_STORAGE</code> permission but that permission is listed in <code>AndroidManifest.xml</code> then LeakCanary will show a notification that can be tapped to grant permission.</p>"},{"location":"faq/#how-can-i-dig-beyond-the-leak-trace","title":"How can I dig beyond the leak trace?","text":"<p>Sometimes the leak trace isn\u2019t enough and you need to dig into a heap dump with MAT or YourKit.</p> <ul> <li>Go to a heap analysis screen, click the overflow menu and select Share Heap Dump.</li> </ul> <p>Here\u2019s how you can find the leaking instance in the heap dump:</p> <ol> <li>Look for all instances of <code>leakcanary.KeyedWeakReference</code>.</li> <li>For each of these, look at the <code>key</code> field.</li> <li>Find the <code>KeyedWeakReference</code> that has a <code>key</code> field equal to the reference key reported by LeakCanary.</li> <li>The <code>referent</code> field of that <code>KeyedWeakReference</code> is your leaking object.</li> <li>From then on, the matter is in your hands. A good start is to look at the shortest path to GC Roots (excluding weak references).</li> </ol>"},{"location":"faq/#how-does-leakcanary-get-installed-by-only-adding-a-dependency","title":"How does LeakCanary get installed by only adding a dependency?","text":"<p>On Android, content providers are created after the Application instance is created but before Application.onCreate() is called. The <code>leakcanary-object-watcher-android</code> artifact has a non exported ContentProvider defined in its <code>AndroidManifest.xml</code> file. When that ContentProvider is installed, it adds activity and fragment lifecycle listeners to the application.</p>"},{"location":"faq/#how-many-methods-does-leakcanary-add","title":"How many methods does LeakCanary add?","text":"<p>0. LeakCanary is a debug only library.</p>"},{"location":"faq/#how-do-i-use-the-snapshot-version","title":"How do I use the SNAPSHOT version?","text":"<p>Update your dependencies to the latest SNAPSHOT (see build.gradle):</p> <pre><code>dependencies {\n  debugImplementation 'com.squareup.leakcanary:leakcanary-android:3.0-alpha-2-SNAPSHOT'\n}\n</code></pre> <p>Add Sonatype\u2019s <code>snapshots</code> repository:</p> <pre><code>repositories {\n  mavenCentral()\n  maven {\n    url 'https://s01.oss.sonatype.org/content/repositories/snapshots/'\n  }\n}\n</code></pre> <p>Status of the snapshot build: </p>"},{"location":"faq/#whos-behind-leakcanary","title":"Who\u2019s behind LeakCanary?","text":"<p>LeakCanary was created and open sourced by @pyricau, with many contributions from the community.</p>"},{"location":"faq/#why-is-it-called-leakcanary","title":"Why is it called LeakCanary?","text":"<p>The name LeakCanary is a reference to the expression canary in a coal mine, because LeakCanary is a sentinel used to detect risks by providing advance warning of a danger. Props to @edenman for suggesting it!</p>"},{"location":"faq/#who-made-the-logo","title":"Who made the logo?","text":"<ul> <li>@pyricau quickly made the first version of the logo. It was based on cliparts from Android Asset Studio, mixed with the selection from a photo of a Canary. The exclamation mark means danger, the shield stands for protection, and the bird, well, is a canary.</li> <li>@romainguy turned the ugly logo into a nice vector asset.</li> <li>@flickator designed a much nicer logo for LeakCanary 2.0!</li> </ul>"},{"location":"fundamentals-fixing-a-memory-leak/","title":"Fixing a memory leak","text":"<p>A memory leak is a programming error that causes an application to keep a reference to an object that is no longer needed. Somewhere in the code, there\u2019s a reference that should have been cleared and wasn\u2019t.</p> <p>Follow these 4 steps to fix memory leaks:</p> <ol> <li>Find the leak trace.</li> <li>Narrow down the suspect references.</li> <li>Find the reference causing the leak.</li> <li>Fix the leak.</li> </ol> <p>LeakCanary helps you with the first two steps. The last two steps are up to you!</p>"},{"location":"fundamentals-fixing-a-memory-leak/#1-find-the-leak-trace","title":"1. Find the leak trace","text":"<p>A leak trace is a shorter name for the best strong reference path from garbage collection roots to the retained object, ie the path of references that is holding an object in memory, therefore preventing it from being garbage collected.</p> <p>For example, let\u2019s store a helper singleton in a static field:</p> <pre><code>class Helper {\n}\n\nclass Utils {\npublic static Helper helper = new Helper();\n}\n</code></pre> <p>Let\u2019s tell LeakCanary that the singleton instance is expected to be garbage collected:</p> <pre><code>AppWatcher.objectWatcher.watch(Utils.helper)\n</code></pre> <p>The leak trace for that singleton looks like this:</p> <pre><code>\u252c\u2500\u2500\u2500\n\u2502 GC Root: Local variable in native code\n\u2502\n\u251c\u2500 dalvik.system.PathClassLoader instance\n\u2502    \u2193 PathClassLoader.runtimeInternalObjects\n\u251c\u2500 java.lang.Object[] array\n\u2502    \u2193 Object[].[43]\n\u251c\u2500 com.example.Utils class\n\u2502    \u2193 static Utils.helper\n\u2570\u2192 java.example.Helper\n</code></pre> <p>Let\u2019s break it down! At the top, a <code>PathClassLoader</code> instance is held by a garbage collection (GC) root, more specifically a local variable in native code. GC roots are special objects that are always reachable, ie they cannot be garbage collected. There are 4 main types of GC root:</p> <ul> <li>Local variables, which belong to the stack of a thread.</li> <li>Instances of active Java threads.</li> <li>System Classes, which never unload.</li> <li>Native references, which are controlled by native code.</li> </ul> <pre><code>\u252c\u2500\u2500\u2500\n\u2502 GC Root: Local variable in native code\n\u2502\n\u251c\u2500 dalvik.system.PathClassLoader instance\n</code></pre> <p>A line starting with <code>\u251c\u2500</code> represents a Java object (either a class, an object array or an instance), and a line starting with <code>\u2502    \u2193</code> represents a reference to the Java object on the next line.</p> <p><code>PathClassLoader</code> has a <code>runtimeInternalObjects</code> field that is a reference to an array of <code>Object</code>:</p> <pre><code>\u251c\u2500 dalvik.system.PathClassLoader instance\n\u2502    \u2193 PathClassLoader.runtimeInternalObjects\n\u251c\u2500 java.lang.Object[] array\n</code></pre> <p>The element at position 43 in that array of <code>Object</code> is a reference to the <code>Utils</code> class.</p> <pre><code>\u251c\u2500 java.lang.Object[] array\n\u2502    \u2193 Object[].[43]\n\u251c\u2500 com.example.Utils class\n</code></pre> <p>A line starting with <code>\u2570\u2192</code> represents the leaking object, ie the object that is passed to AppWatcher.objectWatcher.watch().</p> <p>The <code>Utils</code> class has a static <code>helper</code> field which is a reference to the leaking object, which is the Helper singleton instance:</p> <pre><code>\u251c\u2500 com.example.Utils class\n\u2502    \u2193 static Utils.helper\n\u2570\u2192 java.example.Helper instance\n</code></pre>"},{"location":"fundamentals-fixing-a-memory-leak/#2-narrow-down-the-suspect-references","title":"2. Narrow down the suspect references","text":"<p>A leak trace is a path of references. Initially, all references in that path are suspected of causing the leak, but LeakCanary can automatically narrow down the suspect references. To understand what that means, let\u2019s go through that process manually.</p> <p>Here\u2019s an example of bad Android code:</p> <pre><code>class ExampleApplication : Application() {\nval leakedViews = mutableListOf&lt;View&gt;()\n}\n\nclass MainActivity : Activity() {\noverride fun onCreate(savedInstanceState: Bundle?) {\nsuper.onCreate(savedInstanceState)\nsetContentView(R.layout.main_activity)\n\nval textView = findViewById&lt;View&gt;(R.id.helper_text)\n\nval app = application as ExampleApplication\n// This creates a leak, What a Terrible Failure!\napp.leakedViews.add(textView)\n}\n}\n</code></pre> <p>LeakCanary produces a leak trace that looks like this:</p> <pre><code>\u252c\u2500\u2500\u2500\n\u2502 GC Root: System class\n\u2502\n\u251c\u2500 android.provider.FontsContract class\n\u2502    \u2193 static FontsContract.sContext\n\u251c\u2500 com.example.leakcanary.ExampleApplication instance\n\u2502    \u2193 ExampleApplication.leakedViews\n\u251c\u2500 java.util.ArrayList instance\n\u2502    \u2193 ArrayList.elementData\n\u251c\u2500 java.lang.Object[] array\n\u2502    \u2193 Object[].[0]\n\u251c\u2500 android.widget.TextView instance\n\u2502    \u2193 TextView.mContext\n\u2570\u2192 com.example.leakcanary.MainActivity instance\n</code></pre> <p>Here\u2019s how to read that leak trace:</p> <p>The <code>FontsContract</code> class is a system class (see <code>GC Root: System class</code>) and has an <code>sContext</code> static field which references an <code>ExampleApplication</code> instance which has a <code>leakedViews</code> field which references an <code>ArrayList</code> instance which references an array (the array backing the array list implementation) which has an element that references a <code>TextView</code> which has an <code>mContext</code> field which references a destroyed instance of <code>MainActivity</code>.</p> <p>LeakCanary highlights all references suspected of causing this leak using ~~~ underlines. Initially, all references are suspect:</p> <pre><code>\u252c\u2500\u2500\u2500\n\u2502 GC Root: System class\n\u2502\n\u251c\u2500 android.provider.FontsContract class\n\u2502    \u2193 static FontsContract.sContext\n\u2502                           ~~~~~~~~\n\u251c\u2500 com.example.leakcanary.ExampleApplication instance\n\u2502    Leaking: NO (Application is a singleton)\n\u2502    \u2193 ExampleApplication.leakedViews\n\u2502                         ~~~~~~~~~~~\n\u251c\u2500 java.util.ArrayList instance\n\u2502    \u2193 ArrayList.elementData\n\u2502                ~~~~~~~~~~~\n\u251c\u2500 java.lang.Object[] array\n\u2502    \u2193 Object[].[0]\n\u2502               ~~~\n\u251c\u2500 android.widget.TextView instance\n\u2502    \u2193 TextView.mContext\n\u2502               ~~~~~~~~\n\u2570\u2192 com.example.leakcanary.MainActivity instance\n</code></pre> <p>Then, LeakCanary makes deductions about the state and the lifecycle of the objects in the leak trace. In an Android app the <code>Application</code> instance is a singleton that is never garbage collected, so it\u2019s never leaking (<code>Leaking: NO (Application is a singleton)</code>). From that, LeakCanary concludes that the leak is not caused by <code>FontsContract.sContext</code> (removal of corresponding <code>~~~</code>). Here\u2019s the updated leak trace:</p> <pre><code>\u252c\u2500\u2500\u2500\n\u2502 GC Root: System class\n\u2502\n\u251c\u2500 android.provider.FontsContract class\n\u2502    \u2193 static FontsContract.sContext\n\u251c\u2500 com.example.leakcanary.ExampleApplication instance\n\u2502    Leaking: NO (Application is a singleton)\n\u2502    \u2193 ExampleApplication.leakedViews\n\u2502                         ~~~~~~~~~~~\n\u251c\u2500 java.util.ArrayList instance\n\u2502    \u2193 ArrayList.elementData\n\u2502                ~~~~~~~~~~~\n\u251c\u2500 java.lang.Object[] array\n\u2502    \u2193 Object[].[0]\n\u2502               ~~~\n\u251c\u2500 android.widget.TextView instance\n\u2502    \u2193 TextView.mContext\n\u2502               ~~~~~~~~\n\u2570\u2192 com.example.leakcanary.MainActivity instance\n</code></pre> <p>The <code>TextView</code> instance references the destroyed <code>MainActivity</code> instance via it\u2019s <code>mContext</code> field. Views should not survive the lifecycle of their context, so LeakCanary knows that this <code>TextView</code> instance is leaking (<code>Leaking: YES (View.mContext references a destroyed activity)</code>), and therefore that the leak is not caused by <code>TextView.mContext</code> (removal of corresponding <code>~~~</code>). Here\u2019s the updated leak trace:</p> <pre><code>\u252c\u2500\u2500\u2500\n\u2502 GC Root: System class\n\u2502\n\u251c\u2500 android.provider.FontsContract class\n\u2502    \u2193 static FontsContract.sContext\n\u251c\u2500 com.example.leakcanary.ExampleApplication instance\n\u2502    Leaking: NO (Application is a singleton)\n\u2502    \u2193 ExampleApplication.leakedViews\n\u2502                         ~~~~~~~~~~~\n\u251c\u2500 java.util.ArrayList instance\n\u2502    \u2193 ArrayList.elementData\n\u2502                ~~~~~~~~~~~\n\u251c\u2500 java.lang.Object[] array\n\u2502    \u2193 Object[].[0]\n\u2502               ~~~\n\u251c\u2500 android.widget.TextView instance\n\u2502    Leaking: YES (View.mContext references a destroyed activity)\n\u2502    \u2193 TextView.mContext\n\u2570\u2192 com.example.leakcanary.MainActivity instance\n</code></pre> <p>To summarize, LeakCanary inspects the state of objects in the leak trace to figure out if these objects are leaking (<code>Leaking: YES</code> vs <code>Leaking: NO</code>), and leverages that information to narrow down the suspect references. You can provide custom <code>ObjectInspector</code> implementations to improve how LeakCanary works in your codebase (see Identifying leaking objects and labeling objects).</p>"},{"location":"fundamentals-fixing-a-memory-leak/#3-find-the-reference-causing-the-leak","title":"3. Find the reference causing the leak","text":"<p>In the previous example, LeakCanary narrowed down the suspect references to <code>ExampleApplication.leakedViews</code>, <code>ArrayList.elementData</code> and <code>Object[].[0]</code>:</p> <pre><code>\u252c\u2500\u2500\u2500\n\u2502 GC Root: System class\n\u2502\n\u251c\u2500 android.provider.FontsContract class\n\u2502    \u2193 static FontsContract.sContext\n\u251c\u2500 com.example.leakcanary.ExampleApplication instance\n\u2502    Leaking: NO (Application is a singleton)\n\u2502    \u2193 ExampleApplication.leakedViews\n\u2502                         ~~~~~~~~~~~\n\u251c\u2500 java.util.ArrayList instance\n\u2502    \u2193 ArrayList.elementData\n\u2502                ~~~~~~~~~~~\n\u251c\u2500 java.lang.Object[] array\n\u2502    \u2193 Object[].[0]\n\u2502               ~~~\n\u251c\u2500 android.widget.TextView instance\n\u2502    Leaking: YES (View.mContext references a destroyed activity)\n\u2502    \u2193 TextView.mContext\n\u2570\u2192 com.example.leakcanary.MainActivity instance\n</code></pre> <p><code>ArrayList.elementData</code> and <code>Object[].[0]</code> are implementation details of <code>ArrayList</code>, and it\u2019s unlikely that there\u2019s a bug in the <code>ArrayList</code> implementation, so the reference causing the leak is the only remaining reference: <code>ExampleApplication.leakedViews</code>.</p>"},{"location":"fundamentals-fixing-a-memory-leak/#4-fix-the-leak","title":"4. Fix the leak","text":"<p>Once you find the reference causing the leak, you need to figure out what that reference is about, when it should have been cleared and why it hasn\u2019t been. Sometimes it\u2019s obvious, like in the previous example. Sometimes you need more information to figure it out. You can add labels, or explore the hprof directly (see How can I dig beyond the leak trace?).</p> <p>Warning</p> <p>Memory leaks cannot be fixed by replacing strong references with weak references. It\u2019s a common solution when attempting to quickly address memory issues, however it never works. The bugs that were causing references to be kept longer than necessary are still there. On top of that, it creates more bugs as some objects will now be garbage collected sooner than they should. It also makes the code much harder to maintain.</p> <p>What\u2019s next? Customize LeakCanary to your needs with code recipes!</p>"},{"location":"fundamentals-how-leakcanary-works/","title":"How LeakCanary works","text":"<p>Once LeakCanary is installed, it automatically detects and report memory leaks, in 4 steps:</p> <ol> <li>Detecting retained objects.</li> <li>Dumping the heap.</li> <li>Analyzing the heap.</li> <li>Categorizing leaks.</li> </ol>"},{"location":"fundamentals-how-leakcanary-works/#1-detecting-retained-objects","title":"1. Detecting retained objects","text":"<p>LeakCanary hooks into the Android lifecycle to automatically detect when activities and fragments are destroyed and should be garbage collected. These destroyed objects are passed to an <code>ObjectWatcher</code>, which holds weak references to them. LeakCanary automatically detects leaks for the following objects:</p> <ul> <li>destroyed <code>Activity</code> instances</li> <li>destroyed <code>Fragment</code> instances</li> <li>destroyed fragment <code>View</code> instances</li> <li>cleared <code>ViewModel</code> instances</li> </ul> <p>You can watch any objects that is no longer needed, for example a detached view or a destroyed presenter:</p> <pre><code>AppWatcher.objectWatcher.watch(myDetachedView, \"View was detached\")\n</code></pre> <p>If the weak reference held by <code>ObjectWatcher</code> isn\u2019t cleared after waiting 5 seconds and running garbage collection, the watched object is considered retained, and potentially leaking. LeakCanary logs this to Logcat:</p> <pre><code>D LeakCanary: Watching instance of com.example.leakcanary.MainActivity\n  (Activity received Activity#onDestroy() callback) \n\n... 5 seconds later ...\n\nD LeakCanary: Scheduling check for retained objects because found new object\n  retained\n</code></pre> <p>LeakCanary waits for the count of retained objects to reach a threshold before dumping the heap, and displays a notification with the latest count.</p> <p> Figure 1. LeakCanary found 4 retained objects.</p> <pre><code>D LeakCanary: Rescheduling check for retained objects in 2000ms because found\n  only 4 retained objects (&lt; 5 while app visible)\n</code></pre> <p>Info</p> <p>The default threshold is 5 retained objects when the app is visible, and 1 retained object when the app is not visible. If you see the retained objects notification and then put the app in background (for example by pressing the Home button), then the threshold changes from 5 to 1 and LeakCanary dumps the heap within 5 seconds. Tapping the notification forces LeakCanary to dump the heap immediately.</p>"},{"location":"fundamentals-how-leakcanary-works/#2-dumping-the-heap","title":"2. Dumping the heap","text":"<p>When the count of retained objects reaches a threshold, LeakCanary dumps the Java heap into a <code>.hprof</code> file (a heap dump) stored onto the Android file system (see Where does LeakCanary store heap dumps?). Dumping the heap freezes the app for a short amount of time, during which LeakCanary displays the following toast:</p> <p> Figure 2. LeakCanary shows a toast while dumping the heap.</p>"},{"location":"fundamentals-how-leakcanary-works/#3-analyzing-the-heap","title":"3. Analyzing the heap","text":"<p>LeakCanary parses the <code>.hprof</code> file using Shark and locates the retained objects in that heap dump.</p> <p> Figure 3. LeakCanary finds retained objects in the heap dump.</p> <p>For each retained object, LeakCanary finds the path of references that prevents that retained object from being garbage collected: its leak trace. You will learn to analyze a leak trace in the next section: Fixing a memory leak.</p> <p> Figure 4. LeakCanary computes the leak trace for each retained object.</p> <p>When the analysis is done, LeakCanary displays a notification with a summary, and also prints the result in Logcat. Notice below how the 4 retained objects are grouped as 2 distinct leaks. LeakCanary creates a signature for each leak trace, and groups together leaks that have the same signature, ie leaks that are caused by the same bug.</p> <p> Figure 5. The 4 leak traces turned into 2 distinct leak signatures.</p> <pre><code>====================================\nHEAP ANALYSIS RESULT\n====================================\n2 APPLICATION LEAKS\n\nDisplaying only 1 leak trace out of 2 with the same signature\nSignature: ce9dee3a1feb859fd3b3a9ff51e3ddfd8efbc6\n\u252c\u2500\u2500\u2500\n\u2502 GC Root: Local variable in native code\n\u2502\n...\n</code></pre> <p>Tapping the notification starts an activity that provides more details. Come back to it again later by tapping the LeakCanary launcher icon:</p> <p> Figure 6. LeakCanary adds a launcher icon for each app it\u2019s installed in.</p> <p>Each row corresponds to a group of leaks with the same signature. LeakCanary  marks a row as New the first time the app triggers a leak with that signature.</p> <p> Figure 7. The 4 leaks grouped into 2 rows, one for each distinct leak signature.</p> <p>Tap on a leak to open up a screen with the leak trace. You can toggle between retained objects and their leak trace via a drop down.</p> <p> Figure 8. A screen showing 3 leaks grouped by their common leak signature.</p> <p>The leak signature is the hash of the concatenation of each reference suspected to cause the leak, ie each reference displayed with a red underline:</p> <p> Figure 9. A leak trace with 3 suspect references.</p> <p>These same suspicious references are underlined with <code>~~~</code> when the leak trace is shared as text:</p> <pre><code>...\n\u2502  \n\u251c\u2500 com.example.leakcanary.LeakingSingleton class\n\u2502    Leaking: NO (a class is never leaking)\n\u2502    \u2193 static LeakingSingleton.leakedViews\n\u2502                              ~~~~~~~~~~~\n\u251c\u2500 java.util.ArrayList instance\n\u2502    Leaking: UNKNOWN\n\u2502    \u2193 ArrayList.elementData\n\u2502                ~~~~~~~~~~~\n\u251c\u2500 java.lang.Object[] array\n\u2502    Leaking: UNKNOWN\n\u2502    \u2193 Object[].[0]\n\u2502               ~~~\n\u251c\u2500 android.widget.TextView instance\n\u2502    Leaking: YES (View.mContext references a destroyed activity)\n...\n</code></pre> <p>In the example above, the signature of the leak would be computed as:</p> <pre><code>val leakSignature = sha1Hash(\n\"com.example.leakcanary.LeakingSingleton.leakedView\" +\n\"java.util.ArrayList.elementData\" +\n\"java.lang.Object[].[x]\"\n)\nprintln(leakSignature)\n// dbfa277d7e5624792e8b60bc950cd164190a11aa\n</code></pre>"},{"location":"fundamentals-how-leakcanary-works/#4-categorizing-leaks","title":"4. Categorizing leaks","text":"<p>LeakCanary separates the leaks it finds in your app into two categories: Application Leaks and Library Leaks. A Library Leak is a leak caused by a known bug in 3rd party code that you do not have control over. This leak is impacting your application, but unfortunately fixing it may not be in your control so LeakCanary separates it out.</p> <p>The two categories are separated in the result printed in Logcat:</p> <pre><code>====================================\nHEAP ANALYSIS RESULT\n====================================\n0 APPLICATION LEAKS\n\n====================================\n1 LIBRARY LEAK\n\n...\n\u252c\u2500\u2500\u2500\n\u2502 GC Root: Local variable in native code\n\u2502\n...\n</code></pre> <p>LeakCanary marks a row as a Library Leak in its list of leaks:</p> <p> Figure 10. LeakCanary found a Library Leak.</p> <p>LeakCanary ships with a database of known leaks, which it recognizes by pattern matching on reference names. For example:</p> <pre><code>Leak pattern: instance field android.app.Activity$1#this$0\nDescription: Android Q added a new IRequestFinishCallback$Stub class [...]\n\u252c\u2500\u2500\u2500\n\u2502 GC Root: Global variable in native code\n\u2502\n\u251c\u2500 android.app.Activity$1 instance\n\u2502    Leaking: UNKNOWN\n\u2502    Anonymous subclass of android.app.IRequestFinishCallback$Stub\n\u2502    \u2193 Activity$1.this$0\n\u2502                 ~~~~~~\n\u2570\u2192 com.example.MainActivity instance\n</code></pre> <p>What did I do to cause this leak?</p> <p>Nothing wrong! You used an API the way it was intended but the implementation has a bug that is causing this leak.</p> <p>Is there anything I can do to prevent it?</p> <p>Maybe! Some Library Leaks can be fixed using reflection, others by exercising a code path that makes the leak go away. This type of fix tends to be hacky, so beware! Your best option might be to find the bug report or file one, and insist that the bug gets fixed.</p> <p>Since I can\u2019t do much about this leak, is there a way I can ask LeakCanary to ignore it?</p> <p>There\u2019s no way for LeakCanary to know whether a leak is a Library Leak prior to dumping the heap and analyzing it. If LeakCanary didn\u2019t show the result notification when a Library Leak is found then you\u2019d start wondering what happened to the LeakCanary analysis after the dumping toast.</p> <p>You can see the full list of known leaks in the AndroidReferenceMatchers class. If you find an Android SDK leak that isn\u2019t recognized, please report it. You can also customize the list of known Library Leaks.</p> <p>What\u2019s next? Learn how to fix a memory leak!</p>"},{"location":"fundamentals/","title":"Introduction","text":"<p>The fundamentals describe how LeakCanary works and how to use it to detect and fix memory leaks. This documentation is designed to help developers of all levels, so please don\u2019t hesitate to report any confusing section.</p>"},{"location":"fundamentals/#what-is-a-memory-leak","title":"What is a memory leak?","text":"<p>In a Java based runtime, a memory leak is a programming error that causes an application to keep a reference to an object that is no longer needed. As a result, the memory allocated for that object cannot be reclaimed.</p> <p>For example, an Android <code>Activity</code> instance is no longer needed after its <code>onDestroy()</code> method is called, and storing a reference to that instance in a static field prevents it from being garbage collected.</p>"},{"location":"fundamentals/#common-causes-for-memory-leaks","title":"Common causes for memory leaks","text":"<p>Most memory leaks are caused by bugs related to the lifecycle of objects. Here are a few common Android mistakes:</p> <ul> <li>Adding a <code>Fragment</code> instance to the backstack without clearing that Fragment\u2019s view fields in <code>Fragment.onDestroyView()</code> (more details in this StackOverflow answer).</li> <li>Storing an <code>Activity</code> instance as a <code>Context</code> field in an object that survives activity recreation due to configuration changes.</li> <li>Registering a listener, broadcast receiver or RxJava subscription which references an object with lifecycle, and forgetting to unregister when the lifecycle reaches its end.</li> </ul>"},{"location":"fundamentals/#why-should-i-use-leakcanary","title":"Why should I use LeakCanary?","text":"<p>Memory leaks are very common in Android apps. As small memory leaks accumulate, memory usage grows, the Garbage Collector (GC) runs more frequently and consumes more CPU, causing jank, UI freezes and Application Not Responding (ANR) reports, eventually leading to an OutOfMemoryError (OOME) crash. LeakCanary will help you find and fix these memory leaks during development. When Square engineers first enabled LeakCanary in the Square Point Of Sale app, they were able to fix several leaks and reduced the OOM crash rate by 94%.</p> <p>Info</p> <p>Your crash reporting tool might not correctly report OOMEs. When memory is low because of memory leak accumulation, an OOM can be thrown from anywhere in the app code, which means that every OOM has a different stacktrace. So instead of one crash entry with a 1000 crashes, OOMs get reported as 1000 distinct crashes and hide in the long tail of low occurring crashes.</p> <p>What\u2019s next? Learn how LeakCanary works!</p>"},{"location":"getting_started/","title":"Getting started","text":"<p>To use LeakCanary, add the <code>leakcanary-android</code> dependency to your app\u2019s <code>build.gradle</code> file:</p> <pre><code>dependencies {\n// debugImplementation because LeakCanary should only run in debug builds.\ndebugImplementation 'com.squareup.leakcanary:leakcanary-android:2.13'\n}\n</code></pre> <p>That\u2019s it, there is no code change needed!</p> <p>Confirm that LeakCanary is running on startup by filtering on the <code>LeakCanary</code> tag in Logcat:</p> <pre><code>D LeakCanary: LeakCanary is running and ready to detect leaks\n</code></pre> <p>Info</p> <p>LeakCanary automatically detects leaks of the following objects:</p> <ul> <li>destroyed <code>Activity</code> instances</li> <li>destroyed <code>Fragment</code> instances</li> <li>destroyed fragment <code>View</code> instances</li> <li>cleared <code>ViewModel</code> instances</li> <li>destroyed <code>Service</code> instance</li> </ul> <p>What\u2019s next? Learn the Fundamentals!</p>"},{"location":"how_to_help/","title":"How to help","text":"<p>\ud83d\ude4f\ud83d\ude4f\ud83d\ude4f</p> <p>LeakCanary is maintained by volunteers. Your help is welcome and will benefit the entire Android community!</p> <p>Here\u2019s how you can help:</p> <ul> <li>Contribute to Help Wanted issues.</li> <li>Answer StackOverflow questions.</li> <li>Provide feedback on pull requests.</li> <li>Contribute code by forking the repository on GitHub and sending a pull request. Please read Dev Environment for LeakCanary contributors. When submitting code, please make every effort to follow existing conventions and style in order to keep the code as readable as possible.</li> </ul>"},{"location":"leakcanary-for-releases/","title":"LeakCanary for releases","text":""},{"location":"leakcanary-for-releases/#leakcanary-for-releases","title":"LeakCanary for releases","text":"<p>Fixing leaks found in debug builds helps reduce <code>Application Not Responding</code> freezes and <code>OutfOfMemoryError</code> error crashes, but only scratches the surface of all the leaks that can happen. For the leaks that are found in debug builds, it\u2019s hard to determine which leaks to fix first.</p> <p>This situation is very similar to debug crashes, where we are often unable to make an accurate assessment of their future impact in a production environment nor find all crashes that will happen in production. For crashes, apps typically monitor a crash rate by having a release crash reporting pipeline, with counts to prioritize fixes.</p> <p>LeakCanary for releases exposes APIs to run a heap analysis in release builds, in production.</p> <p>Danger</p> <p>Everything about this is experimental. Running a heap analysis in production is not a very common thing to do, and we\u2019re still learning and experimenting with this. Also, both the artifact name and the APIs may change.</p>"},{"location":"leakcanary-for-releases/#getting-started","title":"Getting started","text":"<p>LeakCanary provides an artifact dedicated to detecting leaks in release builds:</p> <pre><code>dependencies {\n// LeakCanary for releases\nreleaseImplementation 'com.squareup.leakcanary:leakcanary-android-release:2.13'\n// Optional: detect retained objects. This helps but is not required.\nreleaseImplementation 'com.squareup.leakcanary:leakcanary-object-watcher-android:2.13'\n}\n</code></pre> <p>Here\u2019s a code example that runs a heap analysis when the screen is turned off or the app enters background, checking first if a Firebase Remote Config flag is turned on, and uploading the result to Bugsnag:</p> <pre><code>import android.os.Process.THREAD_PRIORITY_BACKGROUND\nimport java.util.concurrent.Executors\nimport kotlin.concurrent.thread\nimport leakcanary.BackgroundTrigger\nimport leakcanary.HeapAnalysisClient\nimport leakcanary.HeapAnalysisConfig\nimport leakcanary.HeapAnalysisInterceptor\nimport leakcanary.HeapAnalysisInterceptor.Chain\nimport leakcanary.HeapAnalysisJob\nimport leakcanary.HeapAnalysisJob.Result.Done\nimport leakcanary.ScreenOffTrigger\n\nclass ReleaseExampleApplication : ExampleApplication() {\n\noverride fun onCreate() {\nsuper.onCreate()\n\n// Delete any remaining heap dump (if we crashed)\nanalysisExecutor.execute {\nanalysisClient.deleteHeapDumpFiles()\n}\n\n// Starts heap analysis on background importance\nBackgroundTrigger(\napplication = this,\nanalysisClient = analysisClient,\nanalysisExecutor = analysisExecutor,\nanalysisCallback = analysisCallback\n).start()\n\n// Starts heap analysis when screen off\nScreenOffTrigger(\napplication = this,\nanalysisClient = analysisClient,\nanalysisExecutor = analysisExecutor,\nanalysisCallback = analysisCallback\n).start()\n}\n\n/**\n   * Call this to trigger heap analysis manually, e.g. from\n   * a help button.\n   *\n   * This method returns a `HeapAnalysisJob` on which you can\n   * call `HeapAnalysisJob.cancel()` at any time.\n   */\nfun triggerHeapAnalysisNow(): HeapAnalysisJob {\nval job = analysisClient.newJob()\nanalysisExecutor.execute {\nval result = job.execute()\nanalysisCallback(result)\n}\nreturn job\n}\n\nprivate val analysisClient by lazy {\nHeapAnalysisClient(\n// Use private app storage. cacheDir is never backed up which is important.\nheapDumpDirectoryProvider = { cacheDir },\n// stripHeapDump: remove all user data from hprof before analysis.\nconfig = HeapAnalysisConfig(stripHeapDump = true),\n// Default interceptors may cancel analysis for several other reasons.\ninterceptors = listOf(flagInterceptor) + HeapAnalysisClient.defaultInterceptors(this)\n)\n}\n\n// Cancels heap analysis if \"heap_analysis_flag\" is false.\nprivate val flagInterceptor = object : HeapAnalysisInterceptor {\nval remoteConfig by lazy { FirebaseRemoteConfig.getInstance() }\n\noverride fun intercept(chain: Chain): HeapAnalysisJob.Result {\nif (remoteConfig.getBoolean(\"heap_analysis_flag\")) {\nchain.job.cancel(\"heap_analysis_flag false\")\n}\nreturn chain.proceed()\n}\n}\n\nprivate val analysisExecutor = Executors.newSingleThreadExecutor {\nthread(start = false, name = \"Heap analysis executor\") {\nandroid.os.Process.setThreadPriority(THREAD_PRIORITY_BACKGROUND)\nit.run()\n}\n}\n\nprivate val analysisCallback: (HeapAnalysisJob.Result) -&gt; Unit = { result -&gt;\nif (result is Done) {\nuploader.upload(result.analysis)\n}\n}\n\nprivate val uploader by lazy {\nBugsnagLeakUploader(this@ReleaseExampleApplication)\n}\n}\n</code></pre> <p>Here\u2019s the <code>BugsnagLeakUploader</code>:</p> <pre><code>import android.app.Application\nimport com.bugsnag.android.Bugsnag\nimport com.bugsnag.android.Configuration\nimport com.bugsnag.android.ErrorTypes\nimport com.bugsnag.android.Event\nimport com.bugsnag.android.ThreadSendPolicy\nimport shark.HeapAnalysis\nimport shark.HeapAnalysisFailure\nimport shark.HeapAnalysisSuccess\nimport shark.Leak\nimport shark.LeakTrace\nimport shark.LeakTraceReference\nimport shark.LibraryLeak\n\nclass BugsnagLeakUploader(applicationContext: Application) {\n\nprivate val bugsnagClient = Bugsnag.start(\napplicationContext,\nConfiguration(\"YOUR_BUGSNAG_API_KEY\").apply {\nenabledErrorTypes = ErrorTypes(\nanrs = false,\nndkCrashes = false,\nunhandledExceptions = false,\nunhandledRejections = false\n)\nsendThreads = ThreadSendPolicy.NEVER\n}\n)\n\nfun upload(heapAnalysis: HeapAnalysis) {\nwhen (heapAnalysis) {\nis HeapAnalysisSuccess -&gt; {\nval allLeakTraces = heapAnalysis\n.allLeaks\n.toList()\n.flatMap { leak -&gt;\nleak.leakTraces.map { leakTrace -&gt; leak to leakTrace }\n}\nif (allLeakTraces.isEmpty()) {\n// Track how often we perform a heap analysis that yields no result.\nbugsnagClient.notify(NoLeakException()) { event -&gt;\nevent.addHeapAnalysis(heapAnalysis)\ntrue\n}\n} else {\nallLeakTraces.forEach { (leak, leakTrace) -&gt;\nval message = \"Memory leak: ${leak.shortDescription}. See LEAK tab.\"\nval exception = leakTrace.asFakeException(message)\nbugsnagClient.notify(exception) { event -&gt;\nevent.addHeapAnalysis(heapAnalysis)\nevent.addLeak(leak)\nevent.addLeakTrace(leakTrace)\nevent.groupingHash = leak.signature\ntrue\n}\n}\n}\n}\nis HeapAnalysisFailure -&gt; {\n// Please file any reported failure to\n// https://github.com/square/leakcanary/issues\nbugsnagClient.notify(heapAnalysis.exception)\n}\n}\n}\n\nclass NoLeakException : RuntimeException()\n\nprivate fun Event.addHeapAnalysis(heapAnalysis: HeapAnalysisSuccess) {\naddMetadata(\"Leak\", \"heapDumpPath\", heapAnalysis.heapDumpFile.absolutePath)\nheapAnalysis.metadata.forEach { (key, value) -&gt;\naddMetadata(\"Leak\", key, value)\n}\naddMetadata(\"Leak\", \"analysisDurationMs\", heapAnalysis.analysisDurationMillis)\n}\n\nprivate fun Event.addLeak(leak: Leak) {\naddMetadata(\"Leak\", \"libraryLeak\", leak is LibraryLeak)\nif (leak is LibraryLeak) {\naddMetadata(\"Leak\", \"libraryLeakPattern\", leak.pattern.toString())\naddMetadata(\"Leak\", \"libraryLeakDescription\", leak.description)\n}\n}\n\nprivate fun Event.addLeakTrace(leakTrace: LeakTrace) {\naddMetadata(\"Leak\", \"retainedHeapByteSize\", leakTrace.retainedHeapByteSize)\naddMetadata(\"Leak\", \"signature\", leakTrace.signature)\naddMetadata(\"Leak\", \"leakTrace\", leakTrace.toString())\n}\n\nprivate fun LeakTrace.asFakeException(message: String): RuntimeException {\nval exception = RuntimeException(message)\nval stackTrace = mutableListOf&lt;StackTraceElement&gt;()\nstackTrace.add(StackTraceElement(\"GcRoot\", gcRootType.name, \"GcRoot.kt\", 42))\nfor (cause in referencePath) {\nstackTrace.add(buildStackTraceElement(cause))\n}\nexception.stackTrace = stackTrace.toTypedArray()\nreturn exception\n}\n\nprivate fun buildStackTraceElement(reference: LeakTraceReference): StackTraceElement {\nval file = reference.owningClassName.substringAfterLast(\".\") + \".kt\"\nreturn StackTraceElement(reference.owningClassName, reference.referenceDisplayName, file, 42)\n}\n}\n</code></pre>"},{"location":"recipes/","title":"Code Recipes","text":"<p>This page contains code recipes to customize LeakCanary to your needs. Read through the section titles and cook your own meal! Also don\u2019t forget to check out the FAQ.</p> <p>Bug</p> <p>If you think a recipe might be missing or you\u2019re not sure that what you\u2019re trying to achieve is possible with the current APIs, please file an issue. Your feedback helps us make LeakCanary better for the entire community.</p>"},{"location":"recipes/#watching-objects-with-a-lifecycle","title":"Watching objects with a lifecycle","text":"<p>The default configuration of LeakCanary will automatically watch Activity, Fragment, Fragment View and ViewModel instances.</p> <p>In your application, you may have other objects with a lifecycle, such as services, Dagger components, etc. Use AppWatcher.objectWatcher to watch instances that should be garbage collected:</p> <pre><code>class MyService : Service {\n\n// ...\n\noverride fun onDestroy() {\nsuper.onDestroy()\nAppWatcher.objectWatcher.watch(\nwatchedObject = this,\ndescription = \"MyService received Service#onDestroy() callback\"\n)\n}\n}\n</code></pre>"},{"location":"recipes/#configuration","title":"Configuration","text":"<p>LeakCanary has a default configuration that works well for most apps. You can also customize it to your needs. The LeakCanary configuration is held by two singleton objects (<code>AppWatcher</code> and <code>LeakCanary</code>) and can be updated at any time. Most developers configure LeakCanary in their debug Application class:</p> <pre><code>class DebugExampleApplication : ExampleApplication() {\n\noverride fun onCreate() {\nsuper.onCreate()\nAppWatcher.config = AppWatcher.config.copy(watchFragmentViews = false)\n}\n}\n</code></pre> <p>Info</p> <p>Create a debug application class in your <code>src/debug/java</code> folder. Don\u2019t forget to also register it in <code>src/debug/AndroidManifest.xml</code>.</p> <p>To customize the detection of retained objects at runtime, specify the watchers you wish to install via AppWatcher.manualInstall():</p> <pre><code>val watchersToInstall = AppWatcher.appDefaultWatchers(this)\n.filter { it !is FragmentAndViewModelWatcher }\nAppWatcher.manualInstall(\napplication = this,\nwatchersToInstall = watchersToInstall\n)\n</code></pre> <p>To customize the heap dumping &amp; analysis, update LeakCanary.config:</p> <pre><code>LeakCanary.config = LeakCanary.config.copy(retainedVisibleThreshold = 3)\n</code></pre> <p>Java</p> <p>In Java, use LeakCanary.Config.Builder instead:</p> <pre><code>LeakCanary.Config config = LeakCanary.getConfig().newBuilder()\n.retainedVisibleThreshold(3)\n.build();\nLeakCanary.setConfig(config);\n</code></pre> <p>Configure the LeakCanary UI by overriding the following resources:</p> <ul> <li><code>mipmap/leak_canary_icon</code> see Icon and label</li> <li><code>string/leak_canary_display_activity_label</code> see Icon and label</li> <li><code>bool/leak_canary_add_dynamic_shortcut</code> see Disabling LeakCanary</li> <li><code>bool/leak_canary_add_launcher_icon</code> see Disabling LeakCanary</li> <li><code>layout/leak_canary_heap_dump_toast</code> the layout for the toast shown when the heap is dumped</li> </ul>"},{"location":"recipes/#disabling-leakcanary","title":"Disabling LeakCanary","text":"<p>Sometimes it\u2019s necessary to disable LeakCanary temporarily, for example for a product demo or when running performance tests. You have different options, depending on what you\u2019re trying to achieve:</p> <ul> <li>Create a build variant that does not include the LeakCanary dependencies, see Setting up LeakCanary for different product flavors.</li> <li>Disable the heap dumping &amp; analysis: <code>LeakCanary.config = LeakCanary.config.copy(dumpHeap = false)</code>.</li> <li>Hide the leak display activity launcher icon: override <code>R.bool.leak_canary_add_launcher_icon</code> or call <code>LeakCanary.showLeakDisplayActivityLauncherIcon(false)</code></li> </ul> <p>Info</p> <p>When you set <code>LeakCanary.Config.dumpHeap</code> to <code>false</code>, <code>AppWatcher.objectWatcher</code> will still keep track of retained objects, and LeakCanary will look for these objects when you change <code>LeakCanary.Config.dumpHeap</code> back to <code>true</code>.</p>"},{"location":"recipes/#leakcanary-test-environment-detection","title":"LeakCanary test environment detection","text":"<p>By default, LeakCanary will look for the <code>org.junit.Test</code> class in your classpath and if found, will disable itself to avoid running in tests. However, some apps may ship JUnit in their debug classpaths (for example, when using OkHttp\u2019s MockWebServer) so we offer a way to customise the class that is used to determine that the app is running in a test environment.</p> <pre><code>&lt;resources&gt;\n&lt;string name=\"leak_canary_test_class_name\"&gt;assertk.Assert&lt;/string&gt;\n&lt;/resources&gt;\n</code></pre>"},{"location":"recipes/#counting-retained-instances-in-release-builds","title":"Counting retained instances in release builds","text":"<p>The <code>com.squareup.leakcanary:leakcanary-android</code> dependency should only be used in debug builds. It depends on <code>com.squareup.leakcanary:leakcanary-object-watcher-android</code> which you can use in release builds to track and count retained instances.</p> <p>In your <code>build.gradle</code>:</p> <pre><code>dependencies {\n  implementation 'com.squareup.leakcanary:leakcanary-object-watcher-android:2.13'\n}\n</code></pre> <p>In your leak reporting code: <pre><code>val retainedInstanceCount = AppWatcher.objectWatcher.retainedObjectCount\n</code></pre></p>"},{"location":"recipes/#leakcanary-in-release-builds","title":"LeakCanary in release builds","text":"<p>We do not recommend including LeakCanary in release builds, as it could negatively impact the experience of your customers. To avoid accidentally including the <code>com.squareup.leakcanary:leakcanary-android</code> dependency in a release build, LeakCanary crashes during initialization if the APK is not debuggable. You may have a good reason to create a non debuggable build that includes LeakCanary, for example for a QA build. If necessary, the crashing check can be disabled by overriding the <code>bool/leak_canary_allow_in_non_debuggable_build</code> resource, e.g. by creating a file under <code>res/values</code> with the following contents:</p> <pre><code>&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\n&lt;resources&gt;\n&lt;bool name=\"leak_canary_allow_in_non_debuggable_build\"&gt;true&lt;/bool&gt;\n&lt;/resources&gt;\n</code></pre>"},{"location":"recipes/#android-tv","title":"Android TV","text":"<p>LeakCanary works on Android TV devices (FireTV, Nexus player, Nvidia Shield, MiBox, etc.) without any additional setup. However, there are couple things you need to be aware of:</p> <ul> <li>Android TV doesn\u2019t have notifications. LeakCanary will display Toast messages when objects become retained and when leak analysis completes. You can also check Logcat for more details.</li> <li>Due to lack of notifications, the only way to manually trigger a heap dump is to background the app.</li> <li>There\u2019s a bug on API 26+ devices that prevents the activity that displays leaks from appearing in apps list. As a workaround, LeakCanary prints an <code>adb shell</code> command in Logcat after heap dump analysis that launches leak list activity:     <pre><code>adb shell am start -n \"com.your.package.name/leakcanary.internal.activity.LeakLauncherActivity\"\n</code></pre></li> <li>Some Android TV devices have very little memory available per app process and this might impact LeakCanary. Running the LeakCanary analysis in a separate process might help in such cases.</li> </ul>"},{"location":"recipes/#icon-and-label","title":"Icon and label","text":"<p>The activity that displays leaks comes with a default icon and label, which you can change by providing <code>R.mipmap.leak_canary_icon</code> and <code>R.string.leak_canary_display_activity_label</code> in your app:</p> <pre><code>res/\n  mipmap-hdpi/\n    leak_canary_icon.png\n  mipmap-mdpi/\n    leak_canary_icon.png\n  mipmap-xhdpi/\n    leak_canary_icon.png\n  mipmap-xxhdpi/\n    leak_canary_icon.png\n  mipmap-xxxhdpi/\n    leak_canary_icon.png\n   mipmap-anydpi-v26/\n     leak_canary_icon.xml\n</code></pre> <pre><code>&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\n&lt;resources&gt;\n&lt;string name=\"leak_canary_display_activity_label\"&gt;MyLeaks&lt;/string&gt;\n&lt;/resources&gt;\n</code></pre>"},{"location":"recipes/#matching-known-library-leaks","title":"Matching known library leaks","text":"<p>Set LeakCanary.Config.referenceMatchers to a list that builds on top of AndroidReferenceMatchers.appDefaults:</p> <pre><code>class DebugExampleApplication : ExampleApplication() {\n\noverride fun onCreate() {\nsuper.onCreate()\nLeakCanary.config = LeakCanary.config.copy(\nreferenceMatchers = AndroidReferenceMatchers.appDefaults +\nAndroidReferenceMatchers.staticFieldLeak(\nclassName = \"com.samsing.SomeSingleton\",\nfieldName = \"sContext\",\ndescription = \"SomeSingleton has a static field leaking a context.\",\npatternApplies = {\nmanufacturer == \"Samsing\" &amp;&amp; sdkInt == 26\n}\n)\n)\n}\n}\n</code></pre>"},{"location":"recipes/#ignoring-specific-activities-or-fragment-classes","title":"Ignoring specific activities or fragment classes","text":"<p>Sometimes a 3rd party library provides its own activities or fragments which contain a number of bugs leading to leaks of those specific 3rd party activities and fragments. You should push hard on that library to fix their memory leaks as it\u2019s directly impacting your application. That being said, until those are fixed, you have two options:</p> <ol> <li>Add the specific leaks as known library leaks (see Matching known library leaks). LeakCanary will run when those leaks are detected and then report them as known library leaks.</li> <li>Disable LeakCanary automatic activity or fragment watching (e.g. <code>AppWatcher.config = AppWatcher.config.copy(watchActivities = false)</code>) and then manually pass objects to <code>AppWatcher.objectWatcher.watch</code>.</li> </ol>"},{"location":"recipes/#identifying-leaking-objects-and-labeling-objects","title":"Identifying leaking objects and labeling objects","text":"<pre><code>class DebugExampleApplication : ExampleApplication() {\n\noverride fun onCreate() {\nsuper.onCreate()\nval addEntityIdLabel = ObjectInspector { reporter -&gt;\nreporter.whenInstanceOf(\"com.example.DbEntity\") { instance -&gt;\nval databaseIdField = instance[\"com.example.DbEntity\", \"databaseId\"]!!\nval databaseId = databaseIdField.value.asInt!!\nlabels += \"DbEntity.databaseId = $databaseId\"\n}\n}\n\nval singletonsInspector =\nAppSingletonInspector(\"com.example.MySingleton\", \"com.example.OtherSingleton\")\n\nval mmvmInspector = ObjectInspector { reporter -&gt;\nreporter.whenInstanceOf(\"com.mmvm.SomeViewModel\") { instance -&gt;\nval destroyedField = instance[\"com.mmvm.SomeViewModel\", \"destroyed\"]!!\nif (destroyedField.value.asBoolean!!) {\nleakingReasons += \"SomeViewModel.destroyed is true\"\n} else {\nnotLeakingReasons += \"SomeViewModel.destroyed is false\"\n}\n}\n}\n\nLeakCanary.config = LeakCanary.config.copy(\nobjectInspectors = AndroidObjectInspectors.appDefaults +\nlistOf(addObjectIdLabel, singletonsInspector, mmvmInspector)\n)\n}\n}\n</code></pre>"},{"location":"recipes/#running-the-leakcanary-analysis-in-a-separate-process","title":"Running the LeakCanary analysis in a separate process","text":"<p>LeakCanary runs in your main app process. LeakCanary 2 is optimized to keep memory usage low while analysing and runs in a background thread with priority <code>Process.THREAD_PRIORITY_BACKGROUND</code>. If you find that LeakCanary is still using too much memory or impacting the app process performance, you can configure it to run the analysis in a separate process.</p> <p>All you have to do is replace the <code>leakcanary-android</code> dependency with <code>leakcanary-android-process</code>:</p> <pre><code>dependencies {\n// debugImplementation 'com.squareup.leakcanary:leakcanary-android:${version}'\ndebugImplementation 'com.squareup.leakcanary:leakcanary-android-process:${version}'\n}\n</code></pre> <p>You can call LeakCanaryProcess.isInAnalyzerProcess to check if your Application class is being created in the LeakCanary process. This is useful when configuring libraries like Firebase that may crash when running in an unexpected process.</p>"},{"location":"recipes/#setting-up-leakcanary-for-different-product-flavors","title":"Setting up LeakCanary for different product flavors","text":"<p>You can setup LeakCanary to run in a specific product flavors of your app. For example, create:</p> <pre><code>android {\n  flavorDimensions \"default\"\n  productFlavors {\n    prod {\n      // ...\n    }\n    qa {\n      // ...\n    }\n    dev {\n      // ...\n    }\n  }\n}\n</code></pre> <p>Then, define a custom configuration for the flavor for which you want to enable LeakCanary:</p> <pre><code>android {\n  // ...\n}\nconfigurations {\n    devDebugImplementation {}\n}\n</code></pre> <p>You can now add the LeakCanary dependency for that configuration:</p> <pre><code>dependencies {\n  devDebugImplementation \"com.squareup.leakcanary:leakcanary-android:${version}\"\n}\n</code></pre>"},{"location":"recipes/#extracting-metadata-from-the-heap-dump","title":"Extracting metadata from the heap dump","text":"<p>LeakCanary.Config.metadataExtractor extracts metadata from a heap dump. The metadata is then available in <code>HeapAnalysisSuccess.metadata</code>. <code>LeakCanary.Config.metadataExtractor</code> defaults to <code>AndroidMetadataExtractor</code> but you can replace it to extract additional metadata from the hprof.</p> <p>For example, if you want to include the app version name in your heap analysis reports, you need to first store it in memory (e.g. in a static field) and then you can retrieve it in <code>MetadataExtractor</code>.</p> <pre><code>class DebugExampleApplication : ExampleApplication() {\n\ncompanion object {\n@JvmStatic\nlateinit var savedVersionName: String\n}\n\noverride fun onCreate() {\nsuper.onCreate()\n\nval packageInfo = packageManager.getPackageInfo(packageName, 0)\nsavedVersionName = packageInfo.versionName\n\nLeakCanary.config = LeakCanary.config.copy(\nmetadataExtractor = MetadataExtractor { graph -&gt;\nval companionClass =\ngraph.findClassByName(\"com.example.DebugExampleApplication\")!!\n\nval versionNameField = companionClass[\"savedVersionName\"]!!\nval versionName = versionNameField.valueAsInstance!!.readAsJavaString()!!\n\nval defaultMetadata = AndroidMetadataExtractor.extractMetadata(graph)\n\nmapOf(\"App Version Name\" to versionName) + defaultMetadata\n})\n}\n}\n</code></pre>"},{"location":"recipes/#using-leakcanary-with-obfuscated-apps","title":"Using LeakCanary with obfuscated apps","text":"<p>If obfuscation is turned on then leak traces will be obfuscated. It\u2019s possible to automatically deobfuscate leak traces by using a deobfuscation gradle plugin provided by LeakCanary.</p> <p>You have to add a plugin dependency in your root <code>build.gradle</code> file:</p> <pre><code>buildscript {\ndependencies {\nclasspath 'com.squareup.leakcanary:leakcanary-deobfuscation-gradle-plugin:${version}'\n}\n}\n</code></pre> <p>And then you need to apply and configure the plugin in your app (or library) specific <code>build.gradle</code> file:</p> <pre><code>apply plugin: 'com.android.application'\napply plugin: 'com.squareup.leakcanary.deobfuscation'\n\nleakCanary {\n// LeakCanary needs to know which variants have obfuscation turned on\nfilterObfuscatedVariants { variant -&gt;\nvariant.name == \"debug\"\n}\n}\n</code></pre> <p>Now you can run LeakCanary on an obfuscated app and leak traces will be automatically deobfuscated.</p> <p>Important: never use this plugin on a release variant. This plugin copies obfuscation mapping file and puts it inside the .apk, so if you use it on release build then the obfuscation becomes pointless because the code can be easily deobfuscated using mapping file.</p> <p>Warning: R8 (Google Proguard replacement) can now understand Kotlin language constructs but the side effect is that mapping files can get very large (a couple dozen megabytes). It means that the size of .apk containing copied mapping file will increase as well. This is another reason for not using this plugin on a release variant.</p>"},{"location":"recipes/#detecting-leaks-in-jvm-applications","title":"Detecting leaks in JVM applications","text":"<p>While LeakCanary was designed to work out of the box on Android, it can run on any JVM with a bit of configuration.</p> <p>Add the ObjectWatcher and Shark dependencies to your build file:</p> <pre><code>dependencies {\nimplementation 'com.squareup.leakcanary:leakcanary-object-watcher:2.13'\nimplementation 'com.squareup.leakcanary:shark:2.13'\n}\n</code></pre> <p>Define a <code>HotSpotHeapDumper</code> to dump the heap:</p> <pre><code>import com.sun.management.HotSpotDiagnosticMXBean\nimport java.lang.management.ManagementFactory\n\nobject HotSpotHeapDumper {\nprivate val mBean: HotSpotDiagnosticMXBean by lazy {\nval server = ManagementFactory.getPlatformMBeanServer()\nManagementFactory.newPlatformMXBeanProxy(\nserver,\n\"com.sun.management:type=HotSpotDiagnostic\",\nHotSpotDiagnosticMXBean::class.java\n)\n}\n\nfun dumpHeap(fileName: String) {\nmBean.dumpHeap(fileName, LIVE)\n}\n\nprivate const val LIVE = true\n}\n</code></pre> <p>Define a <code>JvmHeapAnalyzer</code> to analyze the heap when objects are retained and print the result to the console:</p> <pre><code>import leakcanary.GcTrigger\nimport leakcanary.ObjectWatcher\nimport leakcanary.OnObjectRetainedListener\nimport java.io.File\nimport java.text.SimpleDateFormat\nimport java.util.Date\nimport java.util.Locale.US\n\nclass JvmHeapAnalyzer(private val objectWatcher: ObjectWatcher) :\nOnObjectRetainedListener {\n\nprivate val fileNameFormat = SimpleDateFormat(DATE_PATTERN, US)\n\noverride fun onObjectRetained() {\nGcTrigger.Default.runGc()\nif (objectWatcher.retainedObjectCount == 0) {\nreturn\n}\nval fileName = fileNameFormat.format(Date())\nval hprofFile = File(fileName)\n\nprintln(\"Dumping the heap to ${hprofFile.absolutePath}\")\nHotSpotHeapDumper.dumpHeap(hprofFile.absolutePath)\n\nval analyzer = HeapAnalyzer(\nOnAnalysisProgressListener { step -&gt;\nprintln(\"Analysis in progress, working on: ${step.name}\")\n})\n\nval heapDumpAnalysis = analyzer.analyze(\nheapDumpFile = hprofFile,\nleakingObjectFinder = KeyedWeakReferenceFinder,\ncomputeRetainedHeapSize = true,\nobjectInspectors = ObjectInspectors.jdkDefaults\n)\nprintln(heapDumpAnalysis)\n}\ncompanion object {\nprivate const val DATE_PATTERN = \"yyyy-MM-dd_HH-mm-ss_SSS'.hprof'\"\n}\n}\n</code></pre> <p>Create an <code>ObjectWatcher</code> instance and configure it to watch objects for 5 seconds before notifying a <code>JvmHeapAnalyzer</code> instance:</p> <pre><code>val scheduledExecutor = Executors.newSingleThreadScheduledExecutor()\nval objectWatcher = ObjectWatcher(\nclock = Clock {\nSystem.currentTimeMillis()\n},\ncheckRetainedExecutor = Executor { command -&gt;\nscheduledExecutor.schedule(command, 5, SECONDS)\n}\n)\n\nval heapAnalyzer = JvmHeapAnalyzer(objectWatcher)\nobjectWatcher.addOnObjectRetainedListener(heapAnalyzer)\n</code></pre> <p>Pass objects that you expect to be garbage collected (e.g. closed resources) to the <code>ObjectWatcher</code> instance:</p> <pre><code>objectWatcher.watch(\nwatchedObject = closedResource,\ndescription = \"$closedResource is closed and should be garbage collected\"\n)\n</code></pre> <p>If you end up using LeakCanary on a JVM, the community will definitely benefit from your experience, so don\u2019t hesitate to let us know!</p>"},{"location":"recipes/#packagemanagergetlaunchintentforpackage-returns-leaklauncheractivity","title":"PackageManager.getLaunchIntentForPackage() returns LeakLauncherActivity","text":"<p>LeakCanary adds a main activity that has a Intent#CATEGORY_LAUNCHER category. PackageManager.getLaunchIntentForPackage() looks for a main activity in the category <code>Intent#CATEGORY_INFO</code>, and next for a main activity in the category <code>Intent#CATEGORY_LAUNCHER</code>. <code>PackageManager.getLaunchIntentForPackage()</code> returns the first activity that matches in the merged manifest of your app. If your app relies on <code>PackageManager.getLaunchIntentForPackage()</code>, you have two options:</p> <ul> <li>Add <code>Intent#CATEGORY_INFO</code> to your main activity intent filter, so that it gets picked up first. This is what the Android documentation recommends.</li> <li>Disable the leakcanary launcher activity by setting the <code>leak_canary_add_launcher_icon</code> resource boolean to false.</li> </ul>"},{"location":"recorded-presentations/","title":"Recorded Presentations","text":"<ul> <li>Live leak investigations, investigating leaks on Stack Overflow and fixes for AOSP leaks</li> <li>Fixing leaks in Firefox</li> <li>Shark: Diving into the guts of LeakCanary\u2019s Hprof parser</li> <li>LeakCanary 2: Leaner, Better, Faster, Kotliner!</li> <li>LeakCanary, then what? Nuking Nasty Memory Leaks</li> <li>Memory Leak Hunt, a live investigation.</li> <li>Installing LeakCanary (LeakCanary 1.5)</li> <li>How to use LeakCanary</li> </ul> <p>Your presentation should be here, please update this list! Any technical level welcome.</p>"},{"location":"releasing/","title":"Releasing LeakCanary","text":""},{"location":"releasing/#preparing-the-release-environment","title":"Preparing the release environment","text":""},{"location":"releasing/#set-up-your-sonatype-ossrh-account","title":"Set up your Sonatype OSSRH account","text":"<ul> <li>Create a Sonatype OSSRH JIRA account.</li> <li>Create a ticket to request access to the <code>com.squareup.leakcanary</code> project. Here\u2019s an example: OSSRH-54959.</li> <li>Then ask someone with deployer role from the LeakCanary team to confirm access.</li> </ul>"},{"location":"releasing/#set-up-your-signing-key","title":"Set up your signing key","text":"<pre><code># Create a new key\ngpg --gen-key\n# List local keys. Key id is last 8 characters\ngpg -K\ncd ~/.gnupg\n# Export key locally\ngpg --export-secret-keys -o secring.gpg\n# Upload key to Ubuntu servers\ngpg --send-keys --keyserver keyserver.ubuntu.com &lt;KEY ID&gt;\n# Confirm the key can now be found\ngpg --recv-keys --keyserver keyserver.ubuntu.com &lt;KEY ID&gt;\n</code></pre>"},{"location":"releasing/#set-up-your-home-gradleproperties","title":"Set up your home gradle.properties","text":"<p>Add this to your <code>~/.gradle/gradle.properties</code>:</p> <pre><code>signing.keyId=&lt;KEY ID&gt;\nsigning.password=&lt;KEY PASSWORD&gt;\nsigning.secretKeyRingFile=/Users/YOUR_USERNAME_/.gnupg/secring.gpg\nSONATYPE_NEXUS_USERNAME=&lt;SONATYPE_USERNAME&gt;\nSONATYPE_NEXUS_PASSWORD=&lt;SONATYPE_PASSWORD&gt;\n</code></pre>"},{"location":"releasing/#set-up-the-google-analytics-docs-key","title":"Set up the Google Analytics docs key","text":"<p>Add this to your <code>~/.bashrc</code>:</p> <pre><code>export LEAKCANARY_GOOGLE_ANALYTICS_KEY=\"UA-142834539-1\"\n</code></pre>"},{"location":"releasing/#set-up-github-cli","title":"Set up GitHub CLI","text":"<p>Install GitHub CLI</p> <pre><code>brew install gh\n</code></pre> <p>Install jq, a CLI Json processor</p> <pre><code>brew install jq\n</code></pre> <p>Set up aliases for milestone management:</p> <pre><code>gh alias set listOpenMilestones \"api graphql -F owner=':owner' -F name=':repo' -f query='\n    query ListOpenMilestones(\\$name: String\\!, \\$owner: String\\!) {\n        repository(owner: \\$owner, name: \\$name) {\n            milestones(first: 100, states: OPEN) {\n                nodes {\n                    title\n                    number\n                    description\n                    dueOn\n                    url\n                    state\n                    closed\n                    closedAt\n                    updatedAt\n                }\n            }\n        }\n    }\n'\"\n\ngh alias set --shell createMilestone \"gh api --method POST repos/:owner/:repo/milestones --input - | jq '{ html_url: .html_url, state: .state, created_at: .created_at }'\"\n\ngh alias set --shell closeMilestone \"echo '{\\\"state\\\": \\\"closed\\\"}' | gh api --method PATCH repos/:owner/:repo/milestones/\\$1 --input - | jq '{ html_url: .html_url, state: .state, closed_at: .closed_at }'\"\n</code></pre>"},{"location":"releasing/#install-or-update-the-doc-generation-dependencies","title":"Install or update the doc generation dependencies","text":"<pre><code>pip3 install --requirement docs/requirements.txt\n</code></pre>"},{"location":"releasing/#releasing","title":"Releasing","text":"<ul> <li> <p>Create a local release branch from <code>main</code> <pre><code>git checkout main &amp;&amp; \\\ngit pull &amp;&amp; \\\ngit checkout -b release_3.0-alpha-2\n</code></pre></p> </li> <li> <p>Update <code>VERSION_NAME</code> in <code>gradle.properties</code> (remove <code>-SNAPSHOT</code>) <pre><code>sed -i '' 's/VERSION_NAME=3.0-alpha-2-SNAPSHOT/VERSION_NAME=3.0-alpha-2/' gradle.properties\n</code></pre></p> </li> <li> <p>Update the current version and next version in <code>mkdocs.yml</code> <pre><code>sed -i '' 's/3.0-alpha-2/NEXT/' mkdocs.yml\nsed -i '' 's/2.13/3.0-alpha-2/' mkdocs.yml\n</code></pre></p> </li> <li> <p>Create the release <pre><code>git commit -am \"Prepare 3.0-alpha-2 release\" &amp;&amp; \\\n./gradlew clean &amp;&amp; \\\n./gradlew build &amp;&amp; \\\ngit tag v3.0-alpha-2 &amp;&amp; \\\ngit push origin v3.0-alpha-2 &amp;&amp; \\\n./gradlew publish --no-daemon --no-parallel &amp;&amp; \\\n./gradlew closeAndReleaseRepository &amp;&amp; \\\n./gradlew shark:shark-cli:distZip\n</code></pre></p> </li> </ul> <p>Note: if anything goes wrong, you can manually drop the release at https://s01.oss.sonatype.org/</p> <ul> <li>Merge back to main <pre><code>git checkout main &amp;&amp; \\\ngit pull &amp;&amp; \\\ngit merge --no-ff release_3.0-alpha-2\n</code></pre></li> <li> <p>Update <code>VERSION_NAME</code> in <code>gradle.properties</code> (increase version and add <code>-SNAPSHOT</code>) <pre><code>sed -i '' 's/VERSION_NAME=3.0-alpha-2/VERSION_NAME=NEXT-SNAPSHOT/' gradle.properties\n</code></pre></p> </li> <li> <p>Generate the Dokka docs <pre><code>rm -rf docs/api &amp;&amp; ./gradlew siteDokka\n</code></pre></p> </li> <li> <p>Update the changelog (commit list) <pre><code>mate docs/changelog.md\n</code></pre></p> </li> <li> <p>Deploy the docs locally then open the changelog and check everything looks good <pre><code>mkdocs serve\n</code></pre></p> </li> <li> <p>Finish up the release</p> </li> </ul> <pre><code>git commit -am \"Prepare for next development iteration\" &amp;&amp; \\\ngit push &amp;&amp; \\\ngh listOpenMilestones | jq '.data.repository.milestones.nodes[0].number' | xargs gh closeMilestone &amp;&amp; \\\necho '{\n  \"title\": \"REPLACE_WITH_NEXT_VERSION_NUMBER\",\n  \"state\": \"open\",\n  \"description\": \"\"\n}' | gh createMilestone &amp;&amp; \\\nmkdocs gh-deploy\ngh release create v3.0-alpha-2 ./shark-cli/build/distributions/shark-cli-3.0-alpha-2.zip --title v3.0-alpha-2 --notes 'See [Change Log](https://square.github.io/leakcanary/changelog)'\n</code></pre> <ul> <li> <p>Open the v3.0-alpha-2 release to confirm everything looks good.</p> </li> <li> <p>Upload shark-cli to brew: <pre><code>brew bump-formula-pr --url https://github.com/square/leakcanary/releases/download/v3.0-alpha-2/shark-cli-3.0-alpha-2.zip leakcanary-shark\n</code></pre></p> </li> <li> <p>Wait for the release to be available on Maven Central.</p> </li> <li>Tell your friends, update all of your apps, and tweet the new release. As a nice extra touch, mention external contributions.</li> </ul>"},{"location":"shark/","title":"Shark \ud83e\udd88","text":"<p>Shark: Smart Heap Analysis Reports for Kotlin</p> <p> </p> <p>Shark is the heap analyzer that powers LeakCanary 2. It\u2019s a Kotlin standalone heap analysis library that runs at high speed with a low memory footprint.</p> <p>Shark is released in layers:</p> <ol> <li>Shark Hprof: Read and write records in hprof files.</li> <li>Shark Graph: Navigate the heap object graph.</li> <li>Shark: Generate heap analysis reports.</li> <li>Shark Android: Android heuristics to generate tailored heap analysis reports.</li> <li>Shark CLI: Analyze the heap of debuggable apps installed on an Android device connected to your desktop. The output is similar to the output of LeakCanary, except you don\u2019t have to add the LeakCanary dependency to your app.</li> <li>LeakCanary: Builds on top. It automatically watches destroyed activities and fragments, triggers a heap dump, runs Shark Android and then displays the result.</li> </ol> <p>A few more things:</p> <ul> <li>Shark is built on top of Okio. Okio makes it easy to parse heap dumps efficiently.</li> <li>Shark is a 100% Kotlin library, and Kotlin is essential to its design, because Shark relies heavily on sealed classes and sequences to save memory.</li> <li>Shark has the unique ability to help narrow down the cause of memory leaks through platform specific heuristics.</li> <li>Shark is heavily tested (80% test coverage).</li> <li>Shark can run in both Java and Android VMs, with no other dependency than Okio and Kotlin.</li> <li>Shark can analyze both Java and Android VM hprof files.</li> <li>Shark can deobfuscate hprof records if it has access to obfuscation mapping file.</li> </ul>"},{"location":"shark/#shark-cli","title":"Shark CLI","text":"<p>The Shark Command Line Interface (CLI) enables you to analyze heaps directly from your computer. It can dump the heap of an app installed on a connected Android device, analyze it, and even strip a heap dump of any sensitive data (e.g. PII, passwords or encryption keys) which is useful when sharing a heap dump.</p> <p>Install it via Homebrew:</p> <pre><code>brew install leakcanary-shark\n</code></pre> <p>You can also download it here.</p> <p>You can then look for leaks in apps on any connected device, for example: </p> <pre><code>$ shark-cli --device emulator-5554 --process com.example.app.debug analyze\n</code></pre> <p>Info</p> <p><code>shark-cli</code> works with all debuggable apps, even if they don\u2019t include the <code>leakcanary-android</code> dependency.</p> <p>Run <code>shark-cli</code> to see usage instructions:</p> <pre><code>$ shark-cli\n\nUsage: shark-cli [OPTIONS] COMMAND [ARGS]...\n\n                   ^`.                 .=\"\"=.\n   ^_              \\  \\               / _  _ \\\n   \\ \\             {   \\             |  d  b  |\n   {  \\           /     `~~~--__     \\   /\\   /\n   {   \\___----~~'              `~~-_/'-=\\/=-'\\,\n    \\                         /// a  `~.      \\ \\\n    / /~~~~-, ,__.    ,      ///  __,,,,)      \\ |\n    \\/      \\/    `~~~;   ,---~~-_`/ \\        / \\/\n                     /   /            '.    .'\n                    '._.'             _|`~~`|_\n                                      /|\\  /|\\\n\nOptions:\n  -p, --process TEXT              Full or partial name of a process, e.g.\n                                  \"example\" would match \"com.example.app\"\n  -d, --device ID                 device/emulator id\n  -m, --obfuscation-mapping PATH  path to obfuscation mapping file\n  --verbose / --no-verbose        provide additional details as to what\n                                  shark-cli is doing\n  -h, --hprof FILE                path to a .hprof file\n  --help                          Show this message and exit\n\nCommands:\n  interactive   Explore a heap dump.\n  analyze       Analyze a heap dump.\n  dump-process  Dump the heap and pull the hprof file.\n  strip-hprof   Replace all primitive arrays from the provided heap dump with\n                arrays of zeroes and generate a new \"-stripped.hprof\" file.\n</code></pre>"},{"location":"shark/#shark-code-examples","title":"Shark code examples","text":""},{"location":"shark/#reading-records-in-a-hprof-file","title":"Reading records in a hprof file","text":"<pre><code>dependencies {\nimplementation 'com.squareup.leakcanary:shark-hprof:$sharkVersion'\n}\n</code></pre> <pre><code>// Prints all class and field names\nHprof.open(heapDumpFile)\n.use { hprof -&gt;\nhprof.reader.readHprofRecords(\nrecordTypes = setOf(StringRecord::class),\nlistener = OnHprofRecordListener { position, record -&gt;\nprintln((record as StringRecord).string)\n})\n}\n</code></pre>"},{"location":"shark/#navigating-the-heap-object-graph","title":"Navigating the heap object graph","text":"<pre><code>dependencies {\nimplementation 'com.squareup.leakcanary:shark-graph:$sharkVersion'\n}\n</code></pre> <pre><code>// Prints all thread names\nHprof.open(heapDumpFile)\n.use { hprof -&gt;\nval heapGraph = HprofHeapGraph.indexHprof(hprof)\nval threadClass = heapGraph.findClassByName(\"java.lang.Thread\")!!\nval threadNames: Sequence&lt;String&gt; = threadClass.instances.map { instance -&gt;\nval nameField = instance[\"java.lang.Thread\", \"name\"]!!\nnameField.value.readAsJavaString()!!\n}\nthreadNames.forEach { println(it) }\n}\n</code></pre>"},{"location":"shark/#generating-a-heap-analysis-report","title":"Generating a heap analysis report","text":"<pre><code>dependencies {\nimplementation 'com.squareup.leakcanary:shark:$sharkVersion'\n}\n</code></pre> <pre><code>// Marks any instance of com.example.ThingWithLifecycle with\n// ThingWithLifecycle.destroyed=true as leaking\nval leakingObjectFilter = object : LeakingObjectFilter {\noverride fun isLeakingObject(heapObject: HeapObject): Boolean {\nreturn if (heapObject instanceOf \"com.example.ThingWithLifecycle\") {\nval instance = heapObject as HeapInstance\nval destroyedField = instance[\"com.example.ThingWithLifecycle\", \"destroyed\"]!!\ndestroyedField.value.asBoolean!!\n} else false\n}\n}\n\nval leakingObjectFinder = FilteringLeakingObjectFinder(listOf(leakingObjectFilter))\n\nval heapAnalysis = Hprof.open(heapDumpFile)\n.use { hprof -&gt;\nval heapGraph = HprofHeapGraph.indexHprof(hprof)\nval heapAnalyzer = HeapAnalyzer(AnalyzerProgressListener.NONE)\nheapAnalyzer.analyze(\nheapDumpFile = heapDumpFile,\ngraph = heapGraph,\nleakingObjectFinder = leakingObjectFinder,\n)\n}\nprintln(analysis)\n</code></pre>"},{"location":"shark/#generating-an-android-heap-analysis-report","title":"Generating an Android heap analysis report","text":"<pre><code>dependencies {\nimplementation 'com.squareup.leakcanary:shark-android:$sharkVersion'\n}\n</code></pre> <pre><code>val heapAnalyzer = HeapAnalyzer(AnalyzerProgressListener.NONE)\nval analysis = heapAnalyzer.checkForLeaks(\nheapDumpFile = heapDumpFile,\nreferenceMatchers = AndroidReferenceMatchers.appDefaults,\nobjectInspectors = AndroidObjectInspectors.appDefaults\n)\nprintln(analysis)\n</code></pre>"},{"location":"support/","title":"LeakCanary Support","text":"<p>If you\u2019re looking for help with LeakCanary:</p> <ul> <li>Learn the Fundamentals</li> <li>Try the code recipes</li> <li>Read the FAQ</li> <li>Watch recorded presentations</li> <li>Read blog articles</li> <li>Ask a question on StackOverflow</li> </ul>"},{"location":"ui-tests/","title":"Leak detection in UI tests","text":"<p>Running leak detection in UI tests means you can detect memory leaks automatically in Continuous Integration prior to new leaks being merged into the codebase.</p> <p>Test environment detection</p> <p>In debug builds, LeakCanary looks for retained instances continuously, freezes the VM to take a heap dump after a watched object has been retained for 5 seconds, then performs the analysis in a background thread and reports the result using notifications. That behavior isn\u2019t well suited for UI tests, so LeakCanary is automatically disabled when JUnit is on the runtime classpath (see test environment detection).</p>"},{"location":"ui-tests/#getting-started","title":"Getting started","text":"<p>LeakCanary provides an artifact dedicated to detecting leaks in UI tests:</p> <pre><code>androidTestImplementation 'com.squareup.leakcanary:leakcanary-android-instrumentation:2.13'\n// You still need to include the LeakCanary artifact in your app:\ndebugImplementation 'com.squareup.leakcanary:leakcanary-android:2.13'\n</code></pre> <p>You can then call <code>LeakAssertions.assertNoLeaks()</code> at any point in your tests to check for leaks:</p> <pre><code>class CartTest {\n\n@Test\nfun addItemToCart() {\n// ...\nLeakAssertions.assertNoLeaks()\n}\n}\n</code></pre> <p>If retained instances are detected, LeakCanary will dump and analyze the heap. If application leaks are found, <code>LeakAssertions.assertNoLeaks()</code> will throw a <code>NoLeakAssertionFailedError</code>.</p> <pre><code>leakcanary.NoLeakAssertionFailedError: Application memory leaks were detected:\n====================================\nHEAP ANALYSIS RESULT\n====================================\n1 APPLICATION LEAKS\n\n\u252c\u2500\u2500\u2500\n\u2502 GC Root: System class\n\u2502\n\u251c\u2500 com.example.MySingleton class\n\u2502    Leaking: NO (a class is never leaking)\n\u2502    \u2193 static MySingleton.leakedView\n\u2502                         ~~~~~~~~~~\n\u251c\u2500 android.widget.TextView instance\n\u2502    Leaking: YES (View.mContext references a destroyed activity)\n\u2502    \u2193 TextView.mContext\n\u2570\u2192 com.example.MainActivity instance\n     Leaking: YES (Activity#mDestroyed is true)\n====================================\n  at leakcanary.AndroidDetectLeaksAssert.assertNoLeaks(AndroidDetectLeaksAssert.kt:34)\n  at leakcanary.LeakAssertions.assertNoLeaks(LeakAssertions.kt:21)\n  at com.example.CartTest.addItemToCart(TuPeuxPasTest.kt:41)\n</code></pre> <p>Obfuscated instrumentation tests</p> <p>When running instrumentation tests against obfuscated release builds, the LeakCanary classes end up spread over the test APK and the main APK. Unfortunately there is a bug in the Android Gradle Plugin that leads to runtime crashes when running tests, because code from the main APK is changed without the using code in the test APK being updated accordingly. If you run into this issue, setting up the Keeper plugin should fix it.</p>"},{"location":"ui-tests/#test-rule","title":"Test rule","text":"<p>You can use the <code>DetectLeaksAfterTestSuccess</code> test rule to automatically call  <code>LeakAssertions.assertNoLeaks()</code> at the end of a test:</p> <pre><code>class CartTest {\n@get:Rule\nval rule = DetectLeaksAfterTestSuccess()\n\n@Test\nfun addItemToCart() {\n// ...\n}\n}\n</code></pre> <p>You can call also <code>LeakAssertions.assertNoLeaks()</code> as many times as you want in a single test:</p> <pre><code>class CartTest {\n@get:Rule\nval rule = DetectLeaksAfterTestSuccess()\n\n// This test has 3 leak assertions (2 in the test + 1 from the rule).\n@Test\nfun addItemToCart() {\n// ...\nLeakAssertions.assertNoLeaks()\n// ...\nLeakAssertions.assertNoLeaks()\n// ...\n}\n}\n</code></pre>"},{"location":"ui-tests/#skipping-leak-detection","title":"Skipping leak detection","text":"<p>Use <code>@SkipLeakDetection</code> to disable <code>LeakAssertions.assertNoLeaks()</code> calls:</p> <pre><code>class CartTest {\n@get:Rule\nval rule = DetectLeaksAfterTestSuccess()\n\n// This test will not perform any leak assertion.\n@SkipLeakDetection(\"See issue #1234\")\n@Test\nfun addItemToCart() {\n// ...\nLeakAssertions.assertNoLeaks()\n// ...\nLeakAssertions.assertNoLeaks()\n// ...\n}\n}\n</code></pre> <p>You can use tags to identify each <code>LeakAssertions.assertNoLeaks()</code> call and disable only a subset of these calls:</p> <pre><code>class CartTest {\n@get:Rule\nval rule = DetectLeaksAfterTestSuccess(tag = \"EndOfTest\")\n\n// This test will only perform the second leak assertion.\n@SkipLeakDetection(\"See issue #1234\", \"First Assertion\", \"EndOfTest\")\n@Test\nfun addItemToCart() {\n// ...\nLeakAssertions.assertNoLeak(tag = \"First Assertion\")\n// ...\nLeakAssertions.assertNoLeak(tag = \"Second Assertion\")\n// ...\n}\n}\n</code></pre> <p>Tags can be retrieved by calling <code>HeapAnalysisSuccess.assertionTag</code> and are also reported in the heap analysis result metadata:</p> <pre><code>====================================\nMETADATA\n\nPlease include this in bug reports and Stack Overflow questions.\n\nBuild.VERSION.SDK_INT: 23\n...\nassertionTag: Second Assertion\n</code></pre>"},{"location":"ui-tests/#test-rule-chains","title":"Test rule chains","text":"<pre><code>// Example test rule chain\n@get:Rule\nval rule = RuleChain.outerRule(LoginRule())\n.around(ActivityScenarioRule(CartActivity::class.java))\n.around(LoadingScreenRule())\n</code></pre> <p>If you use a test rule chain, the position of the <code>DetectLeaksAfterTestSuccess</code> rule in that chain could be significant. For example, if you use an <code>ActivityScenarioRule</code> that automatically finishes the activity at the end of a test, having <code>DetectLeaksAfterTestSuccess</code> around <code>ActivityScenarioRule</code> will detect leaks after the activity is destroyed and therefore detect any activity leak. But then  <code>DetectLeaksAfterTestSuccess</code> will not detect fragment leaks that go away when the activity is destroyed.</p> <pre><code>@get:Rule\nval rule = RuleChain.outerRule(LoginRule())\n// Detect leaks AFTER activity is destroyed\n.around(DetectLeaksAfterTestSuccess(tag = \"AfterActivityDestroyed\"))\n.around(ActivityScenarioRule())\n.around(LoadingScreenRule())\n</code></pre> <p>If instead you set up <code>ActivityScenarioRule</code> around <code>DetectLeaksAfterTestSuccess</code>, destroyed activity leaks will not be detected as the activity will still be created when the leak assertion rule runs, but more fragment leaks might be detected.</p> <pre><code>@get:Rule\nval rule = RuleChain.outerRule(LoginRule())\n.around(ActivityScenarioRule(CartActivity::class.java))\n// Detect leaks BEFORE activity is destroyed\n.around(DetectLeaksAfterTestSuccess(tag = \"BeforeActivityDestroyed\"))\n.around(LoadingScreenRule())\n</code></pre> <p>To detect all leaks, the best option is to set up the <code>DetectLeaksAfterTestSuccess</code> rule twice, before and after the <code>ActivityScenarioRule</code> rule.</p> <pre><code>// Detect leaks BEFORE and AFTER activity is destroyed\n@get:Rule\nval rule = RuleChain.outerRule(LoginRule())\n.around(DetectLeaksAfterTestSuccess(tag = \"AfterActivityDestroyed\"))\n.around(ActivityScenarioRule(CartActivity::class.java))\n.around(DetectLeaksAfterTestSuccess(tag = \"BeforeActivityDestroyed\"))\n.around(LoadingScreenRule())\n</code></pre> <p><code>RuleChain.detectLeaksAfterTestSuccessWrapping()</code> is a helper for doing just that:</p> <pre><code>// Detect leaks BEFORE and AFTER activity is destroyed\n@get:Rule\nval rule = RuleChain.outerRule(LoginRule())\n// The tag will be suffixed with \"Before\" and \"After\".\n.detectLeaksAfterTestSuccessWrapping(tag = \"ActivitiesDestroyed\") {\naround(ActivityScenarioRule(CartActivity::class.java))\n}\n.around(LoadingScreenRule())\n</code></pre>"},{"location":"ui-tests/#customizing-assertnoleaks","title":"Customizing <code>assertNoLeaks()</code>","text":"<p><code>LeakAssertions.assertNoLeaks()</code> delegates calls to a global <code>DetectLeaksAssert</code> implementation, which by default is an instance of <code>AndroidDetectLeaksAssert</code>. You can change the <code>DetectLeaksAssert</code> implementation by calling <code>DetectLeaksAssert.update(customLeaksAssert)</code>.</p> <p>The <code>AndroidDetectLeaksAssert</code> implementation performs a heap dump when retained instances are detected, analyzes the heap, then passes the result to a <code>HeapAnalysisReporter</code>. The default <code>HeapAnalysisReporter</code> is <code>NoLeakAssertionFailedError.throwOnApplicationLeaks()</code> which throws a <code>NoLeakAssertionFailedError</code> if an application leak is detected.</p> <p>You could provide a custom implementation to also upload heap analysis results to a central place before failing the test: <pre><code>val throwingReporter = NoLeakAssertionFailedError.throwOnApplicationLeaks()\n\nDetectLeaksAssert.update(AndroidDetectLeaksAssert(\nheapAnalysisReporter = { heapAnalysis -&gt;\n// Upload the heap analysis result\nheapAnalysisUploader.upload(heapAnalysis)\n// Fail the test if there are application leaks\nthrowingReporter.reportHeapAnalysis(heapAnalysis)\n}\n))\n</code></pre></p>"},{"location":"upgrading-to-leakcanary-2.0/","title":"Upgrading to LeakCanary 2","text":"<p>LeakCanary 2 is a major rewrite. High level changes:</p> <ul> <li>New heap analyzer, reimplemented from scratch to use 10 times less memory (see Shark).</li> <li>APIs updated to simplify configuration and provide access to the new heap analyzer.</li> <li>Internals rewritten to 100% Kotlin.</li> <li>Multiple leaks detected in one analysis, grouped per leak type</li> </ul>"},{"location":"upgrading-to-leakcanary-2.0/#dependencies","title":"Dependencies","text":""},{"location":"upgrading-to-leakcanary-2.0/#before","title":"Before","text":"<pre><code>dependencies {\ndebugImplementation 'com.squareup.leakcanary:leakcanary-android:1.6.3'\nreleaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.6.3'\n// Optional, if you use support library fragments:\ndebugImplementation 'com.squareup.leakcanary:leakcanary-support-fragment:1.6.3'\n}\n</code></pre>"},{"location":"upgrading-to-leakcanary-2.0/#now","title":"Now","text":"<pre><code>dependencies {\ndebugImplementation 'com.squareup.leakcanary:leakcanary-android:2.13'\n}\n</code></pre>"},{"location":"upgrading-to-leakcanary-2.0/#worth-noting","title":"Worth noting","text":"<ul> <li>The <code>leakcanary-android-no-op</code> artifact is gone. If you have compile errors, see below.</li> <li>Question: if there\u2019s no no-op anymore, how do I ensure none of this runs during release builds?</li> <li>Answer: as long as you add <code>leakcanary-android</code> as <code>debugImplementation</code>, there won\u2019t be any code referencing LeakCanary in your release builds.</li> <li>LeakCanary does not depend on the support library anymore, and it doesn\u2019t depend on AndroidX either.</li> <li>Detection of AndroidX fragments is automatic if you have the AndroidX fragments dependency.</li> </ul>"},{"location":"upgrading-to-leakcanary-2.0/#default-setup-code","title":"Default setup code","text":""},{"location":"upgrading-to-leakcanary-2.0/#before_1","title":"Before","text":"<pre><code>public class ExampleApplication extends Application {\n\n@Override public void onCreate() {\nsuper.onCreate();\nif (LeakCanary.isInAnalyzerProcess(this)) {\n// This process is dedicated to LeakCanary for heap analysis.\n// You should not init your app in this process.\nreturn;\n}\nLeakCanary.install(this);\n// Normal app init code...\n}\n}\n</code></pre>"},{"location":"upgrading-to-leakcanary-2.0/#now_1","title":"Now","text":"<p>There is no more code for default setup.</p>"},{"location":"upgrading-to-leakcanary-2.0/#worth-noting_1","title":"Worth noting","text":"<ul> <li>LeakCanary auto installs itself</li> <li>LeakCanary analysis now runs in the main process so there is no need to call <code>LeakCanary.isInAnalyzerProcess()</code>.</li> </ul>"},{"location":"upgrading-to-leakcanary-2.0/#retrieve-the-refwatcher","title":"Retrieve the RefWatcher","text":""},{"location":"upgrading-to-leakcanary-2.0/#before_2","title":"Before","text":"<pre><code>val refWatcher: RefWatcher = LeakCanary.installedRefWatcher()\n</code></pre>"},{"location":"upgrading-to-leakcanary-2.0/#now_2","title":"Now","text":"<pre><code>val objectWatcher: ObjectWatcher = AppWatcher.objectWatcher\n</code></pre>"},{"location":"upgrading-to-leakcanary-2.0/#compile-errors-because-refwatcher-is-used-in-release-code","title":"Compile errors because RefWatcher is used in release code","text":"<p>If you were using <code>RefWatcher</code> in non debug code, you now get a compile error because the no-op artifact is gone. ObjectWatcher now lives in the <code>object-watcher</code> artifact, which is suitable for release builds. You have two options:</p>"},{"location":"upgrading-to-leakcanary-2.0/#option-1-add-object-watcher-android-to-release-builds","title":"Option 1: Add <code>object-watcher-android</code> to release builds.","text":"<pre><code>dependencies {\nimplementation 'com.squareup.leakcanary:leakcanary-object-watcher-android:2.13'\n}\n</code></pre> <ul> <li>It will automatically keep weak references to destroyed activities, fragments, and any instance you pass to AppWatcher.objectWatcher.</li> <li>It will not trigger heap dumps or anything else that LeakCanary does.</li> <li>It\u2019s very little code and should have a no impact on your release app.</li> <li>You can use it to count how many objects are retained, for example to add metadata to OutOfMemoryError crashes:</li> </ul> <pre><code>val retainedObjectCount = AppWatcher.objectWatcher.retainedObjectCount\n</code></pre>"},{"location":"upgrading-to-leakcanary-2.0/#option-2-make-your-own-objectwatcher-interface","title":"Option 2: Make your own <code>ObjectWatcher</code> interface","text":"<pre><code>// In shared code\ninterface MaybeObjectWatcher {\nfun watch(watchedObject: Any, description: String)\n\nobject None : MaybeObjectWatcher {\noverride fun watch(watchedObject: Any, description: String) {\n}\n}\n}\n\n// In debug code\nclass RealObjectWatcher : MaybeObjectWatcher {\noverride fun watch(watchedObject: Any, description: String) {\nAppWatcher.objectWatcher.watch(watchedObject, description)\n}\n}\n</code></pre> <p>Use <code>MaybeObjectWatcher.None</code> in release code and <code>RealObjectWatcher</code> in debug code.</p>"},{"location":"upgrading-to-leakcanary-2.0/#configuring-leakcanary","title":"Configuring LeakCanary","text":""},{"location":"upgrading-to-leakcanary-2.0/#before_3","title":"Before","text":"<pre><code>public class DebugExampleApplication extends ExampleApplication {\n\n@Override protected void installLeakCanary() {\nRefWatcher refWatcher = LeakCanary.refWatcher(this)\n.watchActivities(false)\n.buildAndInstall();\n}\n}\n</code></pre>"},{"location":"upgrading-to-leakcanary-2.0/#now_3","title":"Now","text":"<p>AppWatcher is in charge of detecting retained objects. Its configuration can be updated at any time by replacing AppWatcher.config:</p> <pre><code>class DebugExampleApplication : ExampleApplication() {\n\noverride fun onCreate() {\nsuper.onCreate()\nAppWatcher.config = AppWatcher.config.copy(watchFragmentViews = false)\n}\n}\n</code></pre> <p>LeakCanary is in charge of taking heap dumps and analyzing them. Its configuration can be updated at any time by replacing LeakCanary.config:</p> <pre><code>disableLeakCanaryButton.setOnClickListener {\nLeakCanary.config = LeakCanary.config.copy(dumpHeap = false)\n}\n</code></pre>"},{"location":"upgrading-to-leakcanary-2.0/#running-leakcanary-in-instrumentation-tests","title":"Running LeakCanary in instrumentation tests","text":""},{"location":"upgrading-to-leakcanary-2.0/#before_4","title":"Before","text":"<p>In your <code>build.gradle</code> file:</p> <pre><code>dependencies {\nandroidTestImplementation \"com.squareup.leakcanary:leakcanary-android-instrumentation:${leakCanaryVersion}\"\n}\n\nandroid {\ndefaultConfig {\n// ...\n\ntestInstrumentationRunner \"android.support.test.runner.AndroidJUnitRunner\"\ntestInstrumentationRunnerArgument \"listener\", \"com.squareup.leakcanary.FailTestOnLeakRunListener\"\n}\n}\n</code></pre> <p>In your test <code>Application</code> class:</p> <pre><code>public class InstrumentationTestExampleApplication extends DebugExampleApplication {\n@Override protected void installLeakCanary() {\nInstrumentationLeakDetector.instrumentationRefWatcher(this)\n.buildAndInstall();\n}\n}\n</code></pre>"},{"location":"upgrading-to-leakcanary-2.0/#now_4","title":"Now","text":"<p>Remove all the previous test related leak detection code then follow Leak detection in UI tests.</p>"},{"location":"upgrading-to-leakcanary-2.0/#analysis-listener-uploading-to-a-server","title":"Analysis listener / uploading to a server","text":""},{"location":"upgrading-to-leakcanary-2.0/#before_5","title":"Before","text":"<pre><code>public class LeakUploadService extends DisplayLeakService {\n@Override protected void afterDefaultHandling(HeapDump heapDump, AnalysisResult result, String leakInfo) {\n// TODO Upload result to server\n}\n}\n</code></pre> <pre><code>RefWatcher refWatcher = LeakCanary.refWatcher(this)\n.listenerServiceClass(LeakUploadService.class)\n.buildAndInstall();\n</code></pre> <pre><code>&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\n&lt;manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"&gt;\n&lt;application android:name=\"com.example.DebugExampleApplication\"&gt;\n&lt;service android:name=\"com.example.LeakUploadService\" /&gt;\n&lt;/application&gt;\n&lt;/manifest&gt;\n</code></pre>"},{"location":"upgrading-to-leakcanary-2.0/#now_5","title":"Now","text":"<pre><code>class LeakUploader : OnHeapAnalyzedListener {\n\nval defaultListener = DefaultOnHeapAnalyzedListener.create()\n\noverride fun onHeapAnalyzed(heapAnalysis: HeapAnalysis) {\nTODO(\"Upload heap analysis to server\")\n\n// Delegate to default behavior (notification and saving result)\ndefaultListener.onHeapAnalyzed(heapAnalysis)\n}\n}\n\nclass DebugExampleApplication : ExampleApplication() {\n\noverride fun onCreate() {\nsuper.onCreate()\nLeakCanary.config = LeakCanary.config.copy(\nonHeapAnalyzedListener = LeakUploader()\n)\n}\n}\n</code></pre>"},{"location":"upgrading-to-leakcanary-2.0/#matching-known-library-leaks","title":"Matching known library leaks","text":""},{"location":"upgrading-to-leakcanary-2.0/#before_6","title":"Before","text":"<pre><code>ExcludedRefs excludedRefs = AndroidExcludedRefs.createAppDefaults()\n.staticField(\"com.samsing.SomeSingleton\", \"sContext\")\n.build();\nRefWatcher refWatcher = LeakCanary.refWatcher(this)\n.excludedRefs(excludedRefs)\n.buildAndInstall();\n}\n</code></pre>"},{"location":"upgrading-to-leakcanary-2.0/#now_6","title":"Now","text":"<pre><code>LeakCanary.config = LeakCanary.config.copy(\nreferenceMatchers = AndroidReferenceMatchers.appDefaults +\nAndroidReferenceMatchers.staticFieldLeak(\n\"com.samsing.SomeSingleton\",\n\"sContext\"\n)\n)\n</code></pre> <p>Info</p> <p>There is no equivalent API to <code>ExcludedRefs.Builder.clazz()</code> because it led to abuses. Instead see Ignoring specific activities or fragment classes.</p>"},{"location":"upgrading-to-leakcanary-2.0/#public-api-packages","title":"Public API packages","text":""},{"location":"upgrading-to-leakcanary-2.0/#before_7","title":"Before","text":"<p>All public APIs were in <code>com.squareup.leakcanary.*</code></p>"},{"location":"upgrading-to-leakcanary-2.0/#now_7","title":"Now","text":"<p>All public APIs are in <code>leakcanary.*</code></p>"},{"location":"uploading/","title":"Uploading analysis results","text":"<p>You can add an <code>EventListener</code> to upload the analysis result to a server of your choosing:</p> <pre><code>class DebugExampleApplication : ExampleApplication() {\n\noverride fun onCreate() {\nsuper.onCreate()\nval analysisUploadListener = EventListener { event -&gt;\nif (event is HeapAnalysisSucceeded) {\nval heapAnalysis = event.heapAnalysis\nTODO(\"Upload heap analysis to server\")\n}\n}\n\nLeakCanary.config = LeakCanary.config.run {\ncopy(eventListeners = eventListeners + analysisUploadListener)\n}\n}\n}\n</code></pre>"},{"location":"uploading/#uploading-to-bugsnag","title":"Uploading to Bugsnag","text":"<p>A leak trace has a lot in common with a stack trace, so if you lack the engineering resources to build a backend for LeakCanary, you can instead upload leak traces to a crash reporting backend. The client needs to support grouping via custom client-side hashing as well as custom metadata with support for newlines.</p> <p>Info</p> <p>As of this writing, the only known library suitable for uploading leaks is the Bugsnag client. If you managed to make it work with another library, please file an issue.</p> <p>Create a Bugsnag account, create a new project for leak reporting and grab an API key. Make sure the app has the <code>android.permission.INTERNET</code> permission then add the latest version of the Bugsnag Android client library to <code>build.gradle</code>:</p> <pre><code>dependencies {\n// debugImplementation because LeakCanary should only run in debug builds.\ndebugImplementation 'com.squareup.leakcanary:leakcanary-android:2.13'\ndebugImplementation \"com.bugsnag:bugsnag-android:$bugsnagVersion\"\n}\n</code></pre> <p>Info</p> <p>If you\u2019re only using Bugsnag for uploading leaks, then you do not need to set up the Bugsnag Gradle plugin or to configure the API key in your app manifest.</p> <p>Create a new <code>BugsnagLeakUploader</code>:</p> <pre><code>import android.app.Application\nimport com.bugsnag.android.Bugsnag\nimport com.bugsnag.android.Configuration\nimport com.bugsnag.android.ErrorTypes\nimport com.bugsnag.android.Event\nimport com.bugsnag.android.ThreadSendPolicy\nimport shark.HeapAnalysis\nimport shark.HeapAnalysisFailure\nimport shark.HeapAnalysisSuccess\nimport shark.Leak\nimport shark.LeakTrace\nimport shark.LeakTraceReference\nimport shark.LibraryLeak\n\nclass BugsnagLeakUploader(applicationContext: Application) {\n\nprivate val bugsnagClient = Bugsnag.start(\napplicationContext,\nConfiguration(\"YOUR_BUGSNAG_API_KEY\").apply {\nenabledErrorTypes = ErrorTypes(\nanrs = false,\nndkCrashes = false,\nunhandledExceptions = false,\nunhandledRejections = false\n)\nsendThreads = ThreadSendPolicy.NEVER\n}\n)\n\nfun upload(heapAnalysis: HeapAnalysis) {\nwhen (heapAnalysis) {\nis HeapAnalysisSuccess -&gt; {\nval allLeakTraces = heapAnalysis\n.allLeaks\n.toList()\n.flatMap { leak -&gt;\nleak.leakTraces.map { leakTrace -&gt; leak to leakTrace }\n}\nif (allLeakTraces.isEmpty()) {\n// Track how often we perform a heap analysis that yields no result.\nbugsnagClient.notify(NoLeakException()) { event -&gt;\nevent.addHeapAnalysis(heapAnalysis)\ntrue\n}\n} else {\nallLeakTraces.forEach { (leak, leakTrace) -&gt;\nval message = \"Memory leak: ${leak.shortDescription}. See LEAK tab.\"\nval exception = leakTrace.asFakeException(message)\nbugsnagClient.notify(exception) { event -&gt;\nevent.addHeapAnalysis(heapAnalysis)\nevent.addLeak(leak)\nevent.addLeakTrace(leakTrace)\nevent.groupingHash = leak.signature\ntrue\n}\n}\n}\n}\nis HeapAnalysisFailure -&gt; {\n// Please file any reported failure to\n// https://github.com/square/leakcanary/issues\nbugsnagClient.notify(heapAnalysis.exception)\n}\n}\n}\n\nclass NoLeakException : RuntimeException()\n\nprivate fun Event.addHeapAnalysis(heapAnalysis: HeapAnalysisSuccess) {\naddMetadata(\"Leak\", \"heapDumpPath\", heapAnalysis.heapDumpFile.absolutePath)\nheapAnalysis.metadata.forEach { (key, value) -&gt;\naddMetadata(\"Leak\", key, value)\n}\naddMetadata(\"Leak\", \"analysisDurationMs\", heapAnalysis.analysisDurationMillis)\n}\n\nprivate fun Event.addLeak(leak: Leak) {\naddMetadata(\"Leak\", \"libraryLeak\", leak is LibraryLeak)\nif (leak is LibraryLeak) {\naddMetadata(\"Leak\", \"libraryLeakPattern\", leak.pattern.toString())\naddMetadata(\"Leak\", \"libraryLeakDescription\", leak.description)\n}\n}\n\nprivate fun Event.addLeakTrace(leakTrace: LeakTrace) {\naddMetadata(\"Leak\", \"retainedHeapByteSize\", leakTrace.retainedHeapByteSize)\naddMetadata(\"Leak\", \"signature\", leakTrace.signature)\naddMetadata(\"Leak\", \"leakTrace\", leakTrace.toString())\n}\n\nprivate fun LeakTrace.asFakeException(message: String): RuntimeException {\nval exception = RuntimeException(message)\nval stackTrace = mutableListOf&lt;StackTraceElement&gt;()\nstackTrace.add(StackTraceElement(\"GcRoot\", gcRootType.name, \"GcRoot.kt\", 42))\nfor (cause in referencePath) {\nstackTrace.add(buildStackTraceElement(cause))\n}\nexception.stackTrace = stackTrace.toTypedArray()\nreturn exception\n}\n\nprivate fun buildStackTraceElement(reference: LeakTraceReference): StackTraceElement {\nval file = reference.owningClassName.substringAfterLast(\".\") + \".kt\"\nreturn StackTraceElement(reference.owningClassName, reference.referenceDisplayName, file, 42)\n}\n}\n</code></pre> <p>Then add an <code>EventListener</code> to upload the analysis result to Bugsnag:</p> <pre><code>class DebugExampleApplication : ExampleApplication() {\n\noverride fun onCreate() {\nsuper.onCreate()\nLeakCanary.config = LeakCanary.config.copy(\nonHeapAnalyzedListener = BugsnagLeakUploader(applicationContext = this)\n)\n}\n}\n</code></pre> <p>You should start seeing leaks reported into Bugsnag, grouped by their leak signature:</p> <p></p> <p>The <code>LEAK</code> tab contains the leak trace:</p> <p></p>"},{"location":"api/leakcanary/","title":"LeakCanary API","text":"<p>//leakcanary/leakcanary</p>"},{"location":"api/leakcanary/#package-leakcanary","title":"Package leakcanary","text":""},{"location":"api/leakcanary/#types","title":"Types","text":"Name Summary ActivityWatcher class ActivityWatcher(application: Application, reachabilityWatcher: ReachabilityWatcher) : InstallableWatcherExpects activities to become weakly reachable soon after they receive the Activity.onDestroy callback. AndroidDebugHeapDumper object AndroidDebugHeapDumper : HeapDumperDumps the Android heap using Debug.dumpHprofData. AndroidDetectLeaksAssert class AndroidDetectLeaksAssert(detectLeaksInterceptor: DetectLeaksInterceptor = AndroidDetectLeaksInterceptor(), heapAnalysisReporter: HeapAnalysisReporter = NoLeakAssertionFailedError.throwOnApplicationLeaks()) : DetectLeaksAssertDefault DetectLeaksAssert implementation. Uses public helpers so you should be able to create our own implementation if needed. AndroidDetectLeaksInterceptor class AndroidDetectLeaksInterceptor(instrumentation: Instrumentation = InstrumentationRegistry.getInstrumentation(), objectWatcher: ObjectWatcher = AppWatcher.objectWatcher, retainedDelayMillis: Long = AppWatcher.retainedDelayMillis) : DetectLeaksInterceptor AndroidLeakFixes enum AndroidLeakFixes : Enum&lt;AndroidLeakFixes&gt; A collection of hacks to fix leaks in the Android Framework and other Google Android libraries. AppWatcher object AppWatcherThe entry point API for using ObjectWatcher in an Android app. AppWatcher.objectWatcher is in charge of detecting retained objects, and AppWatcher is auto configured on app start to pass it activity and fragment instances. Call ObjectWatcher.watch on objectWatcher to watch any other object that you expect to be unreachable. AppWatcherStartupInitializer class AppWatcherStartupInitializer : Initializer&lt;AppWatcherStartupInitializer&gt; BackgroundThreadHeapAnalyzer object BackgroundThreadHeapAnalyzer : EventListenerStarts heap analysis on a background HandlerThread when receiving a HeapDump event. BackgroundTrigger class BackgroundTrigger(application: Application, analysisClient: HeapAnalysisClient, analysisExecutor: Executor, processInfo: ProcessInfo = ProcessInfo.Real, analysisCallback: (HeapAnalysisJob.Result) -&gt; Unit = { result -&gt;     SharkLog.d { \"$result\" }   }) Clock fun interface ClockAn interface to abstract the SystemClock.uptimeMillis() Android API in non Android artifacts. ConditionalInterceptor class ConditionalInterceptor(delegate: HeapAnalysisInterceptor, evaluateCondition: (HeapAnalysisJob) -&gt; Boolean) : HeapAnalysisInterceptorAn interceptor that runs only when evaluateCondition returns true. DetectLeaksAfterTestSuccess class DetectLeaksAfterTestSuccess(tag: String = DetectLeaksAfterTestSuccess::class.java.simpleName) : TestRuleTestRule that invokes LeakAssertions.assertNoLeaks after the test successfully evaluates. Pay attention to where you set up this rule in the rule chain as you might detect different leaks (e.g. around vs wrapped by the activity rule). It\u2019s also possible to use this rule several times in a rule chain. DetectLeaksAssert fun interface DetectLeaksAssertThe interface for the implementation that LeakAssertions.assertNoLeaks delegates to. You can call DetectLeaksAssert.update to provide your own implementation. DetectLeaksInterceptor fun interface DetectLeaksInterceptorDecides whether to dump &amp; analyze the heap to look for leaks in instrumentation tests. The implementation might block for a while to allow temporary leaks to be flushed out, as those aren\u2019t that interesting to report and heap analysis increases test duration significantly. EventListener fun interface EventListener FragmentAndViewModelWatcher class FragmentAndViewModelWatcher(application: Application, reachabilityWatcher: ReachabilityWatcher) : InstallableWatcherExpects: GcTrigger fun interface GcTriggerGcTrigger is used to try triggering garbage collection and enqueuing KeyedWeakReference into the associated java.lang.ref.ReferenceQueue. The default implementation Default comes from AOSP. GoodAndroidVersionInterceptor class GoodAndroidVersionInterceptor : HeapAnalysisInterceptor HeapAnalysisClient class HeapAnalysisClient(heapDumpDirectoryProvider: () -&gt; File, config: HeapAnalysisConfig, interceptors: List&lt;HeapAnalysisInterceptor&gt;) HeapAnalysisConfig data class HeapAnalysisConfig(val referenceMatchers: List&lt;ReferenceMatcher&gt; = AndroidReferenceMatchers.appDefaults, val objectInspectors: List&lt;ObjectInspector&gt; = AndroidObjectInspectors.appDefaults, val metadataExtractor: MetadataExtractor = AndroidMetadataExtractor, val computeRetainedHeapSize: Boolean = true, val leakingObjectFinder: LeakingObjectFinder = FilteringLeakingObjectFinder(     AndroidObjectInspectors.appLeakingObjectFilters   ), val stripHeapDump: Boolean = false) HeapAnalysisDecision sealed class HeapAnalysisDecision HeapAnalysisInterceptor fun interface HeapAnalysisInterceptor HeapAnalysisJob interface HeapAnalysisJobA HeapAnalysisJob represents a single prepared request to analyze the heap. It cannot be executed twice. HeapAnalysisReporter fun interface HeapAnalysisReporterReports the results of a heap analysis created by AndroidDetectLeaksAssert. HeapDumper fun interface HeapDumper InstallableWatcher interface InstallableWatcher JobContext class JobContext(val starter: Class&lt;*&gt;? = null)In memory store that can be used to store objects in a given HeapAnalysisJob instance. This is a simple MutableMap of String to Any, but with unsafe generics access. KeyedWeakReference class KeyedWeakReference(referent: Any, val key: String, val description: String, val watchUptimeMillis: Long, referenceQueue: ReferenceQueue&lt;Any&gt;) : WeakReference&lt;Any&gt; A weak reference used by ObjectWatcher to determine which objects become weakly reachable and which don\u2019t. ObjectWatcher uses key to keep track of KeyedWeakReference instances that haven\u2019t made it into the associated ReferenceQueue yet. LazyForwardingEventListener class LazyForwardingEventListener(lazyEventListener: () -&gt; EventListener) : EventListenerForwards events to the EventListener provided by lazyEventListener which is evaluated lazily, when the first comes in. LeakAssertions object LeakAssertions LeakCanary object LeakCanaryThe entry point API for LeakCanary. LeakCanary builds on top of AppWatcher. AppWatcher notifies LeakCanary of retained instances, which in turns dumps the heap, analyses it and publishes the results. LeakCanaryProcess object LeakCanaryProcessUsed to determine whether the current process is the LeakCanary analyzer process. By depending on the leakcanary-android-process artifact instead of the leakcanary-android, LeakCanary will automatically run its analysis in a separate process. LogcatEventListener object LogcatEventListener : EventListener LogcatSharkLog class LogcatSharkLog : SharkLog.Logger MinimumDiskSpaceInterceptor class MinimumDiskSpaceInterceptor(application: Application, minimumDiskSpaceBytes: Long, processInfo: ProcessInfo = ProcessInfo.Real) : HeapAnalysisInterceptor MinimumElapsedSinceStartInterceptor class MinimumElapsedSinceStartInterceptor(minimumElapsedSinceStartMillis: Long = TimeUnit.SECONDS.toMillis(30), processInfo: ProcessInfo = ProcessInfo.Real) : HeapAnalysisInterceptor MinimumMemoryInterceptor class MinimumMemoryInterceptor(application: Application, minimumRequiredAvailableMemoryBytes: Long, processInfo: ProcessInfo = ProcessInfo.Real) : HeapAnalysisInterceptor NoLeakAssertionFailedError class NoLeakAssertionFailedError(val heapAnalysis: HeapAnalysisSuccess) : AssertionErrorThrown when using the NoLeakAssertionFailedError.throwOnApplicationLeaks HeapAnalysisReporter NotificationEventListener object NotificationEventListener : EventListener ObjectWatcher class ObjectWatcher(clock: Clock, checkRetainedExecutor: Executor, isEnabled: () -&gt; Boolean = { true }) : ReachabilityWatcherObjectWatcher can be passed objects to watch. It will create KeyedWeakReference instances that reference watches objects, and check if those references have been cleared as expected on the checkRetainedExecutor executor. If not, these objects are considered retained and ObjectWatcher will then notify registered OnObjectRetainedListeners on that executor thread. OncePerPeriodInterceptor class OncePerPeriodInterceptor(application: Application, periodMillis: Long = TimeUnit.DAYS.toMillis(1)) : HeapAnalysisInterceptorProceeds once per period (of time) and then cancels all follow up jobs until period has passed. OnObjectRetainedListener fun interface OnObjectRetainedListenerListener used by ObjectWatcher to report retained objects. PlumberStartupInitializer class PlumberStartupInitializer : Initializer&lt;PlumberStartupInitializer&gt; ProcessInfo interface ProcessInfo ReachabilityWatcher fun interface ReachabilityWatcher RemoteWorkManagerHeapAnalyzer object RemoteWorkManagerHeapAnalyzer : EventListenerWhen receiving a HeapDump event, starts a WorkManager worker that performs heap analysis in a dedicated :leakcanary process RootViewWatcher class RootViewWatcher(reachabilityWatcher: ReachabilityWatcher) : InstallableWatcherExpects root views to become weakly reachable soon after they are removed from the window manager. SaveResourceIdsInterceptor class SaveResourceIdsInterceptor(resources: Resources) : HeapAnalysisInterceptorInterceptor that saves the names of R.id.* entries and their associated int values to a static field that can then be read from the heap dump. ScreenOffTrigger class ScreenOffTrigger(application: Application, analysisClient: HeapAnalysisClient, analysisExecutor: Executor, analysisCallback: (HeapAnalysisJob.Result) -&gt; Unit = { result -&gt;     SharkLog.d { \"$result\" }   }) ServiceWatcher class ServiceWatcher(reachabilityWatcher: ReachabilityWatcher) : InstallableWatcherExpects services to become weakly reachable soon after they receive the Service.onDestroy callback. SkipLeakDetection @Target(allowedTargets = [AnnotationTarget.CLASS, AnnotationTarget.FUNCTION])annotation class SkipLeakDetection(val message: String, val assertionTags: String)Annotation for skipping leak detection in a UI test that calls LeakAssertions.assertNoLeaks. This annotation is useful to skip a leak detection in a test until the leaks are fixed. TestDescriptionHolder object TestDescriptionHolder : TestRuleA TestRule that holds onto the test Description in a thread local while evaluating, making it possible to retrieve that test Description from the test thread via testDescription. ToastEventListener object ToastEventListener : EventListener TvEventListener object TvEventListener : EventListener ViewLocationHolderLeakFix object ViewLocationHolderLeakFix WorkManagerHeapAnalyzer object WorkManagerHeapAnalyzer : EventListenerWhen receiving a HeapDump event, starts a WorkManager worker that performs heap analysis."},{"location":"api/leakcanary/-activity-watcher/","title":"Index","text":"<p>//leakcanary/leakcanary/ActivityWatcher</p>"},{"location":"api/leakcanary/-activity-watcher/#activitywatcher","title":"ActivityWatcher","text":"<p>class ActivityWatcher(application: Application, reachabilityWatcher: ReachabilityWatcher) : InstallableWatcher</p> <p>Expects activities to become weakly reachable soon after they receive the Activity.onDestroy callback.</p>"},{"location":"api/leakcanary/-activity-watcher/#constructors","title":"Constructors","text":"ActivityWatcher fun ActivityWatcher(application: Application, reachabilityWatcher: ReachabilityWatcher)"},{"location":"api/leakcanary/-activity-watcher/#functions","title":"Functions","text":"Name Summary install open override fun install() uninstall open override fun uninstall()"},{"location":"api/leakcanary/-activity-watcher/-activity-watcher/","title":"activity watcher","text":"<p>//leakcanary/leakcanary/ActivityWatcher/ActivityWatcher</p>"},{"location":"api/leakcanary/-activity-watcher/-activity-watcher/#activitywatcher","title":"ActivityWatcher","text":"<p>fun ActivityWatcher(application: Application, reachabilityWatcher: ReachabilityWatcher)</p>"},{"location":"api/leakcanary/-activity-watcher/install/","title":"Install","text":"<p>//leakcanary/leakcanary/ActivityWatcher/install</p>"},{"location":"api/leakcanary/-activity-watcher/install/#install","title":"install","text":"<p>open override fun install()</p>"},{"location":"api/leakcanary/-activity-watcher/uninstall/","title":"Uninstall","text":"<p>//leakcanary/leakcanary/ActivityWatcher/uninstall</p>"},{"location":"api/leakcanary/-activity-watcher/uninstall/#uninstall","title":"uninstall","text":"<p>open override fun uninstall()</p>"},{"location":"api/leakcanary/-android-debug-heap-dumper/","title":"Index","text":"<p>//leakcanary/leakcanary/AndroidDebugHeapDumper</p>"},{"location":"api/leakcanary/-android-debug-heap-dumper/#androiddebugheapdumper","title":"AndroidDebugHeapDumper","text":"<p>object AndroidDebugHeapDumper : HeapDumper</p> <p>Dumps the Android heap using Debug.dumpHprofData.</p> <p>Note: despite being part of the Debug class, Debug.dumpHprofData can be called from non debuggable non profileable builds.</p>"},{"location":"api/leakcanary/-android-debug-heap-dumper/#functions","title":"Functions","text":"Name Summary dumpHeap open override fun dumpHeap(heapDumpFile: File)Dumps the heap. The implementation is expected to be blocking until the heap is dumped or heap dumping failed."},{"location":"api/leakcanary/-android-debug-heap-dumper/dump-heap/","title":"Dump heap","text":"<p>//leakcanary/leakcanary/AndroidDebugHeapDumper/dumpHeap</p>"},{"location":"api/leakcanary/-android-debug-heap-dumper/dump-heap/#dumpheap","title":"dumpHeap","text":"<p>open override fun dumpHeap(heapDumpFile: File)</p> <p>Dumps the heap. The implementation is expected to be blocking until the heap is dumped or heap dumping failed.</p> <p>Implementations can throw a runtime exception if heap dumping failed.</p>"},{"location":"api/leakcanary/-android-detect-leaks-assert/","title":"Index","text":"<p>//leakcanary/leakcanary/AndroidDetectLeaksAssert</p>"},{"location":"api/leakcanary/-android-detect-leaks-assert/#androiddetectleaksassert","title":"AndroidDetectLeaksAssert","text":"<p>class AndroidDetectLeaksAssert(detectLeaksInterceptor: DetectLeaksInterceptor = AndroidDetectLeaksInterceptor(), heapAnalysisReporter: HeapAnalysisReporter = NoLeakAssertionFailedError.throwOnApplicationLeaks()) : DetectLeaksAssert</p> <p>Default DetectLeaksAssert implementation. Uses public helpers so you should be able to create our own implementation if needed.</p> <p>Leak detection can be skipped by annotating tests with SkipLeakDetection which requires the TestDescriptionHolder test rule be applied and evaluating when assertNoLeaks is called.</p> <p>For improved leak detection, you should consider updating LeakCanary.Config.leakingObjectFinder to FilteringLeakingObjectFinder(AndroidObjectInspectors.appLeakingObjectFilters) when running in instrumentation tests. This changes leak detection from being incremental (based on AppWatcher to also scanning for all objects of known types in the heap).</p>"},{"location":"api/leakcanary/-android-detect-leaks-assert/#constructors","title":"Constructors","text":"AndroidDetectLeaksAssert fun AndroidDetectLeaksAssert(detectLeaksInterceptor: DetectLeaksInterceptor = AndroidDetectLeaksInterceptor(), heapAnalysisReporter: HeapAnalysisReporter = NoLeakAssertionFailedError.throwOnApplicationLeaks())"},{"location":"api/leakcanary/-android-detect-leaks-assert/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/leakcanary/-android-detect-leaks-assert/#functions","title":"Functions","text":"Name Summary assertNoLeaks open override fun assertNoLeaks(tag: String)"},{"location":"api/leakcanary/-android-detect-leaks-assert/-android-detect-leaks-assert/","title":"android detect leaks assert","text":"<p>//leakcanary/leakcanary/AndroidDetectLeaksAssert/AndroidDetectLeaksAssert</p>"},{"location":"api/leakcanary/-android-detect-leaks-assert/-android-detect-leaks-assert/#androiddetectleaksassert","title":"AndroidDetectLeaksAssert","text":"<p>fun AndroidDetectLeaksAssert(detectLeaksInterceptor: DetectLeaksInterceptor = AndroidDetectLeaksInterceptor(), heapAnalysisReporter: HeapAnalysisReporter = NoLeakAssertionFailedError.throwOnApplicationLeaks())</p>"},{"location":"api/leakcanary/-android-detect-leaks-assert/assert-no-leaks/","title":"Assert no leaks","text":"<p>//leakcanary/leakcanary/AndroidDetectLeaksAssert/assertNoLeaks</p>"},{"location":"api/leakcanary/-android-detect-leaks-assert/assert-no-leaks/#assertnoleaks","title":"assertNoLeaks","text":"<p>open override fun assertNoLeaks(tag: String)</p>"},{"location":"api/leakcanary/-android-detect-leaks-assert/-companion/","title":"Index","text":"<p>//leakcanary/leakcanary/AndroidDetectLeaksAssert/Companion</p>"},{"location":"api/leakcanary/-android-detect-leaks-assert/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/leakcanary/-android-detect-leaks-assert/-companion/#properties","title":"Properties","text":"Name Summary assertionTag val HeapAnalysisSuccess.assertionTag: String? totalDurationMillis val HeapAnalysisSuccess.totalDurationMillis: Int? waitForRetainedDurationMillis val HeapAnalysisSuccess.waitForRetainedDurationMillis: Int?"},{"location":"api/leakcanary/-android-detect-leaks-assert/-companion/assertion-tag/","title":"Assertion tag","text":"<p>//leakcanary/leakcanary/AndroidDetectLeaksAssert/Companion/assertionTag</p>"},{"location":"api/leakcanary/-android-detect-leaks-assert/-companion/assertion-tag/#assertiontag","title":"assertionTag","text":"<p>val HeapAnalysisSuccess.assertionTag: String?</p>"},{"location":"api/leakcanary/-android-detect-leaks-assert/-companion/total-duration-millis/","title":"Total duration millis","text":"<p>//leakcanary/leakcanary/AndroidDetectLeaksAssert/Companion/totalDurationMillis</p>"},{"location":"api/leakcanary/-android-detect-leaks-assert/-companion/total-duration-millis/#totaldurationmillis","title":"totalDurationMillis","text":"<p>val HeapAnalysisSuccess.totalDurationMillis: Int?</p>"},{"location":"api/leakcanary/-android-detect-leaks-assert/-companion/wait-for-retained-duration-millis/","title":"Wait for retained duration millis","text":"<p>//leakcanary/leakcanary/AndroidDetectLeaksAssert/Companion/waitForRetainedDurationMillis</p>"},{"location":"api/leakcanary/-android-detect-leaks-assert/-companion/wait-for-retained-duration-millis/#waitforretaineddurationmillis","title":"waitForRetainedDurationMillis","text":"<p>val HeapAnalysisSuccess.waitForRetainedDurationMillis: Int?</p>"},{"location":"api/leakcanary/-android-detect-leaks-interceptor/","title":"Index","text":"<p>//leakcanary/leakcanary/AndroidDetectLeaksInterceptor</p>"},{"location":"api/leakcanary/-android-detect-leaks-interceptor/#androiddetectleaksinterceptor","title":"AndroidDetectLeaksInterceptor","text":"<p>class AndroidDetectLeaksInterceptor(instrumentation: Instrumentation = InstrumentationRegistry.getInstrumentation(), objectWatcher: ObjectWatcher = AppWatcher.objectWatcher, retainedDelayMillis: Long = AppWatcher.retainedDelayMillis) : DetectLeaksInterceptor</p>"},{"location":"api/leakcanary/-android-detect-leaks-interceptor/#constructors","title":"Constructors","text":"AndroidDetectLeaksInterceptor fun AndroidDetectLeaksInterceptor(instrumentation: Instrumentation = InstrumentationRegistry.getInstrumentation(), objectWatcher: ObjectWatcher = AppWatcher.objectWatcher, retainedDelayMillis: Long = AppWatcher.retainedDelayMillis)"},{"location":"api/leakcanary/-android-detect-leaks-interceptor/#functions","title":"Functions","text":"Name Summary waitUntilReadyForHeapAnalysis open override fun waitUntilReadyForHeapAnalysis(): HeapAnalysisDecision"},{"location":"api/leakcanary/-android-detect-leaks-interceptor/-android-detect-leaks-interceptor/","title":"android detect leaks interceptor","text":"<p>//leakcanary/leakcanary/AndroidDetectLeaksInterceptor/AndroidDetectLeaksInterceptor</p>"},{"location":"api/leakcanary/-android-detect-leaks-interceptor/-android-detect-leaks-interceptor/#androiddetectleaksinterceptor","title":"AndroidDetectLeaksInterceptor","text":"<p>fun AndroidDetectLeaksInterceptor(instrumentation: Instrumentation = InstrumentationRegistry.getInstrumentation(), objectWatcher: ObjectWatcher = AppWatcher.objectWatcher, retainedDelayMillis: Long = AppWatcher.retainedDelayMillis)</p>"},{"location":"api/leakcanary/-android-detect-leaks-interceptor/wait-until-ready-for-heap-analysis/","title":"Wait until ready for heap analysis","text":"<p>//leakcanary/leakcanary/AndroidDetectLeaksInterceptor/waitUntilReadyForHeapAnalysis</p>"},{"location":"api/leakcanary/-android-detect-leaks-interceptor/wait-until-ready-for-heap-analysis/#waituntilreadyforheapanalysis","title":"waitUntilReadyForHeapAnalysis","text":"<p>open override fun waitUntilReadyForHeapAnalysis(): HeapAnalysisDecision</p>"},{"location":"api/leakcanary/-android-leak-fixes/","title":"Index","text":"<p>//leakcanary/leakcanary/AndroidLeakFixes</p>"},{"location":"api/leakcanary/-android-leak-fixes/#androidleakfixes","title":"AndroidLeakFixes","text":"<p>enum AndroidLeakFixes : Enum&lt;AndroidLeakFixes&gt; </p> <p>A collection of hacks to fix leaks in the Android Framework and other Google Android libraries.</p>"},{"location":"api/leakcanary/-android-leak-fixes/#entries","title":"Entries","text":"SPELL_CHECKER SPELL_CHECKER()Every editable TextView has an Editor instance which has a SpellChecker instance. SpellChecker is in charge of displaying the little squiggle spans that show typos. SpellChecker starts a SpellCheckerSession as needed and then closes it when the TextView is detached from the window. A SpellCheckerSession is in charge of communicating with the spell checker service (which lives in another process) through TextServicesManager. IMM_CUR_ROOT_VIEW IMM_CUR_ROOT_VIEW()When an activity is destroyed, the corresponding ViewRootImpl instance is released and ready to be garbage collected. Some time after that, ViewRootImpl#W receives a windowfocusChanged() callback, which it normally delegates to ViewRootImpl which in turn calls InputMethodManager#onPreWindowFocus which clears InputMethodManager#mCurRootView. IMM_FOCUSED_VIEW IMM_FOCUSED_VIEW()Fix for https://code.google.com/p/android/issues/detail?id=171190 . VIEW_LOCATION_HOLDER VIEW_LOCATION_HOLDER()In Android P, ViewLocationHolder has an mRoot field that is not cleared in its clear() method. Introduced in https://github.com/aosp-mirror/platform_frameworks_base/commit/86b326012813f09d8f1de7d6d26c986a909d ACTIVITY_MANAGER ACTIVITY_MANAGER()Samsung added a static mContext field to ActivityManager, holding a reference to the activity. LAST_HOVERED_VIEW LAST_HOVERED_VIEW()mLastHoveredView is a static field in TextView that leaks the last hovered view. BUBBLE_POPUP BUBBLE_POPUP()A static helper for EditText bubble popups leaks a reference to the latest focused view. SAMSUNG_CLIPBOARD_MANAGER SAMSUNG_CLIPBOARD_MANAGER()ClipboardUIManager is a static singleton that leaks an activity context. This fix makes sure the manager is called with an application context. CONNECTIVITY_MANAGER CONNECTIVITY_MANAGER()ConnectivityManager has a sInstance field that is set when the first ConnectivityManager instance is created. ConnectivityManager has a mContext field. When calling activity.getSystemService(Context.CONNECTIVITY_SERVICE) , the first ConnectivityManager instance is created with the activity context and stored in sInstance. That activity context then leaks forever. ACCESSIBILITY_NODE_INFO ACCESSIBILITY_NODE_INFO()Until API 28, AccessibilityNodeInfo has a mOriginalText field that was not properly cleared when instance were put back in the pool. Leak introduced here: https://android.googlesource.com/platform/frameworks/base/+/193520e3dff5248ddcf8435203bf99d2ba667219%5E%21/core/java/android/view/accessibility/AccessibilityNodeInfo.java FLUSH_HANDLER_THREADS FLUSH_HANDLER_THREADS()HandlerThread instances keep local reference to their last handled message after recycling it. That message is obtained by a dialog which sets on an OnClickListener on it and then never recycles it, expecting it to be garbage collected but it ends up being held by the HandlerThread. USER_MANAGER USER_MANAGER()Obtaining the UserManager service ends up calling the hidden UserManager.get() method which stores the context in a singleton UserManager instance and then stores that instance in a static field. TEXT_LINE_POOL TEXT_LINE_POOL()This flushes the TextLine pool when an activity is destroyed, to prevent memory leaks. MEDIA_SESSION_LEGACY_HELPER MEDIA_SESSION_LEGACY_HELPER()MediaSessionLegacyHelper is a static singleton and did not use the application context. Introduced in android-5.0.1_r1, fixed in Android 5.1.0_r1. https://github.com/android/platform_frameworks_base/commit/9b5257c9c99c4cb541d8e8e78fb04f008b1a9091"},{"location":"api/leakcanary/-android-leak-fixes/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/leakcanary/-android-leak-fixes/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/leakcanary/-android-leak-fixes/-a-c-c-e-s-s-i-b-i-l-i-t-y_-n-o-d-e_-i-n-f-o/","title":"Index","text":"<p>//leakcanary/leakcanary/AndroidLeakFixes/ACCESSIBILITY_NODE_INFO</p>"},{"location":"api/leakcanary/-android-leak-fixes/-a-c-c-e-s-s-i-b-i-l-i-t-y_-n-o-d-e_-i-n-f-o/#accessibility_node_info","title":"ACCESSIBILITY_NODE_INFO","text":"<p>ACCESSIBILITY_NODE_INFO()</p> <p>Until API 28, AccessibilityNodeInfo has a mOriginalText field that was not properly cleared when instance were put back in the pool. Leak introduced here: https://android.googlesource.com/platform/frameworks/base/+/193520e3dff5248ddcf8435203bf99d2ba667219%5E%21/core/java/android/view/accessibility/AccessibilityNodeInfo.java</p> <p>Fixed here: https://android.googlesource.com/platform/frameworks/base/+/6f8ec1fd8c159b09d617ed6d9132658051443c0c</p>"},{"location":"api/leakcanary/-android-leak-fixes/-a-c-c-e-s-s-i-b-i-l-i-t-y_-n-o-d-e_-i-n-f-o/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/leakcanary/-android-leak-fixes/-a-c-t-i-v-i-t-y_-m-a-n-a-g-e-r/","title":"Index","text":"<p>//leakcanary/leakcanary/AndroidLeakFixes/ACTIVITY_MANAGER</p>"},{"location":"api/leakcanary/-android-leak-fixes/-a-c-t-i-v-i-t-y_-m-a-n-a-g-e-r/#activity_manager","title":"ACTIVITY_MANAGER","text":"<p>ACTIVITY_MANAGER()</p> <p>Samsung added a static mContext field to ActivityManager, holding a reference to the activity.</p> <p>This fix clears the field when an activity is destroyed if it refers to this specific activity.</p> <p>Observed here: https://github.com/square/leakcanary/issues/177</p>"},{"location":"api/leakcanary/-android-leak-fixes/-a-c-t-i-v-i-t-y_-m-a-n-a-g-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/leakcanary/-android-leak-fixes/-b-u-b-b-l-e_-p-o-p-u-p/","title":"Index","text":"<p>//leakcanary/leakcanary/AndroidLeakFixes/BUBBLE_POPUP</p>"},{"location":"api/leakcanary/-android-leak-fixes/-b-u-b-b-l-e_-p-o-p-u-p/#bubble_popup","title":"BUBBLE_POPUP","text":"<p>BUBBLE_POPUP()</p> <p>A static helper for EditText bubble popups leaks a reference to the latest focused view.</p> <p>This fix clears it when the activity is destroyed.</p>"},{"location":"api/leakcanary/-android-leak-fixes/-b-u-b-b-l-e_-p-o-p-u-p/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/leakcanary/-android-leak-fixes/-c-o-n-n-e-c-t-i-v-i-t-y_-m-a-n-a-g-e-r/","title":"Index","text":"<p>//leakcanary/leakcanary/AndroidLeakFixes/CONNECTIVITY_MANAGER</p>"},{"location":"api/leakcanary/-android-leak-fixes/-c-o-n-n-e-c-t-i-v-i-t-y_-m-a-n-a-g-e-r/#connectivity_manager","title":"CONNECTIVITY_MANAGER","text":"<p>CONNECTIVITY_MANAGER()</p> <p>ConnectivityManager has a sInstance field that is set when the first ConnectivityManager instance is created. ConnectivityManager has a mContext field. When calling activity.getSystemService(Context.CONNECTIVITY_SERVICE) , the first ConnectivityManager instance is created with the activity context and stored in sInstance. That activity context then leaks forever.</p> <p>This fix makes sure the connectivity manager is created with the application context.</p> <p>Tracked here: https://code.google.com/p/android/issues/detail?id=198852 Introduced here: https://github.com/android/platform_frameworks_base/commit/e0bef71662d81caaaa0d7214fb0bef5d39996a69</p>"},{"location":"api/leakcanary/-android-leak-fixes/-c-o-n-n-e-c-t-i-v-i-t-y_-m-a-n-a-g-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/leakcanary/-android-leak-fixes/-companion/","title":"Index","text":"<p>//leakcanary/leakcanary/AndroidLeakFixes/Companion</p>"},{"location":"api/leakcanary/-android-leak-fixes/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/leakcanary/-android-leak-fixes/-companion/#functions","title":"Functions","text":"Name Summary applyFixes fun applyFixes(application: Application, fixes: Set&lt;AndroidLeakFixes&gt; = EnumSet.allOf(AndroidLeakFixes::class.java))"},{"location":"api/leakcanary/-android-leak-fixes/-companion/apply-fixes/","title":"Apply fixes","text":"<p>//leakcanary/leakcanary/AndroidLeakFixes/Companion/applyFixes</p>"},{"location":"api/leakcanary/-android-leak-fixes/-companion/apply-fixes/#applyfixes","title":"applyFixes","text":"<p>fun applyFixes(application: Application, fixes: Set&lt;AndroidLeakFixes&gt; = EnumSet.allOf(AndroidLeakFixes::class.java))</p>"},{"location":"api/leakcanary/-android-leak-fixes/-f-l-u-s-h_-h-a-n-d-l-e-r_-t-h-r-e-a-d-s/","title":"Index","text":"<p>//leakcanary/leakcanary/AndroidLeakFixes/FLUSH_HANDLER_THREADS</p>"},{"location":"api/leakcanary/-android-leak-fixes/-f-l-u-s-h_-h-a-n-d-l-e-r_-t-h-r-e-a-d-s/#flush_handler_threads","title":"FLUSH_HANDLER_THREADS","text":"<p>FLUSH_HANDLER_THREADS()</p> <p>HandlerThread instances keep local reference to their last handled message after recycling it. That message is obtained by a dialog which sets on an OnClickListener on it and then never recycles it, expecting it to be garbage collected but it ends up being held by the HandlerThread.</p>"},{"location":"api/leakcanary/-android-leak-fixes/-f-l-u-s-h_-h-a-n-d-l-e-r_-t-h-r-e-a-d-s/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/leakcanary/-android-leak-fixes/-i-m-m_-c-u-r_-r-o-o-t_-v-i-e-w/","title":"Index","text":"<p>//leakcanary/leakcanary/AndroidLeakFixes/IMM_CUR_ROOT_VIEW</p>"},{"location":"api/leakcanary/-android-leak-fixes/-i-m-m_-c-u-r_-r-o-o-t_-v-i-e-w/#imm_cur_root_view","title":"IMM_CUR_ROOT_VIEW","text":"<p>IMM_CUR_ROOT_VIEW()</p> <p>When an activity is destroyed, the corresponding ViewRootImpl instance is released and ready to be garbage collected. Some time after that, ViewRootImpl#W receives a windowfocusChanged() callback, which it normally delegates to ViewRootImpl which in turn calls InputMethodManager#onPreWindowFocus which clears InputMethodManager#mCurRootView.</p> <p>Unfortunately, since the ViewRootImpl instance is garbage collectable it may be garbage collected before that happens. ViewRootImpl#W has a weak reference on ViewRootImpl, so that weak reference will then return null and the windowfocusChanged() callback will be ignored, leading to InputMethodManager#mCurRootView not being cleared.</p> <p>Filed here: https://issuetracker.google.com/u/0/issues/116078227 Fixed here: https://android.googlesource.com/platform/frameworks/base/+/dff365ef4dc61239fac70953b631e92972a9f41f%5E%21/#F0 InputMethodManager.mCurRootView is part of the unrestricted grey list on Android 9: https://android.googlesource.com/platform/frameworks/base/+/pie-release/config/hiddenapi-light-greylist.txt#6057</p>"},{"location":"api/leakcanary/-android-leak-fixes/-i-m-m_-c-u-r_-r-o-o-t_-v-i-e-w/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/leakcanary/-android-leak-fixes/-i-m-m_-f-o-c-u-s-e-d_-v-i-e-w/","title":"Index","text":"<p>//leakcanary/leakcanary/AndroidLeakFixes/IMM_FOCUSED_VIEW</p>"},{"location":"api/leakcanary/-android-leak-fixes/-i-m-m_-f-o-c-u-s-e-d_-v-i-e-w/#imm_focused_view","title":"IMM_FOCUSED_VIEW","text":"<p>IMM_FOCUSED_VIEW()</p> <p>Fix for https://code.google.com/p/android/issues/detail?id=171190 .</p> <p>When a view that has focus gets detached, we wait for the main thread to be idle and then check if the InputMethodManager is leaking a view. If yes, we tell it that the decor view got focus, which is what happens if you press home and come back from recent apps. This replaces the reference to the detached view with a reference to the decor view.</p>"},{"location":"api/leakcanary/-android-leak-fixes/-i-m-m_-f-o-c-u-s-e-d_-v-i-e-w/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/leakcanary/-android-leak-fixes/-l-a-s-t_-h-o-v-e-r-e-d_-v-i-e-w/","title":"Index","text":"<p>//leakcanary/leakcanary/AndroidLeakFixes/LAST_HOVERED_VIEW</p>"},{"location":"api/leakcanary/-android-leak-fixes/-l-a-s-t_-h-o-v-e-r-e-d_-v-i-e-w/#last_hovered_view","title":"LAST_HOVERED_VIEW","text":"<p>LAST_HOVERED_VIEW()</p> <p>mLastHoveredView is a static field in TextView that leaks the last hovered view.</p> <p>This fix clears it when the activity is destroyed.</p>"},{"location":"api/leakcanary/-android-leak-fixes/-l-a-s-t_-h-o-v-e-r-e-d_-v-i-e-w/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/leakcanary/-android-leak-fixes/-m-e-d-i-a_-s-e-s-s-i-o-n_-l-e-g-a-c-y_-h-e-l-p-e-r/","title":"Index","text":"<p>//leakcanary/leakcanary/AndroidLeakFixes/MEDIA_SESSION_LEGACY_HELPER</p>"},{"location":"api/leakcanary/-android-leak-fixes/-m-e-d-i-a_-s-e-s-s-i-o-n_-l-e-g-a-c-y_-h-e-l-p-e-r/#media_session_legacy_helper","title":"MEDIA_SESSION_LEGACY_HELPER","text":"<p>MEDIA_SESSION_LEGACY_HELPER()</p> <p>MediaSessionLegacyHelper is a static singleton and did not use the application context. Introduced in android-5.0.1_r1, fixed in Android 5.1.0_r1. https://github.com/android/platform_frameworks_base/commit/9b5257c9c99c4cb541d8e8e78fb04f008b1a9091</p> <p>We fix this leak by invoking MediaSessionLegacyHelper.getHelper() early in the app lifecycle.</p>"},{"location":"api/leakcanary/-android-leak-fixes/-m-e-d-i-a_-s-e-s-s-i-o-n_-l-e-g-a-c-y_-h-e-l-p-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/leakcanary/-android-leak-fixes/-s-a-m-s-u-n-g_-c-l-i-p-b-o-a-r-d_-m-a-n-a-g-e-r/","title":"Index","text":"<p>//leakcanary/leakcanary/AndroidLeakFixes/SAMSUNG_CLIPBOARD_MANAGER</p>"},{"location":"api/leakcanary/-android-leak-fixes/-s-a-m-s-u-n-g_-c-l-i-p-b-o-a-r-d_-m-a-n-a-g-e-r/#samsung_clipboard_manager","title":"SAMSUNG_CLIPBOARD_MANAGER","text":"<p>SAMSUNG_CLIPBOARD_MANAGER()</p> <p>ClipboardUIManager is a static singleton that leaks an activity context. This fix makes sure the manager is called with an application context.</p>"},{"location":"api/leakcanary/-android-leak-fixes/-s-a-m-s-u-n-g_-c-l-i-p-b-o-a-r-d_-m-a-n-a-g-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/leakcanary/-android-leak-fixes/-s-p-e-l-l_-c-h-e-c-k-e-r/","title":"Index","text":"<p>//leakcanary/leakcanary/AndroidLeakFixes/SPELL_CHECKER</p>"},{"location":"api/leakcanary/-android-leak-fixes/-s-p-e-l-l_-c-h-e-c-k-e-r/#spell_checker","title":"SPELL_CHECKER","text":"<p>SPELL_CHECKER()</p> <p>Every editable TextView has an Editor instance which has a SpellChecker instance. SpellChecker is in charge of displaying the little squiggle spans that show typos. SpellChecker starts a SpellCheckerSession as needed and then closes it when the TextView is detached from the window. A SpellCheckerSession is in charge of communicating with the spell checker service (which lives in another process) through TextServicesManager.</p> <p>The SpellChecker sends the TextView content to the spell checker service every 400ms, ie every time the service calls back with a result the SpellChecker schedules another check for 400ms later.</p> <p>When the TextView is detached from the window, the spell checker closes the session. In practice, SpellCheckerSessionListenerImpl.mHandler is set to null and when the service calls SpellCheckerSessionListenerImpl.onGetSuggestions or SpellCheckerSessionListenerImpl.onGetSentenceSuggestions back from another process, there\u2019s a null check for SpellCheckerSessionListenerImpl.mHandler and the callback is dropped.</p> <p>Unfortunately, on Android M there\u2019s a race condition in how that\u2019s done. When the service calls back into our app process, the IPC call is received on a binder thread. That\u2019s when the null check happens. If the session is not closed at this point (mHandler not null), the callback is then posted to the main thread. If on the main thread the session is closed after that post but prior to that post being handled, then the post will still be processed, after the session has been closed.</p> <p>When the post is processed, SpellCheckerSession calls back into SpellChecker which in turns schedules a new spell check to be ran in 400ms. The check is an anonymous inner class (SpellChecker$1) stored as SpellChecker.mSpellRunnable and implementing Runnable. It is scheduled by calling View.postDelayed. As we\u2019ve seen, at this point the session may be closed which means that the view has been detached. View.postDelayed behaves differently when a view is detached: instead of posting to the single Handler used by the view hierarchy, it enqueues the Runnable into ViewRootImpl.RunQueue, a static queue that holds on to \"actions\" to be executed. As soon as a view hierarchy is attached, the ViewRootImpl.RunQueue is processed and emptied.</p> <p>Unfortunately, that means that as long as no view hierarchy is attached, ie as long as there are no activities alive, the actions stay in ViewRootImpl.RunQueue. That means SpellChecker$1 ends up being kept in memory. It holds on to SpellChecker which in turns holds on to the detached TextView and corresponding destroyed activity &amp; view hierarchy.</p> <p>We have a fix for this! When the spell check session is closed, we replace SpellCheckerSession.mSpellCheckerSessionListener (which normally is the SpellChecker) with a no-op implementation. So even if callbacks are enqueued to the main thread handler, these callbacks will call the no-op implementation and SpellChecker will not be scheduling a spell check.</p> <p>Sources to corroborate:</p> <p>https://android.googlesource.com/platform/frameworks/base/+/marshmallow-release/core/java/android/view/textservice/SpellCheckerSession.java https://android.googlesource.com/platform/frameworks/base/+/marshmallow-release/core/java/android/view/textservice/TextServicesManager.java https://android.googlesource.com/platform/frameworks/base/+/marshmallow-release/core/java/android/widget/SpellChecker.java https://android.googlesource.com/platform/frameworks/base/+/marshmallow-release/core/java/android/view/ViewRootImpl.java</p>"},{"location":"api/leakcanary/-android-leak-fixes/-s-p-e-l-l_-c-h-e-c-k-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/leakcanary/-android-leak-fixes/-t-e-x-t_-l-i-n-e_-p-o-o-l/","title":"Index","text":"<p>//leakcanary/leakcanary/AndroidLeakFixes/TEXT_LINE_POOL</p>"},{"location":"api/leakcanary/-android-leak-fixes/-t-e-x-t_-l-i-n-e_-p-o-o-l/#text_line_pool","title":"TEXT_LINE_POOL","text":"<p>TEXT_LINE_POOL()</p> <p>This flushes the TextLine pool when an activity is destroyed, to prevent memory leaks.</p> <p>The first memory leak has been fixed in android-5.1.0_r1 https://github.com/android/platform_frameworks_base/commit/893d6fe48d37f71e683f722457bea646994a10bf</p> <p>Second memory leak: https://github.com/android/platform_frameworks_base/commit/b3a9bc038d3a218b1dbdf7b5668e3d6c12be5ee4</p>"},{"location":"api/leakcanary/-android-leak-fixes/-t-e-x-t_-l-i-n-e_-p-o-o-l/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/leakcanary/-android-leak-fixes/-u-s-e-r_-m-a-n-a-g-e-r/","title":"Index","text":"<p>//leakcanary/leakcanary/AndroidLeakFixes/USER_MANAGER</p>"},{"location":"api/leakcanary/-android-leak-fixes/-u-s-e-r_-m-a-n-a-g-e-r/#user_manager","title":"USER_MANAGER","text":"<p>USER_MANAGER()</p> <p>Obtaining the UserManager service ends up calling the hidden UserManager.get() method which stores the context in a singleton UserManager instance and then stores that instance in a static field.</p> <p>We obtain the user manager from an activity context, so if it hasn\u2019t been created yet it will leak that activity forever.</p> <p>This fix makes sure the UserManager is created and holds on to the Application context.</p> <p>Issue: https://code.google.com/p/android/issues/detail?id=173789</p> <p>Fixed in https://android.googlesource.com/platform/frameworks/base/+/5200e1cb07190a1f6874d72a4561064cad3ee3e0%5E%21/#F0 (Android O)</p>"},{"location":"api/leakcanary/-android-leak-fixes/-u-s-e-r_-m-a-n-a-g-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/leakcanary/-android-leak-fixes/-v-i-e-w_-l-o-c-a-t-i-o-n_-h-o-l-d-e-r/","title":"Index","text":"<p>//leakcanary/leakcanary/AndroidLeakFixes/VIEW_LOCATION_HOLDER</p>"},{"location":"api/leakcanary/-android-leak-fixes/-v-i-e-w_-l-o-c-a-t-i-o-n_-h-o-l-d-e-r/#view_location_holder","title":"VIEW_LOCATION_HOLDER","text":"<p>VIEW_LOCATION_HOLDER()</p> <p>In Android P, ViewLocationHolder has an mRoot field that is not cleared in its clear() method. Introduced in https://github.com/aosp-mirror/platform_frameworks_base/commit/86b326012813f09d8f1de7d6d26c986a909d</p> <p>This leaks triggers very often when accessibility is on. To fix this leak we need to clear the ViewGroup.ViewLocationHolder.sPool pool. Unfortunately Android P prevents accessing that field through reflection. So instead, we call ViewGroup#addChildrenForAccessibility with a view group that has 32 children (32 being the pool size), which as result fills in the pool with 32 dumb views that reference a dummy context instead of an activity context.</p> <p>This fix empties the pool on every activity destroy and every AndroidX fragment view destroy. You can support other cases where views get detached by calling directly ViewLocationHolderLeakFix.clearStaticPool.</p>"},{"location":"api/leakcanary/-android-leak-fixes/-v-i-e-w_-l-o-c-a-t-i-o-n_-h-o-l-d-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/leakcanary/-app-watcher/","title":"Index","text":"<p>//leakcanary/leakcanary/AppWatcher</p>"},{"location":"api/leakcanary/-app-watcher/#appwatcher","title":"AppWatcher","text":"<p>object AppWatcher</p> <p>The entry point API for using ObjectWatcher in an Android app. AppWatcher.objectWatcher is in charge of detecting retained objects, and AppWatcher is auto configured on app start to pass it activity and fragment instances. Call ObjectWatcher.watch on objectWatcher to watch any other object that you expect to be unreachable.</p>"},{"location":"api/leakcanary/-app-watcher/#functions","title":"Functions","text":"Name Summary appDefaultWatchers fun appDefaultWatchers(application: Application, reachabilityWatcher: ReachabilityWatcher = objectWatcher): List&lt;InstallableWatcher&gt;Creates a new list of default app InstallableWatcher, created with the passed in reachabilityWatcher (which defaults to objectWatcher). Once installed, these watchers will pass in to reachabilityWatcher objects that they expect to become weakly reachable. manualInstall @JvmOverloadsfun manualInstall(application: Application, retainedDelayMillis: Long = TimeUnit.SECONDS.toMillis(5), watchersToInstall: List&lt;InstallableWatcher&gt; = appDefaultWatchers(application))Enables usage of AppWatcher.objectWatcher which will expect passed in objects to become weakly reachable within retainedDelayMillis ms and if not will trigger LeakCanary (if LeakCanary is in the classpath)."},{"location":"api/leakcanary/-app-watcher/#properties","title":"Properties","text":"Name Summary isInstalled val isInstalled: Boolean objectWatcher val objectWatcher: ObjectWatcherThe ObjectWatcher used by AppWatcher to detect retained objects. Only set when isInstalled is true. retainedDelayMillis @Volatileval retainedDelayMillis: Long"},{"location":"api/leakcanary/-app-watcher/app-default-watchers/","title":"App default watchers","text":"<p>//leakcanary/leakcanary/AppWatcher/appDefaultWatchers</p>"},{"location":"api/leakcanary/-app-watcher/app-default-watchers/#appdefaultwatchers","title":"appDefaultWatchers","text":"<p>fun appDefaultWatchers(application: Application, reachabilityWatcher: ReachabilityWatcher = objectWatcher): List&lt;InstallableWatcher&gt;</p> <p>Creates a new list of default app InstallableWatcher, created with the passed in reachabilityWatcher (which defaults to objectWatcher). Once installed, these watchers will pass in to reachabilityWatcher objects that they expect to become weakly reachable.</p> <p>The passed in reachabilityWatcher should probably delegate to objectWatcher but can be used to filter out specific instances.</p>"},{"location":"api/leakcanary/-app-watcher/is-installed/","title":"Is installed","text":"<p>//leakcanary/leakcanary/AppWatcher/isInstalled</p>"},{"location":"api/leakcanary/-app-watcher/is-installed/#isinstalled","title":"isInstalled","text":"<p>val isInstalled: Boolean</p>"},{"location":"api/leakcanary/-app-watcher/is-installed/#see-also","title":"See also","text":"<p>main</p> leakcanary.AppWatcher"},{"location":"api/leakcanary/-app-watcher/manual-install/","title":"Manual install","text":"<p>//leakcanary/leakcanary/AppWatcher/manualInstall</p>"},{"location":"api/leakcanary/-app-watcher/manual-install/#manualinstall","title":"manualInstall","text":"<p>@JvmOverloads</p> <p>fun manualInstall(application: Application, retainedDelayMillis: Long = TimeUnit.SECONDS.toMillis(5), watchersToInstall: List&lt;InstallableWatcher&gt; = appDefaultWatchers(application))</p> <p>Enables usage of AppWatcher.objectWatcher which will expect passed in objects to become weakly reachable within retainedDelayMillis ms and if not will trigger LeakCanary (if LeakCanary is in the classpath).</p> <p>In the main process, this method is automatically called with default parameter values  on app startup. You can call this method directly to customize the installation, however you must first disable the automatic call by overriding the leak_canary_watcher_auto_install boolean resource:</p> <p>&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\\ &lt;resources&gt;\\   &lt;bool name=\"leak_canary_watcher_auto_install\"&gt;false&lt;/bool&gt;\\ &lt;/resources&gt;</p> <p>watchersToInstall can be customized to a subset of the default app watchers:</p> <p>val watchersToInstall = AppWatcher.appDefaultWatchers(application)\\   .filter { it !is RootViewWatcher }\\ AppWatcher.manualInstall(\\   application = application,\\   watchersToInstall = watchersToInstall\\ )</p> <p>watchersToInstall can also be customized to ignore specific instances (e.g. here ignoring leaks of BadSdkLeakingFragment):</p> <p>val watchersToInstall = AppWatcher.appDefaultWatchers(application, ReachabilityWatcher { watchedObject, description -&gt;\\   if (watchedObject !is BadSdkLeakingFragment) {\\     AppWatcher.objectWatcher.expectWeaklyReachable(watchedObject, description)\\   }\\ })\\ AppWatcher.manualInstall(\\   application = application,\\   watchersToInstall = watchersToInstall\\ )</p>"},{"location":"api/leakcanary/-app-watcher/object-watcher/","title":"Object watcher","text":"<p>//leakcanary/leakcanary/AppWatcher/objectWatcher</p>"},{"location":"api/leakcanary/-app-watcher/object-watcher/#objectwatcher","title":"objectWatcher","text":"<p>val objectWatcher: ObjectWatcher</p> <p>The ObjectWatcher used by AppWatcher to detect retained objects. Only set when isInstalled is true.</p>"},{"location":"api/leakcanary/-app-watcher/retained-delay-millis/","title":"Retained delay millis","text":"<p>//leakcanary/leakcanary/AppWatcher/retainedDelayMillis</p>"},{"location":"api/leakcanary/-app-watcher/retained-delay-millis/#retaineddelaymillis","title":"retainedDelayMillis","text":"<p>@Volatile</p> <p>val retainedDelayMillis: Long</p>"},{"location":"api/leakcanary/-app-watcher-startup-initializer/","title":"Index","text":"<p>//leakcanary/leakcanary/AppWatcherStartupInitializer</p>"},{"location":"api/leakcanary/-app-watcher-startup-initializer/#appwatcherstartupinitializer","title":"AppWatcherStartupInitializer","text":"<p>class AppWatcherStartupInitializer : Initializer&lt;AppWatcherStartupInitializer&gt;</p>"},{"location":"api/leakcanary/-app-watcher-startup-initializer/#constructors","title":"Constructors","text":"AppWatcherStartupInitializer fun AppWatcherStartupInitializer()"},{"location":"api/leakcanary/-app-watcher-startup-initializer/#functions","title":"Functions","text":"Name Summary create open override fun create(context: Context): AppWatcherStartupInitializer dependencies open override fun dependencies(): List&lt;Class&lt;out Initializer&lt;*&gt;&gt;&gt;"},{"location":"api/leakcanary/-app-watcher-startup-initializer/-app-watcher-startup-initializer/","title":"app watcher startup initializer","text":"<p>//leakcanary/leakcanary/AppWatcherStartupInitializer/AppWatcherStartupInitializer</p>"},{"location":"api/leakcanary/-app-watcher-startup-initializer/-app-watcher-startup-initializer/#appwatcherstartupinitializer","title":"AppWatcherStartupInitializer","text":"<p>fun AppWatcherStartupInitializer()</p>"},{"location":"api/leakcanary/-app-watcher-startup-initializer/create/","title":"Create","text":"<p>//leakcanary/leakcanary/AppWatcherStartupInitializer/create</p>"},{"location":"api/leakcanary/-app-watcher-startup-initializer/create/#create","title":"create","text":"<p>open override fun create(context: Context): AppWatcherStartupInitializer</p>"},{"location":"api/leakcanary/-app-watcher-startup-initializer/dependencies/","title":"Dependencies","text":"<p>//leakcanary/leakcanary/AppWatcherStartupInitializer/dependencies</p>"},{"location":"api/leakcanary/-app-watcher-startup-initializer/dependencies/#dependencies","title":"dependencies","text":"<p>open override fun dependencies(): List&lt;Class&lt;out Initializer&lt;*&gt;&gt;&gt;</p>"},{"location":"api/leakcanary/-background-thread-heap-analyzer/","title":"Index","text":"<p>//leakcanary/leakcanary/BackgroundThreadHeapAnalyzer</p>"},{"location":"api/leakcanary/-background-thread-heap-analyzer/#backgroundthreadheapanalyzer","title":"BackgroundThreadHeapAnalyzer","text":"<p>object BackgroundThreadHeapAnalyzer : EventListener</p> <p>Starts heap analysis on a background HandlerThread when receiving a HeapDump event.</p>"},{"location":"api/leakcanary/-background-thread-heap-analyzer/#functions","title":"Functions","text":"Name Summary onEvent open override fun onEvent(event: EventListener.Event)onEvent is always called from the thread the events are emitted from, which is documented for each event. This enables you to potentially block a chain of events, waiting for some pre work to be done."},{"location":"api/leakcanary/-background-thread-heap-analyzer/on-event/","title":"On event","text":"<p>//leakcanary/leakcanary/BackgroundThreadHeapAnalyzer/onEvent</p>"},{"location":"api/leakcanary/-background-thread-heap-analyzer/on-event/#onevent","title":"onEvent","text":"<p>open override fun onEvent(event: EventListener.Event)</p> <p>onEvent is always called from the thread the events are emitted from, which is documented for each event. This enables you to potentially block a chain of events, waiting for some pre work to be done.</p>"},{"location":"api/leakcanary/-background-trigger/","title":"Index","text":"<p>//leakcanary/leakcanary/BackgroundTrigger</p>"},{"location":"api/leakcanary/-background-trigger/#backgroundtrigger","title":"BackgroundTrigger","text":"<p>class BackgroundTrigger(application: Application, analysisClient: HeapAnalysisClient, analysisExecutor: Executor, processInfo: ProcessInfo = ProcessInfo.Real, analysisCallback: (HeapAnalysisJob.Result) -&gt; Unit = { result -&gt;     SharkLog.d { \"$result\" }   })</p>"},{"location":"api/leakcanary/-background-trigger/#constructors","title":"Constructors","text":"BackgroundTrigger fun BackgroundTrigger(application: Application, analysisClient: HeapAnalysisClient, analysisExecutor: Executor, processInfo: ProcessInfo = ProcessInfo.Real, analysisCallback: (HeapAnalysisJob.Result) -&gt; Unit = { result -&gt;     SharkLog.d { \"$result\" }   })"},{"location":"api/leakcanary/-background-trigger/#functions","title":"Functions","text":"Name Summary start fun start() stop fun stop()"},{"location":"api/leakcanary/-background-trigger/-background-trigger/","title":"background trigger","text":"<p>//leakcanary/leakcanary/BackgroundTrigger/BackgroundTrigger</p>"},{"location":"api/leakcanary/-background-trigger/-background-trigger/#backgroundtrigger","title":"BackgroundTrigger","text":"<p>fun BackgroundTrigger(application: Application, analysisClient: HeapAnalysisClient, analysisExecutor: Executor, processInfo: ProcessInfo = ProcessInfo.Real, analysisCallback: (HeapAnalysisJob.Result) -&gt; Unit = { result -&gt;     SharkLog.d { \"$result\" }   })</p>"},{"location":"api/leakcanary/-background-trigger/start/","title":"Start","text":"<p>//leakcanary/leakcanary/BackgroundTrigger/start</p>"},{"location":"api/leakcanary/-background-trigger/start/#start","title":"start","text":"<p>fun start()</p>"},{"location":"api/leakcanary/-background-trigger/stop/","title":"Stop","text":"<p>//leakcanary/leakcanary/BackgroundTrigger/stop</p>"},{"location":"api/leakcanary/-background-trigger/stop/#stop","title":"stop","text":"<p>fun stop()</p>"},{"location":"api/leakcanary/-clock/","title":"Index","text":"<p>//leakcanary/leakcanary/Clock</p>"},{"location":"api/leakcanary/-clock/#clock","title":"Clock","text":"<p>fun interface Clock</p> <p>An interface to abstract the SystemClock.uptimeMillis() Android API in non Android artifacts.</p> <p>This is a functional interface with which you can create a Clock from a lambda.</p>"},{"location":"api/leakcanary/-clock/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/leakcanary/-clock/#functions","title":"Functions","text":"Name Summary uptimeMillis abstract fun uptimeMillis(): LongOn Android VMs, this should return android.os.SystemClock.uptimeMillis()."},{"location":"api/leakcanary/-clock/uptime-millis/","title":"Uptime millis","text":"<p>//leakcanary/leakcanary/Clock/uptimeMillis</p>"},{"location":"api/leakcanary/-clock/uptime-millis/#uptimemillis","title":"uptimeMillis","text":"<p>abstract fun uptimeMillis(): Long</p> <p>On Android VMs, this should return android.os.SystemClock.uptimeMillis().</p>"},{"location":"api/leakcanary/-clock/-companion/","title":"Index","text":"<p>//leakcanary/leakcanary/Clock/Companion</p>"},{"location":"api/leakcanary/-clock/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/leakcanary/-clock/-companion/#functions","title":"Functions","text":"Name Summary invoke inline operator fun invoke(crossinline block: () -&gt; Long): ClockUtility function to create a Clock from the passed in block lambda instead of using the anonymous object : Clock syntax."},{"location":"api/leakcanary/-clock/-companion/invoke/","title":"Invoke","text":"<p>//leakcanary/leakcanary/Clock/Companion/invoke</p>"},{"location":"api/leakcanary/-clock/-companion/invoke/#invoke","title":"invoke","text":"<p>inline operator fun invoke(crossinline block: () -&gt; Long): Clock</p> <p>Utility function to create a Clock from the passed in block lambda instead of using the anonymous object : Clock syntax.</p> <p>Usage:</p> <p>val clock = Clock {\\ \\ }</p>"},{"location":"api/leakcanary/-conditional-interceptor/","title":"Index","text":"<p>//leakcanary/leakcanary/ConditionalInterceptor</p>"},{"location":"api/leakcanary/-conditional-interceptor/#conditionalinterceptor","title":"ConditionalInterceptor","text":"<p>class ConditionalInterceptor(delegate: HeapAnalysisInterceptor, evaluateCondition: (HeapAnalysisJob) -&gt; Boolean) : HeapAnalysisInterceptor</p> <p>An interceptor that runs only when evaluateCondition returns true.</p>"},{"location":"api/leakcanary/-conditional-interceptor/#constructors","title":"Constructors","text":"ConditionalInterceptor fun ConditionalInterceptor(delegate: HeapAnalysisInterceptor, evaluateCondition: (HeapAnalysisJob) -&gt; Boolean)"},{"location":"api/leakcanary/-conditional-interceptor/#functions","title":"Functions","text":"Name Summary intercept open override fun intercept(chain: HeapAnalysisInterceptor.Chain): HeapAnalysisJob.Result"},{"location":"api/leakcanary/-conditional-interceptor/-conditional-interceptor/","title":"conditional interceptor","text":"<p>//leakcanary/leakcanary/ConditionalInterceptor/ConditionalInterceptor</p>"},{"location":"api/leakcanary/-conditional-interceptor/-conditional-interceptor/#conditionalinterceptor","title":"ConditionalInterceptor","text":"<p>fun ConditionalInterceptor(delegate: HeapAnalysisInterceptor, evaluateCondition: (HeapAnalysisJob) -&gt; Boolean)</p>"},{"location":"api/leakcanary/-conditional-interceptor/intercept/","title":"Intercept","text":"<p>//leakcanary/leakcanary/ConditionalInterceptor/intercept</p>"},{"location":"api/leakcanary/-conditional-interceptor/intercept/#intercept","title":"intercept","text":"<p>open override fun intercept(chain: HeapAnalysisInterceptor.Chain): HeapAnalysisJob.Result</p>"},{"location":"api/leakcanary/-detect-leaks-after-test-success/","title":"Index","text":"<p>//leakcanary/leakcanary/DetectLeaksAfterTestSuccess</p>"},{"location":"api/leakcanary/-detect-leaks-after-test-success/#detectleaksaftertestsuccess","title":"DetectLeaksAfterTestSuccess","text":"<p>class DetectLeaksAfterTestSuccess(tag: String = DetectLeaksAfterTestSuccess::class.java.simpleName) : TestRule</p> <p>TestRule that invokes LeakAssertions.assertNoLeaks after the test successfully evaluates. Pay attention to where you set up this rule in the rule chain as you might detect different leaks (e.g. around vs wrapped by the activity rule). It\u2019s also possible to use this rule several times in a rule chain.</p> <p>This rule automatically applies the TestDescriptionHolder rule.</p>"},{"location":"api/leakcanary/-detect-leaks-after-test-success/#constructors","title":"Constructors","text":"DetectLeaksAfterTestSuccess fun DetectLeaksAfterTestSuccess(tag: String = DetectLeaksAfterTestSuccess::class.java.simpleName)"},{"location":"api/leakcanary/-detect-leaks-after-test-success/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/leakcanary/-detect-leaks-after-test-success/#functions","title":"Functions","text":"Name Summary apply open override fun apply(base: Statement, description: Description): Statement"},{"location":"api/leakcanary/-detect-leaks-after-test-success/-detect-leaks-after-test-success/","title":"detect leaks after test success","text":"<p>//leakcanary/leakcanary/DetectLeaksAfterTestSuccess/DetectLeaksAfterTestSuccess</p>"},{"location":"api/leakcanary/-detect-leaks-after-test-success/-detect-leaks-after-test-success/#detectleaksaftertestsuccess","title":"DetectLeaksAfterTestSuccess","text":"<p>fun DetectLeaksAfterTestSuccess(tag: String = DetectLeaksAfterTestSuccess::class.java.simpleName)</p>"},{"location":"api/leakcanary/-detect-leaks-after-test-success/apply/","title":"Apply","text":"<p>//leakcanary/leakcanary/DetectLeaksAfterTestSuccess/apply</p>"},{"location":"api/leakcanary/-detect-leaks-after-test-success/apply/#apply","title":"apply","text":"<p>open override fun apply(base: Statement, description: Description): Statement</p>"},{"location":"api/leakcanary/-detect-leaks-after-test-success/-companion/","title":"Index","text":"<p>//leakcanary/leakcanary/DetectLeaksAfterTestSuccess/Companion</p>"},{"location":"api/leakcanary/-detect-leaks-after-test-success/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/leakcanary/-detect-leaks-after-test-success/-companion/#functions","title":"Functions","text":"Name Summary detectLeaksAfterTestSuccessWrapping fun RuleChain.detectLeaksAfterTestSuccessWrapping(tag: String, wrapped: RuleChain.() -&gt; RuleChain): RuleChainA helper function to trigger leak detection twice during test tear down, before and after the tear down of a set of wrapped rule chains. For example, this can be useful to detect leaks both right before and right after the activity under test is destroyed. Before means we can detect detached fragment leaks that go away when the activity is destroyed. After means we can detect activity leaks."},{"location":"api/leakcanary/-detect-leaks-after-test-success/-companion/detect-leaks-after-test-success-wrapping/","title":"Detect leaks after test success wrapping","text":"<p>//leakcanary/leakcanary/DetectLeaksAfterTestSuccess/Companion/detectLeaksAfterTestSuccessWrapping</p>"},{"location":"api/leakcanary/-detect-leaks-after-test-success/-companion/detect-leaks-after-test-success-wrapping/#detectleaksaftertestsuccesswrapping","title":"detectLeaksAfterTestSuccessWrapping","text":"<p>fun RuleChain.detectLeaksAfterTestSuccessWrapping(tag: String, wrapped: RuleChain.() -&gt; RuleChain): RuleChain</p> <p>A helper function to trigger leak detection twice during test tear down, before and after the tear down of a set of wrapped rule chains. For example, this can be useful to detect leaks both right before and right after the activity under test is destroyed. Before means we can detect detached fragment leaks that go away when the activity is destroyed. After means we can detect activity leaks.</p> <p>RuleChain.outerRule(LoginRule())\\   .detectLeaksAfterTestSuccessWrapping(\"ActivitiesDestroyed\") {\\     around(ActivityScenarioRule(MyActivity::class.java))\\   }\\   .around(LoadingScreenRule())</p>"},{"location":"api/leakcanary/-detect-leaks-assert/","title":"Index","text":"<p>//leakcanary/leakcanary/DetectLeaksAssert</p>"},{"location":"api/leakcanary/-detect-leaks-assert/#detectleaksassert","title":"DetectLeaksAssert","text":"<p>fun interface DetectLeaksAssert</p> <p>The interface for the implementation that LeakAssertions.assertNoLeaks delegates to. You can call DetectLeaksAssert.update to provide your own implementation.</p> <p>The default implementation is AndroidDetectLeaksAssert.</p>"},{"location":"api/leakcanary/-detect-leaks-assert/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/leakcanary/-detect-leaks-assert/#functions","title":"Functions","text":"Name Summary assertNoLeaks abstract fun assertNoLeaks(tag: String)"},{"location":"api/leakcanary/-detect-leaks-assert/#inheritors","title":"Inheritors","text":"Name AndroidDetectLeaksAssert"},{"location":"api/leakcanary/-detect-leaks-assert/assert-no-leaks/","title":"Assert no leaks","text":"<p>//leakcanary/leakcanary/DetectLeaksAssert/assertNoLeaks</p>"},{"location":"api/leakcanary/-detect-leaks-assert/assert-no-leaks/#assertnoleaks","title":"assertNoLeaks","text":"<p>abstract fun assertNoLeaks(tag: String)</p>"},{"location":"api/leakcanary/-detect-leaks-assert/-companion/","title":"Index","text":"<p>//leakcanary/leakcanary/DetectLeaksAssert/Companion</p>"},{"location":"api/leakcanary/-detect-leaks-assert/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/leakcanary/-detect-leaks-assert/-companion/#functions","title":"Functions","text":"Name Summary update fun update(delegate: DetectLeaksAssert)"},{"location":"api/leakcanary/-detect-leaks-assert/-companion/update/","title":"Update","text":"<p>//leakcanary/leakcanary/DetectLeaksAssert/Companion/update</p>"},{"location":"api/leakcanary/-detect-leaks-assert/-companion/update/#update","title":"update","text":"<p>fun update(delegate: DetectLeaksAssert)</p>"},{"location":"api/leakcanary/-detect-leaks-interceptor/","title":"Index","text":"<p>//leakcanary/leakcanary/DetectLeaksInterceptor</p>"},{"location":"api/leakcanary/-detect-leaks-interceptor/#detectleaksinterceptor","title":"DetectLeaksInterceptor","text":"<p>fun interface DetectLeaksInterceptor</p> <p>Decides whether to dump &amp; analyze the heap to look for leaks in instrumentation tests. The implementation might block for a while to allow temporary leaks to be flushed out, as those aren\u2019t that interesting to report and heap analysis increases test duration significantly.</p>"},{"location":"api/leakcanary/-detect-leaks-interceptor/#functions","title":"Functions","text":"Name Summary waitUntilReadyForHeapAnalysis abstract fun waitUntilReadyForHeapAnalysis(): HeapAnalysisDecision"},{"location":"api/leakcanary/-detect-leaks-interceptor/#inheritors","title":"Inheritors","text":"Name AndroidDetectLeaksInterceptor"},{"location":"api/leakcanary/-detect-leaks-interceptor/wait-until-ready-for-heap-analysis/","title":"Wait until ready for heap analysis","text":"<p>//leakcanary/leakcanary/DetectLeaksInterceptor/waitUntilReadyForHeapAnalysis</p>"},{"location":"api/leakcanary/-detect-leaks-interceptor/wait-until-ready-for-heap-analysis/#waituntilreadyforheapanalysis","title":"waitUntilReadyForHeapAnalysis","text":"<p>abstract fun waitUntilReadyForHeapAnalysis(): HeapAnalysisDecision</p>"},{"location":"api/leakcanary/-event-listener/","title":"Index","text":"<p>//leakcanary/leakcanary/EventListener</p>"},{"location":"api/leakcanary/-event-listener/#eventlistener","title":"EventListener","text":"<p>fun interface EventListener</p>"},{"location":"api/leakcanary/-event-listener/#types","title":"Types","text":"Name Summary Event sealed class Event : SerializableNote: Event is Serializable for convenience but we currently make no guarantee that the Serialization is backward / forward compatible across LeakCanary versions, so plan accordingly. This is convenient for passing events around processes, and shouldn\u2019t be used to store them."},{"location":"api/leakcanary/-event-listener/#functions","title":"Functions","text":"Name Summary onEvent abstract fun onEvent(event: EventListener.Event)onEvent is always called from the thread the events are emitted from, which is documented for each event. This enables you to potentially block a chain of events, waiting for some pre work to be done."},{"location":"api/leakcanary/-event-listener/#inheritors","title":"Inheritors","text":"Name BackgroundThreadHeapAnalyzer LazyForwardingEventListener LogcatEventListener NotificationEventListener RemoteWorkManagerHeapAnalyzer ToastEventListener TvEventListener WorkManagerHeapAnalyzer"},{"location":"api/leakcanary/-event-listener/on-event/","title":"On event","text":"<p>//leakcanary/leakcanary/EventListener/onEvent</p>"},{"location":"api/leakcanary/-event-listener/on-event/#onevent","title":"onEvent","text":"<p>abstract fun onEvent(event: EventListener.Event)</p> <p>onEvent is always called from the thread the events are emitted from, which is documented for each event. This enables you to potentially block a chain of events, waiting for some pre work to be done.</p>"},{"location":"api/leakcanary/-event-listener/-event/","title":"Index","text":"<p>//leakcanary/leakcanary/EventListener/Event</p>"},{"location":"api/leakcanary/-event-listener/-event/#event","title":"Event","text":"<p>sealed class Event : Serializable</p> <p>Note: Event is Serializable for convenience but we currently make no guarantee that the Serialization is backward / forward compatible across LeakCanary versions, so plan accordingly. This is convenient for passing events around processes, and shouldn\u2019t be used to store them.</p>"},{"location":"api/leakcanary/-event-listener/-event/#types","title":"Types","text":"Name Summary DumpingHeap class DumpingHeap(val uniqueId: String) : EventListener.EventSent from the \"LeakCanary-Heap-Dump\" HandlerThread. HeapAnalysisDone sealed class HeapAnalysisDone&lt;T : HeapAnalysis&gt; : EventListener.EventSent from the thread performing the analysis. HeapAnalysisProgress class HeapAnalysisProgress(val uniqueId: String, val step: OnAnalysisProgressListener.Step, val progressPercent: Double) : EventListener.EventprogressPercent is a value between 0..1 HeapDump class HeapDump(val uniqueId: String, val file: File, val durationMillis: Long, val reason: String) : EventListener.EventSent from the \"LeakCanary-Heap-Dump\" HandlerThread. HeapDumpFailed class HeapDumpFailed(val uniqueId: String, val exception: Throwable, val willRetryLater: Boolean) : EventListener.EventSent from the \"LeakCanary-Heap-Dump\" HandlerThread."},{"location":"api/leakcanary/-event-listener/-event/#properties","title":"Properties","text":"Name Summary uniqueId val uniqueId: StringUnique identifier for a related chain of event. The identifier for the events that run before HeapDump gets reset right before HeapDump is sent."},{"location":"api/leakcanary/-event-listener/-event/#inheritors","title":"Inheritors","text":"Name DumpingHeap HeapDump HeapDumpFailed HeapAnalysisProgress HeapAnalysisDone"},{"location":"api/leakcanary/-event-listener/-event/unique-id/","title":"Unique id","text":"<p>//leakcanary/leakcanary/EventListener/Event/uniqueId</p>"},{"location":"api/leakcanary/-event-listener/-event/unique-id/#uniqueid","title":"uniqueId","text":"<p>val uniqueId: String</p> <p>Unique identifier for a related chain of event. The identifier for the events that run before HeapDump gets reset right before HeapDump is sent.</p>"},{"location":"api/leakcanary/-event-listener/-event/-dumping-heap/","title":"Index","text":"<p>//leakcanary/leakcanary/EventListener/Event/DumpingHeap</p>"},{"location":"api/leakcanary/-event-listener/-event/-dumping-heap/#dumpingheap","title":"DumpingHeap","text":"<p>class DumpingHeap(val uniqueId: String) : EventListener.Event</p> <p>Sent from the \"LeakCanary-Heap-Dump\" HandlerThread.</p>"},{"location":"api/leakcanary/-event-listener/-event/-dumping-heap/#constructors","title":"Constructors","text":"DumpingHeap fun DumpingHeap(uniqueId: String)"},{"location":"api/leakcanary/-event-listener/-event/-dumping-heap/#properties","title":"Properties","text":"Name Summary uniqueId val uniqueId: StringUnique identifier for a related chain of event. The identifier for the events that run before HeapDump gets reset right before HeapDump is sent."},{"location":"api/leakcanary/-event-listener/-event/-dumping-heap/-dumping-heap/","title":"dumping heap","text":"<p>//leakcanary/leakcanary/EventListener/Event/DumpingHeap/DumpingHeap</p>"},{"location":"api/leakcanary/-event-listener/-event/-dumping-heap/-dumping-heap/#dumpingheap","title":"DumpingHeap","text":"<p>fun DumpingHeap(uniqueId: String)</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/","title":"Index","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapAnalysisDone</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/#heapanalysisdone","title":"HeapAnalysisDone","text":"<p>sealed class HeapAnalysisDone&lt;T : HeapAnalysis&gt; : EventListener.Event</p> <p>Sent from the thread performing the analysis.</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/#types","title":"Types","text":"Name Summary HeapAnalysisFailed class HeapAnalysisFailed(uniqueId: String, heapAnalysis: HeapAnalysisFailure, showIntent: Intent) : EventListener.Event.HeapAnalysisDone&lt;HeapAnalysisFailure&gt; HeapAnalysisSucceeded class HeapAnalysisSucceeded(uniqueId: String, heapAnalysis: HeapAnalysisSuccess, val unreadLeakSignatures: Set&lt;String&gt;, showIntent: Intent) : EventListener.Event.HeapAnalysisDone&lt;HeapAnalysisSuccess&gt;"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/#properties","title":"Properties","text":"Name Summary heapAnalysis val heapAnalysis: T showIntent val showIntent: Intent uniqueId val uniqueId: StringUnique identifier for a related chain of event. The identifier for the events that run before HeapDump gets reset right before HeapDump is sent."},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/#inheritors","title":"Inheritors","text":"Name HeapAnalysisSucceeded HeapAnalysisFailed"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/heap-analysis/","title":"Heap analysis","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapAnalysisDone/heapAnalysis</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/heap-analysis/#heapanalysis","title":"heapAnalysis","text":"<p>val heapAnalysis: T</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/show-intent/","title":"Show intent","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapAnalysisDone/showIntent</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/show-intent/#showintent","title":"showIntent","text":"<p>val showIntent: Intent</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-failed/","title":"Index","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapAnalysisDone/HeapAnalysisFailed</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-failed/#heapanalysisfailed","title":"HeapAnalysisFailed","text":"<p>class HeapAnalysisFailed(uniqueId: String, heapAnalysis: HeapAnalysisFailure, showIntent: Intent) : EventListener.Event.HeapAnalysisDone&lt;HeapAnalysisFailure&gt;</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-failed/#constructors","title":"Constructors","text":"HeapAnalysisFailed fun HeapAnalysisFailed(uniqueId: String, heapAnalysis: HeapAnalysisFailure, showIntent: Intent)"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-failed/#properties","title":"Properties","text":"Name Summary heapAnalysis val heapAnalysis: HeapAnalysisFailure showIntent val showIntent: Intent uniqueId val uniqueId: StringUnique identifier for a related chain of event. The identifier for the events that run before HeapDump gets reset right before HeapDump is sent."},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-failed/-heap-analysis-failed/","title":"heap analysis failed","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapAnalysisDone/HeapAnalysisFailed/HeapAnalysisFailed</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-failed/-heap-analysis-failed/#heapanalysisfailed","title":"HeapAnalysisFailed","text":"<p>fun HeapAnalysisFailed(uniqueId: String, heapAnalysis: HeapAnalysisFailure, showIntent: Intent)</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-succeeded/","title":"Index","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapAnalysisDone/HeapAnalysisSucceeded</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-succeeded/#heapanalysissucceeded","title":"HeapAnalysisSucceeded","text":"<p>class HeapAnalysisSucceeded(uniqueId: String, heapAnalysis: HeapAnalysisSuccess, val unreadLeakSignatures: Set&lt;String&gt;, showIntent: Intent) : EventListener.Event.HeapAnalysisDone&lt;HeapAnalysisSuccess&gt;</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-succeeded/#constructors","title":"Constructors","text":"HeapAnalysisSucceeded fun HeapAnalysisSucceeded(uniqueId: String, heapAnalysis: HeapAnalysisSuccess, unreadLeakSignatures: Set&lt;String&gt;, showIntent: Intent)"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-succeeded/#properties","title":"Properties","text":"Name Summary heapAnalysis val heapAnalysis: HeapAnalysisSuccess showIntent val showIntent: Intent uniqueId val uniqueId: StringUnique identifier for a related chain of event. The identifier for the events that run before HeapDump gets reset right before HeapDump is sent. unreadLeakSignatures val unreadLeakSignatures: Set&lt;String&gt;"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-succeeded/-heap-analysis-succeeded/","title":"heap analysis succeeded","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapAnalysisDone/HeapAnalysisSucceeded/HeapAnalysisSucceeded</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-succeeded/-heap-analysis-succeeded/#heapanalysissucceeded","title":"HeapAnalysisSucceeded","text":"<p>fun HeapAnalysisSucceeded(uniqueId: String, heapAnalysis: HeapAnalysisSuccess, unreadLeakSignatures: Set&lt;String&gt;, showIntent: Intent)</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-succeeded/unread-leak-signatures/","title":"Unread leak signatures","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapAnalysisDone/HeapAnalysisSucceeded/unreadLeakSignatures</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-succeeded/unread-leak-signatures/#unreadleaksignatures","title":"unreadLeakSignatures","text":"<p>val unreadLeakSignatures: Set&lt;String&gt;</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-progress/","title":"Index","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapAnalysisProgress</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-progress/#heapanalysisprogress","title":"HeapAnalysisProgress","text":"<p>class HeapAnalysisProgress(val uniqueId: String, val step: OnAnalysisProgressListener.Step, val progressPercent: Double) : EventListener.Event</p> <p>progressPercent is a value between 0..1</p> <p>Sent from the thread performing the analysis.</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-progress/#constructors","title":"Constructors","text":"HeapAnalysisProgress fun HeapAnalysisProgress(uniqueId: String, step: OnAnalysisProgressListener.Step, progressPercent: Double)"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-progress/#properties","title":"Properties","text":"Name Summary progressPercent val progressPercent: Double step val step: OnAnalysisProgressListener.Step uniqueId val uniqueId: StringUnique identifier for a related chain of event. The identifier for the events that run before HeapDump gets reset right before HeapDump is sent."},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-progress/-heap-analysis-progress/","title":"heap analysis progress","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapAnalysisProgress/HeapAnalysisProgress</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-progress/-heap-analysis-progress/#heapanalysisprogress","title":"HeapAnalysisProgress","text":"<p>fun HeapAnalysisProgress(uniqueId: String, step: OnAnalysisProgressListener.Step, progressPercent: Double)</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-progress/progress-percent/","title":"Progress percent","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapAnalysisProgress/progressPercent</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-progress/progress-percent/#progresspercent","title":"progressPercent","text":"<p>val progressPercent: Double</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-progress/step/","title":"Step","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapAnalysisProgress/step</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-progress/step/#step","title":"step","text":"<p>val step: OnAnalysisProgressListener.Step</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump/","title":"Index","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapDump</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump/#heapdump","title":"HeapDump","text":"<p>class HeapDump(val uniqueId: String, val file: File, val durationMillis: Long, val reason: String) : EventListener.Event</p> <p>Sent from the \"LeakCanary-Heap-Dump\" HandlerThread.</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump/#constructors","title":"Constructors","text":"HeapDump fun HeapDump(uniqueId: String, file: File, durationMillis: Long, reason: String)"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump/#properties","title":"Properties","text":"Name Summary durationMillis val durationMillis: Long file val file: File reason val reason: String uniqueId val uniqueId: StringUnique identifier for a related chain of event. The identifier for the events that run before HeapDump gets reset right before HeapDump is sent."},{"location":"api/leakcanary/-event-listener/-event/-heap-dump/-heap-dump/","title":"heap dump","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapDump/HeapDump</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump/-heap-dump/#heapdump","title":"HeapDump","text":"<p>fun HeapDump(uniqueId: String, file: File, durationMillis: Long, reason: String)</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump/duration-millis/","title":"Duration millis","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapDump/durationMillis</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump/duration-millis/#durationmillis","title":"durationMillis","text":"<p>val durationMillis: Long</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump/file/","title":"File","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapDump/file</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump/file/#file","title":"file","text":"<p>val file: File</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump/reason/","title":"Reason","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapDump/reason</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump/reason/#reason","title":"reason","text":"<p>val reason: String</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump-failed/","title":"Index","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapDumpFailed</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump-failed/#heapdumpfailed","title":"HeapDumpFailed","text":"<p>class HeapDumpFailed(val uniqueId: String, val exception: Throwable, val willRetryLater: Boolean) : EventListener.Event</p> <p>Sent from the \"LeakCanary-Heap-Dump\" HandlerThread.</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump-failed/#constructors","title":"Constructors","text":"HeapDumpFailed fun HeapDumpFailed(uniqueId: String, exception: Throwable, willRetryLater: Boolean)"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump-failed/#properties","title":"Properties","text":"Name Summary exception val exception: Throwable uniqueId val uniqueId: StringUnique identifier for a related chain of event. The identifier for the events that run before HeapDump gets reset right before HeapDump is sent. willRetryLater val willRetryLater: Boolean"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump-failed/-heap-dump-failed/","title":"heap dump failed","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapDumpFailed/HeapDumpFailed</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump-failed/-heap-dump-failed/#heapdumpfailed","title":"HeapDumpFailed","text":"<p>fun HeapDumpFailed(uniqueId: String, exception: Throwable, willRetryLater: Boolean)</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump-failed/exception/","title":"Exception","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapDumpFailed/exception</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump-failed/exception/#exception","title":"exception","text":"<p>val exception: Throwable</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump-failed/will-retry-later/","title":"Will retry later","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapDumpFailed/willRetryLater</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump-failed/will-retry-later/#willretrylater","title":"willRetryLater","text":"<p>val willRetryLater: Boolean</p>"},{"location":"api/leakcanary/-fragment-and-view-model-watcher/","title":"Index","text":"<p>//leakcanary/leakcanary/FragmentAndViewModelWatcher</p>"},{"location":"api/leakcanary/-fragment-and-view-model-watcher/#fragmentandviewmodelwatcher","title":"FragmentAndViewModelWatcher","text":"<p>class FragmentAndViewModelWatcher(application: Application, reachabilityWatcher: ReachabilityWatcher) : InstallableWatcher</p> <p>Expects:</p> <ul> <li>Fragments (Support Library, Android X and AOSP) to become weakly reachable soon after they receive the Fragment#onDestroy() callback.</li> <li>Fragment views (Support Library, Android X and AOSP) to become weakly reachable soon after fragments receive the Fragment#onDestroyView() callback.</li> <li>Android X view models (both activity and fragment view models) to become weakly reachable soon after they received the ViewModel#onCleared() callback.</li> </ul>"},{"location":"api/leakcanary/-fragment-and-view-model-watcher/#constructors","title":"Constructors","text":"FragmentAndViewModelWatcher fun FragmentAndViewModelWatcher(application: Application, reachabilityWatcher: ReachabilityWatcher)"},{"location":"api/leakcanary/-fragment-and-view-model-watcher/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/leakcanary/-fragment-and-view-model-watcher/#functions","title":"Functions","text":"Name Summary install open override fun install() uninstall open override fun uninstall()"},{"location":"api/leakcanary/-fragment-and-view-model-watcher/-fragment-and-view-model-watcher/","title":"fragment and view model watcher","text":"<p>//leakcanary/leakcanary/FragmentAndViewModelWatcher/FragmentAndViewModelWatcher</p>"},{"location":"api/leakcanary/-fragment-and-view-model-watcher/-fragment-and-view-model-watcher/#fragmentandviewmodelwatcher","title":"FragmentAndViewModelWatcher","text":"<p>fun FragmentAndViewModelWatcher(application: Application, reachabilityWatcher: ReachabilityWatcher)</p>"},{"location":"api/leakcanary/-fragment-and-view-model-watcher/install/","title":"Install","text":"<p>//leakcanary/leakcanary/FragmentAndViewModelWatcher/install</p>"},{"location":"api/leakcanary/-fragment-and-view-model-watcher/install/#install","title":"install","text":"<p>open override fun install()</p>"},{"location":"api/leakcanary/-fragment-and-view-model-watcher/uninstall/","title":"Uninstall","text":"<p>//leakcanary/leakcanary/FragmentAndViewModelWatcher/uninstall</p>"},{"location":"api/leakcanary/-fragment-and-view-model-watcher/uninstall/#uninstall","title":"uninstall","text":"<p>open override fun uninstall()</p>"},{"location":"api/leakcanary/-fragment-and-view-model-watcher/-companion/","title":"Index","text":"<p>//leakcanary/leakcanary/FragmentAndViewModelWatcher/Companion</p>"},{"location":"api/leakcanary/-fragment-and-view-model-watcher/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/leakcanary/-gc-trigger/","title":"Index","text":"<p>//leakcanary/leakcanary/GcTrigger</p>"},{"location":"api/leakcanary/-gc-trigger/#gctrigger","title":"GcTrigger","text":"<p>fun interface GcTrigger</p> <p>GcTrigger is used to try triggering garbage collection and enqueuing KeyedWeakReference into the associated java.lang.ref.ReferenceQueue. The default implementation Default comes from AOSP.</p>"},{"location":"api/leakcanary/-gc-trigger/#types","title":"Types","text":"Name Summary Default object Default : GcTriggerDefault implementation of GcTrigger."},{"location":"api/leakcanary/-gc-trigger/#functions","title":"Functions","text":"Name Summary runGc abstract fun runGc()Attempts to run garbage collection."},{"location":"api/leakcanary/-gc-trigger/#inheritors","title":"Inheritors","text":"Name Default"},{"location":"api/leakcanary/-gc-trigger/run-gc/","title":"Run gc","text":"<p>//leakcanary/leakcanary/GcTrigger/runGc</p>"},{"location":"api/leakcanary/-gc-trigger/run-gc/#rungc","title":"runGc","text":"<p>abstract fun runGc()</p> <p>Attempts to run garbage collection.</p>"},{"location":"api/leakcanary/-gc-trigger/-default/","title":"Index","text":"<p>//leakcanary/leakcanary/GcTrigger/Default</p>"},{"location":"api/leakcanary/-gc-trigger/-default/#default","title":"Default","text":"<p>object Default : GcTrigger</p> <p>Default implementation of GcTrigger.</p>"},{"location":"api/leakcanary/-gc-trigger/-default/#functions","title":"Functions","text":"Name Summary runGc open override fun runGc()Attempts to run garbage collection."},{"location":"api/leakcanary/-gc-trigger/-default/run-gc/","title":"Run gc","text":"<p>//leakcanary/leakcanary/GcTrigger/Default/runGc</p>"},{"location":"api/leakcanary/-gc-trigger/-default/run-gc/#rungc","title":"runGc","text":"<p>open override fun runGc()</p> <p>Attempts to run garbage collection.</p>"},{"location":"api/leakcanary/-good-android-version-interceptor/","title":"Index","text":"<p>//leakcanary/leakcanary/GoodAndroidVersionInterceptor</p>"},{"location":"api/leakcanary/-good-android-version-interceptor/#goodandroidversioninterceptor","title":"GoodAndroidVersionInterceptor","text":"<p>class GoodAndroidVersionInterceptor : HeapAnalysisInterceptor</p>"},{"location":"api/leakcanary/-good-android-version-interceptor/#constructors","title":"Constructors","text":"GoodAndroidVersionInterceptor fun GoodAndroidVersionInterceptor()"},{"location":"api/leakcanary/-good-android-version-interceptor/#functions","title":"Functions","text":"Name Summary intercept open override fun intercept(chain: HeapAnalysisInterceptor.Chain): HeapAnalysisJob.Result"},{"location":"api/leakcanary/-good-android-version-interceptor/-good-android-version-interceptor/","title":"good android version interceptor","text":"<p>//leakcanary/leakcanary/GoodAndroidVersionInterceptor/GoodAndroidVersionInterceptor</p>"},{"location":"api/leakcanary/-good-android-version-interceptor/-good-android-version-interceptor/#goodandroidversioninterceptor","title":"GoodAndroidVersionInterceptor","text":"<p>fun GoodAndroidVersionInterceptor()</p>"},{"location":"api/leakcanary/-good-android-version-interceptor/intercept/","title":"Intercept","text":"<p>//leakcanary/leakcanary/GoodAndroidVersionInterceptor/intercept</p>"},{"location":"api/leakcanary/-good-android-version-interceptor/intercept/#intercept","title":"intercept","text":"<p>open override fun intercept(chain: HeapAnalysisInterceptor.Chain): HeapAnalysisJob.Result</p>"},{"location":"api/leakcanary/-heap-analysis-client/","title":"Index","text":"<p>//leakcanary/leakcanary/HeapAnalysisClient</p>"},{"location":"api/leakcanary/-heap-analysis-client/#heapanalysisclient","title":"HeapAnalysisClient","text":"<p>class HeapAnalysisClient(heapDumpDirectoryProvider: () -&gt; File, config: HeapAnalysisConfig, interceptors: List&lt;HeapAnalysisInterceptor&gt;)</p>"},{"location":"api/leakcanary/-heap-analysis-client/#constructors","title":"Constructors","text":"HeapAnalysisClient fun HeapAnalysisClient(heapDumpDirectoryProvider: () -&gt; File, config: HeapAnalysisConfig, interceptors: List&lt;HeapAnalysisInterceptor&gt;)"},{"location":"api/leakcanary/-heap-analysis-client/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/leakcanary/-heap-analysis-client/#functions","title":"Functions","text":"Name Summary deleteHeapDumpFiles fun deleteHeapDumpFiles() newJob fun newJob(context: JobContext = JobContext()): HeapAnalysisJob"},{"location":"api/leakcanary/-heap-analysis-client/-heap-analysis-client/","title":"heap analysis client","text":"<p>//leakcanary/leakcanary/HeapAnalysisClient/HeapAnalysisClient</p>"},{"location":"api/leakcanary/-heap-analysis-client/-heap-analysis-client/#heapanalysisclient","title":"HeapAnalysisClient","text":"<p>fun HeapAnalysisClient(heapDumpDirectoryProvider: () -&gt; File, config: HeapAnalysisConfig, interceptors: List&lt;HeapAnalysisInterceptor&gt;)</p>"},{"location":"api/leakcanary/-heap-analysis-client/delete-heap-dump-files/","title":"Delete heap dump files","text":"<p>//leakcanary/leakcanary/HeapAnalysisClient/deleteHeapDumpFiles</p>"},{"location":"api/leakcanary/-heap-analysis-client/delete-heap-dump-files/#deleteheapdumpfiles","title":"deleteHeapDumpFiles","text":"<p>fun deleteHeapDumpFiles()</p>"},{"location":"api/leakcanary/-heap-analysis-client/new-job/","title":"New job","text":"<p>//leakcanary/leakcanary/HeapAnalysisClient/newJob</p>"},{"location":"api/leakcanary/-heap-analysis-client/new-job/#newjob","title":"newJob","text":"<p>fun newJob(context: JobContext = JobContext()): HeapAnalysisJob</p>"},{"location":"api/leakcanary/-heap-analysis-client/-companion/","title":"Index","text":"<p>//leakcanary/leakcanary/HeapAnalysisClient/Companion</p>"},{"location":"api/leakcanary/-heap-analysis-client/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/leakcanary/-heap-analysis-client/-companion/#functions","title":"Functions","text":"Name Summary defaultInterceptors fun defaultInterceptors(application: Application): List&lt;HeapAnalysisInterceptor&gt;"},{"location":"api/leakcanary/-heap-analysis-client/-companion/default-interceptors/","title":"Default interceptors","text":"<p>//leakcanary/leakcanary/HeapAnalysisClient/Companion/defaultInterceptors</p>"},{"location":"api/leakcanary/-heap-analysis-client/-companion/default-interceptors/#defaultinterceptors","title":"defaultInterceptors","text":"<p>fun defaultInterceptors(application: Application): List&lt;HeapAnalysisInterceptor&gt;</p>"},{"location":"api/leakcanary/-heap-analysis-config/","title":"Index","text":"<p>//leakcanary/leakcanary/HeapAnalysisConfig</p>"},{"location":"api/leakcanary/-heap-analysis-config/#heapanalysisconfig","title":"HeapAnalysisConfig","text":"<p>data class HeapAnalysisConfig(val referenceMatchers: List&lt;ReferenceMatcher&gt; = AndroidReferenceMatchers.appDefaults, val objectInspectors: List&lt;ObjectInspector&gt; = AndroidObjectInspectors.appDefaults, val metadataExtractor: MetadataExtractor = AndroidMetadataExtractor, val computeRetainedHeapSize: Boolean = true, val leakingObjectFinder: LeakingObjectFinder = FilteringLeakingObjectFinder(     AndroidObjectInspectors.appLeakingObjectFilters   ), val stripHeapDump: Boolean = false)</p>"},{"location":"api/leakcanary/-heap-analysis-config/#constructors","title":"Constructors","text":"HeapAnalysisConfig fun HeapAnalysisConfig(referenceMatchers: List&lt;ReferenceMatcher&gt; = AndroidReferenceMatchers.appDefaults, objectInspectors: List&lt;ObjectInspector&gt; = AndroidObjectInspectors.appDefaults, metadataExtractor: MetadataExtractor = AndroidMetadataExtractor, computeRetainedHeapSize: Boolean = true, leakingObjectFinder: LeakingObjectFinder = FilteringLeakingObjectFinder(     AndroidObjectInspectors.appLeakingObjectFilters   ), stripHeapDump: Boolean = false)"},{"location":"api/leakcanary/-heap-analysis-config/#properties","title":"Properties","text":"Name Summary computeRetainedHeapSize val computeRetainedHeapSize: Boolean = trueWhether to compute the retained heap size, which is the total number of bytes in memory that would be reclaimed if the detected leaks didn\u2019t happen. This includes native memory associated to Java objects (e.g. Android bitmaps). leakingObjectFinder val leakingObjectFinder: LeakingObjectFinderFinds the objects that are leaking, for which LeakCanary will compute leak traces. metadataExtractor val metadataExtractor: MetadataExtractorExtracts metadata from a hprof to be reported in shark.HeapAnalysisSuccess.metadata. Called on a background thread during heap analysis. objectInspectors val objectInspectors: List&lt;ObjectInspector&gt;List of ObjectInspector that provide LeakCanary with insights about objects found in the heap. You can create your own ObjectInspector implementations, and also add a shark.AppSingletonInspector instance created with the list of internal singletons. referenceMatchers val referenceMatchers: List&lt;ReferenceMatcher&gt;Known patterns of references in the heap, added here either to ignore them (IgnoredReferenceMatcher) or to mark them as library leaks (LibraryLeakReferenceMatcher). stripHeapDump val stripHeapDump: Boolean = falseWhether the first step after a heap dump should be to replace the content of all arrays with zeroes. This increases the overall processing time but limits the amount of time the heap dump exists on disk with potential PII."},{"location":"api/leakcanary/-heap-analysis-config/-heap-analysis-config/","title":"heap analysis config","text":"<p>//leakcanary/leakcanary/HeapAnalysisConfig/HeapAnalysisConfig</p>"},{"location":"api/leakcanary/-heap-analysis-config/-heap-analysis-config/#heapanalysisconfig","title":"HeapAnalysisConfig","text":"<p>fun HeapAnalysisConfig(referenceMatchers: List&lt;ReferenceMatcher&gt; = AndroidReferenceMatchers.appDefaults, objectInspectors: List&lt;ObjectInspector&gt; = AndroidObjectInspectors.appDefaults, metadataExtractor: MetadataExtractor = AndroidMetadataExtractor, computeRetainedHeapSize: Boolean = true, leakingObjectFinder: LeakingObjectFinder = FilteringLeakingObjectFinder(     AndroidObjectInspectors.appLeakingObjectFilters   ), stripHeapDump: Boolean = false)</p>"},{"location":"api/leakcanary/-heap-analysis-config/compute-retained-heap-size/","title":"Compute retained heap size","text":"<p>//leakcanary/leakcanary/HeapAnalysisConfig/computeRetainedHeapSize</p>"},{"location":"api/leakcanary/-heap-analysis-config/compute-retained-heap-size/#computeretainedheapsize","title":"computeRetainedHeapSize","text":"<p>val computeRetainedHeapSize: Boolean = true</p> <p>Whether to compute the retained heap size, which is the total number of bytes in memory that would be reclaimed if the detected leaks didn\u2019t happen. This includes native memory associated to Java objects (e.g. Android bitmaps).</p> <p>Computing the retained heap size can slow down the analysis because it requires navigating from GC roots through the entire object graph, whereas shark.HeapAnalyzer would otherwise stop as soon as all leaking instances are found.</p> <p>Defaults to true.</p>"},{"location":"api/leakcanary/-heap-analysis-config/leaking-object-finder/","title":"Leaking object finder","text":"<p>//leakcanary/leakcanary/HeapAnalysisConfig/leakingObjectFinder</p>"},{"location":"api/leakcanary/-heap-analysis-config/leaking-object-finder/#leakingobjectfinder","title":"leakingObjectFinder","text":"<p>val leakingObjectFinder: LeakingObjectFinder</p> <p>Finds the objects that are leaking, for which LeakCanary will compute leak traces.</p> <p>Defaults to a FilteringLeakingObjectFinder that scans all objects in the heap dump and delegates the decision to AndroidObjectInspectors.appLeakingObjectFilters.</p>"},{"location":"api/leakcanary/-heap-analysis-config/metadata-extractor/","title":"Metadata extractor","text":"<p>//leakcanary/leakcanary/HeapAnalysisConfig/metadataExtractor</p>"},{"location":"api/leakcanary/-heap-analysis-config/metadata-extractor/#metadataextractor","title":"metadataExtractor","text":"<p>val metadataExtractor: MetadataExtractor</p> <p>Extracts metadata from a hprof to be reported in shark.HeapAnalysisSuccess.metadata. Called on a background thread during heap analysis.</p> <p>Defaults to AndroidMetadataExtractor</p>"},{"location":"api/leakcanary/-heap-analysis-config/object-inspectors/","title":"Object inspectors","text":"<p>//leakcanary/leakcanary/HeapAnalysisConfig/objectInspectors</p>"},{"location":"api/leakcanary/-heap-analysis-config/object-inspectors/#objectinspectors","title":"objectInspectors","text":"<p>val objectInspectors: List&lt;ObjectInspector&gt;</p> <p>List of ObjectInspector that provide LeakCanary with insights about objects found in the heap. You can create your own ObjectInspector implementations, and also add a shark.AppSingletonInspector instance created with the list of internal singletons.</p> <p>Defaults to AndroidObjectInspectors.appDefaults</p>"},{"location":"api/leakcanary/-heap-analysis-config/reference-matchers/","title":"Reference matchers","text":"<p>//leakcanary/leakcanary/HeapAnalysisConfig/referenceMatchers</p>"},{"location":"api/leakcanary/-heap-analysis-config/reference-matchers/#referencematchers","title":"referenceMatchers","text":"<p>val referenceMatchers: List&lt;ReferenceMatcher&gt;</p> <p>Known patterns of references in the heap, added here either to ignore them (IgnoredReferenceMatcher) or to mark them as library leaks (LibraryLeakReferenceMatcher).</p> <p>When adding your own custom LibraryLeakReferenceMatcher instances, you\u2019ll most likely want to set LibraryLeakReferenceMatcher.patternApplies with a filter that checks for the Android OS version and manufacturer. The build information can be obtained by calling shark.AndroidBuildMirror.fromHeapGraph.</p> <p>Defaults to AndroidReferenceMatchers.appDefaults</p>"},{"location":"api/leakcanary/-heap-analysis-config/strip-heap-dump/","title":"Strip heap dump","text":"<p>//leakcanary/leakcanary/HeapAnalysisConfig/stripHeapDump</p>"},{"location":"api/leakcanary/-heap-analysis-config/strip-heap-dump/#stripheapdump","title":"stripHeapDump","text":"<p>val stripHeapDump: Boolean = false</p> <p>Whether the first step after a heap dump should be to replace the content of all arrays with zeroes. This increases the overall processing time but limits the amount of time the heap dump exists on disk with potential PII.</p>"},{"location":"api/leakcanary/-heap-analysis-decision/","title":"Index","text":"<p>//leakcanary/leakcanary/HeapAnalysisDecision</p>"},{"location":"api/leakcanary/-heap-analysis-decision/#heapanalysisdecision","title":"HeapAnalysisDecision","text":"<p>sealed class HeapAnalysisDecision</p>"},{"location":"api/leakcanary/-heap-analysis-decision/#types","title":"Types","text":"Name Summary AnalyzeHeap object AnalyzeHeap : HeapAnalysisDecision NoHeapAnalysis class NoHeapAnalysis(val reason: String) : HeapAnalysisDecision"},{"location":"api/leakcanary/-heap-analysis-decision/#inheritors","title":"Inheritors","text":"Name AnalyzeHeap NoHeapAnalysis"},{"location":"api/leakcanary/-heap-analysis-decision/-analyze-heap/","title":"Index","text":"<p>//leakcanary/leakcanary/HeapAnalysisDecision/AnalyzeHeap</p>"},{"location":"api/leakcanary/-heap-analysis-decision/-analyze-heap/#analyzeheap","title":"AnalyzeHeap","text":"<p>object AnalyzeHeap : HeapAnalysisDecision</p>"},{"location":"api/leakcanary/-heap-analysis-decision/-no-heap-analysis/","title":"Index","text":"<p>//leakcanary/leakcanary/HeapAnalysisDecision/NoHeapAnalysis</p>"},{"location":"api/leakcanary/-heap-analysis-decision/-no-heap-analysis/#noheapanalysis","title":"NoHeapAnalysis","text":"<p>class NoHeapAnalysis(val reason: String) : HeapAnalysisDecision</p>"},{"location":"api/leakcanary/-heap-analysis-decision/-no-heap-analysis/#constructors","title":"Constructors","text":"NoHeapAnalysis fun NoHeapAnalysis(reason: String)"},{"location":"api/leakcanary/-heap-analysis-decision/-no-heap-analysis/#properties","title":"Properties","text":"Name Summary reason val reason: String"},{"location":"api/leakcanary/-heap-analysis-decision/-no-heap-analysis/-no-heap-analysis/","title":"no heap analysis","text":"<p>//leakcanary/leakcanary/HeapAnalysisDecision/NoHeapAnalysis/NoHeapAnalysis</p>"},{"location":"api/leakcanary/-heap-analysis-decision/-no-heap-analysis/-no-heap-analysis/#noheapanalysis","title":"NoHeapAnalysis","text":"<p>fun NoHeapAnalysis(reason: String)</p>"},{"location":"api/leakcanary/-heap-analysis-decision/-no-heap-analysis/reason/","title":"Reason","text":"<p>//leakcanary/leakcanary/HeapAnalysisDecision/NoHeapAnalysis/reason</p>"},{"location":"api/leakcanary/-heap-analysis-decision/-no-heap-analysis/reason/#reason","title":"reason","text":"<p>val reason: String</p>"},{"location":"api/leakcanary/-heap-analysis-interceptor/","title":"Index","text":"<p>//leakcanary/leakcanary/HeapAnalysisInterceptor</p>"},{"location":"api/leakcanary/-heap-analysis-interceptor/#heapanalysisinterceptor","title":"HeapAnalysisInterceptor","text":"<p>fun interface HeapAnalysisInterceptor</p>"},{"location":"api/leakcanary/-heap-analysis-interceptor/#types","title":"Types","text":"Name Summary Chain interface Chain"},{"location":"api/leakcanary/-heap-analysis-interceptor/#functions","title":"Functions","text":"Name Summary intercept abstract fun intercept(chain: HeapAnalysisInterceptor.Chain): HeapAnalysisJob.Result"},{"location":"api/leakcanary/-heap-analysis-interceptor/#inheritors","title":"Inheritors","text":"Name ConditionalInterceptor GoodAndroidVersionInterceptor MinimumDiskSpaceInterceptor MinimumElapsedSinceStartInterceptor MinimumMemoryInterceptor OncePerPeriodInterceptor SaveResourceIdsInterceptor"},{"location":"api/leakcanary/-heap-analysis-interceptor/intercept/","title":"Intercept","text":"<p>//leakcanary/leakcanary/HeapAnalysisInterceptor/intercept</p>"},{"location":"api/leakcanary/-heap-analysis-interceptor/intercept/#intercept","title":"intercept","text":"<p>abstract fun intercept(chain: HeapAnalysisInterceptor.Chain): HeapAnalysisJob.Result</p>"},{"location":"api/leakcanary/-heap-analysis-interceptor/-chain/","title":"Index","text":"<p>//leakcanary/leakcanary/HeapAnalysisInterceptor/Chain</p>"},{"location":"api/leakcanary/-heap-analysis-interceptor/-chain/#chain","title":"Chain","text":"<p>interface Chain</p>"},{"location":"api/leakcanary/-heap-analysis-interceptor/-chain/#functions","title":"Functions","text":"Name Summary proceed abstract fun proceed(): HeapAnalysisJob.Result"},{"location":"api/leakcanary/-heap-analysis-interceptor/-chain/#properties","title":"Properties","text":"Name Summary job abstract val job: HeapAnalysisJob"},{"location":"api/leakcanary/-heap-analysis-interceptor/-chain/job/","title":"Job","text":"<p>//leakcanary/leakcanary/HeapAnalysisInterceptor/Chain/job</p>"},{"location":"api/leakcanary/-heap-analysis-interceptor/-chain/job/#job","title":"job","text":"<p>abstract val job: HeapAnalysisJob</p>"},{"location":"api/leakcanary/-heap-analysis-interceptor/-chain/proceed/","title":"Proceed","text":"<p>//leakcanary/leakcanary/HeapAnalysisInterceptor/Chain/proceed</p>"},{"location":"api/leakcanary/-heap-analysis-interceptor/-chain/proceed/#proceed","title":"proceed","text":"<p>abstract fun proceed(): HeapAnalysisJob.Result</p>"},{"location":"api/leakcanary/-heap-analysis-job/","title":"Index","text":"<p>//leakcanary/leakcanary/HeapAnalysisJob</p>"},{"location":"api/leakcanary/-heap-analysis-job/#heapanalysisjob","title":"HeapAnalysisJob","text":"<p>interface HeapAnalysisJob</p> <p>A HeapAnalysisJob represents a single prepared request to analyze the heap. It cannot be executed twice.</p>"},{"location":"api/leakcanary/-heap-analysis-job/#types","title":"Types","text":"Name Summary Result sealed class Result"},{"location":"api/leakcanary/-heap-analysis-job/#functions","title":"Functions","text":"Name Summary cancel abstract fun cancel(cancelReason: String)Cancels the job, if possible. Jobs that are already complete cannot be canceled. execute abstract fun execute(): HeapAnalysisJob.ResultStarts the analysis job immediately, and blocks until a result is available."},{"location":"api/leakcanary/-heap-analysis-job/#properties","title":"Properties","text":"Name Summary canceled abstract val canceled: Booleantrue of cancel has been called or if an HeapAnalysisInterceptor has returned Result.Canceled from HeapAnalysisInterceptor.intercept. context abstract val context: JobContextIn memory store, mutable and thread safe. This allows passing data to interceptors. executed abstract val executed: Booleantrue if execute has been called. It is an error to call execute more than once."},{"location":"api/leakcanary/-heap-analysis-job/cancel/","title":"Cancel","text":"<p>//leakcanary/leakcanary/HeapAnalysisJob/cancel</p>"},{"location":"api/leakcanary/-heap-analysis-job/cancel/#cancel","title":"cancel","text":"<p>abstract fun cancel(cancelReason: String)</p> <p>Cancels the job, if possible. Jobs that are already complete cannot be canceled.</p>"},{"location":"api/leakcanary/-heap-analysis-job/canceled/","title":"Canceled","text":"<p>//leakcanary/leakcanary/HeapAnalysisJob/canceled</p>"},{"location":"api/leakcanary/-heap-analysis-job/canceled/#canceled","title":"canceled","text":"<p>abstract val canceled: Boolean</p> <p>true of cancel has been called or if an HeapAnalysisInterceptor has returned Result.Canceled from HeapAnalysisInterceptor.intercept.</p>"},{"location":"api/leakcanary/-heap-analysis-job/context/","title":"Context","text":"<p>//leakcanary/leakcanary/HeapAnalysisJob/context</p>"},{"location":"api/leakcanary/-heap-analysis-job/context/#context","title":"context","text":"<p>abstract val context: JobContext</p> <p>In memory store, mutable and thread safe. This allows passing data to interceptors.</p>"},{"location":"api/leakcanary/-heap-analysis-job/execute/","title":"Execute","text":"<p>//leakcanary/leakcanary/HeapAnalysisJob/execute</p>"},{"location":"api/leakcanary/-heap-analysis-job/execute/#execute","title":"execute","text":"<p>abstract fun execute(): HeapAnalysisJob.Result</p> <p>Starts the analysis job immediately, and blocks until a result is available.</p>"},{"location":"api/leakcanary/-heap-analysis-job/execute/#return","title":"Return","text":"<p>Either Result.Done if the analysis was attempted or Result.Canceled</p>"},{"location":"api/leakcanary/-heap-analysis-job/executed/","title":"Executed","text":"<p>//leakcanary/leakcanary/HeapAnalysisJob/executed</p>"},{"location":"api/leakcanary/-heap-analysis-job/executed/#executed","title":"executed","text":"<p>abstract val executed: Boolean</p> <p>true if execute has been called. It is an error to call execute more than once.</p>"},{"location":"api/leakcanary/-heap-analysis-job/-result/","title":"Index","text":"<p>//leakcanary/leakcanary/HeapAnalysisJob/Result</p>"},{"location":"api/leakcanary/-heap-analysis-job/-result/#result","title":"Result","text":"<p>sealed class Result</p>"},{"location":"api/leakcanary/-heap-analysis-job/-result/#types","title":"Types","text":"Name Summary Canceled data class Canceled(val cancelReason: String) : HeapAnalysisJob.Result Done data class Done(val analysis: HeapAnalysis, val stripHeapDumpDurationMillis: Long? = null) : HeapAnalysisJob.Result"},{"location":"api/leakcanary/-heap-analysis-job/-result/#inheritors","title":"Inheritors","text":"Name Done Canceled"},{"location":"api/leakcanary/-heap-analysis-job/-result/-canceled/","title":"Index","text":"<p>//leakcanary/leakcanary/HeapAnalysisJob/Result/Canceled</p>"},{"location":"api/leakcanary/-heap-analysis-job/-result/-canceled/#canceled","title":"Canceled","text":"<p>data class Canceled(val cancelReason: String) : HeapAnalysisJob.Result</p>"},{"location":"api/leakcanary/-heap-analysis-job/-result/-canceled/#constructors","title":"Constructors","text":"Canceled fun Canceled(cancelReason: String)"},{"location":"api/leakcanary/-heap-analysis-job/-result/-canceled/#properties","title":"Properties","text":"Name Summary cancelReason val cancelReason: String"},{"location":"api/leakcanary/-heap-analysis-job/-result/-canceled/-canceled/","title":"canceled","text":"<p>//leakcanary/leakcanary/HeapAnalysisJob/Result/Canceled/Canceled</p>"},{"location":"api/leakcanary/-heap-analysis-job/-result/-canceled/-canceled/#canceled","title":"Canceled","text":"<p>fun Canceled(cancelReason: String)</p>"},{"location":"api/leakcanary/-heap-analysis-job/-result/-canceled/cancel-reason/","title":"Cancel reason","text":"<p>//leakcanary/leakcanary/HeapAnalysisJob/Result/Canceled/cancelReason</p>"},{"location":"api/leakcanary/-heap-analysis-job/-result/-canceled/cancel-reason/#cancelreason","title":"cancelReason","text":"<p>val cancelReason: String</p>"},{"location":"api/leakcanary/-heap-analysis-job/-result/-done/","title":"Index","text":"<p>//leakcanary/leakcanary/HeapAnalysisJob/Result/Done</p>"},{"location":"api/leakcanary/-heap-analysis-job/-result/-done/#done","title":"Done","text":"<p>data class Done(val analysis: HeapAnalysis, val stripHeapDumpDurationMillis: Long? = null) : HeapAnalysisJob.Result</p>"},{"location":"api/leakcanary/-heap-analysis-job/-result/-done/#constructors","title":"Constructors","text":"Done fun Done(analysis: HeapAnalysis, stripHeapDumpDurationMillis: Long? = null)"},{"location":"api/leakcanary/-heap-analysis-job/-result/-done/#properties","title":"Properties","text":"Name Summary analysis val analysis: HeapAnalysis stripHeapDumpDurationMillis val stripHeapDumpDurationMillis: Long? = nullThe time spent stripping the hprof of any data if HeapAnalysisConfig.stripHeapDump is true, null otherwise."},{"location":"api/leakcanary/-heap-analysis-job/-result/-done/-done/","title":"done","text":"<p>//leakcanary/leakcanary/HeapAnalysisJob/Result/Done/Done</p>"},{"location":"api/leakcanary/-heap-analysis-job/-result/-done/-done/#done","title":"Done","text":"<p>fun Done(analysis: HeapAnalysis, stripHeapDumpDurationMillis: Long? = null)</p>"},{"location":"api/leakcanary/-heap-analysis-job/-result/-done/analysis/","title":"Analysis","text":"<p>//leakcanary/leakcanary/HeapAnalysisJob/Result/Done/analysis</p>"},{"location":"api/leakcanary/-heap-analysis-job/-result/-done/analysis/#analysis","title":"analysis","text":"<p>val analysis: HeapAnalysis</p>"},{"location":"api/leakcanary/-heap-analysis-job/-result/-done/strip-heap-dump-duration-millis/","title":"Strip heap dump duration millis","text":"<p>//leakcanary/leakcanary/HeapAnalysisJob/Result/Done/stripHeapDumpDurationMillis</p>"},{"location":"api/leakcanary/-heap-analysis-job/-result/-done/strip-heap-dump-duration-millis/#stripheapdumpdurationmillis","title":"stripHeapDumpDurationMillis","text":"<p>val stripHeapDumpDurationMillis: Long? = null</p> <p>The time spent stripping the hprof of any data if HeapAnalysisConfig.stripHeapDump is true, null otherwise.</p>"},{"location":"api/leakcanary/-heap-analysis-reporter/","title":"Index","text":"<p>//leakcanary/leakcanary/HeapAnalysisReporter</p>"},{"location":"api/leakcanary/-heap-analysis-reporter/#heapanalysisreporter","title":"HeapAnalysisReporter","text":"<p>fun interface HeapAnalysisReporter</p> <p>Reports the results of a heap analysis created by AndroidDetectLeaksAssert.</p>"},{"location":"api/leakcanary/-heap-analysis-reporter/#functions","title":"Functions","text":"Name Summary reportHeapAnalysis abstract fun reportHeapAnalysis(heapAnalysis: HeapAnalysis)"},{"location":"api/leakcanary/-heap-analysis-reporter/report-heap-analysis/","title":"Report heap analysis","text":"<p>//leakcanary/leakcanary/HeapAnalysisReporter/reportHeapAnalysis</p>"},{"location":"api/leakcanary/-heap-analysis-reporter/report-heap-analysis/#reportheapanalysis","title":"reportHeapAnalysis","text":"<p>abstract fun reportHeapAnalysis(heapAnalysis: HeapAnalysis)</p>"},{"location":"api/leakcanary/-heap-dumper/","title":"Index","text":"<p>//leakcanary/leakcanary/HeapDumper</p>"},{"location":"api/leakcanary/-heap-dumper/#heapdumper","title":"HeapDumper","text":"<p>fun interface HeapDumper</p>"},{"location":"api/leakcanary/-heap-dumper/#functions","title":"Functions","text":"Name Summary dumpHeap abstract fun dumpHeap(heapDumpFile: File)Dumps the heap. The implementation is expected to be blocking until the heap is dumped or heap dumping failed."},{"location":"api/leakcanary/-heap-dumper/#inheritors","title":"Inheritors","text":"Name AndroidDebugHeapDumper"},{"location":"api/leakcanary/-heap-dumper/dump-heap/","title":"Dump heap","text":"<p>//leakcanary/leakcanary/HeapDumper/dumpHeap</p>"},{"location":"api/leakcanary/-heap-dumper/dump-heap/#dumpheap","title":"dumpHeap","text":"<p>abstract fun dumpHeap(heapDumpFile: File)</p> <p>Dumps the heap. The implementation is expected to be blocking until the heap is dumped or heap dumping failed.</p> <p>Implementations can throw a runtime exception if heap dumping failed.</p>"},{"location":"api/leakcanary/-installable-watcher/","title":"Index","text":"<p>//leakcanary/leakcanary/InstallableWatcher</p>"},{"location":"api/leakcanary/-installable-watcher/#installablewatcher","title":"InstallableWatcher","text":"<p>interface InstallableWatcher</p>"},{"location":"api/leakcanary/-installable-watcher/#functions","title":"Functions","text":"Name Summary install abstract fun install() uninstall abstract fun uninstall()"},{"location":"api/leakcanary/-installable-watcher/#inheritors","title":"Inheritors","text":"Name ActivityWatcher FragmentAndViewModelWatcher RootViewWatcher ServiceWatcher"},{"location":"api/leakcanary/-installable-watcher/install/","title":"Install","text":"<p>//leakcanary/leakcanary/InstallableWatcher/install</p>"},{"location":"api/leakcanary/-installable-watcher/install/#install","title":"install","text":"<p>abstract fun install()</p>"},{"location":"api/leakcanary/-installable-watcher/uninstall/","title":"Uninstall","text":"<p>//leakcanary/leakcanary/InstallableWatcher/uninstall</p>"},{"location":"api/leakcanary/-installable-watcher/uninstall/#uninstall","title":"uninstall","text":"<p>abstract fun uninstall()</p>"},{"location":"api/leakcanary/-job-context/","title":"Index","text":"<p>//leakcanary/leakcanary/JobContext</p>"},{"location":"api/leakcanary/-job-context/#jobcontext","title":"JobContext","text":"<p>class JobContext(val starter: Class&lt;*&gt;? = null)</p> <p>In memory store that can be used to store objects in a given HeapAnalysisJob instance. This is a simple MutableMap of String to Any, but with unsafe generics access.</p> <p>By convention, starter should be the class that triggered the start of the job.</p>"},{"location":"api/leakcanary/-job-context/#constructors","title":"Constructors","text":"JobContext fun JobContext(starter: KClass&lt;*&gt;) JobContext fun JobContext(starter: Class&lt;*&gt;? = null)"},{"location":"api/leakcanary/-job-context/#functions","title":"Functions","text":"Name Summary contains operator fun contains(key: String): Boolean get operator fun &lt;T&gt; get(key: String): T? getOrPut fun &lt;T&gt; getOrPut(key: String, defaultValue: () -&gt; T): T minusAssign operator fun minusAssign(key: String) set operator fun &lt;T&gt; set(key: String, value: T)"},{"location":"api/leakcanary/-job-context/#properties","title":"Properties","text":"Name Summary starter val starter: Class&lt;*&gt;? = null"},{"location":"api/leakcanary/-job-context/-job-context/","title":"job context","text":"<p>//leakcanary/leakcanary/JobContext/JobContext</p>"},{"location":"api/leakcanary/-job-context/-job-context/#jobcontext","title":"JobContext","text":"<p>fun JobContext(starter: KClass&lt;*&gt;)</p> <p>fun JobContext(starter: Class&lt;*&gt;? = null)</p>"},{"location":"api/leakcanary/-job-context/contains/","title":"Contains","text":"<p>//leakcanary/leakcanary/JobContext/contains</p>"},{"location":"api/leakcanary/-job-context/contains/#contains","title":"contains","text":"<p>operator fun contains(key: String): Boolean</p>"},{"location":"api/leakcanary/-job-context/contains/#see-also","title":"See also","text":"<p>main</p> kotlin.collections.MutableMap"},{"location":"api/leakcanary/-job-context/get-or-put/","title":"Get or put","text":"<p>//leakcanary/leakcanary/JobContext/getOrPut</p>"},{"location":"api/leakcanary/-job-context/get-or-put/#getorput","title":"getOrPut","text":"<p>fun &lt;T&gt; getOrPut(key: String, defaultValue: () -&gt; T): T</p>"},{"location":"api/leakcanary/-job-context/get-or-put/#see-also","title":"See also","text":"<p>main</p> MutableMap.getOrPut"},{"location":"api/leakcanary/-job-context/get/","title":"Get","text":"<p>//leakcanary/leakcanary/JobContext/get</p>"},{"location":"api/leakcanary/-job-context/get/#get","title":"get","text":"<p>operator fun &lt;T&gt; get(key: String): T?</p>"},{"location":"api/leakcanary/-job-context/minus-assign/","title":"Minus assign","text":"<p>//leakcanary/leakcanary/JobContext/minusAssign</p>"},{"location":"api/leakcanary/-job-context/minus-assign/#minusassign","title":"minusAssign","text":"<p>operator fun minusAssign(key: String)</p>"},{"location":"api/leakcanary/-job-context/minus-assign/#see-also","title":"See also","text":"<p>main</p> kotlin.collections.MutableMap"},{"location":"api/leakcanary/-job-context/set/","title":"Set","text":"<p>//leakcanary/leakcanary/JobContext/set</p>"},{"location":"api/leakcanary/-job-context/set/#set","title":"set","text":"<p>operator fun &lt;T&gt; set(key: String, value: T)</p>"},{"location":"api/leakcanary/-job-context/set/#see-also","title":"See also","text":"<p>main</p> MutableMap.set"},{"location":"api/leakcanary/-job-context/starter/","title":"Starter","text":"<p>//leakcanary/leakcanary/JobContext/starter</p>"},{"location":"api/leakcanary/-job-context/starter/#starter","title":"starter","text":"<p>val starter: Class&lt;*&gt;? = null</p>"},{"location":"api/leakcanary/-keyed-weak-reference/","title":"Index","text":"<p>//leakcanary/leakcanary/KeyedWeakReference</p>"},{"location":"api/leakcanary/-keyed-weak-reference/#keyedweakreference","title":"KeyedWeakReference","text":"<p>class KeyedWeakReference(referent: Any, val key: String, val description: String, val watchUptimeMillis: Long, referenceQueue: ReferenceQueue&lt;Any&gt;) : WeakReference&lt;Any&gt; </p> <p>A weak reference used by ObjectWatcher to determine which objects become weakly reachable and which don\u2019t. ObjectWatcher uses key to keep track of KeyedWeakReference instances that haven\u2019t made it into the associated ReferenceQueue yet.</p> <p>heapDumpUptimeMillis should be set with the current time from Clock.uptimeMillis right before dumping the heap, so that we can later determine how long an object was retained.</p>"},{"location":"api/leakcanary/-keyed-weak-reference/#constructors","title":"Constructors","text":"KeyedWeakReference fun KeyedWeakReference(referent: Any, key: String, description: String, watchUptimeMillis: Long, referenceQueue: ReferenceQueue&lt;Any&gt;)"},{"location":"api/leakcanary/-keyed-weak-reference/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/leakcanary/-keyed-weak-reference/#functions","title":"Functions","text":"Name Summary clear open override fun clear() enqueue open fun enqueue(): Boolean get open fun get(): Any? isEnqueued open fun isEnqueued(): Boolean"},{"location":"api/leakcanary/-keyed-weak-reference/#properties","title":"Properties","text":"Name Summary description val description: String key val key: String next val next: Reference&lt;Any&gt; queue val queue: ReferenceQueue&lt;in Any&gt; retainedUptimeMillis @Volatilevar retainedUptimeMillis: LongTime at which the associated object (referent) was considered retained, or -1 if it hasn\u2019t been yet. watchUptimeMillis val watchUptimeMillis: Long"},{"location":"api/leakcanary/-keyed-weak-reference/-keyed-weak-reference/","title":"keyed weak reference","text":"<p>//leakcanary/leakcanary/KeyedWeakReference/KeyedWeakReference</p>"},{"location":"api/leakcanary/-keyed-weak-reference/-keyed-weak-reference/#keyedweakreference","title":"KeyedWeakReference","text":"<p>fun KeyedWeakReference(referent: Any, key: String, description: String, watchUptimeMillis: Long, referenceQueue: ReferenceQueue&lt;Any&gt;)</p>"},{"location":"api/leakcanary/-keyed-weak-reference/clear/","title":"Clear","text":"<p>//leakcanary/leakcanary/KeyedWeakReference/clear</p>"},{"location":"api/leakcanary/-keyed-weak-reference/clear/#clear","title":"clear","text":"<p>open override fun clear()</p>"},{"location":"api/leakcanary/-keyed-weak-reference/description/","title":"Description","text":"<p>//leakcanary/leakcanary/KeyedWeakReference/description</p>"},{"location":"api/leakcanary/-keyed-weak-reference/description/#description","title":"description","text":"<p>val description: String</p>"},{"location":"api/leakcanary/-keyed-weak-reference/key/","title":"Key","text":"<p>//leakcanary/leakcanary/KeyedWeakReference/key</p>"},{"location":"api/leakcanary/-keyed-weak-reference/key/#key","title":"key","text":"<p>val key: String</p>"},{"location":"api/leakcanary/-keyed-weak-reference/retained-uptime-millis/","title":"Retained uptime millis","text":"<p>//leakcanary/leakcanary/KeyedWeakReference/retainedUptimeMillis</p>"},{"location":"api/leakcanary/-keyed-weak-reference/retained-uptime-millis/#retaineduptimemillis","title":"retainedUptimeMillis","text":"<p>@Volatile</p> <p>var retainedUptimeMillis: Long</p> <p>Time at which the associated object (referent) was considered retained, or -1 if it hasn\u2019t been yet.</p>"},{"location":"api/leakcanary/-keyed-weak-reference/watch-uptime-millis/","title":"Watch uptime millis","text":"<p>//leakcanary/leakcanary/KeyedWeakReference/watchUptimeMillis</p>"},{"location":"api/leakcanary/-keyed-weak-reference/watch-uptime-millis/#watchuptimemillis","title":"watchUptimeMillis","text":"<p>val watchUptimeMillis: Long</p>"},{"location":"api/leakcanary/-keyed-weak-reference/-companion/","title":"Index","text":"<p>//leakcanary/leakcanary/KeyedWeakReference/Companion</p>"},{"location":"api/leakcanary/-keyed-weak-reference/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/leakcanary/-keyed-weak-reference/-companion/#properties","title":"Properties","text":"Name Summary heapDumpUptimeMillis @JvmStatic@Volatilevar heapDumpUptimeMillis: Long = 0"},{"location":"api/leakcanary/-keyed-weak-reference/-companion/heap-dump-uptime-millis/","title":"Heap dump uptime millis","text":"<p>//leakcanary/leakcanary/KeyedWeakReference/Companion/heapDumpUptimeMillis</p>"},{"location":"api/leakcanary/-keyed-weak-reference/-companion/heap-dump-uptime-millis/#heapdumpuptimemillis","title":"heapDumpUptimeMillis","text":"<p>@JvmStatic</p> <p>@Volatile</p> <p>var heapDumpUptimeMillis: Long = 0</p>"},{"location":"api/leakcanary/-lazy-forwarding-event-listener/","title":"Index","text":"<p>//leakcanary/leakcanary/LazyForwardingEventListener</p>"},{"location":"api/leakcanary/-lazy-forwarding-event-listener/#lazyforwardingeventlistener","title":"LazyForwardingEventListener","text":"<p>class LazyForwardingEventListener(lazyEventListener: () -&gt; EventListener) : EventListener</p> <p>Forwards events to the EventListener provided by lazyEventListener which is evaluated lazily, when the first comes in.</p>"},{"location":"api/leakcanary/-lazy-forwarding-event-listener/#constructors","title":"Constructors","text":"LazyForwardingEventListener fun LazyForwardingEventListener(lazyEventListener: () -&gt; EventListener)"},{"location":"api/leakcanary/-lazy-forwarding-event-listener/#functions","title":"Functions","text":"Name Summary onEvent open override fun onEvent(event: EventListener.Event)onEvent is always called from the thread the events are emitted from, which is documented for each event. This enables you to potentially block a chain of events, waiting for some pre work to be done."},{"location":"api/leakcanary/-lazy-forwarding-event-listener/-lazy-forwarding-event-listener/","title":"lazy forwarding event listener","text":"<p>//leakcanary/leakcanary/LazyForwardingEventListener/LazyForwardingEventListener</p>"},{"location":"api/leakcanary/-lazy-forwarding-event-listener/-lazy-forwarding-event-listener/#lazyforwardingeventlistener","title":"LazyForwardingEventListener","text":"<p>fun LazyForwardingEventListener(lazyEventListener: () -&gt; EventListener)</p>"},{"location":"api/leakcanary/-lazy-forwarding-event-listener/on-event/","title":"On event","text":"<p>//leakcanary/leakcanary/LazyForwardingEventListener/onEvent</p>"},{"location":"api/leakcanary/-lazy-forwarding-event-listener/on-event/#onevent","title":"onEvent","text":"<p>open override fun onEvent(event: EventListener.Event)</p> <p>onEvent is always called from the thread the events are emitted from, which is documented for each event. This enables you to potentially block a chain of events, waiting for some pre work to be done.</p>"},{"location":"api/leakcanary/-leak-assertions/","title":"Index","text":"<p>//leakcanary/leakcanary/LeakAssertions</p>"},{"location":"api/leakcanary/-leak-assertions/#leakassertions","title":"LeakAssertions","text":"<p>object LeakAssertions</p>"},{"location":"api/leakcanary/-leak-assertions/#functions","title":"Functions","text":"Name Summary assertNoLeaks fun assertNoLeaks(tag: String = NO_TAG)Asserts that there are no leak in the heap at this point in time."},{"location":"api/leakcanary/-leak-assertions/#properties","title":"Properties","text":"Name Summary NO_TAG const val NO_TAG: String"},{"location":"api/leakcanary/-leak-assertions/-n-o_-t-a-g/","title":"n o  t a g","text":"<p>//leakcanary/leakcanary/LeakAssertions/NO_TAG</p>"},{"location":"api/leakcanary/-leak-assertions/-n-o_-t-a-g/#no_tag","title":"NO_TAG","text":"<p>const val NO_TAG: String</p>"},{"location":"api/leakcanary/-leak-assertions/assert-no-leaks/","title":"Assert no leaks","text":"<p>//leakcanary/leakcanary/LeakAssertions/assertNoLeaks</p>"},{"location":"api/leakcanary/-leak-assertions/assert-no-leaks/#assertnoleaks","title":"assertNoLeaks","text":"<p>fun assertNoLeaks(tag: String = NO_TAG)</p> <p>Asserts that there are no leak in the heap at this point in time.</p> <p>This method should be called on the instrumentation thread.</p> <p>This method is may block the current thread for a significant amount of time, as it might need to dump the heap and analyze it.</p> <p>If leaks are found, this method is expected to throw an exception, which will fail the test.</p> <p>The specific details depend on what you configured in DetectLeaksAssert.update.</p> <p>tag identifies the calling code, which can then be used for reporting purposes or to skip leak detection for specific tags in a subset of tests (see SkipLeakDetection).</p>"},{"location":"api/leakcanary/-leak-canary/","title":"Index","text":"<p>//leakcanary/leakcanary/LeakCanary</p>"},{"location":"api/leakcanary/-leak-canary/#leakcanary","title":"LeakCanary","text":"<p>object LeakCanary</p> <p>The entry point API for LeakCanary. LeakCanary builds on top of AppWatcher. AppWatcher notifies LeakCanary of retained instances, which in turns dumps the heap, analyses it and publishes the results.</p> <p>LeakCanary can be configured by updating config.</p>"},{"location":"api/leakcanary/-leak-canary/#types","title":"Types","text":"Name Summary Config data class Config(val dumpHeap: Boolean = true, val dumpHeapWhenDebugging: Boolean = false, val retainedVisibleThreshold: Int = 5, val referenceMatchers: List&lt;ReferenceMatcher&gt; = AndroidReferenceMatchers.appDefaults, val objectInspectors: List&lt;ObjectInspector&gt; = AndroidObjectInspectors.appDefaults, onHeapAnalyzedListener: OnHeapAnalyzedListener = DefaultOnHeapAnalyzedListener.create(), val metadataExtractor: MetadataExtractor = AndroidMetadataExtractor, val computeRetainedHeapSize: Boolean = true, val maxStoredHeapDumps: Int = 7, val requestWriteExternalStoragePermission: Boolean = false, val leakingObjectFinder: LeakingObjectFinder = KeyedWeakReferenceFinder, val heapDumper: HeapDumper = AndroidDebugHeapDumper, val eventListeners: List&lt;EventListener&gt; = listOf(       LogcatEventListener,       ToastEventListener,       LazyForwardingEventListener {         if (InternalLeakCanary.formFactor == TV) TvEventListener else NotificationEventListener       },       when {           RemoteWorkManagerHeapAnalyzer.remoteLeakCanaryServiceInClasspath -&gt;             RemoteWorkManagerHeapAnalyzer           WorkManagerHeapAnalyzer.validWorkManagerInClasspath -&gt; WorkManagerHeapAnalyzer           else -&gt; BackgroundThreadHeapAnalyzer       }     ), val showNotifications: Boolean = true, useExperimentalLeakFinders: Boolean = false)LeakCanary configuration data class. Properties can be updated via copy."},{"location":"api/leakcanary/-leak-canary/#functions","title":"Functions","text":"Name Summary dumpHeap fun dumpHeap()Immediately triggers a heap dump and analysis, if there is at least one retained instance tracked by AppWatcher.objectWatcher. If there are no retained instances then the heap will not be dumped and a notification will be shown instead. newLeakDisplayActivityIntent fun newLeakDisplayActivityIntent(): IntentReturns a new Intent that can be used to programmatically launch the leak display activity. showLeakDisplayActivityLauncherIcon fun showLeakDisplayActivityLauncherIcon(showLauncherIcon: Boolean)Dynamically shows / hides the launcher icon for the leak display activity. Note: you can change the default value by overriding the leak_canary_add_launcher_icon boolean resource:"},{"location":"api/leakcanary/-leak-canary/#properties","title":"Properties","text":"Name Summary config @JvmStatic@Volatilevar config: LeakCanary.ConfigThe current LeakCanary configuration. Can be updated at any time, usually by replacing it with a mutated copy, e.g.:"},{"location":"api/leakcanary/-leak-canary/config/","title":"Config","text":"<p>//leakcanary/leakcanary/LeakCanary/config</p>"},{"location":"api/leakcanary/-leak-canary/config/#config","title":"config","text":"<p>@JvmStatic</p> <p>@Volatile</p> <p>var config: LeakCanary.Config</p> <p>The current LeakCanary configuration. Can be updated at any time, usually by replacing it with a mutated copy, e.g.:</p> <p>LeakCanary.config = LeakCanary.config.copy(retainedVisibleThreshold = 3)</p> <p>In Java, use LeakCanary.Config.Builder instead:</p> <p>LeakCanary.Config config = LeakCanary.getConfig().newBuilder()\\    .retainedVisibleThreshold(3)\\    .build();\\ LeakCanary.setConfig(config);</p>"},{"location":"api/leakcanary/-leak-canary/dump-heap/","title":"Dump heap","text":"<p>//leakcanary/leakcanary/LeakCanary/dumpHeap</p>"},{"location":"api/leakcanary/-leak-canary/dump-heap/#dumpheap","title":"dumpHeap","text":"<p>fun dumpHeap()</p> <p>Immediately triggers a heap dump and analysis, if there is at least one retained instance tracked by AppWatcher.objectWatcher. If there are no retained instances then the heap will not be dumped and a notification will be shown instead.</p>"},{"location":"api/leakcanary/-leak-canary/new-leak-display-activity-intent/","title":"New leak display activity intent","text":"<p>//leakcanary/leakcanary/LeakCanary/newLeakDisplayActivityIntent</p>"},{"location":"api/leakcanary/-leak-canary/new-leak-display-activity-intent/#newleakdisplayactivityintent","title":"newLeakDisplayActivityIntent","text":"<p>fun newLeakDisplayActivityIntent(): Intent</p> <p>Returns a new Intent that can be used to programmatically launch the leak display activity.</p>"},{"location":"api/leakcanary/-leak-canary/show-leak-display-activity-launcher-icon/","title":"Show leak display activity launcher icon","text":"<p>//leakcanary/leakcanary/LeakCanary/showLeakDisplayActivityLauncherIcon</p>"},{"location":"api/leakcanary/-leak-canary/show-leak-display-activity-launcher-icon/#showleakdisplayactivitylaunchericon","title":"showLeakDisplayActivityLauncherIcon","text":"<p>fun showLeakDisplayActivityLauncherIcon(showLauncherIcon: Boolean)</p> <p>Dynamically shows / hides the launcher icon for the leak display activity. Note: you can change the default value by overriding the leak_canary_add_launcher_icon boolean resource:</p> <p>&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\\ &lt;resources&gt;\\   &lt;bool name=\"leak_canary_add_launcher_icon\"&gt;false&lt;/bool&gt;\\ &lt;/resources&gt;</p>"},{"location":"api/leakcanary/-leak-canary/-config/","title":"Index","text":"<p>//leakcanary/leakcanary/LeakCanary/Config</p>"},{"location":"api/leakcanary/-leak-canary/-config/#config","title":"Config","text":"<p>data class Config(val dumpHeap: Boolean = true, val dumpHeapWhenDebugging: Boolean = false, val retainedVisibleThreshold: Int = 5, val referenceMatchers: List&lt;ReferenceMatcher&gt; = AndroidReferenceMatchers.appDefaults, val objectInspectors: List&lt;ObjectInspector&gt; = AndroidObjectInspectors.appDefaults, onHeapAnalyzedListener: OnHeapAnalyzedListener = DefaultOnHeapAnalyzedListener.create(), val metadataExtractor: MetadataExtractor = AndroidMetadataExtractor, val computeRetainedHeapSize: Boolean = true, val maxStoredHeapDumps: Int = 7, val requestWriteExternalStoragePermission: Boolean = false, val leakingObjectFinder: LeakingObjectFinder = KeyedWeakReferenceFinder, val heapDumper: HeapDumper = AndroidDebugHeapDumper, val eventListeners: List&lt;EventListener&gt; = listOf(       LogcatEventListener,       ToastEventListener,       LazyForwardingEventListener {         if (InternalLeakCanary.formFactor == TV) TvEventListener else NotificationEventListener       },       when {           RemoteWorkManagerHeapAnalyzer.remoteLeakCanaryServiceInClasspath -&gt;             RemoteWorkManagerHeapAnalyzer           WorkManagerHeapAnalyzer.validWorkManagerInClasspath -&gt; WorkManagerHeapAnalyzer           else -&gt; BackgroundThreadHeapAnalyzer       }     ), val showNotifications: Boolean = true, useExperimentalLeakFinders: Boolean = false)</p> <p>LeakCanary configuration data class. Properties can be updated via copy.</p>"},{"location":"api/leakcanary/-leak-canary/-config/#see-also","title":"See also","text":"<p>main</p> leakcanary.LeakCanary"},{"location":"api/leakcanary/-leak-canary/-config/#constructors","title":"Constructors","text":"Config fun Config(dumpHeap: Boolean = true, dumpHeapWhenDebugging: Boolean = false, retainedVisibleThreshold: Int = 5, referenceMatchers: List&lt;ReferenceMatcher&gt; = AndroidReferenceMatchers.appDefaults, objectInspectors: List&lt;ObjectInspector&gt; = AndroidObjectInspectors.appDefaults, onHeapAnalyzedListener: OnHeapAnalyzedListener = DefaultOnHeapAnalyzedListener.create(), metadataExtractor: MetadataExtractor = AndroidMetadataExtractor, computeRetainedHeapSize: Boolean = true, maxStoredHeapDumps: Int = 7, requestWriteExternalStoragePermission: Boolean = false, leakingObjectFinder: LeakingObjectFinder = KeyedWeakReferenceFinder, heapDumper: HeapDumper = AndroidDebugHeapDumper, eventListeners: List&lt;EventListener&gt; = listOf(       LogcatEventListener,       ToastEventListener,       LazyForwardingEventListener {         if (InternalLeakCanary.formFactor == TV) TvEventListener else NotificationEventListener       },       when {           RemoteWorkManagerHeapAnalyzer.remoteLeakCanaryServiceInClasspath -&gt;             RemoteWorkManagerHeapAnalyzer           WorkManagerHeapAnalyzer.validWorkManagerInClasspath -&gt; WorkManagerHeapAnalyzer           else -&gt; BackgroundThreadHeapAnalyzer       }     ), showNotifications: Boolean = true, useExperimentalLeakFinders: Boolean = false)"},{"location":"api/leakcanary/-leak-canary/-config/#types","title":"Types","text":"Name Summary Builder class BuilderBuilder for LeakCanary.Config intended to be used only from Java code."},{"location":"api/leakcanary/-leak-canary/-config/#functions","title":"Functions","text":"Name Summary newBuilder fun newBuilder(): LeakCanary.Config.BuilderConstruct a new Config via LeakCanary.Config.Builder. Note: this method is intended to be used from Java code only. For idiomatic Kotlin use copy() to modify LeakCanary.config.Since Kotlin 999.9"},{"location":"api/leakcanary/-leak-canary/-config/#properties","title":"Properties","text":"Name Summary computeRetainedHeapSize val computeRetainedHeapSize: Boolean = trueWhether to compute the retained heap size, which is the total number of bytes in memory that would be reclaimed if the detected leaks didn\u2019t happen. This includes native memory associated to Java objects (e.g. Android bitmaps). dumpHeap val dumpHeap: Boolean = trueWhether LeakCanary should dump the heap when enough retained instances are found. This needs to be true for LeakCanary to work, but sometimes you may want to temporarily disable LeakCanary (e.g. for a product demo). dumpHeapWhenDebugging val dumpHeapWhenDebugging: Boolean = falseIf dumpHeapWhenDebugging is false then LeakCanary will not dump the heap when the debugger is attached. The debugger can create temporary memory leaks (for instance if a thread is blocked on a breakpoint). eventListeners val eventListeners: List&lt;EventListener&gt;Listeners for LeakCanary events. See EventListener.Event for the list of events and which thread they\u2019re sent from. You most likely want to keep this list and add to it, or remove a few entries but not all entries. Each listener is independent and provides additional behavior which you can disable by not excluding it: heapDumper val heapDumper: HeapDumperDumps the Java heap. You may replace this with your own implementation if you wish to change the core heap dumping implementation. leakingObjectFinder val leakingObjectFinder: LeakingObjectFinderFinds the objects that are leaking, for which LeakCanary will compute leak traces. maxStoredHeapDumps val maxStoredHeapDumps: Int = 7How many heap dumps are kept on the Android device for this app package. When this threshold is reached LeakCanary deletes the older heap dumps. As several heap dumps may be enqueued you should avoid going down to 1 or 2. metadataExtractor val metadataExtractor: MetadataExtractorExtracts metadata from a hprof to be reported in HeapAnalysisSuccess.metadata. Called on a background thread during heap analysis. objectInspectors val objectInspectors: List&lt;ObjectInspector&gt;List of ObjectInspector that provide LeakCanary with insights about objects found in the heap. You can create your own ObjectInspector implementations, and also add a shark.AppSingletonInspector instance created with the list of internal singletons. referenceMatchers val referenceMatchers: List&lt;ReferenceMatcher&gt;Known patterns of references in the heap, added here either to ignore them (IgnoredReferenceMatcher) or to mark them as library leaks (LibraryLeakReferenceMatcher). requestWriteExternalStoragePermission val requestWriteExternalStoragePermission: Boolean = falseLeakCanary always attempts to store heap dumps on the external storage if the WRITE_EXTERNAL_STORAGE is already granted, and otherwise uses the app storage. If the WRITE_EXTERNAL_STORAGE permission is not granted and requestWriteExternalStoragePermission is true, then LeakCanary will display a notification to ask for that permission. retainedVisibleThreshold val retainedVisibleThreshold: Int = 5When the app is visible, LeakCanary will wait for at least retainedVisibleThreshold retained instances before dumping the heap. Dumping the heap freezes the UI and can be frustrating for developers who are trying to work. This is especially frustrating as the Android Framework has a number of leaks that cannot easily be fixed. showNotifications val showNotifications: Boolean = trueWhether to show LeakCanary notifications. When showNotifications is true, LeakCanary will only display notifications if the app is in foreground and is not an instant, TV or Wear app."},{"location":"api/leakcanary/-leak-canary/-config/-config/","title":"config","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/Config</p>"},{"location":"api/leakcanary/-leak-canary/-config/-config/#config","title":"Config","text":"<p>fun Config(dumpHeap: Boolean = true, dumpHeapWhenDebugging: Boolean = false, retainedVisibleThreshold: Int = 5, referenceMatchers: List&lt;ReferenceMatcher&gt; = AndroidReferenceMatchers.appDefaults, objectInspectors: List&lt;ObjectInspector&gt; = AndroidObjectInspectors.appDefaults, onHeapAnalyzedListener: OnHeapAnalyzedListener = DefaultOnHeapAnalyzedListener.create(), metadataExtractor: MetadataExtractor = AndroidMetadataExtractor, computeRetainedHeapSize: Boolean = true, maxStoredHeapDumps: Int = 7, requestWriteExternalStoragePermission: Boolean = false, leakingObjectFinder: LeakingObjectFinder = KeyedWeakReferenceFinder, heapDumper: HeapDumper = AndroidDebugHeapDumper, eventListeners: List&lt;EventListener&gt; = listOf(       LogcatEventListener,       ToastEventListener,       LazyForwardingEventListener {         if (InternalLeakCanary.formFactor == TV) TvEventListener else NotificationEventListener       },       when {           RemoteWorkManagerHeapAnalyzer.remoteLeakCanaryServiceInClasspath -&gt;             RemoteWorkManagerHeapAnalyzer           WorkManagerHeapAnalyzer.validWorkManagerInClasspath -&gt; WorkManagerHeapAnalyzer           else -&gt; BackgroundThreadHeapAnalyzer       }     ), showNotifications: Boolean = true, useExperimentalLeakFinders: Boolean = false)</p>"},{"location":"api/leakcanary/-leak-canary/-config/compute-retained-heap-size/","title":"Compute retained heap size","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/computeRetainedHeapSize</p>"},{"location":"api/leakcanary/-leak-canary/-config/compute-retained-heap-size/#computeretainedheapsize","title":"computeRetainedHeapSize","text":"<p>val computeRetainedHeapSize: Boolean = true</p> <p>Whether to compute the retained heap size, which is the total number of bytes in memory that would be reclaimed if the detected leaks didn\u2019t happen. This includes native memory associated to Java objects (e.g. Android bitmaps).</p> <p>Computing the retained heap size can slow down the analysis because it requires navigating from GC roots through the entire object graph, whereas shark.HeapAnalyzer would otherwise stop as soon as all leaking instances are found.</p> <p>Defaults to true.</p>"},{"location":"api/leakcanary/-leak-canary/-config/dump-heap-when-debugging/","title":"Dump heap when debugging","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/dumpHeapWhenDebugging</p>"},{"location":"api/leakcanary/-leak-canary/-config/dump-heap-when-debugging/#dumpheapwhendebugging","title":"dumpHeapWhenDebugging","text":"<p>val dumpHeapWhenDebugging: Boolean = false</p> <p>If dumpHeapWhenDebugging is false then LeakCanary will not dump the heap when the debugger is attached. The debugger can create temporary memory leaks (for instance if a thread is blocked on a breakpoint).</p> <p>Defaults to false.</p>"},{"location":"api/leakcanary/-leak-canary/-config/dump-heap/","title":"Dump heap","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/dumpHeap</p>"},{"location":"api/leakcanary/-leak-canary/-config/dump-heap/#dumpheap","title":"dumpHeap","text":"<p>val dumpHeap: Boolean = true</p> <p>Whether LeakCanary should dump the heap when enough retained instances are found. This needs to be true for LeakCanary to work, but sometimes you may want to temporarily disable LeakCanary (e.g. for a product demo).</p> <p>Defaults to true.</p>"},{"location":"api/leakcanary/-leak-canary/-config/event-listeners/","title":"Event listeners","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/eventListeners</p>"},{"location":"api/leakcanary/-leak-canary/-config/event-listeners/#eventlisteners","title":"eventListeners","text":"<p>val eventListeners: List&lt;EventListener&gt;</p> <p>Listeners for LeakCanary events. See EventListener.Event for the list of events and which thread they\u2019re sent from. You most likely want to keep this list and add to it, or remove a few entries but not all entries. Each listener is independent and provides additional behavior which you can disable by not excluding it:</p> <p>// No cute canary toast (very sad!)\\ LeakCanary.config = LeakCanary.config.run {\\   copy(\\     eventListeners = eventListeners.filter {\\       it !is ToastEventListener\\     }\\   )\\ }</p>"},{"location":"api/leakcanary/-leak-canary/-config/heap-dumper/","title":"Heap dumper","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/heapDumper</p>"},{"location":"api/leakcanary/-leak-canary/-config/heap-dumper/#heapdumper","title":"heapDumper","text":"<p>val heapDumper: HeapDumper</p> <p>Dumps the Java heap. You may replace this with your own implementation if you wish to change the core heap dumping implementation.</p>"},{"location":"api/leakcanary/-leak-canary/-config/leaking-object-finder/","title":"Leaking object finder","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/leakingObjectFinder</p>"},{"location":"api/leakcanary/-leak-canary/-config/leaking-object-finder/#leakingobjectfinder","title":"leakingObjectFinder","text":"<p>val leakingObjectFinder: LeakingObjectFinder</p> <p>Finds the objects that are leaking, for which LeakCanary will compute leak traces.</p> <p>Defaults to KeyedWeakReferenceFinder which finds all objects tracked by a KeyedWeakReference, ie all objects that were passed to ObjectWatcher.expectWeaklyReachable.</p> <p>You could instead replace it with a FilteringLeakingObjectFinder, which scans all objects in the heap dump and delegates the decision to a list of FilteringLeakingObjectFinder.LeakingObjectFilter. This can lead to finding more leaks than the default and shorter leak traces. This also means that every analysis during a given process life will bring up the same leaking objects over and over again, unlike when using KeyedWeakReferenceFinder (because KeyedWeakReference instances are cleared after each heap dump).</p> <p>The list of filters can be built from AndroidObjectInspectors:</p> <p>LeakCanary.config = LeakCanary.config.copy(\\     leakingObjectFinder = FilteringLeakingObjectFinder(\\         AndroidObjectInspectors.appLeakingObjectFilters\\     )\\ )</p>"},{"location":"api/leakcanary/-leak-canary/-config/max-stored-heap-dumps/","title":"Max stored heap dumps","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/maxStoredHeapDumps</p>"},{"location":"api/leakcanary/-leak-canary/-config/max-stored-heap-dumps/#maxstoredheapdumps","title":"maxStoredHeapDumps","text":"<p>val maxStoredHeapDumps: Int = 7</p> <p>How many heap dumps are kept on the Android device for this app package. When this threshold is reached LeakCanary deletes the older heap dumps. As several heap dumps may be enqueued you should avoid going down to 1 or 2.</p> <p>Defaults to 7.</p>"},{"location":"api/leakcanary/-leak-canary/-config/metadata-extractor/","title":"Metadata extractor","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/metadataExtractor</p>"},{"location":"api/leakcanary/-leak-canary/-config/metadata-extractor/#metadataextractor","title":"metadataExtractor","text":"<p>val metadataExtractor: MetadataExtractor</p> <p>Extracts metadata from a hprof to be reported in HeapAnalysisSuccess.metadata. Called on a background thread during heap analysis.</p> <p>Defaults to AndroidMetadataExtractor</p>"},{"location":"api/leakcanary/-leak-canary/-config/new-builder/","title":"New builder","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/newBuilder</p>"},{"location":"api/leakcanary/-leak-canary/-config/new-builder/#newbuilder","title":"newBuilder","text":"<p>fun newBuilder(): LeakCanary.Config.Builder</p> <p>Construct a new Config via LeakCanary.Config.Builder. Note: this method is intended to be used from Java code only. For idiomatic Kotlin use copy() to modify LeakCanary.config.</p>"},{"location":"api/leakcanary/-leak-canary/-config/new-builder/#since-kotlin","title":"Since Kotlin","text":"<p>999.9</p>"},{"location":"api/leakcanary/-leak-canary/-config/object-inspectors/","title":"Object inspectors","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/objectInspectors</p>"},{"location":"api/leakcanary/-leak-canary/-config/object-inspectors/#objectinspectors","title":"objectInspectors","text":"<p>val objectInspectors: List&lt;ObjectInspector&gt;</p> <p>List of ObjectInspector that provide LeakCanary with insights about objects found in the heap. You can create your own ObjectInspector implementations, and also add a shark.AppSingletonInspector instance created with the list of internal singletons.</p> <p>Defaults to AndroidObjectInspectors.appDefaults</p>"},{"location":"api/leakcanary/-leak-canary/-config/reference-matchers/","title":"Reference matchers","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/referenceMatchers</p>"},{"location":"api/leakcanary/-leak-canary/-config/reference-matchers/#referencematchers","title":"referenceMatchers","text":"<p>val referenceMatchers: List&lt;ReferenceMatcher&gt;</p> <p>Known patterns of references in the heap, added here either to ignore them (IgnoredReferenceMatcher) or to mark them as library leaks (LibraryLeakReferenceMatcher).</p> <p>When adding your own custom LibraryLeakReferenceMatcher instances, you\u2019ll most likely want to set LibraryLeakReferenceMatcher.patternApplies with a filter that checks for the Android OS version and manufacturer. The build information can be obtained by calling shark.AndroidBuildMirror.fromHeapGraph.</p> <p>Defaults to AndroidReferenceMatchers.appDefaults</p>"},{"location":"api/leakcanary/-leak-canary/-config/request-write-external-storage-permission/","title":"Request write external storage permission","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/requestWriteExternalStoragePermission</p>"},{"location":"api/leakcanary/-leak-canary/-config/request-write-external-storage-permission/#requestwriteexternalstoragepermission","title":"requestWriteExternalStoragePermission","text":"<p>val requestWriteExternalStoragePermission: Boolean = false</p> <p>LeakCanary always attempts to store heap dumps on the external storage if the WRITE_EXTERNAL_STORAGE is already granted, and otherwise uses the app storage. If the WRITE_EXTERNAL_STORAGE permission is not granted and requestWriteExternalStoragePermission is true, then LeakCanary will display a notification to ask for that permission.</p> <p>Defaults to false because that permission notification can be annoying.</p>"},{"location":"api/leakcanary/-leak-canary/-config/retained-visible-threshold/","title":"Retained visible threshold","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/retainedVisibleThreshold</p>"},{"location":"api/leakcanary/-leak-canary/-config/retained-visible-threshold/#retainedvisiblethreshold","title":"retainedVisibleThreshold","text":"<p>val retainedVisibleThreshold: Int = 5</p> <p>When the app is visible, LeakCanary will wait for at least retainedVisibleThreshold retained instances before dumping the heap. Dumping the heap freezes the UI and can be frustrating for developers who are trying to work. This is especially frustrating as the Android Framework has a number of leaks that cannot easily be fixed.</p> <p>When the app becomes invisible, LeakCanary dumps the heap after AppWatcher.retainedDelayMillis ms.</p> <p>The app is considered visible if it has at least one activity in started state.</p> <p>A higher threshold means LeakCanary will dump the heap less often, therefore it won\u2019t be bothering developers as much but it could miss some leaks.</p> <p>Defaults to 5.</p>"},{"location":"api/leakcanary/-leak-canary/-config/show-notifications/","title":"Show notifications","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/showNotifications</p>"},{"location":"api/leakcanary/-leak-canary/-config/show-notifications/#shownotifications","title":"showNotifications","text":"<p>val showNotifications: Boolean = true</p> <p>Whether to show LeakCanary notifications. When showNotifications is true, LeakCanary will only display notifications if the app is in foreground and is not an instant, TV or Wear app.</p> <p>Defaults to true.</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/","title":"Index","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/Builder</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/#builder","title":"Builder","text":"<p>class Builder</p> <p>Builder for LeakCanary.Config intended to be used only from Java code.</p> <p>Usage:</p> <p>LeakCanary.Config config = LeakCanary.getConfig().newBuilder()\\    .retainedVisibleThreshold(3)\\    .build();\\ LeakCanary.setConfig(config);</p> <p>For idiomatic Kotlin use copy() method instead:</p> <p>LeakCanary.config = LeakCanary.config.copy(retainedVisibleThreshold = 3)</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/#functions","title":"Functions","text":"Name Summary build fun build(): LeakCanary.Config computeRetainedHeapSize fun computeRetainedHeapSize(computeRetainedHeapSize: Boolean): LeakCanary.Config.Builder dumpHeap fun dumpHeap(dumpHeap: Boolean): LeakCanary.Config.Builder dumpHeapWhenDebugging fun dumpHeapWhenDebugging(dumpHeapWhenDebugging: Boolean): LeakCanary.Config.Builder eventListeners fun eventListeners(eventListeners: List&lt;EventListener&gt;): LeakCanary.Config.Builder heapDumper fun heapDumper(heapDumper: HeapDumper): LeakCanary.Config.Builder leakingObjectFinder fun leakingObjectFinder(leakingObjectFinder: LeakingObjectFinder): LeakCanary.Config.Builder maxStoredHeapDumps fun maxStoredHeapDumps(maxStoredHeapDumps: Int): LeakCanary.Config.Builder metadataExtractor fun metadataExtractor(metadataExtractor: MetadataExtractor): LeakCanary.Config.Builder objectInspectors fun objectInspectors(objectInspectors: List&lt;ObjectInspector&gt;): LeakCanary.Config.Builder referenceMatchers fun referenceMatchers(referenceMatchers: List&lt;ReferenceMatcher&gt;): LeakCanary.Config.Builder requestWriteExternalStoragePermission fun requestWriteExternalStoragePermission(requestWriteExternalStoragePermission: Boolean): LeakCanary.Config.Builder retainedVisibleThreshold fun retainedVisibleThreshold(retainedVisibleThreshold: Int): LeakCanary.Config.Builder showNotifications fun showNotifications(showNotifications: Boolean): LeakCanary.Config.Builder"},{"location":"api/leakcanary/-leak-canary/-config/-builder/build/","title":"Build","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/Builder/build</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/build/#build","title":"build","text":"<p>fun build(): LeakCanary.Config</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/compute-retained-heap-size/","title":"Compute retained heap size","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/Builder/computeRetainedHeapSize</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/compute-retained-heap-size/#computeretainedheapsize","title":"computeRetainedHeapSize","text":"<p>fun computeRetainedHeapSize(computeRetainedHeapSize: Boolean): LeakCanary.Config.Builder</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/compute-retained-heap-size/#see-also","title":"See also","text":"<p>main</p> leakcanary.LeakCanary.Config"},{"location":"api/leakcanary/-leak-canary/-config/-builder/dump-heap-when-debugging/","title":"Dump heap when debugging","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/Builder/dumpHeapWhenDebugging</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/dump-heap-when-debugging/#dumpheapwhendebugging","title":"dumpHeapWhenDebugging","text":"<p>fun dumpHeapWhenDebugging(dumpHeapWhenDebugging: Boolean): LeakCanary.Config.Builder</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/dump-heap-when-debugging/#see-also","title":"See also","text":"<p>main</p> leakcanary.LeakCanary.Config"},{"location":"api/leakcanary/-leak-canary/-config/-builder/dump-heap/","title":"Dump heap","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/Builder/dumpHeap</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/dump-heap/#dumpheap","title":"dumpHeap","text":"<p>fun dumpHeap(dumpHeap: Boolean): LeakCanary.Config.Builder</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/dump-heap/#see-also","title":"See also","text":"<p>main</p> leakcanary.LeakCanary.Config"},{"location":"api/leakcanary/-leak-canary/-config/-builder/event-listeners/","title":"Event listeners","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/Builder/eventListeners</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/event-listeners/#eventlisteners","title":"eventListeners","text":"<p>fun eventListeners(eventListeners: List&lt;EventListener&gt;): LeakCanary.Config.Builder</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/event-listeners/#see-also","title":"See also","text":"<p>main</p> leakcanary.LeakCanary.Config"},{"location":"api/leakcanary/-leak-canary/-config/-builder/heap-dumper/","title":"Heap dumper","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/Builder/heapDumper</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/heap-dumper/#heapdumper","title":"heapDumper","text":"<p>fun heapDumper(heapDumper: HeapDumper): LeakCanary.Config.Builder</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/heap-dumper/#see-also","title":"See also","text":"<p>main</p> leakcanary.LeakCanary.Config"},{"location":"api/leakcanary/-leak-canary/-config/-builder/leaking-object-finder/","title":"Leaking object finder","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/Builder/leakingObjectFinder</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/leaking-object-finder/#leakingobjectfinder","title":"leakingObjectFinder","text":"<p>fun leakingObjectFinder(leakingObjectFinder: LeakingObjectFinder): LeakCanary.Config.Builder</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/leaking-object-finder/#see-also","title":"See also","text":"<p>main</p> leakcanary.LeakCanary.Config"},{"location":"api/leakcanary/-leak-canary/-config/-builder/max-stored-heap-dumps/","title":"Max stored heap dumps","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/Builder/maxStoredHeapDumps</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/max-stored-heap-dumps/#maxstoredheapdumps","title":"maxStoredHeapDumps","text":"<p>fun maxStoredHeapDumps(maxStoredHeapDumps: Int): LeakCanary.Config.Builder</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/max-stored-heap-dumps/#see-also","title":"See also","text":"<p>main</p> leakcanary.LeakCanary.Config"},{"location":"api/leakcanary/-leak-canary/-config/-builder/metadata-extractor/","title":"Metadata extractor","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/Builder/metadataExtractor</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/metadata-extractor/#metadataextractor","title":"metadataExtractor","text":"<p>fun metadataExtractor(metadataExtractor: MetadataExtractor): LeakCanary.Config.Builder</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/metadata-extractor/#see-also","title":"See also","text":"<p>main</p> leakcanary.LeakCanary.Config"},{"location":"api/leakcanary/-leak-canary/-config/-builder/object-inspectors/","title":"Object inspectors","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/Builder/objectInspectors</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/object-inspectors/#objectinspectors","title":"objectInspectors","text":"<p>fun objectInspectors(objectInspectors: List&lt;ObjectInspector&gt;): LeakCanary.Config.Builder</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/object-inspectors/#see-also","title":"See also","text":"<p>main</p> leakcanary.LeakCanary.Config"},{"location":"api/leakcanary/-leak-canary/-config/-builder/reference-matchers/","title":"Reference matchers","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/Builder/referenceMatchers</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/reference-matchers/#referencematchers","title":"referenceMatchers","text":"<p>fun referenceMatchers(referenceMatchers: List&lt;ReferenceMatcher&gt;): LeakCanary.Config.Builder</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/reference-matchers/#see-also","title":"See also","text":"<p>main</p> leakcanary.LeakCanary.Config"},{"location":"api/leakcanary/-leak-canary/-config/-builder/request-write-external-storage-permission/","title":"Request write external storage permission","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/Builder/requestWriteExternalStoragePermission</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/request-write-external-storage-permission/#requestwriteexternalstoragepermission","title":"requestWriteExternalStoragePermission","text":"<p>fun requestWriteExternalStoragePermission(requestWriteExternalStoragePermission: Boolean): LeakCanary.Config.Builder</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/request-write-external-storage-permission/#see-also","title":"See also","text":"<p>main</p> leakcanary.LeakCanary.Config"},{"location":"api/leakcanary/-leak-canary/-config/-builder/retained-visible-threshold/","title":"Retained visible threshold","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/Builder/retainedVisibleThreshold</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/retained-visible-threshold/#retainedvisiblethreshold","title":"retainedVisibleThreshold","text":"<p>fun retainedVisibleThreshold(retainedVisibleThreshold: Int): LeakCanary.Config.Builder</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/retained-visible-threshold/#see-also","title":"See also","text":"<p>main</p> leakcanary.LeakCanary.Config"},{"location":"api/leakcanary/-leak-canary/-config/-builder/show-notifications/","title":"Show notifications","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/Builder/showNotifications</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/show-notifications/#shownotifications","title":"showNotifications","text":"<p>fun showNotifications(showNotifications: Boolean): LeakCanary.Config.Builder</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/show-notifications/#see-also","title":"See also","text":"<p>main</p> leakcanary.LeakCanary.Config"},{"location":"api/leakcanary/-leak-canary-process/","title":"Index","text":"<p>//leakcanary/leakcanary/LeakCanaryProcess</p>"},{"location":"api/leakcanary/-leak-canary-process/#leakcanaryprocess","title":"LeakCanaryProcess","text":"<p>object LeakCanaryProcess</p> <p>Used to determine whether the current process is the LeakCanary analyzer process. By depending on the leakcanary-android-process artifact instead of the leakcanary-android, LeakCanary will automatically run its analysis in a separate process.</p> <p>As such, you\u2019ll need to be careful to do any custom configuration of LeakCanary in both the main process and the analyzer process.</p>"},{"location":"api/leakcanary/-leak-canary-process/#functions","title":"Functions","text":"Name Summary isInAnalyzerProcess fun isInAnalyzerProcess(context: Context): BooleanWhether the current process is the process running the heap analyzer, which is a different process than the normal app process."},{"location":"api/leakcanary/-leak-canary-process/is-in-analyzer-process/","title":"Is in analyzer process","text":"<p>//leakcanary/leakcanary/LeakCanaryProcess/isInAnalyzerProcess</p>"},{"location":"api/leakcanary/-leak-canary-process/is-in-analyzer-process/#isinanalyzerprocess","title":"isInAnalyzerProcess","text":"<p>fun isInAnalyzerProcess(context: Context): Boolean</p> <p>Whether the current process is the process running the heap analyzer, which is a different process than the normal app process.</p>"},{"location":"api/leakcanary/-logcat-event-listener/","title":"Index","text":"<p>//leakcanary/leakcanary/LogcatEventListener</p>"},{"location":"api/leakcanary/-logcat-event-listener/#logcateventlistener","title":"LogcatEventListener","text":"<p>object LogcatEventListener : EventListener</p>"},{"location":"api/leakcanary/-logcat-event-listener/#functions","title":"Functions","text":"Name Summary onEvent open override fun onEvent(event: EventListener.Event)onEvent is always called from the thread the events are emitted from, which is documented for each event. This enables you to potentially block a chain of events, waiting for some pre work to be done."},{"location":"api/leakcanary/-logcat-event-listener/on-event/","title":"On event","text":"<p>//leakcanary/leakcanary/LogcatEventListener/onEvent</p>"},{"location":"api/leakcanary/-logcat-event-listener/on-event/#onevent","title":"onEvent","text":"<p>open override fun onEvent(event: EventListener.Event)</p> <p>onEvent is always called from the thread the events are emitted from, which is documented for each event. This enables you to potentially block a chain of events, waiting for some pre work to be done.</p>"},{"location":"api/leakcanary/-logcat-shark-log/","title":"Index","text":"<p>//leakcanary/leakcanary/LogcatSharkLog</p>"},{"location":"api/leakcanary/-logcat-shark-log/#logcatsharklog","title":"LogcatSharkLog","text":"<p>class LogcatSharkLog : SharkLog.Logger</p>"},{"location":"api/leakcanary/-logcat-shark-log/#constructors","title":"Constructors","text":"LogcatSharkLog fun LogcatSharkLog()"},{"location":"api/leakcanary/-logcat-shark-log/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/leakcanary/-logcat-shark-log/#functions","title":"Functions","text":"Name Summary d open override fun d(message: String)open override fun d(throwable: Throwable, message: String)"},{"location":"api/leakcanary/-logcat-shark-log/-logcat-shark-log/","title":"logcat shark log","text":"<p>//leakcanary/leakcanary/LogcatSharkLog/LogcatSharkLog</p>"},{"location":"api/leakcanary/-logcat-shark-log/-logcat-shark-log/#logcatsharklog","title":"LogcatSharkLog","text":"<p>fun LogcatSharkLog()</p>"},{"location":"api/leakcanary/-logcat-shark-log/d/","title":"D","text":"<p>//leakcanary/leakcanary/LogcatSharkLog/d</p>"},{"location":"api/leakcanary/-logcat-shark-log/d/#d","title":"d","text":"<p>open override fun d(message: String)</p> <p>open override fun d(throwable: Throwable, message: String)</p>"},{"location":"api/leakcanary/-logcat-shark-log/-companion/","title":"Index","text":"<p>//leakcanary/leakcanary/LogcatSharkLog/Companion</p>"},{"location":"api/leakcanary/-logcat-shark-log/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/leakcanary/-logcat-shark-log/-companion/#functions","title":"Functions","text":"Name Summary install fun install()"},{"location":"api/leakcanary/-logcat-shark-log/-companion/install/","title":"Install","text":"<p>//leakcanary/leakcanary/LogcatSharkLog/Companion/install</p>"},{"location":"api/leakcanary/-logcat-shark-log/-companion/install/#install","title":"install","text":"<p>fun install()</p>"},{"location":"api/leakcanary/-minimum-disk-space-interceptor/","title":"Index","text":"<p>//leakcanary/leakcanary/MinimumDiskSpaceInterceptor</p>"},{"location":"api/leakcanary/-minimum-disk-space-interceptor/#minimumdiskspaceinterceptor","title":"MinimumDiskSpaceInterceptor","text":"<p>class MinimumDiskSpaceInterceptor(application: Application, minimumDiskSpaceBytes: Long, processInfo: ProcessInfo = ProcessInfo.Real) : HeapAnalysisInterceptor</p>"},{"location":"api/leakcanary/-minimum-disk-space-interceptor/#constructors","title":"Constructors","text":"MinimumDiskSpaceInterceptor fun MinimumDiskSpaceInterceptor(application: Application, minimumDiskSpaceBytes: Long, processInfo: ProcessInfo = ProcessInfo.Real)"},{"location":"api/leakcanary/-minimum-disk-space-interceptor/#functions","title":"Functions","text":"Name Summary intercept open override fun intercept(chain: HeapAnalysisInterceptor.Chain): HeapAnalysisJob.Result"},{"location":"api/leakcanary/-minimum-disk-space-interceptor/-minimum-disk-space-interceptor/","title":"minimum disk space interceptor","text":"<p>//leakcanary/leakcanary/MinimumDiskSpaceInterceptor/MinimumDiskSpaceInterceptor</p>"},{"location":"api/leakcanary/-minimum-disk-space-interceptor/-minimum-disk-space-interceptor/#minimumdiskspaceinterceptor","title":"MinimumDiskSpaceInterceptor","text":"<p>fun MinimumDiskSpaceInterceptor(application: Application, minimumDiskSpaceBytes: Long, processInfo: ProcessInfo = ProcessInfo.Real)</p>"},{"location":"api/leakcanary/-minimum-disk-space-interceptor/intercept/","title":"Intercept","text":"<p>//leakcanary/leakcanary/MinimumDiskSpaceInterceptor/intercept</p>"},{"location":"api/leakcanary/-minimum-disk-space-interceptor/intercept/#intercept","title":"intercept","text":"<p>open override fun intercept(chain: HeapAnalysisInterceptor.Chain): HeapAnalysisJob.Result</p>"},{"location":"api/leakcanary/-minimum-elapsed-since-start-interceptor/","title":"Index","text":"<p>//leakcanary/leakcanary/MinimumElapsedSinceStartInterceptor</p>"},{"location":"api/leakcanary/-minimum-elapsed-since-start-interceptor/#minimumelapsedsincestartinterceptor","title":"MinimumElapsedSinceStartInterceptor","text":"<p>class MinimumElapsedSinceStartInterceptor(minimumElapsedSinceStartMillis: Long = TimeUnit.SECONDS.toMillis(30), processInfo: ProcessInfo = ProcessInfo.Real) : HeapAnalysisInterceptor</p>"},{"location":"api/leakcanary/-minimum-elapsed-since-start-interceptor/#constructors","title":"Constructors","text":"MinimumElapsedSinceStartInterceptor fun MinimumElapsedSinceStartInterceptor(minimumElapsedSinceStartMillis: Long = TimeUnit.SECONDS.toMillis(30), processInfo: ProcessInfo = ProcessInfo.Real)"},{"location":"api/leakcanary/-minimum-elapsed-since-start-interceptor/#functions","title":"Functions","text":"Name Summary intercept open override fun intercept(chain: HeapAnalysisInterceptor.Chain): HeapAnalysisJob.Result"},{"location":"api/leakcanary/-minimum-elapsed-since-start-interceptor/-minimum-elapsed-since-start-interceptor/","title":"minimum elapsed since start interceptor","text":"<p>//leakcanary/leakcanary/MinimumElapsedSinceStartInterceptor/MinimumElapsedSinceStartInterceptor</p>"},{"location":"api/leakcanary/-minimum-elapsed-since-start-interceptor/-minimum-elapsed-since-start-interceptor/#minimumelapsedsincestartinterceptor","title":"MinimumElapsedSinceStartInterceptor","text":"<p>fun MinimumElapsedSinceStartInterceptor(minimumElapsedSinceStartMillis: Long = TimeUnit.SECONDS.toMillis(30), processInfo: ProcessInfo = ProcessInfo.Real)</p>"},{"location":"api/leakcanary/-minimum-elapsed-since-start-interceptor/intercept/","title":"Intercept","text":"<p>//leakcanary/leakcanary/MinimumElapsedSinceStartInterceptor/intercept</p>"},{"location":"api/leakcanary/-minimum-elapsed-since-start-interceptor/intercept/#intercept","title":"intercept","text":"<p>open override fun intercept(chain: HeapAnalysisInterceptor.Chain): HeapAnalysisJob.Result</p>"},{"location":"api/leakcanary/-minimum-memory-interceptor/","title":"Index","text":"<p>//leakcanary/leakcanary/MinimumMemoryInterceptor</p>"},{"location":"api/leakcanary/-minimum-memory-interceptor/#minimummemoryinterceptor","title":"MinimumMemoryInterceptor","text":"<p>class MinimumMemoryInterceptor(application: Application, minimumRequiredAvailableMemoryBytes: Long, processInfo: ProcessInfo = ProcessInfo.Real) : HeapAnalysisInterceptor</p>"},{"location":"api/leakcanary/-minimum-memory-interceptor/#constructors","title":"Constructors","text":"MinimumMemoryInterceptor fun MinimumMemoryInterceptor(application: Application, minimumRequiredAvailableMemoryBytes: Long, processInfo: ProcessInfo = ProcessInfo.Real)"},{"location":"api/leakcanary/-minimum-memory-interceptor/#functions","title":"Functions","text":"Name Summary intercept open override fun intercept(chain: HeapAnalysisInterceptor.Chain): HeapAnalysisJob.Result"},{"location":"api/leakcanary/-minimum-memory-interceptor/-minimum-memory-interceptor/","title":"minimum memory interceptor","text":"<p>//leakcanary/leakcanary/MinimumMemoryInterceptor/MinimumMemoryInterceptor</p>"},{"location":"api/leakcanary/-minimum-memory-interceptor/-minimum-memory-interceptor/#minimummemoryinterceptor","title":"MinimumMemoryInterceptor","text":"<p>fun MinimumMemoryInterceptor(application: Application, minimumRequiredAvailableMemoryBytes: Long, processInfo: ProcessInfo = ProcessInfo.Real)</p>"},{"location":"api/leakcanary/-minimum-memory-interceptor/intercept/","title":"Intercept","text":"<p>//leakcanary/leakcanary/MinimumMemoryInterceptor/intercept</p>"},{"location":"api/leakcanary/-minimum-memory-interceptor/intercept/#intercept","title":"intercept","text":"<p>open override fun intercept(chain: HeapAnalysisInterceptor.Chain): HeapAnalysisJob.Result</p>"},{"location":"api/leakcanary/-no-leak-assertion-failed-error/","title":"Index","text":"<p>//leakcanary/leakcanary/NoLeakAssertionFailedError</p>"},{"location":"api/leakcanary/-no-leak-assertion-failed-error/#noleakassertionfailederror","title":"NoLeakAssertionFailedError","text":"<p>class NoLeakAssertionFailedError(val heapAnalysis: HeapAnalysisSuccess) : AssertionError</p> <p>Thrown when using the NoLeakAssertionFailedError.throwOnApplicationLeaks HeapAnalysisReporter</p>"},{"location":"api/leakcanary/-no-leak-assertion-failed-error/#constructors","title":"Constructors","text":"NoLeakAssertionFailedError fun NoLeakAssertionFailedError(heapAnalysis: HeapAnalysisSuccess)"},{"location":"api/leakcanary/-no-leak-assertion-failed-error/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/leakcanary/-no-leak-assertion-failed-error/#functions","title":"Functions","text":"Name Summary addSuppressed fun addSuppressed(p0: Throwable) fillInStackTrace open fun fillInStackTrace(): Throwable getLocalizedMessage open fun getLocalizedMessage(): String getStackTrace open fun getStackTrace(): Array&lt;StackTraceElement&gt; getSuppressed fun getSuppressed(): Array&lt;Throwable&gt; initCause open fun initCause(p0: Throwable): Throwable printStackTrace open fun printStackTrace()open fun printStackTrace(p0: PrintStream)open fun printStackTrace(p0: PrintWriter) setStackTrace open fun setStackTrace(p0: Array&lt;StackTraceElement&gt;)"},{"location":"api/leakcanary/-no-leak-assertion-failed-error/#properties","title":"Properties","text":"Name Summary cause open val cause: Throwable? heapAnalysis val heapAnalysis: HeapAnalysisSuccess message open val message: String?"},{"location":"api/leakcanary/-no-leak-assertion-failed-error/-no-leak-assertion-failed-error/","title":"no leak assertion failed error","text":"<p>//leakcanary/leakcanary/NoLeakAssertionFailedError/NoLeakAssertionFailedError</p>"},{"location":"api/leakcanary/-no-leak-assertion-failed-error/-no-leak-assertion-failed-error/#noleakassertionfailederror","title":"NoLeakAssertionFailedError","text":"<p>fun NoLeakAssertionFailedError(heapAnalysis: HeapAnalysisSuccess)</p>"},{"location":"api/leakcanary/-no-leak-assertion-failed-error/heap-analysis/","title":"Heap analysis","text":"<p>//leakcanary/leakcanary/NoLeakAssertionFailedError/heapAnalysis</p>"},{"location":"api/leakcanary/-no-leak-assertion-failed-error/heap-analysis/#heapanalysis","title":"heapAnalysis","text":"<p>val heapAnalysis: HeapAnalysisSuccess</p>"},{"location":"api/leakcanary/-no-leak-assertion-failed-error/-companion/","title":"Index","text":"<p>//leakcanary/leakcanary/NoLeakAssertionFailedError/Companion</p>"},{"location":"api/leakcanary/-no-leak-assertion-failed-error/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/leakcanary/-no-leak-assertion-failed-error/-companion/#functions","title":"Functions","text":"Name Summary throwOnApplicationLeaks fun throwOnApplicationLeaks(): HeapAnalysisReporterA HeapAnalysisReporter that throws a NoLeakAssertionFailedError when the heap analysis has application leaks."},{"location":"api/leakcanary/-no-leak-assertion-failed-error/-companion/throw-on-application-leaks/","title":"Throw on application leaks","text":"<p>//leakcanary/leakcanary/NoLeakAssertionFailedError/Companion/throwOnApplicationLeaks</p>"},{"location":"api/leakcanary/-no-leak-assertion-failed-error/-companion/throw-on-application-leaks/#throwonapplicationleaks","title":"throwOnApplicationLeaks","text":"<p>fun throwOnApplicationLeaks(): HeapAnalysisReporter</p> <p>A HeapAnalysisReporter that throws a NoLeakAssertionFailedError when the heap analysis has application leaks.</p>"},{"location":"api/leakcanary/-notification-event-listener/","title":"Index","text":"<p>//leakcanary/leakcanary/NotificationEventListener</p>"},{"location":"api/leakcanary/-notification-event-listener/#notificationeventlistener","title":"NotificationEventListener","text":"<p>object NotificationEventListener : EventListener</p>"},{"location":"api/leakcanary/-notification-event-listener/#functions","title":"Functions","text":"Name Summary onEvent open override fun onEvent(event: EventListener.Event)onEvent is always called from the thread the events are emitted from, which is documented for each event. This enables you to potentially block a chain of events, waiting for some pre work to be done."},{"location":"api/leakcanary/-notification-event-listener/on-event/","title":"On event","text":"<p>//leakcanary/leakcanary/NotificationEventListener/onEvent</p>"},{"location":"api/leakcanary/-notification-event-listener/on-event/#onevent","title":"onEvent","text":"<p>open override fun onEvent(event: EventListener.Event)</p> <p>onEvent is always called from the thread the events are emitted from, which is documented for each event. This enables you to potentially block a chain of events, waiting for some pre work to be done.</p>"},{"location":"api/leakcanary/-object-watcher/","title":"Index","text":"<p>//leakcanary/leakcanary/ObjectWatcher</p>"},{"location":"api/leakcanary/-object-watcher/#objectwatcher","title":"ObjectWatcher","text":"<p>class ObjectWatcher(clock: Clock, checkRetainedExecutor: Executor, isEnabled: () -&gt; Boolean = { true }) : ReachabilityWatcher</p> <p>ObjectWatcher can be passed objects to watch. It will create KeyedWeakReference instances that reference watches objects, and check if those references have been cleared as expected on the checkRetainedExecutor executor. If not, these objects are considered retained and ObjectWatcher will then notify registered OnObjectRetainedListeners on that executor thread.</p> <p>checkRetainedExecutor is expected to run its tasks on a background thread, with a significant delay to give the GC the opportunity to identify weakly reachable objects.</p> <p>ObjectWatcher is thread safe.</p>"},{"location":"api/leakcanary/-object-watcher/#constructors","title":"Constructors","text":"ObjectWatcher fun ObjectWatcher(clock: Clock, checkRetainedExecutor: Executor, isEnabled: () -&gt; Boolean = { true })"},{"location":"api/leakcanary/-object-watcher/#functions","title":"Functions","text":"Name Summary addOnObjectRetainedListener @Synchronizedfun addOnObjectRetainedListener(listener: OnObjectRetainedListener) clearObjectsWatchedBefore @Synchronizedfun clearObjectsWatchedBefore(heapDumpUptimeMillis: Long)Clears all KeyedWeakReference that were created before heapDumpUptimeMillis (based on clock) clearWatchedObjects @Synchronizedfun clearWatchedObjects()Clears all KeyedWeakReference expectWeaklyReachable @Synchronizedopen override fun expectWeaklyReachable(watchedObject: Any, description: String)Expects the provided watchedObject to become weakly reachable soon. If not, watchedObject will be considered retained. removeOnObjectRetainedListener @Synchronizedfun removeOnObjectRetainedListener(listener: OnObjectRetainedListener)"},{"location":"api/leakcanary/-object-watcher/#properties","title":"Properties","text":"Name Summary hasRetainedObjects @get:Synchronizedval hasRetainedObjects: BooleanReturns true if there are watched objects that aren\u2019t weakly reachable, and have been watched for long enough to be considered retained. hasWatchedObjects @get:Synchronizedval hasWatchedObjects: BooleanReturns true if there are watched objects that aren\u2019t weakly reachable, even if they haven\u2019t been watched for long enough to be considered retained. retainedObjectCount @get:Synchronizedval retainedObjectCount: IntReturns the number of retained objects, ie the number of watched objects that aren\u2019t weakly reachable, and have been watched for long enough to be considered retained. retainedObjects @get:Synchronizedval retainedObjects: List&lt;Any&gt;Returns the objects that are currently considered retained. Useful for logging purposes. Be careful with those objects and release them ASAP as you may creating longer lived leaks then the one that are already there."},{"location":"api/leakcanary/-object-watcher/-object-watcher/","title":"object watcher","text":"<p>//leakcanary/leakcanary/ObjectWatcher/ObjectWatcher</p>"},{"location":"api/leakcanary/-object-watcher/-object-watcher/#objectwatcher","title":"ObjectWatcher","text":"<p>fun ObjectWatcher(clock: Clock, checkRetainedExecutor: Executor, isEnabled: () -&gt; Boolean = { true })</p>"},{"location":"api/leakcanary/-object-watcher/add-on-object-retained-listener/","title":"Add on object retained listener","text":"<p>//leakcanary/leakcanary/ObjectWatcher/addOnObjectRetainedListener</p>"},{"location":"api/leakcanary/-object-watcher/add-on-object-retained-listener/#addonobjectretainedlistener","title":"addOnObjectRetainedListener","text":"<p>@Synchronized</p> <p>fun addOnObjectRetainedListener(listener: OnObjectRetainedListener)</p>"},{"location":"api/leakcanary/-object-watcher/clear-objects-watched-before/","title":"Clear objects watched before","text":"<p>//leakcanary/leakcanary/ObjectWatcher/clearObjectsWatchedBefore</p>"},{"location":"api/leakcanary/-object-watcher/clear-objects-watched-before/#clearobjectswatchedbefore","title":"clearObjectsWatchedBefore","text":"<p>@Synchronized</p> <p>fun clearObjectsWatchedBefore(heapDumpUptimeMillis: Long)</p> <p>Clears all KeyedWeakReference that were created before heapDumpUptimeMillis (based on clock)</p>"},{"location":"api/leakcanary/-object-watcher/clear-watched-objects/","title":"Clear watched objects","text":"<p>//leakcanary/leakcanary/ObjectWatcher/clearWatchedObjects</p>"},{"location":"api/leakcanary/-object-watcher/clear-watched-objects/#clearwatchedobjects","title":"clearWatchedObjects","text":"<p>@Synchronized</p> <p>fun clearWatchedObjects()</p> <p>Clears all KeyedWeakReference</p>"},{"location":"api/leakcanary/-object-watcher/expect-weakly-reachable/","title":"Expect weakly reachable","text":"<p>//leakcanary/leakcanary/ObjectWatcher/expectWeaklyReachable</p>"},{"location":"api/leakcanary/-object-watcher/expect-weakly-reachable/#expectweaklyreachable","title":"expectWeaklyReachable","text":"<p>@Synchronized</p> <p>open override fun expectWeaklyReachable(watchedObject: Any, description: String)</p> <p>Expects the provided watchedObject to become weakly reachable soon. If not, watchedObject will be considered retained.</p>"},{"location":"api/leakcanary/-object-watcher/has-retained-objects/","title":"Has retained objects","text":"<p>//leakcanary/leakcanary/ObjectWatcher/hasRetainedObjects</p>"},{"location":"api/leakcanary/-object-watcher/has-retained-objects/#hasretainedobjects","title":"hasRetainedObjects","text":"<p>@get:Synchronized</p> <p>val hasRetainedObjects: Boolean</p> <p>Returns true if there are watched objects that aren\u2019t weakly reachable, and have been watched for long enough to be considered retained.</p>"},{"location":"api/leakcanary/-object-watcher/has-watched-objects/","title":"Has watched objects","text":"<p>//leakcanary/leakcanary/ObjectWatcher/hasWatchedObjects</p>"},{"location":"api/leakcanary/-object-watcher/has-watched-objects/#haswatchedobjects","title":"hasWatchedObjects","text":"<p>@get:Synchronized</p> <p>val hasWatchedObjects: Boolean</p> <p>Returns true if there are watched objects that aren\u2019t weakly reachable, even if they haven\u2019t been watched for long enough to be considered retained.</p>"},{"location":"api/leakcanary/-object-watcher/remove-on-object-retained-listener/","title":"Remove on object retained listener","text":"<p>//leakcanary/leakcanary/ObjectWatcher/removeOnObjectRetainedListener</p>"},{"location":"api/leakcanary/-object-watcher/remove-on-object-retained-listener/#removeonobjectretainedlistener","title":"removeOnObjectRetainedListener","text":"<p>@Synchronized</p> <p>fun removeOnObjectRetainedListener(listener: OnObjectRetainedListener)</p>"},{"location":"api/leakcanary/-object-watcher/retained-object-count/","title":"Retained object count","text":"<p>//leakcanary/leakcanary/ObjectWatcher/retainedObjectCount</p>"},{"location":"api/leakcanary/-object-watcher/retained-object-count/#retainedobjectcount","title":"retainedObjectCount","text":"<p>@get:Synchronized</p> <p>val retainedObjectCount: Int</p> <p>Returns the number of retained objects, ie the number of watched objects that aren\u2019t weakly reachable, and have been watched for long enough to be considered retained.</p>"},{"location":"api/leakcanary/-object-watcher/retained-objects/","title":"Retained objects","text":"<p>//leakcanary/leakcanary/ObjectWatcher/retainedObjects</p>"},{"location":"api/leakcanary/-object-watcher/retained-objects/#retainedobjects","title":"retainedObjects","text":"<p>@get:Synchronized</p> <p>val retainedObjects: List&lt;Any&gt;</p> <p>Returns the objects that are currently considered retained. Useful for logging purposes. Be careful with those objects and release them ASAP as you may creating longer lived leaks then the one that are already there.</p>"},{"location":"api/leakcanary/-on-object-retained-listener/","title":"Index","text":"<p>//leakcanary/leakcanary/OnObjectRetainedListener</p>"},{"location":"api/leakcanary/-on-object-retained-listener/#onobjectretainedlistener","title":"OnObjectRetainedListener","text":"<p>fun interface OnObjectRetainedListener</p> <p>Listener used by ObjectWatcher to report retained objects.</p> <p>This is a functional interface with which you can create a OnObjectRetainedListener from a lambda.</p>"},{"location":"api/leakcanary/-on-object-retained-listener/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/leakcanary/-on-object-retained-listener/#functions","title":"Functions","text":"Name Summary onObjectRetained abstract fun onObjectRetained()A watched object became retained."},{"location":"api/leakcanary/-on-object-retained-listener/on-object-retained/","title":"On object retained","text":"<p>//leakcanary/leakcanary/OnObjectRetainedListener/onObjectRetained</p>"},{"location":"api/leakcanary/-on-object-retained-listener/on-object-retained/#onobjectretained","title":"onObjectRetained","text":"<p>abstract fun onObjectRetained()</p> <p>A watched object became retained.</p>"},{"location":"api/leakcanary/-on-object-retained-listener/-companion/","title":"Index","text":"<p>//leakcanary/leakcanary/OnObjectRetainedListener/Companion</p>"},{"location":"api/leakcanary/-on-object-retained-listener/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/leakcanary/-on-object-retained-listener/-companion/#functions","title":"Functions","text":"Name Summary invoke inline operator fun invoke(crossinline block: () -&gt; Unit): OnObjectRetainedListenerUtility function to create a OnObjectRetainedListener from the passed in block lambda instead of using the anonymous object : OnObjectRetainedListener syntax."},{"location":"api/leakcanary/-on-object-retained-listener/-companion/invoke/","title":"Invoke","text":"<p>//leakcanary/leakcanary/OnObjectRetainedListener/Companion/invoke</p>"},{"location":"api/leakcanary/-on-object-retained-listener/-companion/invoke/#invoke","title":"invoke","text":"<p>inline operator fun invoke(crossinline block: () -&gt; Unit): OnObjectRetainedListener</p> <p>Utility function to create a OnObjectRetainedListener from the passed in block lambda instead of using the anonymous object : OnObjectRetainedListener syntax.</p> <p>Usage:</p> <p>val listener = OnObjectRetainedListener {\\ \\ }</p>"},{"location":"api/leakcanary/-once-per-period-interceptor/","title":"Index","text":"<p>//leakcanary/leakcanary/OncePerPeriodInterceptor</p>"},{"location":"api/leakcanary/-once-per-period-interceptor/#onceperperiodinterceptor","title":"OncePerPeriodInterceptor","text":"<p>class OncePerPeriodInterceptor(application: Application, periodMillis: Long = TimeUnit.DAYS.toMillis(1)) : HeapAnalysisInterceptor</p> <p>Proceeds once per period (of time) and then cancels all follow up jobs until period has passed.</p>"},{"location":"api/leakcanary/-once-per-period-interceptor/#constructors","title":"Constructors","text":"OncePerPeriodInterceptor fun OncePerPeriodInterceptor(application: Application, periodMillis: Long = TimeUnit.DAYS.toMillis(1))"},{"location":"api/leakcanary/-once-per-period-interceptor/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/leakcanary/-once-per-period-interceptor/#functions","title":"Functions","text":"Name Summary forget fun forget() intercept open override fun intercept(chain: HeapAnalysisInterceptor.Chain): HeapAnalysisJob.Result"},{"location":"api/leakcanary/-once-per-period-interceptor/-once-per-period-interceptor/","title":"once per period interceptor","text":"<p>//leakcanary/leakcanary/OncePerPeriodInterceptor/OncePerPeriodInterceptor</p>"},{"location":"api/leakcanary/-once-per-period-interceptor/-once-per-period-interceptor/#onceperperiodinterceptor","title":"OncePerPeriodInterceptor","text":"<p>fun OncePerPeriodInterceptor(application: Application, periodMillis: Long = TimeUnit.DAYS.toMillis(1))</p>"},{"location":"api/leakcanary/-once-per-period-interceptor/forget/","title":"Forget","text":"<p>//leakcanary/leakcanary/OncePerPeriodInterceptor/forget</p>"},{"location":"api/leakcanary/-once-per-period-interceptor/forget/#forget","title":"forget","text":"<p>fun forget()</p>"},{"location":"api/leakcanary/-once-per-period-interceptor/intercept/","title":"Intercept","text":"<p>//leakcanary/leakcanary/OncePerPeriodInterceptor/intercept</p>"},{"location":"api/leakcanary/-once-per-period-interceptor/intercept/#intercept","title":"intercept","text":"<p>open override fun intercept(chain: HeapAnalysisInterceptor.Chain): HeapAnalysisJob.Result</p>"},{"location":"api/leakcanary/-once-per-period-interceptor/-companion/","title":"Index","text":"<p>//leakcanary/leakcanary/OncePerPeriodInterceptor/Companion</p>"},{"location":"api/leakcanary/-once-per-period-interceptor/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/leakcanary/-plumber-startup-initializer/","title":"Index","text":"<p>//leakcanary/leakcanary/PlumberStartupInitializer</p>"},{"location":"api/leakcanary/-plumber-startup-initializer/#plumberstartupinitializer","title":"PlumberStartupInitializer","text":"<p>class PlumberStartupInitializer : Initializer&lt;PlumberStartupInitializer&gt;</p>"},{"location":"api/leakcanary/-plumber-startup-initializer/#constructors","title":"Constructors","text":"PlumberStartupInitializer fun PlumberStartupInitializer()"},{"location":"api/leakcanary/-plumber-startup-initializer/#functions","title":"Functions","text":"Name Summary create open override fun create(context: Context): PlumberStartupInitializer dependencies open override fun dependencies(): List&lt;Class&lt;out Initializer&lt;*&gt;&gt;&gt;"},{"location":"api/leakcanary/-plumber-startup-initializer/-plumber-startup-initializer/","title":"plumber startup initializer","text":"<p>//leakcanary/leakcanary/PlumberStartupInitializer/PlumberStartupInitializer</p>"},{"location":"api/leakcanary/-plumber-startup-initializer/-plumber-startup-initializer/#plumberstartupinitializer","title":"PlumberStartupInitializer","text":"<p>fun PlumberStartupInitializer()</p>"},{"location":"api/leakcanary/-plumber-startup-initializer/create/","title":"Create","text":"<p>//leakcanary/leakcanary/PlumberStartupInitializer/create</p>"},{"location":"api/leakcanary/-plumber-startup-initializer/create/#create","title":"create","text":"<p>open override fun create(context: Context): PlumberStartupInitializer</p>"},{"location":"api/leakcanary/-plumber-startup-initializer/dependencies/","title":"Dependencies","text":"<p>//leakcanary/leakcanary/PlumberStartupInitializer/dependencies</p>"},{"location":"api/leakcanary/-plumber-startup-initializer/dependencies/#dependencies","title":"dependencies","text":"<p>open override fun dependencies(): List&lt;Class&lt;out Initializer&lt;*&gt;&gt;&gt;</p>"},{"location":"api/leakcanary/-process-info/","title":"Index","text":"<p>//leakcanary/leakcanary/ProcessInfo</p>"},{"location":"api/leakcanary/-process-info/#processinfo","title":"ProcessInfo","text":"<p>interface ProcessInfo</p>"},{"location":"api/leakcanary/-process-info/#types","title":"Types","text":"Name Summary AvailableRam sealed class AvailableRam Real object Real : ProcessInfo"},{"location":"api/leakcanary/-process-info/#functions","title":"Functions","text":"Name Summary availableDiskSpaceBytes abstract fun availableDiskSpaceBytes(path: File): Long availableRam abstract fun availableRam(context: Context): ProcessInfo.AvailableRam"},{"location":"api/leakcanary/-process-info/#properties","title":"Properties","text":"Name Summary elapsedMillisSinceStart abstract val elapsedMillisSinceStart: Long isImportanceBackground abstract val isImportanceBackground: Boolean"},{"location":"api/leakcanary/-process-info/#inheritors","title":"Inheritors","text":"Name Real"},{"location":"api/leakcanary/-process-info/available-disk-space-bytes/","title":"Available disk space bytes","text":"<p>//leakcanary/leakcanary/ProcessInfo/availableDiskSpaceBytes</p>"},{"location":"api/leakcanary/-process-info/available-disk-space-bytes/#availablediskspacebytes","title":"availableDiskSpaceBytes","text":"<p>abstract fun availableDiskSpaceBytes(path: File): Long</p>"},{"location":"api/leakcanary/-process-info/available-ram/","title":"Available ram","text":"<p>//leakcanary/leakcanary/ProcessInfo/availableRam</p>"},{"location":"api/leakcanary/-process-info/available-ram/#availableram","title":"availableRam","text":"<p>abstract fun availableRam(context: Context): ProcessInfo.AvailableRam</p>"},{"location":"api/leakcanary/-process-info/elapsed-millis-since-start/","title":"Elapsed millis since start","text":"<p>//leakcanary/leakcanary/ProcessInfo/elapsedMillisSinceStart</p>"},{"location":"api/leakcanary/-process-info/elapsed-millis-since-start/#elapsedmillissincestart","title":"elapsedMillisSinceStart","text":"<p>abstract val elapsedMillisSinceStart: Long</p>"},{"location":"api/leakcanary/-process-info/is-importance-background/","title":"Is importance background","text":"<p>//leakcanary/leakcanary/ProcessInfo/isImportanceBackground</p>"},{"location":"api/leakcanary/-process-info/is-importance-background/#isimportancebackground","title":"isImportanceBackground","text":"<p>abstract val isImportanceBackground: Boolean</p>"},{"location":"api/leakcanary/-process-info/-available-ram/","title":"Index","text":"<p>//leakcanary/leakcanary/ProcessInfo/AvailableRam</p>"},{"location":"api/leakcanary/-process-info/-available-ram/#availableram","title":"AvailableRam","text":"<p>sealed class AvailableRam</p>"},{"location":"api/leakcanary/-process-info/-available-ram/#types","title":"Types","text":"Name Summary BelowThreshold object BelowThreshold : ProcessInfo.AvailableRam LowRamDevice object LowRamDevice : ProcessInfo.AvailableRam Memory class Memory(val bytes: Long) : ProcessInfo.AvailableRam"},{"location":"api/leakcanary/-process-info/-available-ram/#inheritors","title":"Inheritors","text":"Name LowRamDevice BelowThreshold Memory"},{"location":"api/leakcanary/-process-info/-available-ram/-below-threshold/","title":"Index","text":"<p>//leakcanary/leakcanary/ProcessInfo/AvailableRam/BelowThreshold</p>"},{"location":"api/leakcanary/-process-info/-available-ram/-below-threshold/#belowthreshold","title":"BelowThreshold","text":"<p>object BelowThreshold : ProcessInfo.AvailableRam</p>"},{"location":"api/leakcanary/-process-info/-available-ram/-low-ram-device/","title":"Index","text":"<p>//leakcanary/leakcanary/ProcessInfo/AvailableRam/LowRamDevice</p>"},{"location":"api/leakcanary/-process-info/-available-ram/-low-ram-device/#lowramdevice","title":"LowRamDevice","text":"<p>object LowRamDevice : ProcessInfo.AvailableRam</p>"},{"location":"api/leakcanary/-process-info/-available-ram/-memory/","title":"Index","text":"<p>//leakcanary/leakcanary/ProcessInfo/AvailableRam/Memory</p>"},{"location":"api/leakcanary/-process-info/-available-ram/-memory/#memory","title":"Memory","text":"<p>class Memory(val bytes: Long) : ProcessInfo.AvailableRam</p>"},{"location":"api/leakcanary/-process-info/-available-ram/-memory/#constructors","title":"Constructors","text":"Memory fun Memory(bytes: Long)"},{"location":"api/leakcanary/-process-info/-available-ram/-memory/#properties","title":"Properties","text":"Name Summary bytes val bytes: Long"},{"location":"api/leakcanary/-process-info/-available-ram/-memory/-memory/","title":"memory","text":"<p>//leakcanary/leakcanary/ProcessInfo/AvailableRam/Memory/Memory</p>"},{"location":"api/leakcanary/-process-info/-available-ram/-memory/-memory/#memory","title":"Memory","text":"<p>fun Memory(bytes: Long)</p>"},{"location":"api/leakcanary/-process-info/-available-ram/-memory/bytes/","title":"Bytes","text":"<p>//leakcanary/leakcanary/ProcessInfo/AvailableRam/Memory/bytes</p>"},{"location":"api/leakcanary/-process-info/-available-ram/-memory/bytes/#bytes","title":"bytes","text":"<p>val bytes: Long</p>"},{"location":"api/leakcanary/-process-info/-real/","title":"Index","text":"<p>//leakcanary/leakcanary/ProcessInfo/Real</p>"},{"location":"api/leakcanary/-process-info/-real/#real","title":"Real","text":"<p>object Real : ProcessInfo</p>"},{"location":"api/leakcanary/-process-info/-real/#functions","title":"Functions","text":"Name Summary availableDiskSpaceBytes open override fun availableDiskSpaceBytes(path: File): Long availableRam open override fun availableRam(context: Context): ProcessInfo.AvailableRam"},{"location":"api/leakcanary/-process-info/-real/#properties","title":"Properties","text":"Name Summary elapsedMillisSinceStart open override val elapsedMillisSinceStart: Long isImportanceBackground open override val isImportanceBackground: Boolean"},{"location":"api/leakcanary/-process-info/-real/available-disk-space-bytes/","title":"Available disk space bytes","text":"<p>//leakcanary/leakcanary/ProcessInfo/Real/availableDiskSpaceBytes</p>"},{"location":"api/leakcanary/-process-info/-real/available-disk-space-bytes/#availablediskspacebytes","title":"availableDiskSpaceBytes","text":"<p>open override fun availableDiskSpaceBytes(path: File): Long</p>"},{"location":"api/leakcanary/-process-info/-real/available-ram/","title":"Available ram","text":"<p>//leakcanary/leakcanary/ProcessInfo/Real/availableRam</p>"},{"location":"api/leakcanary/-process-info/-real/available-ram/#availableram","title":"availableRam","text":"<p>open override fun availableRam(context: Context): ProcessInfo.AvailableRam</p>"},{"location":"api/leakcanary/-process-info/-real/elapsed-millis-since-start/","title":"Elapsed millis since start","text":"<p>//leakcanary/leakcanary/ProcessInfo/Real/elapsedMillisSinceStart</p>"},{"location":"api/leakcanary/-process-info/-real/elapsed-millis-since-start/#elapsedmillissincestart","title":"elapsedMillisSinceStart","text":"<p>open override val elapsedMillisSinceStart: Long</p>"},{"location":"api/leakcanary/-process-info/-real/is-importance-background/","title":"Is importance background","text":"<p>//leakcanary/leakcanary/ProcessInfo/Real/isImportanceBackground</p>"},{"location":"api/leakcanary/-process-info/-real/is-importance-background/#isimportancebackground","title":"isImportanceBackground","text":"<p>open override val isImportanceBackground: Boolean</p>"},{"location":"api/leakcanary/-reachability-watcher/","title":"Index","text":"<p>//leakcanary/leakcanary/ReachabilityWatcher</p>"},{"location":"api/leakcanary/-reachability-watcher/#reachabilitywatcher","title":"ReachabilityWatcher","text":"<p>fun interface ReachabilityWatcher</p>"},{"location":"api/leakcanary/-reachability-watcher/#functions","title":"Functions","text":"Name Summary expectWeaklyReachable abstract fun expectWeaklyReachable(watchedObject: Any, description: String)Expects the provided watchedObject to become weakly reachable soon. If not, watchedObject will be considered retained."},{"location":"api/leakcanary/-reachability-watcher/#inheritors","title":"Inheritors","text":"Name ObjectWatcher"},{"location":"api/leakcanary/-reachability-watcher/expect-weakly-reachable/","title":"Expect weakly reachable","text":"<p>//leakcanary/leakcanary/ReachabilityWatcher/expectWeaklyReachable</p>"},{"location":"api/leakcanary/-reachability-watcher/expect-weakly-reachable/#expectweaklyreachable","title":"expectWeaklyReachable","text":"<p>abstract fun expectWeaklyReachable(watchedObject: Any, description: String)</p> <p>Expects the provided watchedObject to become weakly reachable soon. If not, watchedObject will be considered retained.</p>"},{"location":"api/leakcanary/-remote-work-manager-heap-analyzer/","title":"Index","text":"<p>//leakcanary/leakcanary/RemoteWorkManagerHeapAnalyzer</p>"},{"location":"api/leakcanary/-remote-work-manager-heap-analyzer/#remoteworkmanagerheapanalyzer","title":"RemoteWorkManagerHeapAnalyzer","text":"<p>object RemoteWorkManagerHeapAnalyzer : EventListener</p> <p>When receiving a HeapDump event, starts a WorkManager worker that performs heap analysis in a dedicated :leakcanary process</p>"},{"location":"api/leakcanary/-remote-work-manager-heap-analyzer/#functions","title":"Functions","text":"Name Summary onEvent open override fun onEvent(event: EventListener.Event)onEvent is always called from the thread the events are emitted from, which is documented for each event. This enables you to potentially block a chain of events, waiting for some pre work to be done."},{"location":"api/leakcanary/-remote-work-manager-heap-analyzer/on-event/","title":"On event","text":"<p>//leakcanary/leakcanary/RemoteWorkManagerHeapAnalyzer/onEvent</p>"},{"location":"api/leakcanary/-remote-work-manager-heap-analyzer/on-event/#onevent","title":"onEvent","text":"<p>open override fun onEvent(event: EventListener.Event)</p> <p>onEvent is always called from the thread the events are emitted from, which is documented for each event. This enables you to potentially block a chain of events, waiting for some pre work to be done.</p>"},{"location":"api/leakcanary/-root-view-watcher/","title":"Index","text":"<p>//leakcanary/leakcanary/RootViewWatcher</p>"},{"location":"api/leakcanary/-root-view-watcher/#rootviewwatcher","title":"RootViewWatcher","text":"<p>class RootViewWatcher(reachabilityWatcher: ReachabilityWatcher) : InstallableWatcher</p> <p>Expects root views to become weakly reachable soon after they are removed from the window manager.</p>"},{"location":"api/leakcanary/-root-view-watcher/#constructors","title":"Constructors","text":"RootViewWatcher fun RootViewWatcher(reachabilityWatcher: ReachabilityWatcher)"},{"location":"api/leakcanary/-root-view-watcher/#functions","title":"Functions","text":"Name Summary install open override fun install() uninstall open override fun uninstall()"},{"location":"api/leakcanary/-root-view-watcher/-root-view-watcher/","title":"root view watcher","text":"<p>//leakcanary/leakcanary/RootViewWatcher/RootViewWatcher</p>"},{"location":"api/leakcanary/-root-view-watcher/-root-view-watcher/#rootviewwatcher","title":"RootViewWatcher","text":"<p>fun RootViewWatcher(reachabilityWatcher: ReachabilityWatcher)</p>"},{"location":"api/leakcanary/-root-view-watcher/install/","title":"Install","text":"<p>//leakcanary/leakcanary/RootViewWatcher/install</p>"},{"location":"api/leakcanary/-root-view-watcher/install/#install","title":"install","text":"<p>open override fun install()</p>"},{"location":"api/leakcanary/-root-view-watcher/uninstall/","title":"Uninstall","text":"<p>//leakcanary/leakcanary/RootViewWatcher/uninstall</p>"},{"location":"api/leakcanary/-root-view-watcher/uninstall/#uninstall","title":"uninstall","text":"<p>open override fun uninstall()</p>"},{"location":"api/leakcanary/-save-resource-ids-interceptor/","title":"Index","text":"<p>//leakcanary/leakcanary/SaveResourceIdsInterceptor</p>"},{"location":"api/leakcanary/-save-resource-ids-interceptor/#saveresourceidsinterceptor","title":"SaveResourceIdsInterceptor","text":"<p>class SaveResourceIdsInterceptor(resources: Resources) : HeapAnalysisInterceptor</p> <p>Interceptor that saves the names of R.id.* entries and their associated int values to a static field that can then be read from the heap dump.</p>"},{"location":"api/leakcanary/-save-resource-ids-interceptor/#constructors","title":"Constructors","text":"SaveResourceIdsInterceptor fun SaveResourceIdsInterceptor(resources: Resources)"},{"location":"api/leakcanary/-save-resource-ids-interceptor/#functions","title":"Functions","text":"Name Summary intercept open override fun intercept(chain: HeapAnalysisInterceptor.Chain): HeapAnalysisJob.Result"},{"location":"api/leakcanary/-save-resource-ids-interceptor/-save-resource-ids-interceptor/","title":"save resource ids interceptor","text":"<p>//leakcanary/leakcanary/SaveResourceIdsInterceptor/SaveResourceIdsInterceptor</p>"},{"location":"api/leakcanary/-save-resource-ids-interceptor/-save-resource-ids-interceptor/#saveresourceidsinterceptor","title":"SaveResourceIdsInterceptor","text":"<p>fun SaveResourceIdsInterceptor(resources: Resources)</p>"},{"location":"api/leakcanary/-save-resource-ids-interceptor/intercept/","title":"Intercept","text":"<p>//leakcanary/leakcanary/SaveResourceIdsInterceptor/intercept</p>"},{"location":"api/leakcanary/-save-resource-ids-interceptor/intercept/#intercept","title":"intercept","text":"<p>open override fun intercept(chain: HeapAnalysisInterceptor.Chain): HeapAnalysisJob.Result</p>"},{"location":"api/leakcanary/-screen-off-trigger/","title":"Index","text":"<p>//leakcanary/leakcanary/ScreenOffTrigger</p>"},{"location":"api/leakcanary/-screen-off-trigger/#screenofftrigger","title":"ScreenOffTrigger","text":"<p>class ScreenOffTrigger(application: Application, analysisClient: HeapAnalysisClient, analysisExecutor: Executor, analysisCallback: (HeapAnalysisJob.Result) -&gt; Unit = { result -&gt;     SharkLog.d { \"$result\" }   })</p>"},{"location":"api/leakcanary/-screen-off-trigger/#constructors","title":"Constructors","text":"ScreenOffTrigger fun ScreenOffTrigger(application: Application, analysisClient: HeapAnalysisClient, analysisExecutor: Executor, analysisCallback: (HeapAnalysisJob.Result) -&gt; Unit = { result -&gt;     SharkLog.d { \"$result\" }   })"},{"location":"api/leakcanary/-screen-off-trigger/#functions","title":"Functions","text":"Name Summary start fun start() stop fun stop()"},{"location":"api/leakcanary/-screen-off-trigger/-screen-off-trigger/","title":"screen off trigger","text":"<p>//leakcanary/leakcanary/ScreenOffTrigger/ScreenOffTrigger</p>"},{"location":"api/leakcanary/-screen-off-trigger/-screen-off-trigger/#screenofftrigger","title":"ScreenOffTrigger","text":"<p>fun ScreenOffTrigger(application: Application, analysisClient: HeapAnalysisClient, analysisExecutor: Executor, analysisCallback: (HeapAnalysisJob.Result) -&gt; Unit = { result -&gt;     SharkLog.d { \"$result\" }   })</p>"},{"location":"api/leakcanary/-screen-off-trigger/start/","title":"Start","text":"<p>//leakcanary/leakcanary/ScreenOffTrigger/start</p>"},{"location":"api/leakcanary/-screen-off-trigger/start/#start","title":"start","text":"<p>fun start()</p>"},{"location":"api/leakcanary/-screen-off-trigger/stop/","title":"Stop","text":"<p>//leakcanary/leakcanary/ScreenOffTrigger/stop</p>"},{"location":"api/leakcanary/-screen-off-trigger/stop/#stop","title":"stop","text":"<p>fun stop()</p>"},{"location":"api/leakcanary/-service-watcher/","title":"Index","text":"<p>//leakcanary/leakcanary/ServiceWatcher</p>"},{"location":"api/leakcanary/-service-watcher/#servicewatcher","title":"ServiceWatcher","text":"<p>class ServiceWatcher(reachabilityWatcher: ReachabilityWatcher) : InstallableWatcher</p> <p>Expects services to become weakly reachable soon after they receive the Service.onDestroy callback.</p>"},{"location":"api/leakcanary/-service-watcher/#constructors","title":"Constructors","text":"ServiceWatcher fun ServiceWatcher(reachabilityWatcher: ReachabilityWatcher)"},{"location":"api/leakcanary/-service-watcher/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/leakcanary/-service-watcher/#functions","title":"Functions","text":"Name Summary install open override fun install() uninstall open override fun uninstall()"},{"location":"api/leakcanary/-service-watcher/-service-watcher/","title":"service watcher","text":"<p>//leakcanary/leakcanary/ServiceWatcher/ServiceWatcher</p>"},{"location":"api/leakcanary/-service-watcher/-service-watcher/#servicewatcher","title":"ServiceWatcher","text":"<p>fun ServiceWatcher(reachabilityWatcher: ReachabilityWatcher)</p>"},{"location":"api/leakcanary/-service-watcher/install/","title":"Install","text":"<p>//leakcanary/leakcanary/ServiceWatcher/install</p>"},{"location":"api/leakcanary/-service-watcher/install/#install","title":"install","text":"<p>open override fun install()</p>"},{"location":"api/leakcanary/-service-watcher/uninstall/","title":"Uninstall","text":"<p>//leakcanary/leakcanary/ServiceWatcher/uninstall</p>"},{"location":"api/leakcanary/-service-watcher/uninstall/#uninstall","title":"uninstall","text":"<p>open override fun uninstall()</p>"},{"location":"api/leakcanary/-service-watcher/-companion/","title":"Index","text":"<p>//leakcanary/leakcanary/ServiceWatcher/Companion</p>"},{"location":"api/leakcanary/-service-watcher/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/leakcanary/-skip-leak-detection/","title":"Index","text":"<p>//leakcanary/leakcanary/SkipLeakDetection</p>"},{"location":"api/leakcanary/-skip-leak-detection/#skipleakdetection","title":"SkipLeakDetection","text":"<p>@Target(allowedTargets = [AnnotationTarget.CLASS, AnnotationTarget.FUNCTION])</p> <p>annotation class SkipLeakDetection(val message: String, val assertionTags: String)</p> <p>Annotation for skipping leak detection in a UI test that calls LeakAssertions.assertNoLeaks. This annotation is useful to skip a leak detection in a test until the leaks are fixed.</p> <p>The check is performed by shouldSkipTest which is called by AndroidDetectLeaksAssert, which requires that the TestDescriptionHolder rule be applied and evaluating when LeakAssertions.assertNoLeaks is called.</p> <p>message should contain an explanation of why leak detection is skipped, e.g. a reference to a filed issue.</p> <p>The optional assertionTags allows finer grained filtering based on the tag value passed to LeakAssertions.assertNoLeaks. If assertionTags is empty, then the test will skip leak detection entirely. If assertionTags is not empty, then the test will skip leak detection for any call to LeakAssertions.assertNoLeaks with a tag value contained in assertionTags.</p>"},{"location":"api/leakcanary/-skip-leak-detection/#constructors","title":"Constructors","text":"SkipLeakDetection fun SkipLeakDetection(message: String, vararg assertionTags: String)"},{"location":"api/leakcanary/-skip-leak-detection/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/leakcanary/-skip-leak-detection/#properties","title":"Properties","text":"Name Summary assertionTags val assertionTags: Array&lt;out String&gt; message val message: String"},{"location":"api/leakcanary/-skip-leak-detection/-skip-leak-detection/","title":"skip leak detection","text":"<p>//leakcanary/leakcanary/SkipLeakDetection/SkipLeakDetection</p>"},{"location":"api/leakcanary/-skip-leak-detection/-skip-leak-detection/#skipleakdetection","title":"SkipLeakDetection","text":"<p>fun SkipLeakDetection(message: String, vararg assertionTags: String)</p>"},{"location":"api/leakcanary/-skip-leak-detection/assertion-tags/","title":"Assertion tags","text":"<p>//leakcanary/leakcanary/SkipLeakDetection/assertionTags</p>"},{"location":"api/leakcanary/-skip-leak-detection/assertion-tags/#assertiontags","title":"assertionTags","text":"<p>val assertionTags: Array&lt;out String&gt;</p>"},{"location":"api/leakcanary/-skip-leak-detection/message/","title":"Message","text":"<p>//leakcanary/leakcanary/SkipLeakDetection/message</p>"},{"location":"api/leakcanary/-skip-leak-detection/message/#message","title":"message","text":"<p>val message: String</p>"},{"location":"api/leakcanary/-skip-leak-detection/-companion/","title":"Index","text":"<p>//leakcanary/leakcanary/SkipLeakDetection/Companion</p>"},{"location":"api/leakcanary/-skip-leak-detection/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/leakcanary/-skip-leak-detection/-companion/#functions","title":"Functions","text":"Name Summary shouldSkipTest fun shouldSkipTest(testDescription: Description, assertionTag: String): Booleanfun shouldSkipTest(testName: String, skipAnnotation: SkipLeakDetection?, assertionTag: String): Boolean"},{"location":"api/leakcanary/-skip-leak-detection/-companion/should-skip-test/","title":"Should skip test","text":"<p>//leakcanary/leakcanary/SkipLeakDetection/Companion/shouldSkipTest</p>"},{"location":"api/leakcanary/-skip-leak-detection/-companion/should-skip-test/#shouldskiptest","title":"shouldSkipTest","text":"<p>fun shouldSkipTest(testDescription: Description, assertionTag: String): Boolean</p> <p>fun shouldSkipTest(testName: String, skipAnnotation: SkipLeakDetection?, assertionTag: String): Boolean</p>"},{"location":"api/leakcanary/-test-description-holder/","title":"Index","text":"<p>//leakcanary/leakcanary/TestDescriptionHolder</p>"},{"location":"api/leakcanary/-test-description-holder/#testdescriptionholder","title":"TestDescriptionHolder","text":"<p>object TestDescriptionHolder : TestRule</p> <p>A TestRule that holds onto the test Description in a thread local while evaluating, making it possible to retrieve that test Description from the test thread via testDescription.</p> <p>This rule is automatically applied by DetectLeaksAfterTestSuccess.</p>"},{"location":"api/leakcanary/-test-description-holder/#functions","title":"Functions","text":"Name Summary apply open override fun apply(base: Statement, description: Description): Statement isEvaluating fun isEvaluating(): Boolean wrap fun wrap(base: Statement, description: Description): Statement"},{"location":"api/leakcanary/-test-description-holder/#properties","title":"Properties","text":"Name Summary testDescription val testDescription: Description"},{"location":"api/leakcanary/-test-description-holder/apply/","title":"Apply","text":"<p>//leakcanary/leakcanary/TestDescriptionHolder/apply</p>"},{"location":"api/leakcanary/-test-description-holder/apply/#apply","title":"apply","text":"<p>open override fun apply(base: Statement, description: Description): Statement</p>"},{"location":"api/leakcanary/-test-description-holder/is-evaluating/","title":"Is evaluating","text":"<p>//leakcanary/leakcanary/TestDescriptionHolder/isEvaluating</p>"},{"location":"api/leakcanary/-test-description-holder/is-evaluating/#isevaluating","title":"isEvaluating","text":"<p>fun isEvaluating(): Boolean</p>"},{"location":"api/leakcanary/-test-description-holder/test-description/","title":"Test description","text":"<p>//leakcanary/leakcanary/TestDescriptionHolder/testDescription</p>"},{"location":"api/leakcanary/-test-description-holder/test-description/#testdescription","title":"testDescription","text":"<p>val testDescription: Description</p>"},{"location":"api/leakcanary/-test-description-holder/wrap/","title":"Wrap","text":"<p>//leakcanary/leakcanary/TestDescriptionHolder/wrap</p>"},{"location":"api/leakcanary/-test-description-holder/wrap/#wrap","title":"wrap","text":"<p>fun wrap(base: Statement, description: Description): Statement</p>"},{"location":"api/leakcanary/-toast-event-listener/","title":"Index","text":"<p>//leakcanary/leakcanary/ToastEventListener</p>"},{"location":"api/leakcanary/-toast-event-listener/#toasteventlistener","title":"ToastEventListener","text":"<p>object ToastEventListener : EventListener</p>"},{"location":"api/leakcanary/-toast-event-listener/#functions","title":"Functions","text":"Name Summary onEvent open override fun onEvent(event: EventListener.Event)onEvent is always called from the thread the events are emitted from, which is documented for each event. This enables you to potentially block a chain of events, waiting for some pre work to be done."},{"location":"api/leakcanary/-toast-event-listener/on-event/","title":"On event","text":"<p>//leakcanary/leakcanary/ToastEventListener/onEvent</p>"},{"location":"api/leakcanary/-toast-event-listener/on-event/#onevent","title":"onEvent","text":"<p>open override fun onEvent(event: EventListener.Event)</p> <p>onEvent is always called from the thread the events are emitted from, which is documented for each event. This enables you to potentially block a chain of events, waiting for some pre work to be done.</p>"},{"location":"api/leakcanary/-tv-event-listener/","title":"Index","text":"<p>//leakcanary/leakcanary/TvEventListener</p>"},{"location":"api/leakcanary/-tv-event-listener/#tveventlistener","title":"TvEventListener","text":"<p>object TvEventListener : EventListener</p>"},{"location":"api/leakcanary/-tv-event-listener/#functions","title":"Functions","text":"Name Summary onEvent open override fun onEvent(event: EventListener.Event)onEvent is always called from the thread the events are emitted from, which is documented for each event. This enables you to potentially block a chain of events, waiting for some pre work to be done."},{"location":"api/leakcanary/-tv-event-listener/on-event/","title":"On event","text":"<p>//leakcanary/leakcanary/TvEventListener/onEvent</p>"},{"location":"api/leakcanary/-tv-event-listener/on-event/#onevent","title":"onEvent","text":"<p>open override fun onEvent(event: EventListener.Event)</p> <p>onEvent is always called from the thread the events are emitted from, which is documented for each event. This enables you to potentially block a chain of events, waiting for some pre work to be done.</p>"},{"location":"api/leakcanary/-view-location-holder-leak-fix/","title":"Index","text":"<p>//leakcanary/leakcanary/ViewLocationHolderLeakFix</p>"},{"location":"api/leakcanary/-view-location-holder-leak-fix/#viewlocationholderleakfix","title":"ViewLocationHolderLeakFix","text":"<p>object ViewLocationHolderLeakFix</p>"},{"location":"api/leakcanary/-view-location-holder-leak-fix/#see-also","title":"See also","text":"<p>main</p> leakcanary.AndroidLeakFixes.VIEW_LOCATION_HOLDER ."},{"location":"api/leakcanary/-view-location-holder-leak-fix/#functions","title":"Functions","text":"Name Summary clearStaticPool fun clearStaticPool(application: Application)Clears the ViewGroup.ViewLocationHolder.sPool static pool."},{"location":"api/leakcanary/-view-location-holder-leak-fix/clear-static-pool/","title":"Clear static pool","text":"<p>//leakcanary/leakcanary/ViewLocationHolderLeakFix/clearStaticPool</p>"},{"location":"api/leakcanary/-view-location-holder-leak-fix/clear-static-pool/#clearstaticpool","title":"clearStaticPool","text":"<p>fun clearStaticPool(application: Application)</p> <p>Clears the ViewGroup.ViewLocationHolder.sPool static pool.</p>"},{"location":"api/leakcanary/-work-manager-heap-analyzer/","title":"Index","text":"<p>//leakcanary/leakcanary/WorkManagerHeapAnalyzer</p>"},{"location":"api/leakcanary/-work-manager-heap-analyzer/#workmanagerheapanalyzer","title":"WorkManagerHeapAnalyzer","text":"<p>object WorkManagerHeapAnalyzer : EventListener</p> <p>When receiving a HeapDump event, starts a WorkManager worker that performs heap analysis.</p>"},{"location":"api/leakcanary/-work-manager-heap-analyzer/#functions","title":"Functions","text":"Name Summary onEvent open override fun onEvent(event: EventListener.Event)onEvent is always called from the thread the events are emitted from, which is documented for each event. This enables you to potentially block a chain of events, waiting for some pre work to be done."},{"location":"api/leakcanary/-work-manager-heap-analyzer/on-event/","title":"On event","text":"<p>//leakcanary/leakcanary/WorkManagerHeapAnalyzer/onEvent</p>"},{"location":"api/leakcanary/-work-manager-heap-analyzer/on-event/#onevent","title":"onEvent","text":"<p>open override fun onEvent(event: EventListener.Event)</p> <p>onEvent is always called from the thread the events are emitted from, which is documented for each event. This enables you to potentially block a chain of events, waiting for some pre work to be done.</p>"},{"location":"api/shark/","title":"Shark API","text":"<p>//leakcanary/shark</p>"},{"location":"api/shark/#package-shark","title":"Package shark","text":""},{"location":"api/shark/#types","title":"Types","text":"Name Summary AnalyzeCommand class AnalyzeCommand : CliktCommand AndroidBuildMirror class AndroidBuildMirror(val manufacturer: String, val sdkInt: Int, val id: String)Caches values from the android.os.Build class in the heap dump. Retrieve a cached instances via fromHeapGraph. AndroidMetadataExtractor object AndroidMetadataExtractor : MetadataExtractor AndroidObjectInspectors enum AndroidObjectInspectors : Enum&lt;AndroidObjectInspectors&gt; , ObjectInspectorA set of default ObjectInspectors that knows about common AOSP and library classes. AndroidReferenceMatchers enum AndroidReferenceMatchers : Enum&lt;AndroidReferenceMatchers&gt; AndroidReferenceMatchers values add ReferenceMatcher instances to a global list via their add method. A ReferenceMatcher is either a IgnoredReferenceMatcher or a LibraryLeakReferenceMatcher. AndroidResourceIdNames class AndroidResourceIdNames AndroidServices object AndroidServices ApplicationLeak data class ApplicationLeak(val leakTraces: List&lt;LeakTrace&gt;) : LeakA leak found by HeapAnalyzer in your application. AppSingletonInspector class AppSingletonInspector(singletonClasses: String) : ObjectInspectorInspector that automatically marks instances of the provided class names as not leaking because they\u2019re app wide singletons. ByteArraySourceProvider class ByteArraySourceProvider(byteArray: ByteArray) : DualSourceProvider CloseableHeapGraph interface CloseableHeapGraph : HeapGraph, CloseableA HeapGraph that should be closed after being used. ConstantMemoryMetricsDualSourceProvider class ConstantMemoryMetricsDualSourceProvider(realSourceProvider: DualSourceProvider) : DualSourceProviderCaptures IO read metrics without using much memory. DecoratedPath class DecoratedPath(delegate: Path) : Path DeobfuscateHprofCommand class DeobfuscateHprofCommand : CliktCommand DualSourceProvider interface DualSourceProvider : StreamingSourceProvider, RandomAccessSourceProviderBoth a StreamingSourceProvider and a RandomAccessSourceProvider DumpProcessCommand class DumpProcessCommand : CliktCommand FileSourceProvider class FileSourceProvider(file: File) : DualSourceProvider FilteringLeakingObjectFinder class FilteringLeakingObjectFinder(filters: List&lt;FilteringLeakingObjectFinder.LeakingObjectFilter&gt;) : LeakingObjectFinderFinds the objects that are leaking by scanning all objects in the heap dump and delegating the decision to a list of FilteringLeakingObjectFinder.LeakingObjectFilter FindLeakPaths class FindLeakPaths GcRoot sealed class GcRootA GcRoot as identified by HprofRecord.HeapDumpRecord.GcRootRecord in the heap dump. GraphContext class GraphContextIn memory store that can be used to store objects in a given HeapGraph instance. This is a simple MutableMap of String to Any, but with unsafe generics access. HeapAnalysis sealed class HeapAnalysis : SerializableThe result of an analysis performed by HeapAnalyzer, either a HeapAnalysisSuccess or a HeapAnalysisFailure. This class is serializable however there are no guarantees of forward compatibility. HeapAnalysisException class HeapAnalysisException(cause: Throwable) : RuntimeException HeapAnalysisFailure data class HeapAnalysisFailure(val heapDumpFile: File, val createdAtTimeMillis: Long, val dumpDurationMillis: Long = DUMP_DURATION_UNKNOWN, val analysisDurationMillis: Long, val exception: HeapAnalysisException) : HeapAnalysisThe analysis performed by HeapAnalyzer did not complete successfully. HeapAnalysisSuccess data class HeapAnalysisSuccess(val heapDumpFile: File, val createdAtTimeMillis: Long, val dumpDurationMillis: Long = DUMP_DURATION_UNKNOWN, val analysisDurationMillis: Long, val metadata: Map&lt;String, String&gt;, val applicationLeaks: List&lt;ApplicationLeak&gt;, val libraryLeaks: List&lt;LibraryLeak&gt;, val unreachableObjects: List&lt;LeakTraceObject&gt;) : HeapAnalysisThe result of a successful heap analysis performed by HeapAnalyzer. HeapAnalyzer class HeapAnalyzer(listener: OnAnalysisProgressListener)Analyzes heap dumps to look for leaks. HeapDumpRule class HeapDumpRule : ExternalResource HeapField class HeapField(val declaringClass: HeapObject.HeapClass, val name: String, val value: HeapValue)Represents a static field or an instance field. HeapGraph interface HeapGraphEnables navigation through the heap graph of objects. HeapObject sealed class HeapObjectAn object in the heap dump. HeapValue class HeapValue(val graph: HeapGraph, val holder: ValueHolder)Represents a value in the heap dump, which can be an object reference or a primitive type. HprofDeobfuscator class HprofDeobfuscatorConverts a Hprof file to another file with deobfuscated class and field names. HprofHeader data class HprofHeader(val heapDumpTimestamp: Long = System.currentTimeMillis(), val version: HprofVersion = HprofVersion.ANDROID, val identifierByteSize: Int = 4)Represents the header metadata of a Hprof file. HprofHeapGraph class HprofHeapGraph : CloseableHeapGraphA HeapGraph that reads from an Hprof file indexed by HprofIndex. HprofIndex class HprofIndexAn index on a Hprof file. See openHeapGraph. HprofPrimitiveArrayStripper class HprofPrimitiveArrayStripperConverts a Hprof file to another file with all primitive arrays replaced with arrays of zeroes, which can be useful to remove PII. Char arrays are handled slightly differently because 0 would be the null character so instead these become arrays of \u2018?\u2019. HprofRecord sealed class HprofRecordA Hprof record. These data structure map 1:1 with how records are written in hprof files. HprofRecordReader class HprofRecordReaderReads hprof content from an Okio BufferedSource. HprofRecordTag enum HprofRecordTag : Enum&lt;HprofRecordTag&gt; HprofVersion enum HprofVersion : Enum&lt;HprofVersion&gt; Supported hprof versions HprofWriter class HprofWriter : CloseableGenerates Hprof files. HprofWriterHelper class HprofWriterHelper(writer: HprofWriter) : Closeable IgnoredReferenceMatcher class IgnoredReferenceMatcher(val pattern: ReferencePattern) : ReferenceMatcherIgnoredReferenceMatcher should be used to match references that cannot ever create leaks. The shortest path finder will never go through matching references. InteractiveCommand class InteractiveCommand : CliktCommand JvmTestHeapDumper object JvmTestHeapDumper KeyedWeakReferenceFinder object KeyedWeakReferenceFinder : LeakingObjectFinderFinds all objects tracked by a KeyedWeakReference, ie all objects that were passed to ObjectWatcher.watch. Leak sealed class Leak : SerializableA leak found by HeapAnalyzer, either an ApplicationLeak or a LibraryLeak. LeakingObjectFinder fun interface LeakingObjectFinderFinds the objects that are leaking, for which Shark will compute leak traces. LeakTrace data class LeakTrace(val gcRootType: LeakTrace.GcRootType, val referencePath: List&lt;LeakTraceReference&gt;, val leakingObject: LeakTraceObject) : SerializableThe best strong reference path from a GC root to the leaking object. \"Best\" here means the shortest prioritized path. A large number of distinct paths can generally be found leading to a leaking object. Shark prioritizes paths that don\u2019t go through known LibraryLeakReferenceMatcher (because those are known to create leaks so it\u2019s more interesting to find other paths causing leaks), then it prioritize paths that don\u2019t go through java local gc roots (because those are harder to reason about). Taking those priorities into account, finding the shortest path means there are less LeakTraceReference that can be suspected to cause the leak. LeakTraceObject data class LeakTraceObject(val type: LeakTraceObject.ObjectType, val className: String, val labels: Set&lt;String&gt;, val leakingStatus: LeakTraceObject.LeakingStatus, val leakingStatusReason: String, val retainedHeapByteSize: Int?, val retainedObjectCount: Int?) : Serializable LeakTraceReference data class LeakTraceReference(val originObject: LeakTraceObject, val referenceType: LeakTraceReference.ReferenceType, val owningClassName: String, val referenceName: String) : SerializableA LeakTraceReference represents an origin LeakTraceObject and either a reference from that object to the LeakTraceObject in the next LeakTraceReference in LeakTrace.referencePath, or to LeakTrace.leakingObject if this is the last LeakTraceReference in LeakTrace.referencePath. LibraryLeak data class LibraryLeak(val leakTraces: List&lt;LeakTrace&gt;, val pattern: ReferencePattern, val description: String) : LeakA leak found by HeapAnalyzer, where the only path to the leaking object required going through a reference matched by pattern, as provided to a LibraryLeakReferenceMatcher instance. This is a known leak in library code that is beyond your control. LibraryLeakReferenceMatcher data class LibraryLeakReferenceMatcher(val pattern: ReferencePattern, val description: String = \"\", val patternApplies: (HeapGraph) -&gt; Boolean = { true }) : ReferenceMatcherLibraryLeakReferenceMatcher should be used to match references in library code that are known to create leaks and are beyond your control. The shortest path finder will only go through matching references after it has exhausted references that don\u2019t match, prioritizing finding an application leak over a known library leak. Library leaks will be reported as LibraryLeak instead of ApplicationLeak. MetadataExtractor fun interface MetadataExtractorExtracts metadata from a hprof to be reported in HeapAnalysisSuccess.metadata. Neo4JCommand class Neo4JCommand : CliktCommandExample commands: ObjectInspector fun interface ObjectInspectorProvides LeakCanary with insights about objects (classes, instances and arrays) found in the heap. inspect will be called for each object that LeakCanary wants to know more about. The implementation can then use the provided ObjectReporter to provide insights for that object. ObjectInspectors enum ObjectInspectors : Enum&lt;ObjectInspectors&gt; , ObjectInspectorA set of default ObjectInspectors that knows about common JDK objects. ObjectReporter class ObjectReporter(val heapObject: HeapObject)Enables ObjectInspector implementations to provide insights on heapObject, which is an object (class, instance or array) found in the heap. OnAnalysisProgressListener fun interface OnAnalysisProgressListenerReports progress from the HeapAnalyzer as they occur, as Step values. OnHprofRecordListener fun interface OnHprofRecordListenerListener passed in to StreamingHprofReader.readRecords, gets notified for each HprofRecord found in the heap dump which types is in the set of the recordTypes parameter passed to StreamingHprofReader.readRecords. OnHprofRecordTagListener fun interface OnHprofRecordTagListenerListener passed in to StreamingHprofReader.readRecords, gets notified for each HprofRecordTag found in the heap dump. PrimitiveType enum PrimitiveType : Enum&lt;PrimitiveType&gt; A primitive type in the prof. ProguardMapping class ProguardMapping ProguardMappingHelper class ProguardMappingHelper(proguardMapping: ProguardMapping) ProguardMappingReader class ProguardMappingReader(proguardMappingInputStream: InputStream) RandomAccessHprofReader class RandomAccessHprofReader : CloseableReads records in a Hprof source, one at a time with a specific position and size. Call openReaderFor to obtain a new instance. RandomAccessSource interface RandomAccessSource : Closeable RandomAccessSourceProvider fun interface RandomAccessSourceProviderCan open RandomAccessSource instances. ReferenceMatcher sealed class ReferenceMatcherUsed to pattern match known patterns of references in the heap, either to ignore them (IgnoredReferenceMatcher) or to mark them as library leaks (LibraryLeakReferenceMatcher). ReferencePattern sealed class ReferencePattern : SerializableA pattern that will match references for a given ReferenceMatcher. SharkCliCommand class SharkCliCommand : CliktCommand SharkLog object SharkLogCentral Logger for all Shark artifacts. Set logger to change where these logs go. StreamingHprofReader class StreamingHprofReaderReads the entire content of a Hprof source in one fell swoop. Call readerFor to obtain a new instance. StreamingRecordReaderAdapter class StreamingRecordReaderAdapter(streamingHprofReader: StreamingHprofReader)Wraps a StreamingHprofReader to provide a higher level API that streams HprofRecord instances. StreamingSourceProvider fun interface StreamingSourceProviderCan open Source instances. StripHprofCommand class StripHprofCommand : CliktCommand ThrowingCancelableFileSourceProvider class ThrowingCancelableFileSourceProvider(file: File, throwIfCanceled: Runnable) : DualSourceProviderA DualSourceProvider that invokes throwIfCanceled before every read, allowing cancellation of IO based work built on top by throwing an exception. ValueHolder sealed class ValueHolderA value in the heap dump, which can be a ReferenceHolder or a primitive type."},{"location":"api/shark/#functions","title":"Functions","text":"Name Summary asHprofBytes fun List&lt;HprofRecord&gt;.asHprofBytes(): DualSourceProvider create fun ProguardMapping.create(block: ProguardMappingHelper.() -&gt; Unit): ProguardMapping dump fun File.dump(block: HprofWriterHelper.() -&gt; Unit)fun dump(hprofHeader: HprofHeader = HprofHeader(), block: HprofWriterHelper.() -&gt; Unit): DualSourceProvider dumpToBytes fun dumpToBytes(hprofHeader: HprofHeader = HprofHeader(), block: HprofWriterHelper.() -&gt; Unit): ByteArray main fun main(args: Array&lt;String&gt;)"},{"location":"api/shark/#properties","title":"Properties","text":"Name Summary hexIdentityHashCode val HeapObject.HeapInstance.hexIdentityHashCode: String?The system identity hashCode represented as hex, or null if it couldn\u2019t be found. This is the string identifier you see when calling Object.toString() at runtime on a class that does not override its hashCode() method, e.g. com.example.MyThing@6bd57cf identityHashCode val HeapObject.HeapInstance.identityHashCode: Int?The system identity hash code, or null if it couldn\u2019t be found."},{"location":"api/shark/as-hprof-bytes/","title":"As hprof bytes","text":"<p>//leakcanary/shark/asHprofBytes</p>"},{"location":"api/shark/as-hprof-bytes/#ashprofbytes","title":"asHprofBytes","text":"<p>fun List&lt;HprofRecord&gt;.asHprofBytes(): DualSourceProvider</p>"},{"location":"api/shark/create/","title":"Create","text":"<p>//leakcanary/shark/create</p>"},{"location":"api/shark/create/#create","title":"create","text":"<p>fun ProguardMapping.create(block: ProguardMappingHelper.() -&gt; Unit): ProguardMapping</p>"},{"location":"api/shark/dump-to-bytes/","title":"Dump to bytes","text":"<p>//leakcanary/shark/dumpToBytes</p>"},{"location":"api/shark/dump-to-bytes/#dumptobytes","title":"dumpToBytes","text":"<p>fun dumpToBytes(hprofHeader: HprofHeader = HprofHeader(), block: HprofWriterHelper.() -&gt; Unit): ByteArray</p>"},{"location":"api/shark/dump/","title":"Dump","text":"<p>//leakcanary/shark/dump</p>"},{"location":"api/shark/dump/#dump","title":"dump","text":"<p>fun File.dump(block: HprofWriterHelper.() -&gt; Unit)</p> <p>fun dump(hprofHeader: HprofHeader = HprofHeader(), block: HprofWriterHelper.() -&gt; Unit): DualSourceProvider</p>"},{"location":"api/shark/hex-identity-hash-code/","title":"Hex identity hash code","text":"<p>//leakcanary/shark/hexIdentityHashCode</p>"},{"location":"api/shark/hex-identity-hash-code/#hexidentityhashcode","title":"hexIdentityHashCode","text":"<p>val HeapObject.HeapInstance.hexIdentityHashCode: String?</p> <p>The system identity hashCode represented as hex, or null if it couldn\u2019t be found. This is the string identifier you see when calling Object.toString() at runtime on a class that does not override its hashCode() method, e.g. com.example.MyThing@6bd57cf</p>"},{"location":"api/shark/identity-hash-code/","title":"Identity hash code","text":"<p>//leakcanary/shark/identityHashCode</p>"},{"location":"api/shark/identity-hash-code/#identityhashcode","title":"identityHashCode","text":"<p>val HeapObject.HeapInstance.identityHashCode: Int?</p> <p>The system identity hash code, or null if it couldn\u2019t be found.</p> <p>Based on the Object.identityHashCode implementation in AOSP.</p> <p>Backing field shadow$monitor was added in API 24. https://cs.android.com/android/_/android/platform/libcore/+ /de626ec8a109ea18283d96c720cc57e2f32f67fa:ojluni/src/main/java/java/lang/Object.java; dlc=ba7cc9f5357c323a1006119a20ce025fd4c57fd2</p>"},{"location":"api/shark/main/","title":"Main","text":"<p>//leakcanary/shark/main</p>"},{"location":"api/shark/main/#main","title":"main","text":"<p>fun main(args: Array&lt;String&gt;)</p>"},{"location":"api/shark/-analyze-command/","title":"Index","text":"<p>//leakcanary/shark/AnalyzeCommand</p>"},{"location":"api/shark/-analyze-command/#analyzecommand","title":"AnalyzeCommand","text":"<p>class AnalyzeCommand : CliktCommand</p>"},{"location":"api/shark/-analyze-command/#constructors","title":"Constructors","text":"AnalyzeCommand fun AnalyzeCommand()"},{"location":"api/shark/-analyze-command/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-analyze-command/#functions","title":"Functions","text":"Name Summary aliases open fun aliases(): Map&lt;String, List&lt;String&gt;&gt; getFormattedHelp open fun getFormattedHelp(): String getFormattedUsage open fun getFormattedUsage(): String issueMessage fun issueMessage(message: String) main fun main(argv: Array&lt;String&gt;)fun main(argv: List&lt;String&gt;) parse fun parse(argv: Array&lt;String&gt;, parentContext: Context?)fun parse(argv: List&lt;String&gt;, parentContext: Context?) registerArgument fun registerArgument(argument: Argument) registeredSubcommandNames fun registeredSubcommandNames(): List&lt;String&gt; registerOption open override fun registerOption(option: GroupableOption)fun registerOption(option: Option) registerOptionGroup fun registerOptionGroup(group: ParameterGroup) run open override fun run() toString open override fun toString(): String"},{"location":"api/shark/-analyze-command/#properties","title":"Properties","text":"Name Summary commandHelp val commandHelp: String commandHelpEpilog val commandHelpEpilog: String commandName val commandName: String context val context: Context helpTags val helpTags: Map&lt;String, String&gt; invokeWithoutSubcommand val invokeWithoutSubcommand: Boolean messages val messages: List&lt;String&gt; printHelpOnEmptyArgs val printHelpOnEmptyArgs: Boolean"},{"location":"api/shark/-analyze-command/-analyze-command/","title":"analyze command","text":"<p>//leakcanary/shark/AnalyzeCommand/AnalyzeCommand</p>"},{"location":"api/shark/-analyze-command/-analyze-command/#analyzecommand","title":"AnalyzeCommand","text":"<p>fun AnalyzeCommand()</p>"},{"location":"api/shark/-analyze-command/run/","title":"Run","text":"<p>//leakcanary/shark/AnalyzeCommand/run</p>"},{"location":"api/shark/-analyze-command/run/#run","title":"run","text":"<p>open override fun run()</p>"},{"location":"api/shark/-analyze-command/-companion/","title":"Index","text":"<p>//leakcanary/shark/AnalyzeCommand/Companion</p>"},{"location":"api/shark/-analyze-command/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-analyze-command/-companion/#functions","title":"Functions","text":"Name Summary analyze fun CliktCommand.analyze(heapDumpFile: File, proguardMappingFile: File?)"},{"location":"api/shark/-analyze-command/-companion/analyze/","title":"Analyze","text":"<p>//leakcanary/shark/AnalyzeCommand/Companion/analyze</p>"},{"location":"api/shark/-analyze-command/-companion/analyze/#analyze","title":"analyze","text":"<p>fun CliktCommand.analyze(heapDumpFile: File, proguardMappingFile: File?)</p>"},{"location":"api/shark/-android-build-mirror/","title":"Index","text":"<p>//leakcanary/shark/AndroidBuildMirror</p>"},{"location":"api/shark/-android-build-mirror/#androidbuildmirror","title":"AndroidBuildMirror","text":"<p>class AndroidBuildMirror(val manufacturer: String, val sdkInt: Int, val id: String)</p> <p>Caches values from the android.os.Build class in the heap dump. Retrieve a cached instances via fromHeapGraph.</p>"},{"location":"api/shark/-android-build-mirror/#constructors","title":"Constructors","text":"AndroidBuildMirror fun AndroidBuildMirror(manufacturer: String, sdkInt: Int, id: String)"},{"location":"api/shark/-android-build-mirror/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-android-build-mirror/#properties","title":"Properties","text":"Name Summary id val id: StringValue of android.os.Build.ID manufacturer val manufacturer: StringValue of android.os.Build.MANUFACTURER sdkInt val sdkInt: IntValue of android.os.Build.VERSION.SDK_INT"},{"location":"api/shark/-android-build-mirror/-android-build-mirror/","title":"android build mirror","text":"<p>//leakcanary/shark/AndroidBuildMirror/AndroidBuildMirror</p>"},{"location":"api/shark/-android-build-mirror/-android-build-mirror/#androidbuildmirror","title":"AndroidBuildMirror","text":"<p>fun AndroidBuildMirror(manufacturer: String, sdkInt: Int, id: String)</p>"},{"location":"api/shark/-android-build-mirror/id/","title":"Id","text":"<p>//leakcanary/shark/AndroidBuildMirror/id</p>"},{"location":"api/shark/-android-build-mirror/id/#id","title":"id","text":"<p>val id: String</p> <p>Value of android.os.Build.ID</p>"},{"location":"api/shark/-android-build-mirror/manufacturer/","title":"Manufacturer","text":"<p>//leakcanary/shark/AndroidBuildMirror/manufacturer</p>"},{"location":"api/shark/-android-build-mirror/manufacturer/#manufacturer","title":"manufacturer","text":"<p>val manufacturer: String</p> <p>Value of android.os.Build.MANUFACTURER</p>"},{"location":"api/shark/-android-build-mirror/sdk-int/","title":"Sdk int","text":"<p>//leakcanary/shark/AndroidBuildMirror/sdkInt</p>"},{"location":"api/shark/-android-build-mirror/sdk-int/#sdkint","title":"sdkInt","text":"<p>val sdkInt: Int</p> <p>Value of android.os.Build.VERSION.SDK_INT</p>"},{"location":"api/shark/-android-build-mirror/-companion/","title":"Index","text":"<p>//leakcanary/shark/AndroidBuildMirror/Companion</p>"},{"location":"api/shark/-android-build-mirror/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-android-build-mirror/-companion/#functions","title":"Functions","text":"Name Summary fromHeapGraph fun fromHeapGraph(graph: HeapGraph): AndroidBuildMirror"},{"location":"api/shark/-android-build-mirror/-companion/from-heap-graph/","title":"From heap graph","text":"<p>//leakcanary/shark/AndroidBuildMirror/Companion/fromHeapGraph</p>"},{"location":"api/shark/-android-build-mirror/-companion/from-heap-graph/#fromheapgraph","title":"fromHeapGraph","text":"<p>fun fromHeapGraph(graph: HeapGraph): AndroidBuildMirror</p>"},{"location":"api/shark/-android-build-mirror/-companion/from-heap-graph/#see-also","title":"See also","text":"<p>main</p> shark.AndroidBuildMirror"},{"location":"api/shark/-android-metadata-extractor/","title":"Index","text":"<p>//leakcanary/shark/AndroidMetadataExtractor</p>"},{"location":"api/shark/-android-metadata-extractor/#androidmetadataextractor","title":"AndroidMetadataExtractor","text":"<p>object AndroidMetadataExtractor : MetadataExtractor</p>"},{"location":"api/shark/-android-metadata-extractor/#functions","title":"Functions","text":"Name Summary extractMetadata open override fun extractMetadata(graph: HeapGraph): Map&lt;String, String&gt;"},{"location":"api/shark/-android-metadata-extractor/extract-metadata/","title":"Extract metadata","text":"<p>//leakcanary/shark/AndroidMetadataExtractor/extractMetadata</p>"},{"location":"api/shark/-android-metadata-extractor/extract-metadata/#extractmetadata","title":"extractMetadata","text":"<p>open override fun extractMetadata(graph: HeapGraph): Map&lt;String, String&gt;</p>"},{"location":"api/shark/-android-object-inspectors/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors</p>"},{"location":"api/shark/-android-object-inspectors/#androidobjectinspectors","title":"AndroidObjectInspectors","text":"<p>enum AndroidObjectInspectors : Enum&lt;AndroidObjectInspectors&gt; , ObjectInspector</p> <p>A set of default ObjectInspectors that knows about common AOSP and library classes.</p> <p>These are heuristics based on our experience and knowledge of AOSP and various library internals. We only make a decision if we\u2019re reasonably sure the state of an object is unlikely to be the result of a programmer mistake.</p> <p>For example, no matter how many mistakes we make in our code, the value of Activity.mDestroy will not be influenced by those mistakes.</p> <p>Most developers should use the entire set of default ObjectInspector by calling appDefaults, unless there\u2019s a bug and you temporarily want to remove an inspector.</p>"},{"location":"api/shark/-android-object-inspectors/#entries","title":"Entries","text":"STUB STUB() LIFECYCLE_REGISTRY LIFECYCLE_REGISTRY() OBJECT_ANIMATOR OBJECT_ANIMATOR() ANIMATOR ANIMATOR() COMPOSITION_IMPL COMPOSITION_IMPL() RECOMPOSER RECOMPOSER() TOAST TOAST() MESSAGE MESSAGE() WINDOW WINDOW() VIEW_ROOT_IMPL VIEW_ROOT_IMPL() MAIN_THREAD MAIN_THREAD() COORDINATOR COORDINATOR() MORTAR_SCOPE MORTAR_SCOPE() MORTAR_PRESENTER MORTAR_PRESENTER() LOADED_APK LOADED_APK() MESSAGE_QUEUE MESSAGE_QUEUE() ANDROIDX_FRAGMENT ANDROIDX_FRAGMENT() SUPPORT_FRAGMENT SUPPORT_FRAGMENT() FRAGMENT FRAGMENT() INPUT_METHOD_MANAGER INPUT_METHOD_MANAGER() APPLICATION APPLICATION() ACTIVITY_THREAD ACTIVITY_THREAD() DIALOG DIALOG() CONTEXT_IMPL CONTEXT_IMPL() APPLICATION_PACKAGE_MANAGER APPLICATION_PACKAGE_MANAGER() CONTEXT_WRAPPER CONTEXT_WRAPPER() CONTEXT_FIELD CONTEXT_FIELD() SERVICE SERVICE() ACTIVITY ACTIVITY() EDITOR EDITOR() VIEW VIEW()"},{"location":"api/shark/-android-object-inspectors/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-android-object-inspectors/#functions","title":"Functions","text":"Name Summary inspect abstract fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/ACTIVITY</p>"},{"location":"api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y/#activity","title":"ACTIVITY","text":"<p>ACTIVITY()</p>"},{"location":"api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/ACTIVITY/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y_-t-h-r-e-a-d/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/ACTIVITY_THREAD</p>"},{"location":"api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y_-t-h-r-e-a-d/#activity_thread","title":"ACTIVITY_THREAD","text":"<p>ACTIVITY_THREAD()</p>"},{"location":"api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y_-t-h-r-e-a-d/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y_-t-h-r-e-a-d/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y_-t-h-r-e-a-d/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/ACTIVITY_THREAD/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y_-t-h-r-e-a-d/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-a-n-d-r-o-i-d-x_-f-r-a-g-m-e-n-t/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/ANDROIDX_FRAGMENT</p>"},{"location":"api/shark/-android-object-inspectors/-a-n-d-r-o-i-d-x_-f-r-a-g-m-e-n-t/#androidx_fragment","title":"ANDROIDX_FRAGMENT","text":"<p>ANDROIDX_FRAGMENT()</p>"},{"location":"api/shark/-android-object-inspectors/-a-n-d-r-o-i-d-x_-f-r-a-g-m-e-n-t/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-a-n-d-r-o-i-d-x_-f-r-a-g-m-e-n-t/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-a-n-d-r-o-i-d-x_-f-r-a-g-m-e-n-t/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/ANDROIDX_FRAGMENT/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-a-n-d-r-o-i-d-x_-f-r-a-g-m-e-n-t/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-a-n-i-m-a-t-o-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/ANIMATOR</p>"},{"location":"api/shark/-android-object-inspectors/-a-n-i-m-a-t-o-r/#animator","title":"ANIMATOR","text":"<p>ANIMATOR()</p>"},{"location":"api/shark/-android-object-inspectors/-a-n-i-m-a-t-o-r/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-a-n-i-m-a-t-o-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-a-n-i-m-a-t-o-r/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/ANIMATOR/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-a-n-i-m-a-t-o-r/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/APPLICATION</p>"},{"location":"api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n/#application","title":"APPLICATION","text":"<p>APPLICATION()</p>"},{"location":"api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/APPLICATION/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n_-p-a-c-k-a-g-e_-m-a-n-a-g-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/APPLICATION_PACKAGE_MANAGER</p>"},{"location":"api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n_-p-a-c-k-a-g-e_-m-a-n-a-g-e-r/#application_package_manager","title":"APPLICATION_PACKAGE_MANAGER","text":"<p>APPLICATION_PACKAGE_MANAGER()</p>"},{"location":"api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n_-p-a-c-k-a-g-e_-m-a-n-a-g-e-r/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n_-p-a-c-k-a-g-e_-m-a-n-a-g-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n_-p-a-c-k-a-g-e_-m-a-n-a-g-e-r/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/APPLICATION_PACKAGE_MANAGER/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n_-p-a-c-k-a-g-e_-m-a-n-a-g-e-r/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-c-o-m-p-o-s-i-t-i-o-n_-i-m-p-l/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/COMPOSITION_IMPL</p>"},{"location":"api/shark/-android-object-inspectors/-c-o-m-p-o-s-i-t-i-o-n_-i-m-p-l/#composition_impl","title":"COMPOSITION_IMPL","text":"<p>COMPOSITION_IMPL()</p>"},{"location":"api/shark/-android-object-inspectors/-c-o-m-p-o-s-i-t-i-o-n_-i-m-p-l/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-c-o-m-p-o-s-i-t-i-o-n_-i-m-p-l/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-c-o-m-p-o-s-i-t-i-o-n_-i-m-p-l/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/COMPOSITION_IMPL/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-c-o-m-p-o-s-i-t-i-o-n_-i-m-p-l/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-f-i-e-l-d/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/CONTEXT_FIELD</p>"},{"location":"api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-f-i-e-l-d/#context_field","title":"CONTEXT_FIELD","text":"<p>CONTEXT_FIELD()</p>"},{"location":"api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-f-i-e-l-d/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-f-i-e-l-d/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-f-i-e-l-d/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/CONTEXT_FIELD/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-f-i-e-l-d/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-i-m-p-l/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/CONTEXT_IMPL</p>"},{"location":"api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-i-m-p-l/#context_impl","title":"CONTEXT_IMPL","text":"<p>CONTEXT_IMPL()</p>"},{"location":"api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-i-m-p-l/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-i-m-p-l/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-i-m-p-l/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/CONTEXT_IMPL/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-i-m-p-l/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-w-r-a-p-p-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/CONTEXT_WRAPPER</p>"},{"location":"api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-w-r-a-p-p-e-r/#context_wrapper","title":"CONTEXT_WRAPPER","text":"<p>CONTEXT_WRAPPER()</p>"},{"location":"api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-w-r-a-p-p-e-r/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-w-r-a-p-p-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-w-r-a-p-p-e-r/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/CONTEXT_WRAPPER/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-w-r-a-p-p-e-r/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-c-o-o-r-d-i-n-a-t-o-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/COORDINATOR</p>"},{"location":"api/shark/-android-object-inspectors/-c-o-o-r-d-i-n-a-t-o-r/#coordinator","title":"COORDINATOR","text":"<p>COORDINATOR()</p>"},{"location":"api/shark/-android-object-inspectors/-c-o-o-r-d-i-n-a-t-o-r/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-c-o-o-r-d-i-n-a-t-o-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-c-o-o-r-d-i-n-a-t-o-r/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/COORDINATOR/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-c-o-o-r-d-i-n-a-t-o-r/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-companion/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/Companion</p>"},{"location":"api/shark/-android-object-inspectors/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-android-object-inspectors/-companion/#functions","title":"Functions","text":"Name Summary createLeakingObjectFilters fun createLeakingObjectFilters(inspectors: Set&lt;AndroidObjectInspectors&gt;): List&lt;FilteringLeakingObjectFinder.LeakingObjectFilter&gt;Creates a list of LeakingObjectFilter based on the passed in AndroidObjectInspectors."},{"location":"api/shark/-android-object-inspectors/-companion/#properties","title":"Properties","text":"Name Summary appDefaults val appDefaults: List&lt;ObjectInspector&gt; appLeakingObjectFilters val appLeakingObjectFilters: List&lt;FilteringLeakingObjectFinder.LeakingObjectFilter&gt;Returns a list of LeakingObjectFilter suitable for apps."},{"location":"api/shark/-android-object-inspectors/-companion/app-defaults/","title":"App defaults","text":"<p>//leakcanary/shark/AndroidObjectInspectors/Companion/appDefaults</p>"},{"location":"api/shark/-android-object-inspectors/-companion/app-defaults/#appdefaults","title":"appDefaults","text":"<p>val appDefaults: List&lt;ObjectInspector&gt;</p>"},{"location":"api/shark/-android-object-inspectors/-companion/app-defaults/#see-also","title":"See also","text":"<p>main</p> shark.AndroidObjectInspectors"},{"location":"api/shark/-android-object-inspectors/-companion/app-leaking-object-filters/","title":"App leaking object filters","text":"<p>//leakcanary/shark/AndroidObjectInspectors/Companion/appLeakingObjectFilters</p>"},{"location":"api/shark/-android-object-inspectors/-companion/app-leaking-object-filters/#appleakingobjectfilters","title":"appLeakingObjectFilters","text":"<p>val appLeakingObjectFilters: List&lt;FilteringLeakingObjectFinder.LeakingObjectFilter&gt;</p> <p>Returns a list of LeakingObjectFilter suitable for apps.</p>"},{"location":"api/shark/-android-object-inspectors/-companion/create-leaking-object-filters/","title":"Create leaking object filters","text":"<p>//leakcanary/shark/AndroidObjectInspectors/Companion/createLeakingObjectFilters</p>"},{"location":"api/shark/-android-object-inspectors/-companion/create-leaking-object-filters/#createleakingobjectfilters","title":"createLeakingObjectFilters","text":"<p>fun createLeakingObjectFilters(inspectors: Set&lt;AndroidObjectInspectors&gt;): List&lt;FilteringLeakingObjectFinder.LeakingObjectFilter&gt;</p> <p>Creates a list of LeakingObjectFilter based on the passed in AndroidObjectInspectors.</p>"},{"location":"api/shark/-android-object-inspectors/-d-i-a-l-o-g/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/DIALOG</p>"},{"location":"api/shark/-android-object-inspectors/-d-i-a-l-o-g/#dialog","title":"DIALOG","text":"<p>DIALOG()</p>"},{"location":"api/shark/-android-object-inspectors/-d-i-a-l-o-g/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-d-i-a-l-o-g/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-d-i-a-l-o-g/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/DIALOG/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-d-i-a-l-o-g/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-e-d-i-t-o-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/EDITOR</p>"},{"location":"api/shark/-android-object-inspectors/-e-d-i-t-o-r/#editor","title":"EDITOR","text":"<p>EDITOR()</p>"},{"location":"api/shark/-android-object-inspectors/-e-d-i-t-o-r/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-e-d-i-t-o-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-e-d-i-t-o-r/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/EDITOR/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-e-d-i-t-o-r/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-f-r-a-g-m-e-n-t/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/FRAGMENT</p>"},{"location":"api/shark/-android-object-inspectors/-f-r-a-g-m-e-n-t/#fragment","title":"FRAGMENT","text":"<p>FRAGMENT()</p>"},{"location":"api/shark/-android-object-inspectors/-f-r-a-g-m-e-n-t/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-f-r-a-g-m-e-n-t/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-f-r-a-g-m-e-n-t/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/FRAGMENT/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-f-r-a-g-m-e-n-t/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-i-n-p-u-t_-m-e-t-h-o-d_-m-a-n-a-g-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/INPUT_METHOD_MANAGER</p>"},{"location":"api/shark/-android-object-inspectors/-i-n-p-u-t_-m-e-t-h-o-d_-m-a-n-a-g-e-r/#input_method_manager","title":"INPUT_METHOD_MANAGER","text":"<p>INPUT_METHOD_MANAGER()</p>"},{"location":"api/shark/-android-object-inspectors/-i-n-p-u-t_-m-e-t-h-o-d_-m-a-n-a-g-e-r/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-i-n-p-u-t_-m-e-t-h-o-d_-m-a-n-a-g-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-i-n-p-u-t_-m-e-t-h-o-d_-m-a-n-a-g-e-r/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/INPUT_METHOD_MANAGER/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-i-n-p-u-t_-m-e-t-h-o-d_-m-a-n-a-g-e-r/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-l-i-f-e-c-y-c-l-e_-r-e-g-i-s-t-r-y/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/LIFECYCLE_REGISTRY</p>"},{"location":"api/shark/-android-object-inspectors/-l-i-f-e-c-y-c-l-e_-r-e-g-i-s-t-r-y/#lifecycle_registry","title":"LIFECYCLE_REGISTRY","text":"<p>LIFECYCLE_REGISTRY()</p>"},{"location":"api/shark/-android-object-inspectors/-l-i-f-e-c-y-c-l-e_-r-e-g-i-s-t-r-y/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-l-i-f-e-c-y-c-l-e_-r-e-g-i-s-t-r-y/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-l-i-f-e-c-y-c-l-e_-r-e-g-i-s-t-r-y/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/LIFECYCLE_REGISTRY/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-l-i-f-e-c-y-c-l-e_-r-e-g-i-s-t-r-y/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-l-o-a-d-e-d_-a-p-k/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/LOADED_APK</p>"},{"location":"api/shark/-android-object-inspectors/-l-o-a-d-e-d_-a-p-k/#loaded_apk","title":"LOADED_APK","text":"<p>LOADED_APK()</p>"},{"location":"api/shark/-android-object-inspectors/-l-o-a-d-e-d_-a-p-k/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-l-o-a-d-e-d_-a-p-k/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-l-o-a-d-e-d_-a-p-k/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/LOADED_APK/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-l-o-a-d-e-d_-a-p-k/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-m-a-i-n_-t-h-r-e-a-d/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/MAIN_THREAD</p>"},{"location":"api/shark/-android-object-inspectors/-m-a-i-n_-t-h-r-e-a-d/#main_thread","title":"MAIN_THREAD","text":"<p>MAIN_THREAD()</p>"},{"location":"api/shark/-android-object-inspectors/-m-a-i-n_-t-h-r-e-a-d/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-m-a-i-n_-t-h-r-e-a-d/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-m-a-i-n_-t-h-r-e-a-d/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/MAIN_THREAD/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-m-a-i-n_-t-h-r-e-a-d/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-m-e-s-s-a-g-e/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/MESSAGE</p>"},{"location":"api/shark/-android-object-inspectors/-m-e-s-s-a-g-e/#message","title":"MESSAGE","text":"<p>MESSAGE()</p>"},{"location":"api/shark/-android-object-inspectors/-m-e-s-s-a-g-e/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-m-e-s-s-a-g-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-m-e-s-s-a-g-e/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/MESSAGE/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-m-e-s-s-a-g-e/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-m-e-s-s-a-g-e_-q-u-e-u-e/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/MESSAGE_QUEUE</p>"},{"location":"api/shark/-android-object-inspectors/-m-e-s-s-a-g-e_-q-u-e-u-e/#message_queue","title":"MESSAGE_QUEUE","text":"<p>MESSAGE_QUEUE()</p>"},{"location":"api/shark/-android-object-inspectors/-m-e-s-s-a-g-e_-q-u-e-u-e/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-m-e-s-s-a-g-e_-q-u-e-u-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-m-e-s-s-a-g-e_-q-u-e-u-e/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/MESSAGE_QUEUE/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-m-e-s-s-a-g-e_-q-u-e-u-e/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-m-o-r-t-a-r_-p-r-e-s-e-n-t-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/MORTAR_PRESENTER</p>"},{"location":"api/shark/-android-object-inspectors/-m-o-r-t-a-r_-p-r-e-s-e-n-t-e-r/#mortar_presenter","title":"MORTAR_PRESENTER","text":"<p>MORTAR_PRESENTER()</p>"},{"location":"api/shark/-android-object-inspectors/-m-o-r-t-a-r_-p-r-e-s-e-n-t-e-r/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-m-o-r-t-a-r_-p-r-e-s-e-n-t-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-m-o-r-t-a-r_-p-r-e-s-e-n-t-e-r/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/MORTAR_PRESENTER/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-m-o-r-t-a-r_-p-r-e-s-e-n-t-e-r/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-m-o-r-t-a-r_-s-c-o-p-e/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/MORTAR_SCOPE</p>"},{"location":"api/shark/-android-object-inspectors/-m-o-r-t-a-r_-s-c-o-p-e/#mortar_scope","title":"MORTAR_SCOPE","text":"<p>MORTAR_SCOPE()</p>"},{"location":"api/shark/-android-object-inspectors/-m-o-r-t-a-r_-s-c-o-p-e/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-m-o-r-t-a-r_-s-c-o-p-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-m-o-r-t-a-r_-s-c-o-p-e/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/MORTAR_SCOPE/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-m-o-r-t-a-r_-s-c-o-p-e/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-o-b-j-e-c-t_-a-n-i-m-a-t-o-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/OBJECT_ANIMATOR</p>"},{"location":"api/shark/-android-object-inspectors/-o-b-j-e-c-t_-a-n-i-m-a-t-o-r/#object_animator","title":"OBJECT_ANIMATOR","text":"<p>OBJECT_ANIMATOR()</p>"},{"location":"api/shark/-android-object-inspectors/-o-b-j-e-c-t_-a-n-i-m-a-t-o-r/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-o-b-j-e-c-t_-a-n-i-m-a-t-o-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-o-b-j-e-c-t_-a-n-i-m-a-t-o-r/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/OBJECT_ANIMATOR/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-o-b-j-e-c-t_-a-n-i-m-a-t-o-r/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-r-e-c-o-m-p-o-s-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/RECOMPOSER</p>"},{"location":"api/shark/-android-object-inspectors/-r-e-c-o-m-p-o-s-e-r/#recomposer","title":"RECOMPOSER","text":"<p>RECOMPOSER()</p>"},{"location":"api/shark/-android-object-inspectors/-r-e-c-o-m-p-o-s-e-r/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-r-e-c-o-m-p-o-s-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-r-e-c-o-m-p-o-s-e-r/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/RECOMPOSER/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-r-e-c-o-m-p-o-s-e-r/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-s-e-r-v-i-c-e/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/SERVICE</p>"},{"location":"api/shark/-android-object-inspectors/-s-e-r-v-i-c-e/#service","title":"SERVICE","text":"<p>SERVICE()</p>"},{"location":"api/shark/-android-object-inspectors/-s-e-r-v-i-c-e/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-s-e-r-v-i-c-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-s-e-r-v-i-c-e/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/SERVICE/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-s-e-r-v-i-c-e/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-s-t-u-b/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/STUB</p>"},{"location":"api/shark/-android-object-inspectors/-s-t-u-b/#stub","title":"STUB","text":"<p>STUB()</p>"},{"location":"api/shark/-android-object-inspectors/-s-t-u-b/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-s-t-u-b/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-s-t-u-b/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/STUB/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-s-t-u-b/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-s-u-p-p-o-r-t_-f-r-a-g-m-e-n-t/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/SUPPORT_FRAGMENT</p>"},{"location":"api/shark/-android-object-inspectors/-s-u-p-p-o-r-t_-f-r-a-g-m-e-n-t/#support_fragment","title":"SUPPORT_FRAGMENT","text":"<p>SUPPORT_FRAGMENT()</p>"},{"location":"api/shark/-android-object-inspectors/-s-u-p-p-o-r-t_-f-r-a-g-m-e-n-t/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-s-u-p-p-o-r-t_-f-r-a-g-m-e-n-t/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-s-u-p-p-o-r-t_-f-r-a-g-m-e-n-t/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/SUPPORT_FRAGMENT/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-s-u-p-p-o-r-t_-f-r-a-g-m-e-n-t/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-t-o-a-s-t/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/TOAST</p>"},{"location":"api/shark/-android-object-inspectors/-t-o-a-s-t/#toast","title":"TOAST","text":"<p>TOAST()</p>"},{"location":"api/shark/-android-object-inspectors/-t-o-a-s-t/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-t-o-a-s-t/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-t-o-a-s-t/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/TOAST/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-t-o-a-s-t/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-v-i-e-w/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/VIEW</p>"},{"location":"api/shark/-android-object-inspectors/-v-i-e-w/#view","title":"VIEW","text":"<p>VIEW()</p>"},{"location":"api/shark/-android-object-inspectors/-v-i-e-w/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-v-i-e-w/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-v-i-e-w/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/VIEW/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-v-i-e-w/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-v-i-e-w_-r-o-o-t_-i-m-p-l/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/VIEW_ROOT_IMPL</p>"},{"location":"api/shark/-android-object-inspectors/-v-i-e-w_-r-o-o-t_-i-m-p-l/#view_root_impl","title":"VIEW_ROOT_IMPL","text":"<p>VIEW_ROOT_IMPL()</p>"},{"location":"api/shark/-android-object-inspectors/-v-i-e-w_-r-o-o-t_-i-m-p-l/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-v-i-e-w_-r-o-o-t_-i-m-p-l/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-v-i-e-w_-r-o-o-t_-i-m-p-l/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/VIEW_ROOT_IMPL/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-v-i-e-w_-r-o-o-t_-i-m-p-l/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-w-i-n-d-o-w/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/WINDOW</p>"},{"location":"api/shark/-android-object-inspectors/-w-i-n-d-o-w/#window","title":"WINDOW","text":"<p>WINDOW()</p>"},{"location":"api/shark/-android-object-inspectors/-w-i-n-d-o-w/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-w-i-n-d-o-w/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-w-i-n-d-o-w/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/WINDOW/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-w-i-n-d-o-w/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-reference-matchers/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers</p>"},{"location":"api/shark/-android-reference-matchers/#androidreferencematchers","title":"AndroidReferenceMatchers","text":"<p>enum AndroidReferenceMatchers : Enum&lt;AndroidReferenceMatchers&gt; </p> <p>AndroidReferenceMatchers values add ReferenceMatcher instances to a global list via their add method. A ReferenceMatcher is either a IgnoredReferenceMatcher or a LibraryLeakReferenceMatcher.</p> <p>AndroidReferenceMatchers is used to build the list of known references that cannot ever create leaks (via IgnoredReferenceMatcher) as well as the list of known leaks in the Android Framework and\u00a0in manufacturer specific Android implementations.</p> <p>This class is a work in progress. You can help by reporting leak traces that seem to be caused by the Android SDK, here: https://github.com/square/leakcanary/issues/new</p> <p>We filter on SDK versions and Manufacturers because many of those leaks are specific to a given manufacturer implementation, they usually share their builds across multiple models, and the leaks eventually get fixed in newer versions.</p> <p>Most app developers should use appDefaults. However, you can also use a subset of AndroidReferenceMatchers by creating an EnumSet that matches your needs and calling buildKnownReferences.</p>"},{"location":"api/shark/-android-reference-matchers/#entries","title":"Entries","text":"EVENT_RECEIVER__MMESSAGE_QUEUE EVENT_RECEIVER__MMESSAGE_QUEUE() LEAK_CANARY_INTERNAL LEAK_CANARY_INTERNAL() LEAK_CANARY_HEAP_DUMPER LEAK_CANARY_HEAP_DUMPER() LEAK_CANARY_THREAD LEAK_CANARY_THREAD() MAIN MAIN() FINALIZER_WATCHDOG_DAEMON FINALIZER_WATCHDOG_DAEMON() REFERENCES REFERENCES() XIAMI__RESOURCES_IMPL XIAMI__RESOURCES_IMPL() RAZER_TEXT_KEY_LISTENER__MCONTEXT RAZER_TEXT_KEY_LISTENER__MCONTEXT() PERF_MONITOR_LAST_CALLBACK PERF_MONITOR_LAST_CALLBACK() OEM_SCENE_CALL_BLOCKER OEM_SCENE_CALL_BLOCKER() EXTENDED_STATUS_BAR_MANAGER EXTENDED_STATUS_BAR_MANAGER() DEVICE_POLICY_MANAGER__SETTINGS_OBSERVER DEVICE_POLICY_MANAGER__SETTINGS_OBSERVER() INSTRUMENTATION_RECOMMEND_ACTIVITY INSTRUMENTATION_RECOMMEND_ACTIVITY() SYSTEM_SENSOR_MANAGER__MAPPCONTEXTIMPL SYSTEM_SENSOR_MANAGER__MAPPCONTEXTIMPL() MAPPER_CLIENT MAPPER_CLIENT() IMM_LAST_FOCUS_VIEW IMM_LAST_FOCUS_VIEW() SMART_COVER_MANAGER SMART_COVER_MANAGER() LGCONTEXT__MCONTEXT LGCONTEXT__MCONTEXT() BUBBLE_POPUP_HELPER__SHELPER BUBBLE_POPUP_HELPER__SHELPER() GESTURE_BOOST_MANAGER GESTURE_BOOST_MANAGER() IMM_CURRENT_INPUT_CONNECTION IMM_CURRENT_INPUT_CONNECTION() MULTI_WINDOW_DECOR_SUPPORT__MWINDOW MULTI_WINDOW_DECOR_SUPPORT__MWINDOW() STATIC_MTARGET_VIEW STATIC_MTARGET_VIEW() ACTIVITY_MANAGER_MCONTEXT ACTIVITY_MANAGER_MCONTEXT() AUDIO_MANAGER__MCONTEXT_STATIC AUDIO_MANAGER__MCONTEXT_STATIC() VIEW_CONFIGURATION__MCONTEXT VIEW_CONFIGURATION__MCONTEXT() RESOURCES__MCONTEXT RESOURCES__MCONTEXT() PERSONA_MANAGER PERSONA_MANAGER() TEXT_VIEW__MLAST_HOVERED_VIEW TEXT_VIEW__MLAST_HOVERED_VIEW() AW_RESOURCE__SRESOURCES AW_RESOURCE__SRESOURCES() SEM_APP_ICON_SOLUTION SEM_APP_ICON_SOLUTION() SEM_PERSONA_MANAGER SEM_PERSONA_MANAGER() SEM_EMERGENCY_MANAGER__MCONTEXT SEM_EMERGENCY_MANAGER__MCONTEXT() CLIPBOARD_EX_MANAGER CLIPBOARD_EX_MANAGER() SEM_CLIPBOARD_MANAGER__MCONTEXT SEM_CLIPBOARD_MANAGER__MCONTEXT() CLIPBOARD_UI_MANAGER__SINSTANCE CLIPBOARD_UI_MANAGER__SINSTANCE() SPEN_GESTURE_MANAGER SPEN_GESTURE_MANAGER() DREAM_SERVICE DREAM_SERVICE() JOB_SERVICE JOB_SERVICE() AW_CONTENTS_POSTED_CALLBACK AW_CONTENTS_POSTED_CALLBACK() AW_CONTENTS__A0 AW_CONTENTS__A0() FLIPPER__APPLICATION_DESCRIPTOR FLIPPER__APPLICATION_DESCRIPTOR() ANIMATION_HANDLER__ANIMATOR_REQUESTORS ANIMATION_HANDLER__ANIMATOR_REQUESTORS() ACTIVITY_TRANSITION_STATE__M_EXITING_TO_VIEW ACTIVITY_TRANSITION_STATE__M_EXITING_TO_VIEW() VIEW_TOOLTIP_CALLBACK VIEW_TOOLTIP_CALLBACK() VIEW_GROUP__M_CURRENT_DRAG_CHILD VIEW_GROUP__M_CURRENT_DRAG_CHILD() VIEW_GROUP__M_PRE_SORTED_CHILDREN VIEW_GROUP__M_PRE_SORTED_CHILDREN() APP_OPS_MANAGER__CALLBACK_STUB APP_OPS_MANAGER__CALLBACK_STUB() HOST_ADPU_SERVICE_MSG_HANDLER HOST_ADPU_SERVICE_MSG_HANDLER() CONNECTIVITY_MANAGER_CALLBACK_HANDLER CONNECTIVITY_MANAGER_CALLBACK_HANDLER() WINDOW_ON_BACK_INVOKED_DISPATCHER__STUB WINDOW_ON_BACK_INVOKED_DISPATCHER__STUB() PLAYER_BASE PLAYER_BASE() RENDER_NODE_ANIMATOR RENDER_NODE_ANIMATOR() COMPANION_DEVICE_SERVICE__STUB COMPANION_DEVICE_SERVICE__STUB() APPLICATION_PACKAGE_MANAGER__HAS_SYSTEM_FEATURE_QUERY APPLICATION_PACKAGE_MANAGER__HAS_SYSTEM_FEATURE_QUERY() TOAST_TN TOAST_TN() CONTROLLED_INPUT_CONNECTION_WRAPPER CONTROLLED_INPUT_CONNECTION_WRAPPER() TEXT_TO_SPEECH TEXT_TO_SPEECH() ACCESSIBILITY_NODE_ID_MANAGER ACCESSIBILITY_NODE_ID_MANAGER() VIEWLOCATIONHOLDER_ROOT VIEWLOCATIONHOLDER_ROOT() BACKDROP_FRAME_RENDERER__MDECORVIEW BACKDROP_FRAME_RENDERER__MDECORVIEW() MAGNIFIER MAGNIFIER() BIOMETRIC_PROMPT BIOMETRIC_PROMPT() ACCESSIBILITY_ITERATORS ACCESSIBILITY_ITERATORS() ASSIST_STRUCTURE ASSIST_STRUCTURE() ACCESSIBILITY_NODE_INFO__MORIGINALTEXT ACCESSIBILITY_NODE_INFO__MORIGINALTEXT() CONNECTIVITY_MANAGER__SINSTANCE CONNECTIVITY_MANAGER__SINSTANCE() EDITTEXT_BLINK_MESSAGEQUEUE EDITTEXT_BLINK_MESSAGEQUEUE() AUDIO_MANAGER AUDIO_MANAGER() APP_WIDGET_HOST_CALLBACKS APP_WIDGET_HOST_CALLBACKS() USER_MANAGER__SINSTANCE USER_MANAGER__SINSTANCE() MEDIA_SCANNER_CONNECTION MEDIA_SCANNER_CONNECTION() ACCOUNT_MANAGER__AMS_TASK__RESPONSE ACCOUNT_MANAGER__AMS_TASK__RESPONSE() SPEECH_RECOGNIZER SPEECH_RECOGNIZER() MEDIA_PROJECTION_CALLBACK MEDIA_PROJECTION_CALLBACK() ACTIVITY_CHOOSE_MODEL ACTIVITY_CHOOSE_MODEL() SPELL_CHECKER SPELL_CHECKER() SPELL_CHECKER_SESSION SPELL_CHECKER_SESSION() LAYOUT_TRANSITION LAYOUT_TRANSITION() INPUT_MANAGER__M_LATE_INIT_CONTEXT INPUT_MANAGER__M_LATE_INIT_CONTEXT() INPUT_METHOD_MANAGER_IS_TERRIBLE INPUT_METHOD_MANAGER_IS_TERRIBLE() BLOCKING_QUEUE BLOCKING_QUEUE() TEXT_LINE__SCACHED TEXT_LINE__SCACHED() MEDIA_SESSION_LEGACY_HELPER__SINSTANCE MEDIA_SESSION_LEGACY_HELPER__SINSTANCE() SPAN_CONTROLLER SPAN_CONTROLLER() ACTIVITY_THREAD__M_NEW_ACTIVITIES ACTIVITY_THREAD__M_NEW_ACTIVITIES()See AndroidReferenceReaders.ACTIVITY_THREAD__NEW_ACTIVITIES for more context IREQUEST_FINISH_CALLBACK IREQUEST_FINISH_CALLBACK()"},{"location":"api/shark/-android-reference-matchers/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-android-reference-matchers/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-a-c-c-e-s-s-i-b-i-l-i-t-y_-i-t-e-r-a-t-o-r-s/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/ACCESSIBILITY_ITERATORS</p>"},{"location":"api/shark/-android-reference-matchers/-a-c-c-e-s-s-i-b-i-l-i-t-y_-i-t-e-r-a-t-o-r-s/#accessibility_iterators","title":"ACCESSIBILITY_ITERATORS","text":"<p>ACCESSIBILITY_ITERATORS()</p>"},{"location":"api/shark/-android-reference-matchers/-a-c-c-e-s-s-i-b-i-l-i-t-y_-i-t-e-r-a-t-o-r-s/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-a-c-c-e-s-s-i-b-i-l-i-t-y_-n-o-d-e_-i-d_-m-a-n-a-g-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/ACCESSIBILITY_NODE_ID_MANAGER</p>"},{"location":"api/shark/-android-reference-matchers/-a-c-c-e-s-s-i-b-i-l-i-t-y_-n-o-d-e_-i-d_-m-a-n-a-g-e-r/#accessibility_node_id_manager","title":"ACCESSIBILITY_NODE_ID_MANAGER","text":"<p>ACCESSIBILITY_NODE_ID_MANAGER()</p>"},{"location":"api/shark/-android-reference-matchers/-a-c-c-e-s-s-i-b-i-l-i-t-y_-n-o-d-e_-i-d_-m-a-n-a-g-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-a-c-c-e-s-s-i-b-i-l-i-t-y_-n-o-d-e_-i-n-f-o__-m-o-r-i-g-i-n-a-l-t-e-x-t/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/ACCESSIBILITY_NODE_INFO__MORIGINALTEXT</p>"},{"location":"api/shark/-android-reference-matchers/-a-c-c-e-s-s-i-b-i-l-i-t-y_-n-o-d-e_-i-n-f-o__-m-o-r-i-g-i-n-a-l-t-e-x-t/#accessibility_node_info__moriginaltext","title":"ACCESSIBILITY_NODE_INFO__MORIGINALTEXT","text":"<p>ACCESSIBILITY_NODE_INFO__MORIGINALTEXT()</p>"},{"location":"api/shark/-android-reference-matchers/-a-c-c-e-s-s-i-b-i-l-i-t-y_-n-o-d-e_-i-n-f-o__-m-o-r-i-g-i-n-a-l-t-e-x-t/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-a-c-c-o-u-n-t_-m-a-n-a-g-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/ACCOUNT_MANAGER</p>"},{"location":"api/shark/-android-reference-matchers/-a-c-c-o-u-n-t_-m-a-n-a-g-e-r/#account_manager","title":"ACCOUNT_MANAGER","text":"<p>ACCOUNT_MANAGER()</p>"},{"location":"api/shark/-android-reference-matchers/-a-c-c-o-u-n-t_-m-a-n-a-g-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-a-c-c-o-u-n-t_-m-a-n-a-g-e-r__-a-m-s_-t-a-s-k__-r-e-s-p-o-n-s-e/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/ACCOUNT_MANAGER__AMS_TASK__RESPONSE</p>"},{"location":"api/shark/-android-reference-matchers/-a-c-c-o-u-n-t_-m-a-n-a-g-e-r__-a-m-s_-t-a-s-k__-r-e-s-p-o-n-s-e/#account_manager__ams_task__response","title":"ACCOUNT_MANAGER__AMS_TASK__RESPONSE","text":"<p>ACCOUNT_MANAGER__AMS_TASK__RESPONSE()</p>"},{"location":"api/shark/-android-reference-matchers/-a-c-c-o-u-n-t_-m-a-n-a-g-e-r__-a-m-s_-t-a-s-k__-r-e-s-p-o-n-s-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-c-h-o-o-s-e_-m-o-d-e-l/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/ACTIVITY_CHOOSE_MODEL</p>"},{"location":"api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-c-h-o-o-s-e_-m-o-d-e-l/#activity_choose_model","title":"ACTIVITY_CHOOSE_MODEL","text":"<p>ACTIVITY_CHOOSE_MODEL()</p>"},{"location":"api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-c-h-o-o-s-e_-m-o-d-e-l/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-m-a-n-a-g-e-r_-m-c-o-n-t-e-x-t/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/ACTIVITY_MANAGER_MCONTEXT</p>"},{"location":"api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-m-a-n-a-g-e-r_-m-c-o-n-t-e-x-t/#activity_manager_mcontext","title":"ACTIVITY_MANAGER_MCONTEXT","text":"<p>ACTIVITY_MANAGER_MCONTEXT()</p>"},{"location":"api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-m-a-n-a-g-e-r_-m-c-o-n-t-e-x-t/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-t-h-r-e-a-d__-m_-n-e-w_-a-c-t-i-v-i-t-i-e-s/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/ACTIVITY_THREAD__M_NEW_ACTIVITIES</p>"},{"location":"api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-t-h-r-e-a-d__-m_-n-e-w_-a-c-t-i-v-i-t-i-e-s/#activity_thread__m_new_activities","title":"ACTIVITY_THREAD__M_NEW_ACTIVITIES","text":"<p>ACTIVITY_THREAD__M_NEW_ACTIVITIES()</p> <p>See AndroidReferenceReaders.ACTIVITY_THREAD__NEW_ACTIVITIES for more context</p>"},{"location":"api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-t-h-r-e-a-d__-m_-n-e-w_-a-c-t-i-v-i-t-i-e-s/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-t-r-a-n-s-i-t-i-o-n_-s-t-a-t-e__-m_-e-x-i-t-i-n-g_-t-o_-v-i-e-w/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/ACTIVITY_TRANSITION_STATE__M_EXITING_TO_VIEW</p>"},{"location":"api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-t-r-a-n-s-i-t-i-o-n_-s-t-a-t-e__-m_-e-x-i-t-i-n-g_-t-o_-v-i-e-w/#activity_transition_state__m_exiting_to_view","title":"ACTIVITY_TRANSITION_STATE__M_EXITING_TO_VIEW","text":"<p>ACTIVITY_TRANSITION_STATE__M_EXITING_TO_VIEW()</p>"},{"location":"api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-t-r-a-n-s-i-t-i-o-n_-s-t-a-t-e__-m_-e-x-i-t-i-n-g_-t-o_-v-i-e-w/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-a-n-i-m-a-t-i-o-n_-h-a-n-d-l-e-r__-a-n-i-m-a-t-o-r_-r-e-q-u-e-s-t-o-r-s/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/ANIMATION_HANDLER__ANIMATOR_REQUESTORS</p>"},{"location":"api/shark/-android-reference-matchers/-a-n-i-m-a-t-i-o-n_-h-a-n-d-l-e-r__-a-n-i-m-a-t-o-r_-r-e-q-u-e-s-t-o-r-s/#animation_handler__animator_requestors","title":"ANIMATION_HANDLER__ANIMATOR_REQUESTORS","text":"<p>ANIMATION_HANDLER__ANIMATOR_REQUESTORS()</p>"},{"location":"api/shark/-android-reference-matchers/-a-n-i-m-a-t-i-o-n_-h-a-n-d-l-e-r__-a-n-i-m-a-t-o-r_-r-e-q-u-e-s-t-o-r-s/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-a-p-p-l-i-c-a-t-i-o-n_-p-a-c-k-a-g-e_-m-a-n-a-g-e-r__-h-a-s_-s-y-s-t-e-m_-f-e-a-t-u-r-e_-q-u-e-r-y/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/APPLICATION_PACKAGE_MANAGER__HAS_SYSTEM_FEATURE_QUERY</p>"},{"location":"api/shark/-android-reference-matchers/-a-p-p-l-i-c-a-t-i-o-n_-p-a-c-k-a-g-e_-m-a-n-a-g-e-r__-h-a-s_-s-y-s-t-e-m_-f-e-a-t-u-r-e_-q-u-e-r-y/#application_package_manager__has_system_feature_query","title":"APPLICATION_PACKAGE_MANAGER__HAS_SYSTEM_FEATURE_QUERY","text":"<p>APPLICATION_PACKAGE_MANAGER__HAS_SYSTEM_FEATURE_QUERY()</p>"},{"location":"api/shark/-android-reference-matchers/-a-p-p-l-i-c-a-t-i-o-n_-p-a-c-k-a-g-e_-m-a-n-a-g-e-r__-h-a-s_-s-y-s-t-e-m_-f-e-a-t-u-r-e_-q-u-e-r-y/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-a-p-p_-o-p-s_-m-a-n-a-g-e-r__-c-a-l-l-b-a-c-k_-s-t-u-b/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/APP_OPS_MANAGER__CALLBACK_STUB</p>"},{"location":"api/shark/-android-reference-matchers/-a-p-p_-o-p-s_-m-a-n-a-g-e-r__-c-a-l-l-b-a-c-k_-s-t-u-b/#app_ops_manager__callback_stub","title":"APP_OPS_MANAGER__CALLBACK_STUB","text":"<p>APP_OPS_MANAGER__CALLBACK_STUB()</p>"},{"location":"api/shark/-android-reference-matchers/-a-p-p_-o-p-s_-m-a-n-a-g-e-r__-c-a-l-l-b-a-c-k_-s-t-u-b/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-a-p-p_-w-i-d-g-e-t_-h-o-s-t_-c-a-l-l-b-a-c-k-s/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/APP_WIDGET_HOST_CALLBACKS</p>"},{"location":"api/shark/-android-reference-matchers/-a-p-p_-w-i-d-g-e-t_-h-o-s-t_-c-a-l-l-b-a-c-k-s/#app_widget_host_callbacks","title":"APP_WIDGET_HOST_CALLBACKS","text":"<p>APP_WIDGET_HOST_CALLBACKS()</p>"},{"location":"api/shark/-android-reference-matchers/-a-p-p_-w-i-d-g-e-t_-h-o-s-t_-c-a-l-l-b-a-c-k-s/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-a-s-s-i-s-t_-s-t-r-u-c-t-u-r-e/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/ASSIST_STRUCTURE</p>"},{"location":"api/shark/-android-reference-matchers/-a-s-s-i-s-t_-s-t-r-u-c-t-u-r-e/#assist_structure","title":"ASSIST_STRUCTURE","text":"<p>ASSIST_STRUCTURE()</p>"},{"location":"api/shark/-android-reference-matchers/-a-s-s-i-s-t_-s-t-r-u-c-t-u-r-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-a-u-d-i-o_-m-a-n-a-g-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/AUDIO_MANAGER</p>"},{"location":"api/shark/-android-reference-matchers/-a-u-d-i-o_-m-a-n-a-g-e-r/#audio_manager","title":"AUDIO_MANAGER","text":"<p>AUDIO_MANAGER()</p>"},{"location":"api/shark/-android-reference-matchers/-a-u-d-i-o_-m-a-n-a-g-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-a-u-d-i-o_-m-a-n-a-g-e-r__-m-c-o-n-t-e-x-t_-s-t-a-t-i-c/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/AUDIO_MANAGER__MCONTEXT_STATIC</p>"},{"location":"api/shark/-android-reference-matchers/-a-u-d-i-o_-m-a-n-a-g-e-r__-m-c-o-n-t-e-x-t_-s-t-a-t-i-c/#audio_manager__mcontext_static","title":"AUDIO_MANAGER__MCONTEXT_STATIC","text":"<p>AUDIO_MANAGER__MCONTEXT_STATIC()</p>"},{"location":"api/shark/-android-reference-matchers/-a-u-d-i-o_-m-a-n-a-g-e-r__-m-c-o-n-t-e-x-t_-s-t-a-t-i-c/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-a-w_-c-o-n-t-e-n-t-s_-p-o-s-t-e-d_-c-a-l-l-b-a-c-k/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/AW_CONTENTS_POSTED_CALLBACK</p>"},{"location":"api/shark/-android-reference-matchers/-a-w_-c-o-n-t-e-n-t-s_-p-o-s-t-e-d_-c-a-l-l-b-a-c-k/#aw_contents_posted_callback","title":"AW_CONTENTS_POSTED_CALLBACK","text":"<p>AW_CONTENTS_POSTED_CALLBACK()</p>"},{"location":"api/shark/-android-reference-matchers/-a-w_-c-o-n-t-e-n-t-s_-p-o-s-t-e-d_-c-a-l-l-b-a-c-k/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-a-w_-c-o-n-t-e-n-t-s__-a0/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/AW_CONTENTS__A0</p>"},{"location":"api/shark/-android-reference-matchers/-a-w_-c-o-n-t-e-n-t-s__-a0/#aw_contents__a0","title":"AW_CONTENTS__A0","text":"<p>AW_CONTENTS__A0()</p>"},{"location":"api/shark/-android-reference-matchers/-a-w_-c-o-n-t-e-n-t-s__-a0/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-a-w_-r-e-s-o-u-r-c-e__-s-r-e-s-o-u-r-c-e-s/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/AW_RESOURCE__SRESOURCES</p>"},{"location":"api/shark/-android-reference-matchers/-a-w_-r-e-s-o-u-r-c-e__-s-r-e-s-o-u-r-c-e-s/#aw_resource__sresources","title":"AW_RESOURCE__SRESOURCES","text":"<p>AW_RESOURCE__SRESOURCES()</p>"},{"location":"api/shark/-android-reference-matchers/-a-w_-r-e-s-o-u-r-c-e__-s-r-e-s-o-u-r-c-e-s/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-b-a-c-k-d-r-o-p_-f-r-a-m-e_-r-e-n-d-e-r-e-r__-m-d-e-c-o-r-v-i-e-w/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/BACKDROP_FRAME_RENDERER__MDECORVIEW</p>"},{"location":"api/shark/-android-reference-matchers/-b-a-c-k-d-r-o-p_-f-r-a-m-e_-r-e-n-d-e-r-e-r__-m-d-e-c-o-r-v-i-e-w/#backdrop_frame_renderer__mdecorview","title":"BACKDROP_FRAME_RENDERER__MDECORVIEW","text":"<p>BACKDROP_FRAME_RENDERER__MDECORVIEW()</p>"},{"location":"api/shark/-android-reference-matchers/-b-a-c-k-d-r-o-p_-f-r-a-m-e_-r-e-n-d-e-r-e-r__-m-d-e-c-o-r-v-i-e-w/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-b-i-o-m-e-t-r-i-c_-p-r-o-m-p-t/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/BIOMETRIC_PROMPT</p>"},{"location":"api/shark/-android-reference-matchers/-b-i-o-m-e-t-r-i-c_-p-r-o-m-p-t/#biometric_prompt","title":"BIOMETRIC_PROMPT","text":"<p>BIOMETRIC_PROMPT()</p>"},{"location":"api/shark/-android-reference-matchers/-b-i-o-m-e-t-r-i-c_-p-r-o-m-p-t/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-b-l-o-c-k-i-n-g_-q-u-e-u-e/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/BLOCKING_QUEUE</p>"},{"location":"api/shark/-android-reference-matchers/-b-l-o-c-k-i-n-g_-q-u-e-u-e/#blocking_queue","title":"BLOCKING_QUEUE","text":"<p>BLOCKING_QUEUE()</p>"},{"location":"api/shark/-android-reference-matchers/-b-l-o-c-k-i-n-g_-q-u-e-u-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-b-u-b-b-l-e_-p-o-p-u-p_-h-e-l-p-e-r__-s-h-e-l-p-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/BUBBLE_POPUP_HELPER__SHELPER</p>"},{"location":"api/shark/-android-reference-matchers/-b-u-b-b-l-e_-p-o-p-u-p_-h-e-l-p-e-r__-s-h-e-l-p-e-r/#bubble_popup_helper__shelper","title":"BUBBLE_POPUP_HELPER__SHELPER","text":"<p>BUBBLE_POPUP_HELPER__SHELPER()</p>"},{"location":"api/shark/-android-reference-matchers/-b-u-b-b-l-e_-p-o-p-u-p_-h-e-l-p-e-r__-s-h-e-l-p-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-c-l-i-p-b-o-a-r-d_-e-x_-m-a-n-a-g-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/CLIPBOARD_EX_MANAGER</p>"},{"location":"api/shark/-android-reference-matchers/-c-l-i-p-b-o-a-r-d_-e-x_-m-a-n-a-g-e-r/#clipboard_ex_manager","title":"CLIPBOARD_EX_MANAGER","text":"<p>CLIPBOARD_EX_MANAGER()</p>"},{"location":"api/shark/-android-reference-matchers/-c-l-i-p-b-o-a-r-d_-e-x_-m-a-n-a-g-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-c-l-i-p-b-o-a-r-d_-u-i_-m-a-n-a-g-e-r__-s-i-n-s-t-a-n-c-e/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/CLIPBOARD_UI_MANAGER__SINSTANCE</p>"},{"location":"api/shark/-android-reference-matchers/-c-l-i-p-b-o-a-r-d_-u-i_-m-a-n-a-g-e-r__-s-i-n-s-t-a-n-c-e/#clipboard_ui_manager__sinstance","title":"CLIPBOARD_UI_MANAGER__SINSTANCE","text":"<p>CLIPBOARD_UI_MANAGER__SINSTANCE()</p>"},{"location":"api/shark/-android-reference-matchers/-c-l-i-p-b-o-a-r-d_-u-i_-m-a-n-a-g-e-r__-s-i-n-s-t-a-n-c-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-c-o-m-p-a-n-i-o-n_-d-e-v-i-c-e_-s-e-r-v-i-c-e__-s-t-u-b/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/COMPANION_DEVICE_SERVICE__STUB</p>"},{"location":"api/shark/-android-reference-matchers/-c-o-m-p-a-n-i-o-n_-d-e-v-i-c-e_-s-e-r-v-i-c-e__-s-t-u-b/#companion_device_service__stub","title":"COMPANION_DEVICE_SERVICE__STUB","text":"<p>COMPANION_DEVICE_SERVICE__STUB()</p>"},{"location":"api/shark/-android-reference-matchers/-c-o-m-p-a-n-i-o-n_-d-e-v-i-c-e_-s-e-r-v-i-c-e__-s-t-u-b/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-c-o-n-n-e-c-t-i-v-i-t-y_-m-a-n-a-g-e-r_-c-a-l-l-b-a-c-k_-h-a-n-d-l-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/CONNECTIVITY_MANAGER_CALLBACK_HANDLER</p>"},{"location":"api/shark/-android-reference-matchers/-c-o-n-n-e-c-t-i-v-i-t-y_-m-a-n-a-g-e-r_-c-a-l-l-b-a-c-k_-h-a-n-d-l-e-r/#connectivity_manager_callback_handler","title":"CONNECTIVITY_MANAGER_CALLBACK_HANDLER","text":"<p>CONNECTIVITY_MANAGER_CALLBACK_HANDLER()</p>"},{"location":"api/shark/-android-reference-matchers/-c-o-n-n-e-c-t-i-v-i-t-y_-m-a-n-a-g-e-r_-c-a-l-l-b-a-c-k_-h-a-n-d-l-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-c-o-n-n-e-c-t-i-v-i-t-y_-m-a-n-a-g-e-r__-s-i-n-s-t-a-n-c-e/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/CONNECTIVITY_MANAGER__SINSTANCE</p>"},{"location":"api/shark/-android-reference-matchers/-c-o-n-n-e-c-t-i-v-i-t-y_-m-a-n-a-g-e-r__-s-i-n-s-t-a-n-c-e/#connectivity_manager__sinstance","title":"CONNECTIVITY_MANAGER__SINSTANCE","text":"<p>CONNECTIVITY_MANAGER__SINSTANCE()</p>"},{"location":"api/shark/-android-reference-matchers/-c-o-n-n-e-c-t-i-v-i-t-y_-m-a-n-a-g-e-r__-s-i-n-s-t-a-n-c-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-c-o-n-t-r-o-l-l-e-d_-i-n-p-u-t_-c-o-n-n-e-c-t-i-o-n_-w-r-a-p-p-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/CONTROLLED_INPUT_CONNECTION_WRAPPER</p>"},{"location":"api/shark/-android-reference-matchers/-c-o-n-t-r-o-l-l-e-d_-i-n-p-u-t_-c-o-n-n-e-c-t-i-o-n_-w-r-a-p-p-e-r/#controlled_input_connection_wrapper","title":"CONTROLLED_INPUT_CONNECTION_WRAPPER","text":"<p>CONTROLLED_INPUT_CONNECTION_WRAPPER()</p>"},{"location":"api/shark/-android-reference-matchers/-c-o-n-t-r-o-l-l-e-d_-i-n-p-u-t_-c-o-n-n-e-c-t-i-o-n_-w-r-a-p-p-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-companion/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion</p>"},{"location":"api/shark/-android-reference-matchers/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-android-reference-matchers/-companion/#functions","title":"Functions","text":"Name Summary buildKnownReferences @JvmStaticfun buildKnownReferences(referenceMatchers: Set&lt;AndroidReferenceMatchers&gt;): List&lt;ReferenceMatcher&gt;Builds a list of ReferenceMatcher from the referenceMatchers set of AndroidReferenceMatchers. ignoredInstanceField @JvmStaticfun ignoredInstanceField(className: String, fieldName: String): IgnoredReferenceMatcherCreates a IgnoredReferenceMatcher that matches a InstanceFieldPattern. ignoredJavaLocal @JvmStaticfun ignoredJavaLocal(threadName: String): IgnoredReferenceMatcherCreates a IgnoredReferenceMatcher that matches a JavaLocalPattern. instanceFieldLeak @JvmStaticfun instanceFieldLeak(className: String, fieldName: String, description: String = \"\", patternApplies: AndroidBuildMirror.() -&gt; Boolean = ALWAYS): LibraryLeakReferenceMatcherCreates a LibraryLeakReferenceMatcher that matches a InstanceFieldPattern. description should convey what we know about this library leak. nativeGlobalVariableLeak @JvmStaticfun nativeGlobalVariableLeak(className: String, description: String = \"\", patternApplies: AndroidBuildMirror.() -&gt; Boolean = ALWAYS): LibraryLeakReferenceMatcher staticFieldLeak @JvmStaticfun staticFieldLeak(className: String, fieldName: String, description: String = \"\", patternApplies: AndroidBuildMirror.() -&gt; Boolean = ALWAYS): LibraryLeakReferenceMatcherCreates a LibraryLeakReferenceMatcher that matches a StaticFieldPattern. description should convey what we know about this library leak."},{"location":"api/shark/-android-reference-matchers/-companion/#properties","title":"Properties","text":"Name Summary appDefaults @JvmStaticval appDefaults: List&lt;ReferenceMatcher&gt; HMD_GLOBAL const val HMD_GLOBAL: String HUAWEI const val HUAWEI: String ignoredReferencesOnly @JvmStaticval ignoredReferencesOnly: List&lt;ReferenceMatcher&gt;Returns a list of ReferenceMatcher that only contains IgnoredReferenceMatcher and no LibraryLeakReferenceMatcher. INFINIX const val INFINIX: String LENOVO const val LENOVO: String LG const val LG: String MEIZU const val MEIZU: String MOTOROLA const val MOTOROLA: String NVIDIA const val NVIDIA: String ONE_PLUS const val ONE_PLUS: String RAZER const val RAZER: String REALME const val REALME: String SAMSUNG const val SAMSUNG: String SHARP const val SHARP: String TES const val TES: String VIVO const val VIVO: String XIAOMI const val XIAOMI: String"},{"location":"api/shark/-android-reference-matchers/-companion/-h-m-d_-g-l-o-b-a-l/","title":"h m d  g l o b a l","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/HMD_GLOBAL</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-h-m-d_-g-l-o-b-a-l/#hmd_global","title":"HMD_GLOBAL","text":"<p>const val HMD_GLOBAL: String</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-h-u-a-w-e-i/","title":"h u a w e i","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/HUAWEI</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-h-u-a-w-e-i/#huawei","title":"HUAWEI","text":"<p>const val HUAWEI: String</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-i-n-f-i-n-i-x/","title":"i n f i n i x","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/INFINIX</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-i-n-f-i-n-i-x/#infinix","title":"INFINIX","text":"<p>const val INFINIX: String</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-l-e-n-o-v-o/","title":"l e n o v o","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/LENOVO</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-l-e-n-o-v-o/#lenovo","title":"LENOVO","text":"<p>const val LENOVO: String</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-l-g/","title":"l g","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/LG</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-l-g/#lg","title":"LG","text":"<p>const val LG: String</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-m-e-i-z-u/","title":"m e i z u","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/MEIZU</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-m-e-i-z-u/#meizu","title":"MEIZU","text":"<p>const val MEIZU: String</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-m-o-t-o-r-o-l-a/","title":"m o t o r o l a","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/MOTOROLA</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-m-o-t-o-r-o-l-a/#motorola","title":"MOTOROLA","text":"<p>const val MOTOROLA: String</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-n-v-i-d-i-a/","title":"n v i d i a","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/NVIDIA</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-n-v-i-d-i-a/#nvidia","title":"NVIDIA","text":"<p>const val NVIDIA: String</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-o-n-e_-p-l-u-s/","title":"o n e  p l u s","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/ONE_PLUS</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-o-n-e_-p-l-u-s/#one_plus","title":"ONE_PLUS","text":"<p>const val ONE_PLUS: String</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-r-a-z-e-r/","title":"r a z e r","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/RAZER</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-r-a-z-e-r/#razer","title":"RAZER","text":"<p>const val RAZER: String</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-r-e-a-l-m-e/","title":"r e a l m e","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/REALME</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-r-e-a-l-m-e/#realme","title":"REALME","text":"<p>const val REALME: String</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-s-a-m-s-u-n-g/","title":"s a m s u n g","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/SAMSUNG</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-s-a-m-s-u-n-g/#samsung","title":"SAMSUNG","text":"<p>const val SAMSUNG: String</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-s-h-a-r-p/","title":"s h a r p","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/SHARP</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-s-h-a-r-p/#sharp","title":"SHARP","text":"<p>const val SHARP: String</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-t-e-s/","title":"t e s","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/TES</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-t-e-s/#tes","title":"TES","text":"<p>const val TES: String</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-v-i-v-o/","title":"v i v o","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/VIVO</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-v-i-v-o/#vivo","title":"VIVO","text":"<p>const val VIVO: String</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-x-i-a-o-m-i/","title":"x i a o m i","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/XIAOMI</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-x-i-a-o-m-i/#xiaomi","title":"XIAOMI","text":"<p>const val XIAOMI: String</p>"},{"location":"api/shark/-android-reference-matchers/-companion/app-defaults/","title":"App defaults","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/appDefaults</p>"},{"location":"api/shark/-android-reference-matchers/-companion/app-defaults/#appdefaults","title":"appDefaults","text":"<p>@JvmStatic</p> <p>val appDefaults: List&lt;ReferenceMatcher&gt;</p>"},{"location":"api/shark/-android-reference-matchers/-companion/app-defaults/#see-also","title":"See also","text":"<p>main</p> shark.AndroidReferenceMatchers"},{"location":"api/shark/-android-reference-matchers/-companion/build-known-references/","title":"Build known references","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/buildKnownReferences</p>"},{"location":"api/shark/-android-reference-matchers/-companion/build-known-references/#buildknownreferences","title":"buildKnownReferences","text":"<p>@JvmStatic</p> <p>fun buildKnownReferences(referenceMatchers: Set&lt;AndroidReferenceMatchers&gt;): List&lt;ReferenceMatcher&gt;</p> <p>Builds a list of ReferenceMatcher from the referenceMatchers set of AndroidReferenceMatchers.</p>"},{"location":"api/shark/-android-reference-matchers/-companion/ignored-instance-field/","title":"Ignored instance field","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/ignoredInstanceField</p>"},{"location":"api/shark/-android-reference-matchers/-companion/ignored-instance-field/#ignoredinstancefield","title":"ignoredInstanceField","text":"<p>@JvmStatic</p> <p>fun ignoredInstanceField(className: String, fieldName: String): IgnoredReferenceMatcher</p> <p>Creates a IgnoredReferenceMatcher that matches a InstanceFieldPattern.</p>"},{"location":"api/shark/-android-reference-matchers/-companion/ignored-java-local/","title":"Ignored java local","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/ignoredJavaLocal</p>"},{"location":"api/shark/-android-reference-matchers/-companion/ignored-java-local/#ignoredjavalocal","title":"ignoredJavaLocal","text":"<p>@JvmStatic</p> <p>fun ignoredJavaLocal(threadName: String): IgnoredReferenceMatcher</p> <p>Creates a IgnoredReferenceMatcher that matches a JavaLocalPattern.</p>"},{"location":"api/shark/-android-reference-matchers/-companion/ignored-references-only/","title":"Ignored references only","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/ignoredReferencesOnly</p>"},{"location":"api/shark/-android-reference-matchers/-companion/ignored-references-only/#ignoredreferencesonly","title":"ignoredReferencesOnly","text":"<p>@JvmStatic</p> <p>val ignoredReferencesOnly: List&lt;ReferenceMatcher&gt;</p> <p>Returns a list of ReferenceMatcher that only contains IgnoredReferenceMatcher and no LibraryLeakReferenceMatcher.</p>"},{"location":"api/shark/-android-reference-matchers/-companion/instance-field-leak/","title":"Instance field leak","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/instanceFieldLeak</p>"},{"location":"api/shark/-android-reference-matchers/-companion/instance-field-leak/#instancefieldleak","title":"instanceFieldLeak","text":"<p>@JvmStatic</p> <p>fun instanceFieldLeak(className: String, fieldName: String, description: String = \"\", patternApplies: AndroidBuildMirror.() -&gt; Boolean = ALWAYS): LibraryLeakReferenceMatcher</p> <p>Creates a LibraryLeakReferenceMatcher that matches a InstanceFieldPattern. description should convey what we know about this library leak.</p>"},{"location":"api/shark/-android-reference-matchers/-companion/native-global-variable-leak/","title":"Native global variable leak","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/nativeGlobalVariableLeak</p>"},{"location":"api/shark/-android-reference-matchers/-companion/native-global-variable-leak/#nativeglobalvariableleak","title":"nativeGlobalVariableLeak","text":"<p>@JvmStatic</p> <p>fun nativeGlobalVariableLeak(className: String, description: String = \"\", patternApplies: AndroidBuildMirror.() -&gt; Boolean = ALWAYS): LibraryLeakReferenceMatcher</p>"},{"location":"api/shark/-android-reference-matchers/-companion/static-field-leak/","title":"Static field leak","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/staticFieldLeak</p>"},{"location":"api/shark/-android-reference-matchers/-companion/static-field-leak/#staticfieldleak","title":"staticFieldLeak","text":"<p>@JvmStatic</p> <p>fun staticFieldLeak(className: String, fieldName: String, description: String = \"\", patternApplies: AndroidBuildMirror.() -&gt; Boolean = ALWAYS): LibraryLeakReferenceMatcher</p> <p>Creates a LibraryLeakReferenceMatcher that matches a StaticFieldPattern. description should convey what we know about this library leak.</p>"},{"location":"api/shark/-android-reference-matchers/-d-e-v-i-c-e_-p-o-l-i-c-y_-m-a-n-a-g-e-r__-s-e-t-t-i-n-g-s_-o-b-s-e-r-v-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/DEVICE_POLICY_MANAGER__SETTINGS_OBSERVER</p>"},{"location":"api/shark/-android-reference-matchers/-d-e-v-i-c-e_-p-o-l-i-c-y_-m-a-n-a-g-e-r__-s-e-t-t-i-n-g-s_-o-b-s-e-r-v-e-r/#device_policy_manager__settings_observer","title":"DEVICE_POLICY_MANAGER__SETTINGS_OBSERVER","text":"<p>DEVICE_POLICY_MANAGER__SETTINGS_OBSERVER()</p>"},{"location":"api/shark/-android-reference-matchers/-d-e-v-i-c-e_-p-o-l-i-c-y_-m-a-n-a-g-e-r__-s-e-t-t-i-n-g-s_-o-b-s-e-r-v-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-d-r-e-a-m_-s-e-r-v-i-c-e/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/DREAM_SERVICE</p>"},{"location":"api/shark/-android-reference-matchers/-d-r-e-a-m_-s-e-r-v-i-c-e/#dream_service","title":"DREAM_SERVICE","text":"<p>DREAM_SERVICE()</p>"},{"location":"api/shark/-android-reference-matchers/-d-r-e-a-m_-s-e-r-v-i-c-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-e-d-i-t-t-e-x-t_-b-l-i-n-k_-m-e-s-s-a-g-e-q-u-e-u-e/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/EDITTEXT_BLINK_MESSAGEQUEUE</p>"},{"location":"api/shark/-android-reference-matchers/-e-d-i-t-t-e-x-t_-b-l-i-n-k_-m-e-s-s-a-g-e-q-u-e-u-e/#edittext_blink_messagequeue","title":"EDITTEXT_BLINK_MESSAGEQUEUE","text":"<p>EDITTEXT_BLINK_MESSAGEQUEUE()</p>"},{"location":"api/shark/-android-reference-matchers/-e-d-i-t-t-e-x-t_-b-l-i-n-k_-m-e-s-s-a-g-e-q-u-e-u-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-e-v-e-n-t_-r-e-c-e-i-v-e-r__-m-m-e-s-s-a-g-e_-q-u-e-u-e/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/EVENT_RECEIVER__MMESSAGE_QUEUE</p>"},{"location":"api/shark/-android-reference-matchers/-e-v-e-n-t_-r-e-c-e-i-v-e-r__-m-m-e-s-s-a-g-e_-q-u-e-u-e/#event_receiver__mmessage_queue","title":"EVENT_RECEIVER__MMESSAGE_QUEUE","text":"<p>EVENT_RECEIVER__MMESSAGE_QUEUE()</p>"},{"location":"api/shark/-android-reference-matchers/-e-v-e-n-t_-r-e-c-e-i-v-e-r__-m-m-e-s-s-a-g-e_-q-u-e-u-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-e-x-t-e-n-d-e-d_-s-t-a-t-u-s_-b-a-r_-m-a-n-a-g-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/EXTENDED_STATUS_BAR_MANAGER</p>"},{"location":"api/shark/-android-reference-matchers/-e-x-t-e-n-d-e-d_-s-t-a-t-u-s_-b-a-r_-m-a-n-a-g-e-r/#extended_status_bar_manager","title":"EXTENDED_STATUS_BAR_MANAGER","text":"<p>EXTENDED_STATUS_BAR_MANAGER()</p>"},{"location":"api/shark/-android-reference-matchers/-e-x-t-e-n-d-e-d_-s-t-a-t-u-s_-b-a-r_-m-a-n-a-g-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-f-i-n-a-l-i-z-e-r_-w-a-t-c-h-d-o-g_-d-a-e-m-o-n/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/FINALIZER_WATCHDOG_DAEMON</p>"},{"location":"api/shark/-android-reference-matchers/-f-i-n-a-l-i-z-e-r_-w-a-t-c-h-d-o-g_-d-a-e-m-o-n/#finalizer_watchdog_daemon","title":"FINALIZER_WATCHDOG_DAEMON","text":"<p>FINALIZER_WATCHDOG_DAEMON()</p>"},{"location":"api/shark/-android-reference-matchers/-f-i-n-a-l-i-z-e-r_-w-a-t-c-h-d-o-g_-d-a-e-m-o-n/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-f-l-i-p-p-e-r__-a-p-p-l-i-c-a-t-i-o-n_-d-e-s-c-r-i-p-t-o-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/FLIPPER__APPLICATION_DESCRIPTOR</p>"},{"location":"api/shark/-android-reference-matchers/-f-l-i-p-p-e-r__-a-p-p-l-i-c-a-t-i-o-n_-d-e-s-c-r-i-p-t-o-r/#flipper__application_descriptor","title":"FLIPPER__APPLICATION_DESCRIPTOR","text":"<p>FLIPPER__APPLICATION_DESCRIPTOR()</p>"},{"location":"api/shark/-android-reference-matchers/-f-l-i-p-p-e-r__-a-p-p-l-i-c-a-t-i-o-n_-d-e-s-c-r-i-p-t-o-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-g-e-s-t-u-r-e_-b-o-o-s-t_-m-a-n-a-g-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/GESTURE_BOOST_MANAGER</p>"},{"location":"api/shark/-android-reference-matchers/-g-e-s-t-u-r-e_-b-o-o-s-t_-m-a-n-a-g-e-r/#gesture_boost_manager","title":"GESTURE_BOOST_MANAGER","text":"<p>GESTURE_BOOST_MANAGER()</p>"},{"location":"api/shark/-android-reference-matchers/-g-e-s-t-u-r-e_-b-o-o-s-t_-m-a-n-a-g-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-h-o-s-t_-a-d-p-u_-s-e-r-v-i-c-e_-m-s-g_-h-a-n-d-l-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/HOST_ADPU_SERVICE_MSG_HANDLER</p>"},{"location":"api/shark/-android-reference-matchers/-h-o-s-t_-a-d-p-u_-s-e-r-v-i-c-e_-m-s-g_-h-a-n-d-l-e-r/#host_adpu_service_msg_handler","title":"HOST_ADPU_SERVICE_MSG_HANDLER","text":"<p>HOST_ADPU_SERVICE_MSG_HANDLER()</p>"},{"location":"api/shark/-android-reference-matchers/-h-o-s-t_-a-d-p-u_-s-e-r-v-i-c-e_-m-s-g_-h-a-n-d-l-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-i-m-m_-c-u-r-r-e-n-t_-i-n-p-u-t_-c-o-n-n-e-c-t-i-o-n/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/IMM_CURRENT_INPUT_CONNECTION</p>"},{"location":"api/shark/-android-reference-matchers/-i-m-m_-c-u-r-r-e-n-t_-i-n-p-u-t_-c-o-n-n-e-c-t-i-o-n/#imm_current_input_connection","title":"IMM_CURRENT_INPUT_CONNECTION","text":"<p>IMM_CURRENT_INPUT_CONNECTION()</p>"},{"location":"api/shark/-android-reference-matchers/-i-m-m_-c-u-r-r-e-n-t_-i-n-p-u-t_-c-o-n-n-e-c-t-i-o-n/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-i-m-m_-l-a-s-t_-f-o-c-u-s_-v-i-e-w/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/IMM_LAST_FOCUS_VIEW</p>"},{"location":"api/shark/-android-reference-matchers/-i-m-m_-l-a-s-t_-f-o-c-u-s_-v-i-e-w/#imm_last_focus_view","title":"IMM_LAST_FOCUS_VIEW","text":"<p>IMM_LAST_FOCUS_VIEW()</p>"},{"location":"api/shark/-android-reference-matchers/-i-m-m_-l-a-s-t_-f-o-c-u-s_-v-i-e-w/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-i-n-p-u-t_-m-a-n-a-g-e-r__-m_-l-a-t-e_-i-n-i-t_-c-o-n-t-e-x-t/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/INPUT_MANAGER__M_LATE_INIT_CONTEXT</p>"},{"location":"api/shark/-android-reference-matchers/-i-n-p-u-t_-m-a-n-a-g-e-r__-m_-l-a-t-e_-i-n-i-t_-c-o-n-t-e-x-t/#input_manager__m_late_init_context","title":"INPUT_MANAGER__M_LATE_INIT_CONTEXT","text":"<p>INPUT_MANAGER__M_LATE_INIT_CONTEXT()</p>"},{"location":"api/shark/-android-reference-matchers/-i-n-p-u-t_-m-a-n-a-g-e-r__-m_-l-a-t-e_-i-n-i-t_-c-o-n-t-e-x-t/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-i-n-p-u-t_-m-e-t-h-o-d_-m-a-n-a-g-e-r_-i-s_-t-e-r-r-i-b-l-e/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/INPUT_METHOD_MANAGER_IS_TERRIBLE</p>"},{"location":"api/shark/-android-reference-matchers/-i-n-p-u-t_-m-e-t-h-o-d_-m-a-n-a-g-e-r_-i-s_-t-e-r-r-i-b-l-e/#input_method_manager_is_terrible","title":"INPUT_METHOD_MANAGER_IS_TERRIBLE","text":"<p>INPUT_METHOD_MANAGER_IS_TERRIBLE()</p>"},{"location":"api/shark/-android-reference-matchers/-i-n-p-u-t_-m-e-t-h-o-d_-m-a-n-a-g-e-r_-i-s_-t-e-r-r-i-b-l-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-i-n-s-t-r-u-m-e-n-t-a-t-i-o-n_-r-e-c-o-m-m-e-n-d_-a-c-t-i-v-i-t-y/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/INSTRUMENTATION_RECOMMEND_ACTIVITY</p>"},{"location":"api/shark/-android-reference-matchers/-i-n-s-t-r-u-m-e-n-t-a-t-i-o-n_-r-e-c-o-m-m-e-n-d_-a-c-t-i-v-i-t-y/#instrumentation_recommend_activity","title":"INSTRUMENTATION_RECOMMEND_ACTIVITY","text":"<p>INSTRUMENTATION_RECOMMEND_ACTIVITY()</p>"},{"location":"api/shark/-android-reference-matchers/-i-n-s-t-r-u-m-e-n-t-a-t-i-o-n_-r-e-c-o-m-m-e-n-d_-a-c-t-i-v-i-t-y/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-i-r-e-q-u-e-s-t_-f-i-n-i-s-h_-c-a-l-l-b-a-c-k/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/IREQUEST_FINISH_CALLBACK</p>"},{"location":"api/shark/-android-reference-matchers/-i-r-e-q-u-e-s-t_-f-i-n-i-s-h_-c-a-l-l-b-a-c-k/#irequest_finish_callback","title":"IREQUEST_FINISH_CALLBACK","text":"<p>IREQUEST_FINISH_CALLBACK()</p>"},{"location":"api/shark/-android-reference-matchers/-i-r-e-q-u-e-s-t_-f-i-n-i-s-h_-c-a-l-l-b-a-c-k/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-j-o-b_-s-e-r-v-i-c-e/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/JOB_SERVICE</p>"},{"location":"api/shark/-android-reference-matchers/-j-o-b_-s-e-r-v-i-c-e/#job_service","title":"JOB_SERVICE","text":"<p>JOB_SERVICE()</p>"},{"location":"api/shark/-android-reference-matchers/-j-o-b_-s-e-r-v-i-c-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-l-a-y-o-u-t_-t-r-a-n-s-i-t-i-o-n/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/LAYOUT_TRANSITION</p>"},{"location":"api/shark/-android-reference-matchers/-l-a-y-o-u-t_-t-r-a-n-s-i-t-i-o-n/#layout_transition","title":"LAYOUT_TRANSITION","text":"<p>LAYOUT_TRANSITION()</p>"},{"location":"api/shark/-android-reference-matchers/-l-a-y-o-u-t_-t-r-a-n-s-i-t-i-o-n/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-l-e-a-k_-c-a-n-a-r-y_-h-e-a-p_-d-u-m-p-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/LEAK_CANARY_HEAP_DUMPER</p>"},{"location":"api/shark/-android-reference-matchers/-l-e-a-k_-c-a-n-a-r-y_-h-e-a-p_-d-u-m-p-e-r/#leak_canary_heap_dumper","title":"LEAK_CANARY_HEAP_DUMPER","text":"<p>LEAK_CANARY_HEAP_DUMPER()</p>"},{"location":"api/shark/-android-reference-matchers/-l-e-a-k_-c-a-n-a-r-y_-h-e-a-p_-d-u-m-p-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-l-e-a-k_-c-a-n-a-r-y_-i-n-t-e-r-n-a-l/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/LEAK_CANARY_INTERNAL</p>"},{"location":"api/shark/-android-reference-matchers/-l-e-a-k_-c-a-n-a-r-y_-i-n-t-e-r-n-a-l/#leak_canary_internal","title":"LEAK_CANARY_INTERNAL","text":"<p>LEAK_CANARY_INTERNAL()</p>"},{"location":"api/shark/-android-reference-matchers/-l-e-a-k_-c-a-n-a-r-y_-i-n-t-e-r-n-a-l/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-l-e-a-k_-c-a-n-a-r-y_-t-h-r-e-a-d/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/LEAK_CANARY_THREAD</p>"},{"location":"api/shark/-android-reference-matchers/-l-e-a-k_-c-a-n-a-r-y_-t-h-r-e-a-d/#leak_canary_thread","title":"LEAK_CANARY_THREAD","text":"<p>LEAK_CANARY_THREAD()</p>"},{"location":"api/shark/-android-reference-matchers/-l-e-a-k_-c-a-n-a-r-y_-t-h-r-e-a-d/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-l-g-c-o-n-t-e-x-t__-m-c-o-n-t-e-x-t/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/LGCONTEXT__MCONTEXT</p>"},{"location":"api/shark/-android-reference-matchers/-l-g-c-o-n-t-e-x-t__-m-c-o-n-t-e-x-t/#lgcontext__mcontext","title":"LGCONTEXT__MCONTEXT","text":"<p>LGCONTEXT__MCONTEXT()</p>"},{"location":"api/shark/-android-reference-matchers/-l-g-c-o-n-t-e-x-t__-m-c-o-n-t-e-x-t/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-m-a-g-n-i-f-i-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/MAGNIFIER</p>"},{"location":"api/shark/-android-reference-matchers/-m-a-g-n-i-f-i-e-r/#magnifier","title":"MAGNIFIER","text":"<p>MAGNIFIER()</p>"},{"location":"api/shark/-android-reference-matchers/-m-a-g-n-i-f-i-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-m-a-i-n/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/MAIN</p>"},{"location":"api/shark/-android-reference-matchers/-m-a-i-n/#main","title":"MAIN","text":"<p>MAIN()</p>"},{"location":"api/shark/-android-reference-matchers/-m-a-i-n/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-m-a-p-p-e-r_-c-l-i-e-n-t/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/MAPPER_CLIENT</p>"},{"location":"api/shark/-android-reference-matchers/-m-a-p-p-e-r_-c-l-i-e-n-t/#mapper_client","title":"MAPPER_CLIENT","text":"<p>MAPPER_CLIENT()</p>"},{"location":"api/shark/-android-reference-matchers/-m-a-p-p-e-r_-c-l-i-e-n-t/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-m-e-d-i-a_-p-r-o-j-e-c-t-i-o-n_-c-a-l-l-b-a-c-k/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/MEDIA_PROJECTION_CALLBACK</p>"},{"location":"api/shark/-android-reference-matchers/-m-e-d-i-a_-p-r-o-j-e-c-t-i-o-n_-c-a-l-l-b-a-c-k/#media_projection_callback","title":"MEDIA_PROJECTION_CALLBACK","text":"<p>MEDIA_PROJECTION_CALLBACK()</p>"},{"location":"api/shark/-android-reference-matchers/-m-e-d-i-a_-p-r-o-j-e-c-t-i-o-n_-c-a-l-l-b-a-c-k/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-m-e-d-i-a_-s-c-a-n-n-e-r_-c-o-n-n-e-c-t-i-o-n/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/MEDIA_SCANNER_CONNECTION</p>"},{"location":"api/shark/-android-reference-matchers/-m-e-d-i-a_-s-c-a-n-n-e-r_-c-o-n-n-e-c-t-i-o-n/#media_scanner_connection","title":"MEDIA_SCANNER_CONNECTION","text":"<p>MEDIA_SCANNER_CONNECTION()</p>"},{"location":"api/shark/-android-reference-matchers/-m-e-d-i-a_-s-c-a-n-n-e-r_-c-o-n-n-e-c-t-i-o-n/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-m-e-d-i-a_-s-e-s-s-i-o-n_-l-e-g-a-c-y_-h-e-l-p-e-r__-s-i-n-s-t-a-n-c-e/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/MEDIA_SESSION_LEGACY_HELPER__SINSTANCE</p>"},{"location":"api/shark/-android-reference-matchers/-m-e-d-i-a_-s-e-s-s-i-o-n_-l-e-g-a-c-y_-h-e-l-p-e-r__-s-i-n-s-t-a-n-c-e/#media_session_legacy_helper__sinstance","title":"MEDIA_SESSION_LEGACY_HELPER__SINSTANCE","text":"<p>MEDIA_SESSION_LEGACY_HELPER__SINSTANCE()</p>"},{"location":"api/shark/-android-reference-matchers/-m-e-d-i-a_-s-e-s-s-i-o-n_-l-e-g-a-c-y_-h-e-l-p-e-r__-s-i-n-s-t-a-n-c-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-m-u-l-t-i_-w-i-n-d-o-w_-d-e-c-o-r_-s-u-p-p-o-r-t__-m-w-i-n-d-o-w/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/MULTI_WINDOW_DECOR_SUPPORT__MWINDOW</p>"},{"location":"api/shark/-android-reference-matchers/-m-u-l-t-i_-w-i-n-d-o-w_-d-e-c-o-r_-s-u-p-p-o-r-t__-m-w-i-n-d-o-w/#multi_window_decor_support__mwindow","title":"MULTI_WINDOW_DECOR_SUPPORT__MWINDOW","text":"<p>MULTI_WINDOW_DECOR_SUPPORT__MWINDOW()</p>"},{"location":"api/shark/-android-reference-matchers/-m-u-l-t-i_-w-i-n-d-o-w_-d-e-c-o-r_-s-u-p-p-o-r-t__-m-w-i-n-d-o-w/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-o-e-m_-s-c-e-n-e_-c-a-l-l_-b-l-o-c-k-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/OEM_SCENE_CALL_BLOCKER</p>"},{"location":"api/shark/-android-reference-matchers/-o-e-m_-s-c-e-n-e_-c-a-l-l_-b-l-o-c-k-e-r/#oem_scene_call_blocker","title":"OEM_SCENE_CALL_BLOCKER","text":"<p>OEM_SCENE_CALL_BLOCKER()</p>"},{"location":"api/shark/-android-reference-matchers/-o-e-m_-s-c-e-n-e_-c-a-l-l_-b-l-o-c-k-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-p-e-r-f_-m-o-n-i-t-o-r_-l-a-s-t_-c-a-l-l-b-a-c-k/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/PERF_MONITOR_LAST_CALLBACK</p>"},{"location":"api/shark/-android-reference-matchers/-p-e-r-f_-m-o-n-i-t-o-r_-l-a-s-t_-c-a-l-l-b-a-c-k/#perf_monitor_last_callback","title":"PERF_MONITOR_LAST_CALLBACK","text":"<p>PERF_MONITOR_LAST_CALLBACK()</p>"},{"location":"api/shark/-android-reference-matchers/-p-e-r-f_-m-o-n-i-t-o-r_-l-a-s-t_-c-a-l-l-b-a-c-k/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-p-e-r-s-o-n-a_-m-a-n-a-g-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/PERSONA_MANAGER</p>"},{"location":"api/shark/-android-reference-matchers/-p-e-r-s-o-n-a_-m-a-n-a-g-e-r/#persona_manager","title":"PERSONA_MANAGER","text":"<p>PERSONA_MANAGER()</p>"},{"location":"api/shark/-android-reference-matchers/-p-e-r-s-o-n-a_-m-a-n-a-g-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-p-l-a-y-e-r_-b-a-s-e/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/PLAYER_BASE</p>"},{"location":"api/shark/-android-reference-matchers/-p-l-a-y-e-r_-b-a-s-e/#player_base","title":"PLAYER_BASE","text":"<p>PLAYER_BASE()</p>"},{"location":"api/shark/-android-reference-matchers/-p-l-a-y-e-r_-b-a-s-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-r-a-z-e-r_-t-e-x-t_-k-e-y_-l-i-s-t-e-n-e-r__-m-c-o-n-t-e-x-t/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/RAZER_TEXT_KEY_LISTENER__MCONTEXT</p>"},{"location":"api/shark/-android-reference-matchers/-r-a-z-e-r_-t-e-x-t_-k-e-y_-l-i-s-t-e-n-e-r__-m-c-o-n-t-e-x-t/#razer_text_key_listener__mcontext","title":"RAZER_TEXT_KEY_LISTENER__MCONTEXT","text":"<p>RAZER_TEXT_KEY_LISTENER__MCONTEXT()</p>"},{"location":"api/shark/-android-reference-matchers/-r-a-z-e-r_-t-e-x-t_-k-e-y_-l-i-s-t-e-n-e-r__-m-c-o-n-t-e-x-t/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-r-e-f-e-r-e-n-c-e-s/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/REFERENCES</p>"},{"location":"api/shark/-android-reference-matchers/-r-e-f-e-r-e-n-c-e-s/#references","title":"REFERENCES","text":"<p>REFERENCES()</p>"},{"location":"api/shark/-android-reference-matchers/-r-e-f-e-r-e-n-c-e-s/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-r-e-n-d-e-r_-n-o-d-e_-a-n-i-m-a-t-o-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/RENDER_NODE_ANIMATOR</p>"},{"location":"api/shark/-android-reference-matchers/-r-e-n-d-e-r_-n-o-d-e_-a-n-i-m-a-t-o-r/#render_node_animator","title":"RENDER_NODE_ANIMATOR","text":"<p>RENDER_NODE_ANIMATOR()</p>"},{"location":"api/shark/-android-reference-matchers/-r-e-n-d-e-r_-n-o-d-e_-a-n-i-m-a-t-o-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-r-e-s-o-u-r-c-e-s__-m-c-o-n-t-e-x-t/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/RESOURCES__MCONTEXT</p>"},{"location":"api/shark/-android-reference-matchers/-r-e-s-o-u-r-c-e-s__-m-c-o-n-t-e-x-t/#resources__mcontext","title":"RESOURCES__MCONTEXT","text":"<p>RESOURCES__MCONTEXT()</p>"},{"location":"api/shark/-android-reference-matchers/-r-e-s-o-u-r-c-e-s__-m-c-o-n-t-e-x-t/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-s-e-m_-a-p-p_-i-c-o-n_-s-o-l-u-t-i-o-n/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/SEM_APP_ICON_SOLUTION</p>"},{"location":"api/shark/-android-reference-matchers/-s-e-m_-a-p-p_-i-c-o-n_-s-o-l-u-t-i-o-n/#sem_app_icon_solution","title":"SEM_APP_ICON_SOLUTION","text":"<p>SEM_APP_ICON_SOLUTION()</p>"},{"location":"api/shark/-android-reference-matchers/-s-e-m_-a-p-p_-i-c-o-n_-s-o-l-u-t-i-o-n/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-s-e-m_-c-l-i-p-b-o-a-r-d_-m-a-n-a-g-e-r__-m-c-o-n-t-e-x-t/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/SEM_CLIPBOARD_MANAGER__MCONTEXT</p>"},{"location":"api/shark/-android-reference-matchers/-s-e-m_-c-l-i-p-b-o-a-r-d_-m-a-n-a-g-e-r__-m-c-o-n-t-e-x-t/#sem_clipboard_manager__mcontext","title":"SEM_CLIPBOARD_MANAGER__MCONTEXT","text":"<p>SEM_CLIPBOARD_MANAGER__MCONTEXT()</p>"},{"location":"api/shark/-android-reference-matchers/-s-e-m_-c-l-i-p-b-o-a-r-d_-m-a-n-a-g-e-r__-m-c-o-n-t-e-x-t/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-s-e-m_-e-m-e-r-g-e-n-c-y_-m-a-n-a-g-e-r__-m-c-o-n-t-e-x-t/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/SEM_EMERGENCY_MANAGER__MCONTEXT</p>"},{"location":"api/shark/-android-reference-matchers/-s-e-m_-e-m-e-r-g-e-n-c-y_-m-a-n-a-g-e-r__-m-c-o-n-t-e-x-t/#sem_emergency_manager__mcontext","title":"SEM_EMERGENCY_MANAGER__MCONTEXT","text":"<p>SEM_EMERGENCY_MANAGER__MCONTEXT()</p>"},{"location":"api/shark/-android-reference-matchers/-s-e-m_-e-m-e-r-g-e-n-c-y_-m-a-n-a-g-e-r__-m-c-o-n-t-e-x-t/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-s-e-m_-p-e-r-s-o-n-a_-m-a-n-a-g-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/SEM_PERSONA_MANAGER</p>"},{"location":"api/shark/-android-reference-matchers/-s-e-m_-p-e-r-s-o-n-a_-m-a-n-a-g-e-r/#sem_persona_manager","title":"SEM_PERSONA_MANAGER","text":"<p>SEM_PERSONA_MANAGER()</p>"},{"location":"api/shark/-android-reference-matchers/-s-e-m_-p-e-r-s-o-n-a_-m-a-n-a-g-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-s-m-a-r-t_-c-o-v-e-r_-m-a-n-a-g-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/SMART_COVER_MANAGER</p>"},{"location":"api/shark/-android-reference-matchers/-s-m-a-r-t_-c-o-v-e-r_-m-a-n-a-g-e-r/#smart_cover_manager","title":"SMART_COVER_MANAGER","text":"<p>SMART_COVER_MANAGER()</p>"},{"location":"api/shark/-android-reference-matchers/-s-m-a-r-t_-c-o-v-e-r_-m-a-n-a-g-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-s-p-a-n_-c-o-n-t-r-o-l-l-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/SPAN_CONTROLLER</p>"},{"location":"api/shark/-android-reference-matchers/-s-p-a-n_-c-o-n-t-r-o-l-l-e-r/#span_controller","title":"SPAN_CONTROLLER","text":"<p>SPAN_CONTROLLER()</p>"},{"location":"api/shark/-android-reference-matchers/-s-p-a-n_-c-o-n-t-r-o-l-l-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-s-p-e-e-c-h_-r-e-c-o-g-n-i-z-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/SPEECH_RECOGNIZER</p>"},{"location":"api/shark/-android-reference-matchers/-s-p-e-e-c-h_-r-e-c-o-g-n-i-z-e-r/#speech_recognizer","title":"SPEECH_RECOGNIZER","text":"<p>SPEECH_RECOGNIZER()</p>"},{"location":"api/shark/-android-reference-matchers/-s-p-e-e-c-h_-r-e-c-o-g-n-i-z-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-s-p-e-l-l_-c-h-e-c-k-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/SPELL_CHECKER</p>"},{"location":"api/shark/-android-reference-matchers/-s-p-e-l-l_-c-h-e-c-k-e-r/#spell_checker","title":"SPELL_CHECKER","text":"<p>SPELL_CHECKER()</p>"},{"location":"api/shark/-android-reference-matchers/-s-p-e-l-l_-c-h-e-c-k-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-s-p-e-l-l_-c-h-e-c-k-e-r_-s-e-s-s-i-o-n/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/SPELL_CHECKER_SESSION</p>"},{"location":"api/shark/-android-reference-matchers/-s-p-e-l-l_-c-h-e-c-k-e-r_-s-e-s-s-i-o-n/#spell_checker_session","title":"SPELL_CHECKER_SESSION","text":"<p>SPELL_CHECKER_SESSION()</p>"},{"location":"api/shark/-android-reference-matchers/-s-p-e-l-l_-c-h-e-c-k-e-r_-s-e-s-s-i-o-n/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-s-p-e-n_-g-e-s-t-u-r-e_-m-a-n-a-g-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/SPEN_GESTURE_MANAGER</p>"},{"location":"api/shark/-android-reference-matchers/-s-p-e-n_-g-e-s-t-u-r-e_-m-a-n-a-g-e-r/#spen_gesture_manager","title":"SPEN_GESTURE_MANAGER","text":"<p>SPEN_GESTURE_MANAGER()</p>"},{"location":"api/shark/-android-reference-matchers/-s-p-e-n_-g-e-s-t-u-r-e_-m-a-n-a-g-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-s-t-a-t-i-c_-m-t-a-r-g-e-t_-v-i-e-w/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/STATIC_MTARGET_VIEW</p>"},{"location":"api/shark/-android-reference-matchers/-s-t-a-t-i-c_-m-t-a-r-g-e-t_-v-i-e-w/#static_mtarget_view","title":"STATIC_MTARGET_VIEW","text":"<p>STATIC_MTARGET_VIEW()</p>"},{"location":"api/shark/-android-reference-matchers/-s-t-a-t-i-c_-m-t-a-r-g-e-t_-v-i-e-w/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-s-y-s-t-e-m_-s-e-n-s-o-r_-m-a-n-a-g-e-r__-m-a-p-p-c-o-n-t-e-x-t-i-m-p-l/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/SYSTEM_SENSOR_MANAGER__MAPPCONTEXTIMPL</p>"},{"location":"api/shark/-android-reference-matchers/-s-y-s-t-e-m_-s-e-n-s-o-r_-m-a-n-a-g-e-r__-m-a-p-p-c-o-n-t-e-x-t-i-m-p-l/#system_sensor_manager__mappcontextimpl","title":"SYSTEM_SENSOR_MANAGER__MAPPCONTEXTIMPL","text":"<p>SYSTEM_SENSOR_MANAGER__MAPPCONTEXTIMPL()</p>"},{"location":"api/shark/-android-reference-matchers/-s-y-s-t-e-m_-s-e-n-s-o-r_-m-a-n-a-g-e-r__-m-a-p-p-c-o-n-t-e-x-t-i-m-p-l/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-t-e-x-t_-l-i-n-e__-s-c-a-c-h-e-d/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/TEXT_LINE__SCACHED</p>"},{"location":"api/shark/-android-reference-matchers/-t-e-x-t_-l-i-n-e__-s-c-a-c-h-e-d/#text_line__scached","title":"TEXT_LINE__SCACHED","text":"<p>TEXT_LINE__SCACHED()</p>"},{"location":"api/shark/-android-reference-matchers/-t-e-x-t_-l-i-n-e__-s-c-a-c-h-e-d/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-t-e-x-t_-t-o_-s-p-e-e-c-h/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/TEXT_TO_SPEECH</p>"},{"location":"api/shark/-android-reference-matchers/-t-e-x-t_-t-o_-s-p-e-e-c-h/#text_to_speech","title":"TEXT_TO_SPEECH","text":"<p>TEXT_TO_SPEECH()</p>"},{"location":"api/shark/-android-reference-matchers/-t-e-x-t_-t-o_-s-p-e-e-c-h/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-t-e-x-t_-v-i-e-w__-m-l-a-s-t_-h-o-v-e-r-e-d_-v-i-e-w/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/TEXT_VIEW__MLAST_HOVERED_VIEW</p>"},{"location":"api/shark/-android-reference-matchers/-t-e-x-t_-v-i-e-w__-m-l-a-s-t_-h-o-v-e-r-e-d_-v-i-e-w/#text_view__mlast_hovered_view","title":"TEXT_VIEW__MLAST_HOVERED_VIEW","text":"<p>TEXT_VIEW__MLAST_HOVERED_VIEW()</p>"},{"location":"api/shark/-android-reference-matchers/-t-e-x-t_-v-i-e-w__-m-l-a-s-t_-h-o-v-e-r-e-d_-v-i-e-w/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-t-o-a-s-t_-t-n/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/TOAST_TN</p>"},{"location":"api/shark/-android-reference-matchers/-t-o-a-s-t_-t-n/#toast_tn","title":"TOAST_TN","text":"<p>TOAST_TN()</p>"},{"location":"api/shark/-android-reference-matchers/-t-o-a-s-t_-t-n/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-u-s-e-r_-m-a-n-a-g-e-r__-s-i-n-s-t-a-n-c-e/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/USER_MANAGER__SINSTANCE</p>"},{"location":"api/shark/-android-reference-matchers/-u-s-e-r_-m-a-n-a-g-e-r__-s-i-n-s-t-a-n-c-e/#user_manager__sinstance","title":"USER_MANAGER__SINSTANCE","text":"<p>USER_MANAGER__SINSTANCE()</p>"},{"location":"api/shark/-android-reference-matchers/-u-s-e-r_-m-a-n-a-g-e-r__-s-i-n-s-t-a-n-c-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-v-i-e-w-l-o-c-a-t-i-o-n-h-o-l-d-e-r_-r-o-o-t/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/VIEWLOCATIONHOLDER_ROOT</p>"},{"location":"api/shark/-android-reference-matchers/-v-i-e-w-l-o-c-a-t-i-o-n-h-o-l-d-e-r_-r-o-o-t/#viewlocationholder_root","title":"VIEWLOCATIONHOLDER_ROOT","text":"<p>VIEWLOCATIONHOLDER_ROOT()</p>"},{"location":"api/shark/-android-reference-matchers/-v-i-e-w-l-o-c-a-t-i-o-n-h-o-l-d-e-r_-r-o-o-t/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-v-i-e-w_-c-o-n-f-i-g-u-r-a-t-i-o-n__-m-c-o-n-t-e-x-t/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/VIEW_CONFIGURATION__MCONTEXT</p>"},{"location":"api/shark/-android-reference-matchers/-v-i-e-w_-c-o-n-f-i-g-u-r-a-t-i-o-n__-m-c-o-n-t-e-x-t/#view_configuration__mcontext","title":"VIEW_CONFIGURATION__MCONTEXT","text":"<p>VIEW_CONFIGURATION__MCONTEXT()</p>"},{"location":"api/shark/-android-reference-matchers/-v-i-e-w_-c-o-n-f-i-g-u-r-a-t-i-o-n__-m-c-o-n-t-e-x-t/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-v-i-e-w_-g-r-o-u-p__-m_-c-u-r-r-e-n-t_-d-r-a-g_-c-h-i-l-d/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/VIEW_GROUP__M_CURRENT_DRAG_CHILD</p>"},{"location":"api/shark/-android-reference-matchers/-v-i-e-w_-g-r-o-u-p__-m_-c-u-r-r-e-n-t_-d-r-a-g_-c-h-i-l-d/#view_group__m_current_drag_child","title":"VIEW_GROUP__M_CURRENT_DRAG_CHILD","text":"<p>VIEW_GROUP__M_CURRENT_DRAG_CHILD()</p>"},{"location":"api/shark/-android-reference-matchers/-v-i-e-w_-g-r-o-u-p__-m_-c-u-r-r-e-n-t_-d-r-a-g_-c-h-i-l-d/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-v-i-e-w_-g-r-o-u-p__-m_-p-r-e_-s-o-r-t-e-d_-c-h-i-l-d-r-e-n/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/VIEW_GROUP__M_PRE_SORTED_CHILDREN</p>"},{"location":"api/shark/-android-reference-matchers/-v-i-e-w_-g-r-o-u-p__-m_-p-r-e_-s-o-r-t-e-d_-c-h-i-l-d-r-e-n/#view_group__m_pre_sorted_children","title":"VIEW_GROUP__M_PRE_SORTED_CHILDREN","text":"<p>VIEW_GROUP__M_PRE_SORTED_CHILDREN()</p>"},{"location":"api/shark/-android-reference-matchers/-v-i-e-w_-g-r-o-u-p__-m_-p-r-e_-s-o-r-t-e-d_-c-h-i-l-d-r-e-n/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-v-i-e-w_-t-o-o-l-t-i-p_-c-a-l-l-b-a-c-k/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/VIEW_TOOLTIP_CALLBACK</p>"},{"location":"api/shark/-android-reference-matchers/-v-i-e-w_-t-o-o-l-t-i-p_-c-a-l-l-b-a-c-k/#view_tooltip_callback","title":"VIEW_TOOLTIP_CALLBACK","text":"<p>VIEW_TOOLTIP_CALLBACK()</p>"},{"location":"api/shark/-android-reference-matchers/-v-i-e-w_-t-o-o-l-t-i-p_-c-a-l-l-b-a-c-k/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-w-i-n-d-o-w_-o-n_-b-a-c-k_-i-n-v-o-k-e-d_-d-i-s-p-a-t-c-h-e-r__-s-t-u-b/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/WINDOW_ON_BACK_INVOKED_DISPATCHER__STUB</p>"},{"location":"api/shark/-android-reference-matchers/-w-i-n-d-o-w_-o-n_-b-a-c-k_-i-n-v-o-k-e-d_-d-i-s-p-a-t-c-h-e-r__-s-t-u-b/#window_on_back_invoked_dispatcher__stub","title":"WINDOW_ON_BACK_INVOKED_DISPATCHER__STUB","text":"<p>WINDOW_ON_BACK_INVOKED_DISPATCHER__STUB()</p>"},{"location":"api/shark/-android-reference-matchers/-w-i-n-d-o-w_-o-n_-b-a-c-k_-i-n-v-o-k-e-d_-d-i-s-p-a-t-c-h-e-r__-s-t-u-b/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-x-i-a-m-i__-r-e-s-o-u-r-c-e-s_-i-m-p-l/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/XIAMI__RESOURCES_IMPL</p>"},{"location":"api/shark/-android-reference-matchers/-x-i-a-m-i__-r-e-s-o-u-r-c-e-s_-i-m-p-l/#xiami__resources_impl","title":"XIAMI__RESOURCES_IMPL","text":"<p>XIAMI__RESOURCES_IMPL()</p>"},{"location":"api/shark/-android-reference-matchers/-x-i-a-m-i__-r-e-s-o-u-r-c-e-s_-i-m-p-l/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-resource-id-names/","title":"Index","text":"<p>//leakcanary/shark/AndroidResourceIdNames</p>"},{"location":"api/shark/-android-resource-id-names/#androidresourceidnames","title":"AndroidResourceIdNames","text":"<p>class AndroidResourceIdNames</p>"},{"location":"api/shark/-android-resource-id-names/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-android-resource-id-names/#functions","title":"Functions","text":"Name Summary get operator fun get(id: Int): String?"},{"location":"api/shark/-android-resource-id-names/get/","title":"Get","text":"<p>//leakcanary/shark/AndroidResourceIdNames/get</p>"},{"location":"api/shark/-android-resource-id-names/get/#get","title":"get","text":"<p>operator fun get(id: Int): String?</p>"},{"location":"api/shark/-android-resource-id-names/-companion/","title":"Index","text":"<p>//leakcanary/shark/AndroidResourceIdNames/Companion</p>"},{"location":"api/shark/-android-resource-id-names/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-android-resource-id-names/-companion/#functions","title":"Functions","text":"Name Summary readFromHeap fun readFromHeap(graph: HeapGraph): AndroidResourceIdNames? saveToMemory @Synchronizedfun saveToMemory(getResourceTypeName: (Int) -&gt; String?, getResourceEntryName: (Int) -&gt; String?)"},{"location":"api/shark/-android-resource-id-names/-companion/read-from-heap/","title":"Read from heap","text":"<p>//leakcanary/shark/AndroidResourceIdNames/Companion/readFromHeap</p>"},{"location":"api/shark/-android-resource-id-names/-companion/read-from-heap/#readfromheap","title":"readFromHeap","text":"<p>fun readFromHeap(graph: HeapGraph): AndroidResourceIdNames?</p>"},{"location":"api/shark/-android-resource-id-names/-companion/save-to-memory/","title":"Save to memory","text":"<p>//leakcanary/shark/AndroidResourceIdNames/Companion/saveToMemory</p>"},{"location":"api/shark/-android-resource-id-names/-companion/save-to-memory/#savetomemory","title":"saveToMemory","text":"<p>@Synchronized</p> <p>fun saveToMemory(getResourceTypeName: (Int) -&gt; String?, getResourceEntryName: (Int) -&gt; String?)</p>"},{"location":"api/shark/-android-resource-id-names/-companion/save-to-memory/#parameters","title":"Parameters","text":"<p>main</p> getResourceTypeName a function that delegates to Android Resources.getResourceTypeName but returns null when the name isn\u2019t found instead of throwing an exception. getResourceEntryName a function that delegates to Android Resources.getResourceEntryName but returns null when the name isn\u2019t found instead of throwing an exception."},{"location":"api/shark/-android-services/","title":"Index","text":"<p>//leakcanary/shark/AndroidServices</p>"},{"location":"api/shark/-android-services/#androidservices","title":"AndroidServices","text":"<p>object AndroidServices</p>"},{"location":"api/shark/-android-services/#properties","title":"Properties","text":"Name Summary aliveAndroidServiceObjectIds val HeapGraph.aliveAndroidServiceObjectIds: List&lt;Long&gt;"},{"location":"api/shark/-android-services/alive-android-service-object-ids/","title":"Alive android service object ids","text":"<p>//leakcanary/shark/AndroidServices/aliveAndroidServiceObjectIds</p>"},{"location":"api/shark/-android-services/alive-android-service-object-ids/#aliveandroidserviceobjectids","title":"aliveAndroidServiceObjectIds","text":"<p>val HeapGraph.aliveAndroidServiceObjectIds: List&lt;Long&gt;</p>"},{"location":"api/shark/-app-singleton-inspector/","title":"Index","text":"<p>//leakcanary/shark/AppSingletonInspector</p>"},{"location":"api/shark/-app-singleton-inspector/#appsingletoninspector","title":"AppSingletonInspector","text":"<p>class AppSingletonInspector(singletonClasses: String) : ObjectInspector</p> <p>Inspector that automatically marks instances of the provided class names as not leaking because they\u2019re app wide singletons.</p>"},{"location":"api/shark/-app-singleton-inspector/#constructors","title":"Constructors","text":"AppSingletonInspector fun AppSingletonInspector(vararg singletonClasses: String)"},{"location":"api/shark/-app-singleton-inspector/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-app-singleton-inspector/-app-singleton-inspector/","title":"app singleton inspector","text":"<p>//leakcanary/shark/AppSingletonInspector/AppSingletonInspector</p>"},{"location":"api/shark/-app-singleton-inspector/-app-singleton-inspector/#appsingletoninspector","title":"AppSingletonInspector","text":"<p>fun AppSingletonInspector(vararg singletonClasses: String)</p>"},{"location":"api/shark/-app-singleton-inspector/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AppSingletonInspector/inspect</p>"},{"location":"api/shark/-app-singleton-inspector/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-app-singleton-inspector/inspect/#see-also","title":"See also","text":"<p>main</p> shark.ObjectInspector"},{"location":"api/shark/-application-leak/","title":"Index","text":"<p>//leakcanary/shark/ApplicationLeak</p>"},{"location":"api/shark/-application-leak/#applicationleak","title":"ApplicationLeak","text":"<p>data class ApplicationLeak(val leakTraces: List&lt;LeakTrace&gt;) : Leak</p> <p>A leak found by HeapAnalyzer in your application.</p>"},{"location":"api/shark/-application-leak/#constructors","title":"Constructors","text":"ApplicationLeak fun ApplicationLeak(leakTraces: List&lt;LeakTrace&gt;)"},{"location":"api/shark/-application-leak/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-application-leak/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-application-leak/#properties","title":"Properties","text":"Name Summary leakTraces open override val leakTraces: List&lt;LeakTrace&gt;Group of leak traces which share the same leak signature. shortDescription open override val shortDescription: String signature open override val signature: StringA unique SHA1 hash that represents this group of leak traces. totalRetainedHeapByteSize val totalRetainedHeapByteSize: Int?Sum of LeakTrace.retainedHeapByteSize for all elements in leakTraces. Null if the retained heap size was not computed. totalRetainedObjectCount val totalRetainedObjectCount: Int?Sum of LeakTrace.retainedObjectCount for all elements in leakTraces. Null if the retained heap size was not computed."},{"location":"api/shark/-application-leak/-application-leak/","title":"application leak","text":"<p>//leakcanary/shark/ApplicationLeak/ApplicationLeak</p>"},{"location":"api/shark/-application-leak/-application-leak/#applicationleak","title":"ApplicationLeak","text":"<p>fun ApplicationLeak(leakTraces: List&lt;LeakTrace&gt;)</p>"},{"location":"api/shark/-application-leak/leak-traces/","title":"Leak traces","text":"<p>//leakcanary/shark/ApplicationLeak/leakTraces</p>"},{"location":"api/shark/-application-leak/leak-traces/#leaktraces","title":"leakTraces","text":"<p>open override val leakTraces: List&lt;LeakTrace&gt;</p> <p>Group of leak traces which share the same leak signature.</p>"},{"location":"api/shark/-application-leak/short-description/","title":"Short description","text":"<p>//leakcanary/shark/ApplicationLeak/shortDescription</p>"},{"location":"api/shark/-application-leak/short-description/#shortdescription","title":"shortDescription","text":"<p>open override val shortDescription: String</p>"},{"location":"api/shark/-application-leak/signature/","title":"Signature","text":"<p>//leakcanary/shark/ApplicationLeak/signature</p>"},{"location":"api/shark/-application-leak/signature/#signature","title":"signature","text":"<p>open override val signature: String</p> <p>A unique SHA1 hash that represents this group of leak traces.</p> <p>For ApplicationLeak this is based on LeakTrace.signature and for LibraryLeak this is based on LibraryLeak.pattern.</p>"},{"location":"api/shark/-application-leak/to-string/","title":"To string","text":"<p>//leakcanary/shark/ApplicationLeak/toString</p>"},{"location":"api/shark/-application-leak/to-string/#tostring","title":"toString","text":"<p>open override fun toString(): String</p>"},{"location":"api/shark/-application-leak/-companion/","title":"Index","text":"<p>//leakcanary/shark/ApplicationLeak/Companion</p>"},{"location":"api/shark/-application-leak/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-byte-array-source-provider/","title":"Index","text":"<p>//leakcanary/shark/ByteArraySourceProvider</p>"},{"location":"api/shark/-byte-array-source-provider/#bytearraysourceprovider","title":"ByteArraySourceProvider","text":"<p>class ByteArraySourceProvider(byteArray: ByteArray) : DualSourceProvider</p>"},{"location":"api/shark/-byte-array-source-provider/#constructors","title":"Constructors","text":"ByteArraySourceProvider fun ByteArraySourceProvider(byteArray: ByteArray)"},{"location":"api/shark/-byte-array-source-provider/#functions","title":"Functions","text":"Name Summary openRandomAccessSource open override fun openRandomAccessSource(): RandomAccessSource openStreamingSource open override fun openStreamingSource(): BufferedSource"},{"location":"api/shark/-byte-array-source-provider/-byte-array-source-provider/","title":"byte array source provider","text":"<p>//leakcanary/shark/ByteArraySourceProvider/ByteArraySourceProvider</p>"},{"location":"api/shark/-byte-array-source-provider/-byte-array-source-provider/#bytearraysourceprovider","title":"ByteArraySourceProvider","text":"<p>fun ByteArraySourceProvider(byteArray: ByteArray)</p>"},{"location":"api/shark/-byte-array-source-provider/open-random-access-source/","title":"Open random access source","text":"<p>//leakcanary/shark/ByteArraySourceProvider/openRandomAccessSource</p>"},{"location":"api/shark/-byte-array-source-provider/open-random-access-source/#openrandomaccesssource","title":"openRandomAccessSource","text":"<p>open override fun openRandomAccessSource(): RandomAccessSource</p>"},{"location":"api/shark/-byte-array-source-provider/open-streaming-source/","title":"Open streaming source","text":"<p>//leakcanary/shark/ByteArraySourceProvider/openStreamingSource</p>"},{"location":"api/shark/-byte-array-source-provider/open-streaming-source/#openstreamingsource","title":"openStreamingSource","text":"<p>open override fun openStreamingSource(): BufferedSource</p>"},{"location":"api/shark/-closeable-heap-graph/","title":"Index","text":"<p>//leakcanary/shark/CloseableHeapGraph</p>"},{"location":"api/shark/-closeable-heap-graph/#closeableheapgraph","title":"CloseableHeapGraph","text":"<p>interface CloseableHeapGraph : HeapGraph, Closeable</p> <p>A HeapGraph that should be closed after being used.</p>"},{"location":"api/shark/-closeable-heap-graph/#functions","title":"Functions","text":"Name Summary close abstract override fun close() findClassByName abstract fun findClassByName(className: String): HeapObject.HeapClass?Returns the HeapClass corresponding to the provided className, or null if the class cannot be found. findHeapDumpIndex abstract fun findHeapDumpIndex(objectId: Long): IntReturns the 1-based index in the heap dump of the object corresponding to the provided objectId, and throws IllegalArgumentException otherwise. findObjectByHeapDumpIndex abstract fun findObjectByHeapDumpIndex(heapDumpIndex: Int): HeapObjectReturns the HeapObject corresponding to the provided heapDumpIndex, and throws IllegalArgumentException if heapDumpIndex is less than 1 or more than objectCount. findObjectById abstract fun findObjectById(objectId: Long): HeapObjectReturns the HeapObject corresponding to the provided objectId, and throws IllegalArgumentException otherwise. findObjectByIdOrNull abstract fun findObjectByIdOrNull(objectId: Long): HeapObject?Returns the HeapObject corresponding to the provided objectId or null if it cannot be found. findObjectByIndex abstract fun findObjectByIndex(objectIndex: Int): HeapObjectReturns the HeapObject corresponding to the provided objectIndex, and throws IllegalArgumentException if objectIndex is less than 0 or more than objectCount - 1. objectExists abstract fun objectExists(objectId: Long): BooleanReturns true if the provided objectId exists in the heap dump."},{"location":"api/shark/-closeable-heap-graph/#properties","title":"Properties","text":"Name Summary classCount abstract val classCount: Int classes abstract val classes: Sequence&lt;HeapObject.HeapClass&gt;Sequence of all classes in the heap dump. context abstract val context: GraphContextIn memory store that can be used to store objects this HeapGraph instance. gcRoots abstract val gcRoots: List&lt;GcRoot&gt;All GC roots which type matches types known to this heap graph and which point to non null references. You can retrieve the object that a GC Root points to by calling findObjectById with GcRoot.id, however you need to first check that objectExists returns true because GC roots can point to objects that don\u2019t exist in the heap dump. identifierByteSize abstract val identifierByteSize: Int instanceCount abstract val instanceCount: Int instances abstract val instances: Sequence&lt;HeapObject.HeapInstance&gt;Sequence of all instances in the heap dump. objectArrayCount abstract val objectArrayCount: Int objectArrays abstract val objectArrays: Sequence&lt;HeapObject.HeapObjectArray&gt;Sequence of all object arrays in the heap dump. objectCount abstract val objectCount: Int objects abstract val objects: Sequence&lt;HeapObject&gt;Sequence of all objects in the heap dump. primitiveArrayCount abstract val primitiveArrayCount: Int primitiveArrays abstract val primitiveArrays: Sequence&lt;HeapObject.HeapPrimitiveArray&gt;Sequence of all primitive arrays in the heap dump."},{"location":"api/shark/-closeable-heap-graph/#inheritors","title":"Inheritors","text":"Name HprofHeapGraph"},{"location":"api/shark/-constant-memory-metrics-dual-source-provider/","title":"Index","text":"<p>//leakcanary/shark/ConstantMemoryMetricsDualSourceProvider</p>"},{"location":"api/shark/-constant-memory-metrics-dual-source-provider/#constantmemorymetricsdualsourceprovider","title":"ConstantMemoryMetricsDualSourceProvider","text":"<p>class ConstantMemoryMetricsDualSourceProvider(realSourceProvider: DualSourceProvider) : DualSourceProvider</p> <p>Captures IO read metrics without using much memory.</p>"},{"location":"api/shark/-constant-memory-metrics-dual-source-provider/#constructors","title":"Constructors","text":"ConstantMemoryMetricsDualSourceProvider fun ConstantMemoryMetricsDualSourceProvider(realSourceProvider: DualSourceProvider)"},{"location":"api/shark/-constant-memory-metrics-dual-source-provider/#functions","title":"Functions","text":"Name Summary openRandomAccessSource open override fun openRandomAccessSource(): RandomAccessSource openStreamingSource open override fun openStreamingSource(): BufferedSource"},{"location":"api/shark/-constant-memory-metrics-dual-source-provider/#properties","title":"Properties","text":"Name Summary byteTravelRange val byteTravelRange: Long randomAccessByteReads val randomAccessByteReads: Long = 0 randomAccessByteTravel val randomAccessByteTravel: Long = 0 randomAccessReadCount val randomAccessReadCount: Long = 0"},{"location":"api/shark/-constant-memory-metrics-dual-source-provider/-constant-memory-metrics-dual-source-provider/","title":"constant memory metrics dual source provider","text":"<p>//leakcanary/shark/ConstantMemoryMetricsDualSourceProvider/ConstantMemoryMetricsDualSourceProvider</p>"},{"location":"api/shark/-constant-memory-metrics-dual-source-provider/-constant-memory-metrics-dual-source-provider/#constantmemorymetricsdualsourceprovider","title":"ConstantMemoryMetricsDualSourceProvider","text":"<p>fun ConstantMemoryMetricsDualSourceProvider(realSourceProvider: DualSourceProvider)</p>"},{"location":"api/shark/-constant-memory-metrics-dual-source-provider/byte-travel-range/","title":"Byte travel range","text":"<p>//leakcanary/shark/ConstantMemoryMetricsDualSourceProvider/byteTravelRange</p>"},{"location":"api/shark/-constant-memory-metrics-dual-source-provider/byte-travel-range/#bytetravelrange","title":"byteTravelRange","text":"<p>val byteTravelRange: Long</p>"},{"location":"api/shark/-constant-memory-metrics-dual-source-provider/open-random-access-source/","title":"Open random access source","text":"<p>//leakcanary/shark/ConstantMemoryMetricsDualSourceProvider/openRandomAccessSource</p>"},{"location":"api/shark/-constant-memory-metrics-dual-source-provider/open-random-access-source/#openrandomaccesssource","title":"openRandomAccessSource","text":"<p>open override fun openRandomAccessSource(): RandomAccessSource</p>"},{"location":"api/shark/-constant-memory-metrics-dual-source-provider/open-streaming-source/","title":"Open streaming source","text":"<p>//leakcanary/shark/ConstantMemoryMetricsDualSourceProvider/openStreamingSource</p>"},{"location":"api/shark/-constant-memory-metrics-dual-source-provider/open-streaming-source/#openstreamingsource","title":"openStreamingSource","text":"<p>open override fun openStreamingSource(): BufferedSource</p>"},{"location":"api/shark/-constant-memory-metrics-dual-source-provider/random-access-byte-reads/","title":"Random access byte reads","text":"<p>//leakcanary/shark/ConstantMemoryMetricsDualSourceProvider/randomAccessByteReads</p>"},{"location":"api/shark/-constant-memory-metrics-dual-source-provider/random-access-byte-reads/#randomaccessbytereads","title":"randomAccessByteReads","text":"<p>val randomAccessByteReads: Long = 0</p>"},{"location":"api/shark/-constant-memory-metrics-dual-source-provider/random-access-byte-travel/","title":"Random access byte travel","text":"<p>//leakcanary/shark/ConstantMemoryMetricsDualSourceProvider/randomAccessByteTravel</p>"},{"location":"api/shark/-constant-memory-metrics-dual-source-provider/random-access-byte-travel/#randomaccessbytetravel","title":"randomAccessByteTravel","text":"<p>val randomAccessByteTravel: Long = 0</p>"},{"location":"api/shark/-constant-memory-metrics-dual-source-provider/random-access-read-count/","title":"Random access read count","text":"<p>//leakcanary/shark/ConstantMemoryMetricsDualSourceProvider/randomAccessReadCount</p>"},{"location":"api/shark/-constant-memory-metrics-dual-source-provider/random-access-read-count/#randomaccessreadcount","title":"randomAccessReadCount","text":"<p>val randomAccessReadCount: Long = 0</p>"},{"location":"api/shark/-decorated-path/","title":"Index","text":"<p>//leakcanary/shark/DecoratedPath</p>"},{"location":"api/shark/-decorated-path/#decoratedpath","title":"DecoratedPath","text":"<p>class DecoratedPath(delegate: Path) : Path</p>"},{"location":"api/shark/-decorated-path/#constructors","title":"Constructors","text":"DecoratedPath fun DecoratedPath(delegate: Path)"},{"location":"api/shark/-decorated-path/#functions","title":"Functions","text":"Name Summary endNode open override fun endNode(): Node forEach open fun forEach(p0: Consumer&lt;in Entity&gt;) iterator open operator override fun iterator(): MutableIterator&lt;Entity&gt; lastRelationship open override fun lastRelationship(): Relationship length open override fun length(): Int nodes open override fun nodes(): MutableIterable&lt;Node&gt; relationships open override fun relationships(): Iterable&lt;Relationship&gt; reverseNodes open override fun reverseNodes(): MutableIterable&lt;Node&gt; reverseRelationships open override fun reverseRelationships(): Iterable&lt;Relationship&gt; spliterator open fun spliterator(): Spliterator&lt;Entity&gt; startNode open override fun startNode(): Node"},{"location":"api/shark/-decorated-path/-decorated-path/","title":"decorated path","text":"<p>//leakcanary/shark/DecoratedPath/DecoratedPath</p>"},{"location":"api/shark/-decorated-path/-decorated-path/#decoratedpath","title":"DecoratedPath","text":"<p>fun DecoratedPath(delegate: Path)</p>"},{"location":"api/shark/-decorated-path/iterator/","title":"Iterator","text":"<p>//leakcanary/shark/DecoratedPath/iterator</p>"},{"location":"api/shark/-decorated-path/iterator/#iterator","title":"iterator","text":"<p>open operator override fun iterator(): MutableIterator&lt;Entity&gt;</p>"},{"location":"api/shark/-decorated-path/relationships/","title":"Relationships","text":"<p>//leakcanary/shark/DecoratedPath/relationships</p>"},{"location":"api/shark/-decorated-path/relationships/#relationships","title":"relationships","text":"<p>open override fun relationships(): Iterable&lt;Relationship&gt;</p>"},{"location":"api/shark/-decorated-path/reverse-relationships/","title":"Reverse relationships","text":"<p>//leakcanary/shark/DecoratedPath/reverseRelationships</p>"},{"location":"api/shark/-decorated-path/reverse-relationships/#reverserelationships","title":"reverseRelationships","text":"<p>open override fun reverseRelationships(): Iterable&lt;Relationship&gt;</p>"},{"location":"api/shark/-deobfuscate-hprof-command/","title":"Index","text":"<p>//leakcanary/shark/DeobfuscateHprofCommand</p>"},{"location":"api/shark/-deobfuscate-hprof-command/#deobfuscatehprofcommand","title":"DeobfuscateHprofCommand","text":"<p>class DeobfuscateHprofCommand : CliktCommand</p>"},{"location":"api/shark/-deobfuscate-hprof-command/#constructors","title":"Constructors","text":"DeobfuscateHprofCommand fun DeobfuscateHprofCommand()"},{"location":"api/shark/-deobfuscate-hprof-command/#functions","title":"Functions","text":"Name Summary aliases open fun aliases(): Map&lt;String, List&lt;String&gt;&gt; getFormattedHelp open fun getFormattedHelp(): String getFormattedUsage open fun getFormattedUsage(): String issueMessage fun issueMessage(message: String) main fun main(argv: Array&lt;String&gt;)fun main(argv: List&lt;String&gt;) parse fun parse(argv: Array&lt;String&gt;, parentContext: Context?)fun parse(argv: List&lt;String&gt;, parentContext: Context?) registerArgument fun registerArgument(argument: Argument) registeredSubcommandNames fun registeredSubcommandNames(): List&lt;String&gt; registerOption open override fun registerOption(option: GroupableOption)fun registerOption(option: Option) registerOptionGroup fun registerOptionGroup(group: ParameterGroup) run open override fun run() toString open override fun toString(): String"},{"location":"api/shark/-deobfuscate-hprof-command/#properties","title":"Properties","text":"Name Summary commandHelp val commandHelp: String commandHelpEpilog val commandHelpEpilog: String commandName val commandName: String context val context: Context helpTags val helpTags: Map&lt;String, String&gt; invokeWithoutSubcommand val invokeWithoutSubcommand: Boolean messages val messages: List&lt;String&gt; printHelpOnEmptyArgs val printHelpOnEmptyArgs: Boolean"},{"location":"api/shark/-deobfuscate-hprof-command/-deobfuscate-hprof-command/","title":"deobfuscate hprof command","text":"<p>//leakcanary/shark/DeobfuscateHprofCommand/DeobfuscateHprofCommand</p>"},{"location":"api/shark/-deobfuscate-hprof-command/-deobfuscate-hprof-command/#deobfuscatehprofcommand","title":"DeobfuscateHprofCommand","text":"<p>fun DeobfuscateHprofCommand()</p>"},{"location":"api/shark/-deobfuscate-hprof-command/run/","title":"Run","text":"<p>//leakcanary/shark/DeobfuscateHprofCommand/run</p>"},{"location":"api/shark/-deobfuscate-hprof-command/run/#run","title":"run","text":"<p>open override fun run()</p>"},{"location":"api/shark/-dual-source-provider/","title":"Index","text":"<p>//leakcanary/shark/DualSourceProvider</p>"},{"location":"api/shark/-dual-source-provider/#dualsourceprovider","title":"DualSourceProvider","text":"<p>interface DualSourceProvider : StreamingSourceProvider, RandomAccessSourceProvider</p> <p>Both a StreamingSourceProvider and a RandomAccessSourceProvider</p>"},{"location":"api/shark/-dual-source-provider/#functions","title":"Functions","text":"Name Summary openRandomAccessSource abstract fun openRandomAccessSource(): RandomAccessSource openStreamingSource abstract fun openStreamingSource(): BufferedSource"},{"location":"api/shark/-dual-source-provider/#inheritors","title":"Inheritors","text":"Name ByteArraySourceProvider ConstantMemoryMetricsDualSourceProvider FileSourceProvider ThrowingCancelableFileSourceProvider"},{"location":"api/shark/-dual-source-provider/#extensions","title":"Extensions","text":"Name Summary openHeapGraph fun DualSourceProvider.openHeapGraph(proguardMapping: ProguardMapping? = null, indexedGcRootTypes: Set&lt;HprofRecordTag&gt; = HprofIndex.defaultIndexedGcRootTags()): CloseableHeapGraph"},{"location":"api/shark/-dump-process-command/","title":"Index","text":"<p>//leakcanary/shark/DumpProcessCommand</p>"},{"location":"api/shark/-dump-process-command/#dumpprocesscommand","title":"DumpProcessCommand","text":"<p>class DumpProcessCommand : CliktCommand</p>"},{"location":"api/shark/-dump-process-command/#constructors","title":"Constructors","text":"DumpProcessCommand fun DumpProcessCommand()"},{"location":"api/shark/-dump-process-command/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-dump-process-command/#functions","title":"Functions","text":"Name Summary aliases open fun aliases(): Map&lt;String, List&lt;String&gt;&gt; getFormattedHelp open fun getFormattedHelp(): String getFormattedUsage open fun getFormattedUsage(): String issueMessage fun issueMessage(message: String) main fun main(argv: Array&lt;String&gt;)fun main(argv: List&lt;String&gt;) parse fun parse(argv: Array&lt;String&gt;, parentContext: Context?)fun parse(argv: List&lt;String&gt;, parentContext: Context?) registerArgument fun registerArgument(argument: Argument) registeredSubcommandNames fun registeredSubcommandNames(): List&lt;String&gt; registerOption open override fun registerOption(option: GroupableOption)fun registerOption(option: Option) registerOptionGroup fun registerOptionGroup(group: ParameterGroup) run open override fun run() toString open override fun toString(): String"},{"location":"api/shark/-dump-process-command/#properties","title":"Properties","text":"Name Summary commandHelp val commandHelp: String commandHelpEpilog val commandHelpEpilog: String commandName val commandName: String context val context: Context helpTags val helpTags: Map&lt;String, String&gt; invokeWithoutSubcommand val invokeWithoutSubcommand: Boolean messages val messages: List&lt;String&gt; printHelpOnEmptyArgs val printHelpOnEmptyArgs: Boolean"},{"location":"api/shark/-dump-process-command/-dump-process-command/","title":"dump process command","text":"<p>//leakcanary/shark/DumpProcessCommand/DumpProcessCommand</p>"},{"location":"api/shark/-dump-process-command/-dump-process-command/#dumpprocesscommand","title":"DumpProcessCommand","text":"<p>fun DumpProcessCommand()</p>"},{"location":"api/shark/-dump-process-command/run/","title":"Run","text":"<p>//leakcanary/shark/DumpProcessCommand/run</p>"},{"location":"api/shark/-dump-process-command/run/#run","title":"run","text":"<p>open override fun run()</p>"},{"location":"api/shark/-dump-process-command/-companion/","title":"Index","text":"<p>//leakcanary/shark/DumpProcessCommand/Companion</p>"},{"location":"api/shark/-dump-process-command/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-dump-process-command/-companion/#functions","title":"Functions","text":"Name Summary dumpHeap fun CliktCommand.dumpHeap(processNameParam: String, maybeDeviceId: String?): File"},{"location":"api/shark/-dump-process-command/-companion/dump-heap/","title":"Dump heap","text":"<p>//leakcanary/shark/DumpProcessCommand/Companion/dumpHeap</p>"},{"location":"api/shark/-dump-process-command/-companion/dump-heap/#dumpheap","title":"dumpHeap","text":"<p>fun CliktCommand.dumpHeap(processNameParam: String, maybeDeviceId: String?): File</p>"},{"location":"api/shark/-file-source-provider/","title":"Index","text":"<p>//leakcanary/shark/FileSourceProvider</p>"},{"location":"api/shark/-file-source-provider/#filesourceprovider","title":"FileSourceProvider","text":"<p>class FileSourceProvider(file: File) : DualSourceProvider</p>"},{"location":"api/shark/-file-source-provider/#constructors","title":"Constructors","text":"FileSourceProvider fun FileSourceProvider(file: File)"},{"location":"api/shark/-file-source-provider/#functions","title":"Functions","text":"Name Summary openRandomAccessSource open override fun openRandomAccessSource(): RandomAccessSource openStreamingSource open override fun openStreamingSource(): BufferedSource"},{"location":"api/shark/-file-source-provider/-file-source-provider/","title":"file source provider","text":"<p>//leakcanary/shark/FileSourceProvider/FileSourceProvider</p>"},{"location":"api/shark/-file-source-provider/-file-source-provider/#filesourceprovider","title":"FileSourceProvider","text":"<p>fun FileSourceProvider(file: File)</p>"},{"location":"api/shark/-file-source-provider/open-random-access-source/","title":"Open random access source","text":"<p>//leakcanary/shark/FileSourceProvider/openRandomAccessSource</p>"},{"location":"api/shark/-file-source-provider/open-random-access-source/#openrandomaccesssource","title":"openRandomAccessSource","text":"<p>open override fun openRandomAccessSource(): RandomAccessSource</p>"},{"location":"api/shark/-file-source-provider/open-streaming-source/","title":"Open streaming source","text":"<p>//leakcanary/shark/FileSourceProvider/openStreamingSource</p>"},{"location":"api/shark/-file-source-provider/open-streaming-source/#openstreamingsource","title":"openStreamingSource","text":"<p>open override fun openStreamingSource(): BufferedSource</p>"},{"location":"api/shark/-filtering-leaking-object-finder/","title":"Index","text":"<p>//leakcanary/shark/FilteringLeakingObjectFinder</p>"},{"location":"api/shark/-filtering-leaking-object-finder/#filteringleakingobjectfinder","title":"FilteringLeakingObjectFinder","text":"<p>class FilteringLeakingObjectFinder(filters: List&lt;FilteringLeakingObjectFinder.LeakingObjectFilter&gt;) : LeakingObjectFinder</p> <p>Finds the objects that are leaking by scanning all objects in the heap dump and delegating the decision to a list of FilteringLeakingObjectFinder.LeakingObjectFilter</p>"},{"location":"api/shark/-filtering-leaking-object-finder/#constructors","title":"Constructors","text":"FilteringLeakingObjectFinder fun FilteringLeakingObjectFinder(filters: List&lt;FilteringLeakingObjectFinder.LeakingObjectFilter&gt;)"},{"location":"api/shark/-filtering-leaking-object-finder/#types","title":"Types","text":"Name Summary LeakingObjectFilter fun interface LeakingObjectFilterFilter to be passed to the FilteringLeakingObjectFinder constructor."},{"location":"api/shark/-filtering-leaking-object-finder/#functions","title":"Functions","text":"Name Summary findLeakingObjectIds open override fun findLeakingObjectIds(graph: HeapGraph): Set&lt;Long&gt;For a given heap graph, returns a set of object ids for the objects that are leaking."},{"location":"api/shark/-filtering-leaking-object-finder/-filtering-leaking-object-finder/","title":"filtering leaking object finder","text":"<p>//leakcanary/shark/FilteringLeakingObjectFinder/FilteringLeakingObjectFinder</p>"},{"location":"api/shark/-filtering-leaking-object-finder/-filtering-leaking-object-finder/#filteringleakingobjectfinder","title":"FilteringLeakingObjectFinder","text":"<p>fun FilteringLeakingObjectFinder(filters: List&lt;FilteringLeakingObjectFinder.LeakingObjectFilter&gt;)</p>"},{"location":"api/shark/-filtering-leaking-object-finder/find-leaking-object-ids/","title":"Find leaking object ids","text":"<p>//leakcanary/shark/FilteringLeakingObjectFinder/findLeakingObjectIds</p>"},{"location":"api/shark/-filtering-leaking-object-finder/find-leaking-object-ids/#findleakingobjectids","title":"findLeakingObjectIds","text":"<p>open override fun findLeakingObjectIds(graph: HeapGraph): Set&lt;Long&gt;</p> <p>For a given heap graph, returns a set of object ids for the objects that are leaking.</p>"},{"location":"api/shark/-filtering-leaking-object-finder/-leaking-object-filter/","title":"Index","text":"<p>//leakcanary/shark/FilteringLeakingObjectFinder/LeakingObjectFilter</p>"},{"location":"api/shark/-filtering-leaking-object-finder/-leaking-object-filter/#leakingobjectfilter","title":"LeakingObjectFilter","text":"<p>fun interface LeakingObjectFilter</p> <p>Filter to be passed to the FilteringLeakingObjectFinder constructor.</p>"},{"location":"api/shark/-filtering-leaking-object-finder/-leaking-object-filter/#functions","title":"Functions","text":"Name Summary isLeakingObject abstract fun isLeakingObject(heapObject: HeapObject): BooleanReturns whether the passed in heapObject is leaking. This should only return true when we\u2019re 100% sure the passed in heapObject should not be in memory anymore."},{"location":"api/shark/-filtering-leaking-object-finder/-leaking-object-filter/is-leaking-object/","title":"Is leaking object","text":"<p>//leakcanary/shark/FilteringLeakingObjectFinder/LeakingObjectFilter/isLeakingObject</p>"},{"location":"api/shark/-filtering-leaking-object-finder/-leaking-object-filter/is-leaking-object/#isleakingobject","title":"isLeakingObject","text":"<p>abstract fun isLeakingObject(heapObject: HeapObject): Boolean</p> <p>Returns whether the passed in heapObject is leaking. This should only return true when we\u2019re 100% sure the passed in heapObject should not be in memory anymore.</p>"},{"location":"api/shark/-find-leak-paths/","title":"Index","text":"<p>//leakcanary/shark/FindLeakPaths</p>"},{"location":"api/shark/-find-leak-paths/#findleakpaths","title":"FindLeakPaths","text":"<p>class FindLeakPaths</p>"},{"location":"api/shark/-find-leak-paths/#constructors","title":"Constructors","text":"FindLeakPaths fun FindLeakPaths()"},{"location":"api/shark/-find-leak-paths/#functions","title":"Functions","text":"Name Summary leakPaths fun leakPaths(): List&lt;Path&gt;"},{"location":"api/shark/-find-leak-paths/#properties","title":"Properties","text":"Name Summary transaction lateinit var transaction: Transaction"},{"location":"api/shark/-find-leak-paths/-find-leak-paths/","title":"find leak paths","text":"<p>//leakcanary/shark/FindLeakPaths/FindLeakPaths</p>"},{"location":"api/shark/-find-leak-paths/-find-leak-paths/#findleakpaths","title":"FindLeakPaths","text":"<p>fun FindLeakPaths()</p>"},{"location":"api/shark/-find-leak-paths/leak-paths/","title":"Leak paths","text":"<p>//leakcanary/shark/FindLeakPaths/leakPaths</p>"},{"location":"api/shark/-find-leak-paths/leak-paths/#leakpaths","title":"leakPaths","text":"<p>fun leakPaths(): List&lt;Path&gt;</p>"},{"location":"api/shark/-find-leak-paths/transaction/","title":"Transaction","text":"<p>//leakcanary/shark/FindLeakPaths/transaction</p>"},{"location":"api/shark/-find-leak-paths/transaction/#transaction","title":"transaction","text":"<p>lateinit var transaction: Transaction</p>"},{"location":"api/shark/-gc-root/","title":"Index","text":"<p>//leakcanary/shark/GcRoot</p>"},{"location":"api/shark/-gc-root/#gcroot","title":"GcRoot","text":"<p>sealed class GcRoot</p> <p>A GcRoot as identified by HprofRecord.HeapDumpRecord.GcRootRecord in the heap dump.</p>"},{"location":"api/shark/-gc-root/#types","title":"Types","text":"Name Summary Debugger class Debugger(val id: Long) : GcRootAn object held by a connected debugger Finalizing class Finalizing(val id: Long) : GcRootAn object that is in a queue, waiting for a finalizer to run. InternedString class InternedString(val id: Long) : GcRootAn interned string, see java.lang.String.intern. JavaFrame class JavaFrame(val id: Long, val threadSerialNumber: Int, val frameNumber: Int) : GcRootA java local variable JniGlobal class JniGlobal(val id: Long, val jniGlobalRefId: Long) : GcRootA global variable in native code. JniLocal class JniLocal(val id: Long, val threadSerialNumber: Int, val frameNumber: Int) : GcRootA local variable in native code. JniMonitor class JniMonitor(val id: Long, val stackTraceSerialNumber: Int, val stackDepth: Int) : GcRootIt\u2019s unclear what this is, documentation welcome. MonitorUsed class MonitorUsed(val id: Long) : GcRootEverything that called the wait() or notify() methods, or that is synchronized. NativeStack class NativeStack(val id: Long, val threadSerialNumber: Int) : GcRootInput or output parameters in native code ReferenceCleanup class ReferenceCleanup(val id: Long) : GcRootIt\u2019s unclear what this is, documentation welcome. StickyClass class StickyClass(val id: Long) : GcRootA system class ThreadBlock class ThreadBlock(val id: Long, val threadSerialNumber: Int) : GcRoot ThreadObject class ThreadObject(val id: Long, val threadSerialNumber: Int, val stackTraceSerialNumber: Int) : GcRootA thread. Unknown class Unknown(val id: Long) : GcRootAn unknown gc root. Unreachable class Unreachable(val id: Long) : GcRootAn object that is unreachable from any other root, but not a root itself. VmInternal class VmInternal(val id: Long) : GcRootIt\u2019s unclear what this is, documentation welcome."},{"location":"api/shark/-gc-root/#properties","title":"Properties","text":"Name Summary id abstract val id: LongThe object id of the object that this gc root references."},{"location":"api/shark/-gc-root/#inheritors","title":"Inheritors","text":"Name Unknown JniGlobal JniLocal JavaFrame NativeStack StickyClass ThreadBlock MonitorUsed ThreadObject ReferenceCleanup VmInternal JniMonitor InternedString Finalizing Debugger Unreachable"},{"location":"api/shark/-gc-root/id/","title":"Id","text":"<p>//leakcanary/shark/GcRoot/id</p>"},{"location":"api/shark/-gc-root/id/#id","title":"id","text":"<p>abstract val id: Long</p> <p>The object id of the object that this gc root references.</p>"},{"location":"api/shark/-gc-root/-debugger/","title":"Index","text":"<p>//leakcanary/shark/GcRoot/Debugger</p>"},{"location":"api/shark/-gc-root/-debugger/#debugger","title":"Debugger","text":"<p>class Debugger(val id: Long) : GcRoot</p> <p>An object held by a connected debugger</p>"},{"location":"api/shark/-gc-root/-debugger/#constructors","title":"Constructors","text":"Debugger fun Debugger(id: Long)"},{"location":"api/shark/-gc-root/-debugger/#properties","title":"Properties","text":"Name Summary id open override val id: LongThe object id of the object that this gc root references."},{"location":"api/shark/-gc-root/-debugger/-debugger/","title":"debugger","text":"<p>//leakcanary/shark/GcRoot/Debugger/Debugger</p>"},{"location":"api/shark/-gc-root/-debugger/-debugger/#debugger","title":"Debugger","text":"<p>fun Debugger(id: Long)</p>"},{"location":"api/shark/-gc-root/-debugger/id/","title":"Id","text":"<p>//leakcanary/shark/GcRoot/Debugger/id</p>"},{"location":"api/shark/-gc-root/-debugger/id/#id","title":"id","text":"<p>open override val id: Long</p> <p>The object id of the object that this gc root references.</p>"},{"location":"api/shark/-gc-root/-finalizing/","title":"Index","text":"<p>//leakcanary/shark/GcRoot/Finalizing</p>"},{"location":"api/shark/-gc-root/-finalizing/#finalizing","title":"Finalizing","text":"<p>class Finalizing(val id: Long) : GcRoot</p> <p>An object that is in a queue, waiting for a finalizer to run.</p>"},{"location":"api/shark/-gc-root/-finalizing/#constructors","title":"Constructors","text":"Finalizing fun Finalizing(id: Long)"},{"location":"api/shark/-gc-root/-finalizing/#properties","title":"Properties","text":"Name Summary id open override val id: LongThe object id of the object that this gc root references."},{"location":"api/shark/-gc-root/-finalizing/-finalizing/","title":"finalizing","text":"<p>//leakcanary/shark/GcRoot/Finalizing/Finalizing</p>"},{"location":"api/shark/-gc-root/-finalizing/-finalizing/#finalizing","title":"Finalizing","text":"<p>fun Finalizing(id: Long)</p>"},{"location":"api/shark/-gc-root/-finalizing/id/","title":"Id","text":"<p>//leakcanary/shark/GcRoot/Finalizing/id</p>"},{"location":"api/shark/-gc-root/-finalizing/id/#id","title":"id","text":"<p>open override val id: Long</p> <p>The object id of the object that this gc root references.</p>"},{"location":"api/shark/-gc-root/-interned-string/","title":"Index","text":"<p>//leakcanary/shark/GcRoot/InternedString</p>"},{"location":"api/shark/-gc-root/-interned-string/#internedstring","title":"InternedString","text":"<p>class InternedString(val id: Long) : GcRoot</p> <p>An interned string, see java.lang.String.intern.</p>"},{"location":"api/shark/-gc-root/-interned-string/#constructors","title":"Constructors","text":"InternedString fun InternedString(id: Long)"},{"location":"api/shark/-gc-root/-interned-string/#properties","title":"Properties","text":"Name Summary id open override val id: LongThe object id of the object that this gc root references."},{"location":"api/shark/-gc-root/-interned-string/-interned-string/","title":"interned string","text":"<p>//leakcanary/shark/GcRoot/InternedString/InternedString</p>"},{"location":"api/shark/-gc-root/-interned-string/-interned-string/#internedstring","title":"InternedString","text":"<p>fun InternedString(id: Long)</p>"},{"location":"api/shark/-gc-root/-interned-string/id/","title":"Id","text":"<p>//leakcanary/shark/GcRoot/InternedString/id</p>"},{"location":"api/shark/-gc-root/-interned-string/id/#id","title":"id","text":"<p>open override val id: Long</p> <p>The object id of the object that this gc root references.</p>"},{"location":"api/shark/-gc-root/-java-frame/","title":"Index","text":"<p>//leakcanary/shark/GcRoot/JavaFrame</p>"},{"location":"api/shark/-gc-root/-java-frame/#javaframe","title":"JavaFrame","text":"<p>class JavaFrame(val id: Long, val threadSerialNumber: Int, val frameNumber: Int) : GcRoot</p> <p>A java local variable</p>"},{"location":"api/shark/-gc-root/-java-frame/#constructors","title":"Constructors","text":"JavaFrame fun JavaFrame(id: Long, threadSerialNumber: Int, frameNumber: Int)"},{"location":"api/shark/-gc-root/-java-frame/#properties","title":"Properties","text":"Name Summary frameNumber val frameNumber: Intframe number in stack trace (-1 for empty) id open override val id: LongThe object id of the object that this gc root references. threadSerialNumber val threadSerialNumber: IntCorresponds to ThreadObject.threadSerialNumber"},{"location":"api/shark/-gc-root/-java-frame/-java-frame/","title":"java frame","text":"<p>//leakcanary/shark/GcRoot/JavaFrame/JavaFrame</p>"},{"location":"api/shark/-gc-root/-java-frame/-java-frame/#javaframe","title":"JavaFrame","text":"<p>fun JavaFrame(id: Long, threadSerialNumber: Int, frameNumber: Int)</p>"},{"location":"api/shark/-gc-root/-java-frame/frame-number/","title":"Frame number","text":"<p>//leakcanary/shark/GcRoot/JavaFrame/frameNumber</p>"},{"location":"api/shark/-gc-root/-java-frame/frame-number/#framenumber","title":"frameNumber","text":"<p>val frameNumber: Int</p> <p>frame number in stack trace (-1 for empty)</p>"},{"location":"api/shark/-gc-root/-java-frame/id/","title":"Id","text":"<p>//leakcanary/shark/GcRoot/JavaFrame/id</p>"},{"location":"api/shark/-gc-root/-java-frame/id/#id","title":"id","text":"<p>open override val id: Long</p> <p>The object id of the object that this gc root references.</p>"},{"location":"api/shark/-gc-root/-java-frame/thread-serial-number/","title":"Thread serial number","text":"<p>//leakcanary/shark/GcRoot/JavaFrame/threadSerialNumber</p>"},{"location":"api/shark/-gc-root/-java-frame/thread-serial-number/#threadserialnumber","title":"threadSerialNumber","text":"<p>val threadSerialNumber: Int</p> <p>Corresponds to ThreadObject.threadSerialNumber</p>"},{"location":"api/shark/-gc-root/-jni-global/","title":"Index","text":"<p>//leakcanary/shark/GcRoot/JniGlobal</p>"},{"location":"api/shark/-gc-root/-jni-global/#jniglobal","title":"JniGlobal","text":"<p>class JniGlobal(val id: Long, val jniGlobalRefId: Long) : GcRoot</p> <p>A global variable in native code.</p>"},{"location":"api/shark/-gc-root/-jni-global/#constructors","title":"Constructors","text":"JniGlobal fun JniGlobal(id: Long, jniGlobalRefId: Long)"},{"location":"api/shark/-gc-root/-jni-global/#properties","title":"Properties","text":"Name Summary id open override val id: LongThe object id of the object that this gc root references. jniGlobalRefId val jniGlobalRefId: Long"},{"location":"api/shark/-gc-root/-jni-global/-jni-global/","title":"jni global","text":"<p>//leakcanary/shark/GcRoot/JniGlobal/JniGlobal</p>"},{"location":"api/shark/-gc-root/-jni-global/-jni-global/#jniglobal","title":"JniGlobal","text":"<p>fun JniGlobal(id: Long, jniGlobalRefId: Long)</p>"},{"location":"api/shark/-gc-root/-jni-global/id/","title":"Id","text":"<p>//leakcanary/shark/GcRoot/JniGlobal/id</p>"},{"location":"api/shark/-gc-root/-jni-global/id/#id","title":"id","text":"<p>open override val id: Long</p> <p>The object id of the object that this gc root references.</p>"},{"location":"api/shark/-gc-root/-jni-global/jni-global-ref-id/","title":"Jni global ref id","text":"<p>//leakcanary/shark/GcRoot/JniGlobal/jniGlobalRefId</p>"},{"location":"api/shark/-gc-root/-jni-global/jni-global-ref-id/#jniglobalrefid","title":"jniGlobalRefId","text":"<p>val jniGlobalRefId: Long</p>"},{"location":"api/shark/-gc-root/-jni-local/","title":"Index","text":"<p>//leakcanary/shark/GcRoot/JniLocal</p>"},{"location":"api/shark/-gc-root/-jni-local/#jnilocal","title":"JniLocal","text":"<p>class JniLocal(val id: Long, val threadSerialNumber: Int, val frameNumber: Int) : GcRoot</p> <p>A local variable in native code.</p>"},{"location":"api/shark/-gc-root/-jni-local/#constructors","title":"Constructors","text":"JniLocal fun JniLocal(id: Long, threadSerialNumber: Int, frameNumber: Int)"},{"location":"api/shark/-gc-root/-jni-local/#properties","title":"Properties","text":"Name Summary frameNumber val frameNumber: Intframe number in stack trace (-1 for empty) id open override val id: LongThe object id of the object that this gc root references. threadSerialNumber val threadSerialNumber: IntCorresponds to ThreadObject.threadSerialNumber"},{"location":"api/shark/-gc-root/-jni-local/-jni-local/","title":"jni local","text":"<p>//leakcanary/shark/GcRoot/JniLocal/JniLocal</p>"},{"location":"api/shark/-gc-root/-jni-local/-jni-local/#jnilocal","title":"JniLocal","text":"<p>fun JniLocal(id: Long, threadSerialNumber: Int, frameNumber: Int)</p>"},{"location":"api/shark/-gc-root/-jni-local/frame-number/","title":"Frame number","text":"<p>//leakcanary/shark/GcRoot/JniLocal/frameNumber</p>"},{"location":"api/shark/-gc-root/-jni-local/frame-number/#framenumber","title":"frameNumber","text":"<p>val frameNumber: Int</p> <p>frame number in stack trace (-1 for empty)</p>"},{"location":"api/shark/-gc-root/-jni-local/id/","title":"Id","text":"<p>//leakcanary/shark/GcRoot/JniLocal/id</p>"},{"location":"api/shark/-gc-root/-jni-local/id/#id","title":"id","text":"<p>open override val id: Long</p> <p>The object id of the object that this gc root references.</p>"},{"location":"api/shark/-gc-root/-jni-local/thread-serial-number/","title":"Thread serial number","text":"<p>//leakcanary/shark/GcRoot/JniLocal/threadSerialNumber</p>"},{"location":"api/shark/-gc-root/-jni-local/thread-serial-number/#threadserialnumber","title":"threadSerialNumber","text":"<p>val threadSerialNumber: Int</p> <p>Corresponds to ThreadObject.threadSerialNumber</p>"},{"location":"api/shark/-gc-root/-jni-monitor/","title":"Index","text":"<p>//leakcanary/shark/GcRoot/JniMonitor</p>"},{"location":"api/shark/-gc-root/-jni-monitor/#jnimonitor","title":"JniMonitor","text":"<p>class JniMonitor(val id: Long, val stackTraceSerialNumber: Int, val stackDepth: Int) : GcRoot</p> <p>It\u2019s unclear what this is, documentation welcome.</p>"},{"location":"api/shark/-gc-root/-jni-monitor/#constructors","title":"Constructors","text":"JniMonitor fun JniMonitor(id: Long, stackTraceSerialNumber: Int, stackDepth: Int)"},{"location":"api/shark/-gc-root/-jni-monitor/#properties","title":"Properties","text":"Name Summary id open override val id: LongThe object id of the object that this gc root references. stackDepth val stackDepth: Int stackTraceSerialNumber val stackTraceSerialNumber: Int"},{"location":"api/shark/-gc-root/-jni-monitor/-jni-monitor/","title":"jni monitor","text":"<p>//leakcanary/shark/GcRoot/JniMonitor/JniMonitor</p>"},{"location":"api/shark/-gc-root/-jni-monitor/-jni-monitor/#jnimonitor","title":"JniMonitor","text":"<p>fun JniMonitor(id: Long, stackTraceSerialNumber: Int, stackDepth: Int)</p>"},{"location":"api/shark/-gc-root/-jni-monitor/id/","title":"Id","text":"<p>//leakcanary/shark/GcRoot/JniMonitor/id</p>"},{"location":"api/shark/-gc-root/-jni-monitor/id/#id","title":"id","text":"<p>open override val id: Long</p> <p>The object id of the object that this gc root references.</p>"},{"location":"api/shark/-gc-root/-jni-monitor/stack-depth/","title":"Stack depth","text":"<p>//leakcanary/shark/GcRoot/JniMonitor/stackDepth</p>"},{"location":"api/shark/-gc-root/-jni-monitor/stack-depth/#stackdepth","title":"stackDepth","text":"<p>val stackDepth: Int</p>"},{"location":"api/shark/-gc-root/-jni-monitor/stack-trace-serial-number/","title":"Stack trace serial number","text":"<p>//leakcanary/shark/GcRoot/JniMonitor/stackTraceSerialNumber</p>"},{"location":"api/shark/-gc-root/-jni-monitor/stack-trace-serial-number/#stacktraceserialnumber","title":"stackTraceSerialNumber","text":"<p>val stackTraceSerialNumber: Int</p>"},{"location":"api/shark/-gc-root/-monitor-used/","title":"Index","text":"<p>//leakcanary/shark/GcRoot/MonitorUsed</p>"},{"location":"api/shark/-gc-root/-monitor-used/#monitorused","title":"MonitorUsed","text":"<p>class MonitorUsed(val id: Long) : GcRoot</p> <p>Everything that called the wait() or notify() methods, or that is synchronized.</p>"},{"location":"api/shark/-gc-root/-monitor-used/#constructors","title":"Constructors","text":"MonitorUsed fun MonitorUsed(id: Long)"},{"location":"api/shark/-gc-root/-monitor-used/#properties","title":"Properties","text":"Name Summary id open override val id: LongThe object id of the object that this gc root references."},{"location":"api/shark/-gc-root/-monitor-used/-monitor-used/","title":"monitor used","text":"<p>//leakcanary/shark/GcRoot/MonitorUsed/MonitorUsed</p>"},{"location":"api/shark/-gc-root/-monitor-used/-monitor-used/#monitorused","title":"MonitorUsed","text":"<p>fun MonitorUsed(id: Long)</p>"},{"location":"api/shark/-gc-root/-monitor-used/id/","title":"Id","text":"<p>//leakcanary/shark/GcRoot/MonitorUsed/id</p>"},{"location":"api/shark/-gc-root/-monitor-used/id/#id","title":"id","text":"<p>open override val id: Long</p> <p>The object id of the object that this gc root references.</p>"},{"location":"api/shark/-gc-root/-native-stack/","title":"Index","text":"<p>//leakcanary/shark/GcRoot/NativeStack</p>"},{"location":"api/shark/-gc-root/-native-stack/#nativestack","title":"NativeStack","text":"<p>class NativeStack(val id: Long, val threadSerialNumber: Int) : GcRoot</p> <p>Input or output parameters in native code</p>"},{"location":"api/shark/-gc-root/-native-stack/#constructors","title":"Constructors","text":"NativeStack fun NativeStack(id: Long, threadSerialNumber: Int)"},{"location":"api/shark/-gc-root/-native-stack/#properties","title":"Properties","text":"Name Summary id open override val id: LongThe object id of the object that this gc root references. threadSerialNumber val threadSerialNumber: IntCorresponds to ThreadObject.threadSerialNumber Note: the corresponding thread is sometimes not found, see: https://issuetracker.google.com/issues/122713143"},{"location":"api/shark/-gc-root/-native-stack/-native-stack/","title":"native stack","text":"<p>//leakcanary/shark/GcRoot/NativeStack/NativeStack</p>"},{"location":"api/shark/-gc-root/-native-stack/-native-stack/#nativestack","title":"NativeStack","text":"<p>fun NativeStack(id: Long, threadSerialNumber: Int)</p>"},{"location":"api/shark/-gc-root/-native-stack/id/","title":"Id","text":"<p>//leakcanary/shark/GcRoot/NativeStack/id</p>"},{"location":"api/shark/-gc-root/-native-stack/id/#id","title":"id","text":"<p>open override val id: Long</p> <p>The object id of the object that this gc root references.</p>"},{"location":"api/shark/-gc-root/-native-stack/thread-serial-number/","title":"Thread serial number","text":"<p>//leakcanary/shark/GcRoot/NativeStack/threadSerialNumber</p>"},{"location":"api/shark/-gc-root/-native-stack/thread-serial-number/#threadserialnumber","title":"threadSerialNumber","text":"<p>val threadSerialNumber: Int</p> <p>Corresponds to ThreadObject.threadSerialNumber Note: the corresponding thread is sometimes not found, see: https://issuetracker.google.com/issues/122713143</p>"},{"location":"api/shark/-gc-root/-reference-cleanup/","title":"Index","text":"<p>//leakcanary/shark/GcRoot/ReferenceCleanup</p>"},{"location":"api/shark/-gc-root/-reference-cleanup/#referencecleanup","title":"ReferenceCleanup","text":"<p>class ReferenceCleanup(val id: Long) : GcRoot</p> <p>It\u2019s unclear what this is, documentation welcome.</p>"},{"location":"api/shark/-gc-root/-reference-cleanup/#constructors","title":"Constructors","text":"ReferenceCleanup fun ReferenceCleanup(id: Long)"},{"location":"api/shark/-gc-root/-reference-cleanup/#properties","title":"Properties","text":"Name Summary id open override val id: LongThe object id of the object that this gc root references."},{"location":"api/shark/-gc-root/-reference-cleanup/-reference-cleanup/","title":"reference cleanup","text":"<p>//leakcanary/shark/GcRoot/ReferenceCleanup/ReferenceCleanup</p>"},{"location":"api/shark/-gc-root/-reference-cleanup/-reference-cleanup/#referencecleanup","title":"ReferenceCleanup","text":"<p>fun ReferenceCleanup(id: Long)</p>"},{"location":"api/shark/-gc-root/-reference-cleanup/id/","title":"Id","text":"<p>//leakcanary/shark/GcRoot/ReferenceCleanup/id</p>"},{"location":"api/shark/-gc-root/-reference-cleanup/id/#id","title":"id","text":"<p>open override val id: Long</p> <p>The object id of the object that this gc root references.</p>"},{"location":"api/shark/-gc-root/-sticky-class/","title":"Index","text":"<p>//leakcanary/shark/GcRoot/StickyClass</p>"},{"location":"api/shark/-gc-root/-sticky-class/#stickyclass","title":"StickyClass","text":"<p>class StickyClass(val id: Long) : GcRoot</p> <p>A system class</p>"},{"location":"api/shark/-gc-root/-sticky-class/#constructors","title":"Constructors","text":"StickyClass fun StickyClass(id: Long)"},{"location":"api/shark/-gc-root/-sticky-class/#properties","title":"Properties","text":"Name Summary id open override val id: LongThe object id of the object that this gc root references."},{"location":"api/shark/-gc-root/-sticky-class/-sticky-class/","title":"sticky class","text":"<p>//leakcanary/shark/GcRoot/StickyClass/StickyClass</p>"},{"location":"api/shark/-gc-root/-sticky-class/-sticky-class/#stickyclass","title":"StickyClass","text":"<p>fun StickyClass(id: Long)</p>"},{"location":"api/shark/-gc-root/-sticky-class/id/","title":"Id","text":"<p>//leakcanary/shark/GcRoot/StickyClass/id</p>"},{"location":"api/shark/-gc-root/-sticky-class/id/#id","title":"id","text":"<p>open override val id: Long</p> <p>The object id of the object that this gc root references.</p>"},{"location":"api/shark/-gc-root/-thread-block/","title":"Index","text":"<p>//leakcanary/shark/GcRoot/ThreadBlock</p>"},{"location":"api/shark/-gc-root/-thread-block/#threadblock","title":"ThreadBlock","text":"<p>class ThreadBlock(val id: Long, val threadSerialNumber: Int) : GcRoot</p>"},{"location":"api/shark/-gc-root/-thread-block/#constructors","title":"Constructors","text":"ThreadBlock fun ThreadBlock(id: Long, threadSerialNumber: Int)"},{"location":"api/shark/-gc-root/-thread-block/#properties","title":"Properties","text":"Name Summary id open override val id: LongThe object id of the object that this gc root references. threadSerialNumber val threadSerialNumber: IntCorresponds to ThreadObject.threadSerialNumber"},{"location":"api/shark/-gc-root/-thread-block/-thread-block/","title":"thread block","text":"<p>//leakcanary/shark/GcRoot/ThreadBlock/ThreadBlock</p>"},{"location":"api/shark/-gc-root/-thread-block/-thread-block/#threadblock","title":"ThreadBlock","text":"<p>fun ThreadBlock(id: Long, threadSerialNumber: Int)</p>"},{"location":"api/shark/-gc-root/-thread-block/id/","title":"Id","text":"<p>//leakcanary/shark/GcRoot/ThreadBlock/id</p>"},{"location":"api/shark/-gc-root/-thread-block/id/#id","title":"id","text":"<p>open override val id: Long</p> <p>The object id of the object that this gc root references.</p>"},{"location":"api/shark/-gc-root/-thread-block/thread-serial-number/","title":"Thread serial number","text":"<p>//leakcanary/shark/GcRoot/ThreadBlock/threadSerialNumber</p>"},{"location":"api/shark/-gc-root/-thread-block/thread-serial-number/#threadserialnumber","title":"threadSerialNumber","text":"<p>val threadSerialNumber: Int</p> <p>Corresponds to ThreadObject.threadSerialNumber</p>"},{"location":"api/shark/-gc-root/-thread-object/","title":"Index","text":"<p>//leakcanary/shark/GcRoot/ThreadObject</p>"},{"location":"api/shark/-gc-root/-thread-object/#threadobject","title":"ThreadObject","text":"<p>class ThreadObject(val id: Long, val threadSerialNumber: Int, val stackTraceSerialNumber: Int) : GcRoot</p> <p>A thread.</p> <p>Added at https://android.googlesource.com/platform/tools/base/+/c0f0d528c155cab32e372dac77370569a386245c</p>"},{"location":"api/shark/-gc-root/-thread-object/#constructors","title":"Constructors","text":"ThreadObject fun ThreadObject(id: Long, threadSerialNumber: Int, stackTraceSerialNumber: Int)"},{"location":"api/shark/-gc-root/-thread-object/#properties","title":"Properties","text":"Name Summary id open override val id: LongThe object id of the object that this gc root references. stackTraceSerialNumber val stackTraceSerialNumber: Int threadSerialNumber val threadSerialNumber: Int"},{"location":"api/shark/-gc-root/-thread-object/-thread-object/","title":"thread object","text":"<p>//leakcanary/shark/GcRoot/ThreadObject/ThreadObject</p>"},{"location":"api/shark/-gc-root/-thread-object/-thread-object/#threadobject","title":"ThreadObject","text":"<p>fun ThreadObject(id: Long, threadSerialNumber: Int, stackTraceSerialNumber: Int)</p>"},{"location":"api/shark/-gc-root/-thread-object/id/","title":"Id","text":"<p>//leakcanary/shark/GcRoot/ThreadObject/id</p>"},{"location":"api/shark/-gc-root/-thread-object/id/#id","title":"id","text":"<p>open override val id: Long</p> <p>The object id of the object that this gc root references.</p>"},{"location":"api/shark/-gc-root/-thread-object/stack-trace-serial-number/","title":"Stack trace serial number","text":"<p>//leakcanary/shark/GcRoot/ThreadObject/stackTraceSerialNumber</p>"},{"location":"api/shark/-gc-root/-thread-object/stack-trace-serial-number/#stacktraceserialnumber","title":"stackTraceSerialNumber","text":"<p>val stackTraceSerialNumber: Int</p>"},{"location":"api/shark/-gc-root/-thread-object/thread-serial-number/","title":"Thread serial number","text":"<p>//leakcanary/shark/GcRoot/ThreadObject/threadSerialNumber</p>"},{"location":"api/shark/-gc-root/-thread-object/thread-serial-number/#threadserialnumber","title":"threadSerialNumber","text":"<p>val threadSerialNumber: Int</p>"},{"location":"api/shark/-gc-root/-unknown/","title":"Index","text":"<p>//leakcanary/shark/GcRoot/Unknown</p>"},{"location":"api/shark/-gc-root/-unknown/#unknown","title":"Unknown","text":"<p>class Unknown(val id: Long) : GcRoot</p> <p>An unknown gc root.</p>"},{"location":"api/shark/-gc-root/-unknown/#constructors","title":"Constructors","text":"Unknown fun Unknown(id: Long)"},{"location":"api/shark/-gc-root/-unknown/#properties","title":"Properties","text":"Name Summary id open override val id: LongThe object id of the object that this gc root references."},{"location":"api/shark/-gc-root/-unknown/-unknown/","title":"unknown","text":"<p>//leakcanary/shark/GcRoot/Unknown/Unknown</p>"},{"location":"api/shark/-gc-root/-unknown/-unknown/#unknown","title":"Unknown","text":"<p>fun Unknown(id: Long)</p>"},{"location":"api/shark/-gc-root/-unknown/id/","title":"Id","text":"<p>//leakcanary/shark/GcRoot/Unknown/id</p>"},{"location":"api/shark/-gc-root/-unknown/id/#id","title":"id","text":"<p>open override val id: Long</p> <p>The object id of the object that this gc root references.</p>"},{"location":"api/shark/-gc-root/-unreachable/","title":"Index","text":"<p>//leakcanary/shark/GcRoot/Unreachable</p>"},{"location":"api/shark/-gc-root/-unreachable/#unreachable","title":"Unreachable","text":"<p>class Unreachable(val id: Long) : GcRoot</p> <p>An object that is unreachable from any other root, but not a root itself.</p>"},{"location":"api/shark/-gc-root/-unreachable/#constructors","title":"Constructors","text":"Unreachable fun Unreachable(id: Long)"},{"location":"api/shark/-gc-root/-unreachable/#properties","title":"Properties","text":"Name Summary id open override val id: LongThe object id of the object that this gc root references."},{"location":"api/shark/-gc-root/-unreachable/-unreachable/","title":"unreachable","text":"<p>//leakcanary/shark/GcRoot/Unreachable/Unreachable</p>"},{"location":"api/shark/-gc-root/-unreachable/-unreachable/#unreachable","title":"Unreachable","text":"<p>fun Unreachable(id: Long)</p>"},{"location":"api/shark/-gc-root/-unreachable/id/","title":"Id","text":"<p>//leakcanary/shark/GcRoot/Unreachable/id</p>"},{"location":"api/shark/-gc-root/-unreachable/id/#id","title":"id","text":"<p>open override val id: Long</p> <p>The object id of the object that this gc root references.</p>"},{"location":"api/shark/-gc-root/-vm-internal/","title":"Index","text":"<p>//leakcanary/shark/GcRoot/VmInternal</p>"},{"location":"api/shark/-gc-root/-vm-internal/#vminternal","title":"VmInternal","text":"<p>class VmInternal(val id: Long) : GcRoot</p> <p>It\u2019s unclear what this is, documentation welcome.</p>"},{"location":"api/shark/-gc-root/-vm-internal/#constructors","title":"Constructors","text":"VmInternal fun VmInternal(id: Long)"},{"location":"api/shark/-gc-root/-vm-internal/#properties","title":"Properties","text":"Name Summary id open override val id: LongThe object id of the object that this gc root references."},{"location":"api/shark/-gc-root/-vm-internal/-vm-internal/","title":"vm internal","text":"<p>//leakcanary/shark/GcRoot/VmInternal/VmInternal</p>"},{"location":"api/shark/-gc-root/-vm-internal/-vm-internal/#vminternal","title":"VmInternal","text":"<p>fun VmInternal(id: Long)</p>"},{"location":"api/shark/-gc-root/-vm-internal/id/","title":"Id","text":"<p>//leakcanary/shark/GcRoot/VmInternal/id</p>"},{"location":"api/shark/-gc-root/-vm-internal/id/#id","title":"id","text":"<p>open override val id: Long</p> <p>The object id of the object that this gc root references.</p>"},{"location":"api/shark/-graph-context/","title":"Index","text":"<p>//leakcanary/shark/GraphContext</p>"},{"location":"api/shark/-graph-context/#graphcontext","title":"GraphContext","text":"<p>class GraphContext</p> <p>In memory store that can be used to store objects in a given HeapGraph instance. This is a simple MutableMap of String to Any, but with unsafe generics access.</p>"},{"location":"api/shark/-graph-context/#constructors","title":"Constructors","text":"GraphContext fun GraphContext()"},{"location":"api/shark/-graph-context/#functions","title":"Functions","text":"Name Summary contains operator fun contains(key: String): Boolean get operator fun &lt;T&gt; get(key: String): T? getOrPut fun &lt;T&gt; getOrPut(key: String, defaultValue: () -&gt; T): T minusAssign operator fun minusAssign(key: String) set operator fun &lt;T&gt; set(key: String, value: T)"},{"location":"api/shark/-graph-context/-graph-context/","title":"graph context","text":"<p>//leakcanary/shark/GraphContext/GraphContext</p>"},{"location":"api/shark/-graph-context/-graph-context/#graphcontext","title":"GraphContext","text":"<p>fun GraphContext()</p>"},{"location":"api/shark/-graph-context/contains/","title":"Contains","text":"<p>//leakcanary/shark/GraphContext/contains</p>"},{"location":"api/shark/-graph-context/contains/#contains","title":"contains","text":"<p>operator fun contains(key: String): Boolean</p>"},{"location":"api/shark/-graph-context/contains/#see-also","title":"See also","text":"<p>main</p> kotlin.collections.MutableMap"},{"location":"api/shark/-graph-context/get-or-put/","title":"Get or put","text":"<p>//leakcanary/shark/GraphContext/getOrPut</p>"},{"location":"api/shark/-graph-context/get-or-put/#getorput","title":"getOrPut","text":"<p>fun &lt;T&gt; getOrPut(key: String, defaultValue: () -&gt; T): T</p>"},{"location":"api/shark/-graph-context/get-or-put/#see-also","title":"See also","text":"<p>main</p> MutableMap.getOrPut"},{"location":"api/shark/-graph-context/get/","title":"Get","text":"<p>//leakcanary/shark/GraphContext/get</p>"},{"location":"api/shark/-graph-context/get/#get","title":"get","text":"<p>operator fun &lt;T&gt; get(key: String): T?</p>"},{"location":"api/shark/-graph-context/minus-assign/","title":"Minus assign","text":"<p>//leakcanary/shark/GraphContext/minusAssign</p>"},{"location":"api/shark/-graph-context/minus-assign/#minusassign","title":"minusAssign","text":"<p>operator fun minusAssign(key: String)</p>"},{"location":"api/shark/-graph-context/minus-assign/#see-also","title":"See also","text":"<p>main</p> kotlin.collections.MutableMap"},{"location":"api/shark/-graph-context/set/","title":"Set","text":"<p>//leakcanary/shark/GraphContext/set</p>"},{"location":"api/shark/-graph-context/set/#set","title":"set","text":"<p>operator fun &lt;T&gt; set(key: String, value: T)</p>"},{"location":"api/shark/-graph-context/set/#see-also","title":"See also","text":"<p>main</p> MutableMap.set"},{"location":"api/shark/-heap-analysis/","title":"Index","text":"<p>//leakcanary/shark/HeapAnalysis</p>"},{"location":"api/shark/-heap-analysis/#heapanalysis","title":"HeapAnalysis","text":"<p>sealed class HeapAnalysis : Serializable</p> <p>The result of an analysis performed by HeapAnalyzer, either a HeapAnalysisSuccess or a HeapAnalysisFailure. This class is serializable however there are no guarantees of forward compatibility.</p>"},{"location":"api/shark/-heap-analysis/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-heap-analysis/#properties","title":"Properties","text":"Name Summary analysisDurationMillis abstract val analysisDurationMillis: LongTotal time spent analyzing the heap. createdAtTimeMillis abstract val createdAtTimeMillis: LongThe System.currentTimeMillis when this HeapAnalysis instance was created. dumpDurationMillis abstract val dumpDurationMillis: LongTotal time spent dumping the heap. heapDumpFile abstract val heapDumpFile: FileThe hprof file that was analyzed."},{"location":"api/shark/-heap-analysis/#inheritors","title":"Inheritors","text":"Name HeapAnalysisFailure HeapAnalysisSuccess"},{"location":"api/shark/-heap-analysis/analysis-duration-millis/","title":"Analysis duration millis","text":"<p>//leakcanary/shark/HeapAnalysis/analysisDurationMillis</p>"},{"location":"api/shark/-heap-analysis/analysis-duration-millis/#analysisdurationmillis","title":"analysisDurationMillis","text":"<p>abstract val analysisDurationMillis: Long</p> <p>Total time spent analyzing the heap.</p>"},{"location":"api/shark/-heap-analysis/created-at-time-millis/","title":"Created at time millis","text":"<p>//leakcanary/shark/HeapAnalysis/createdAtTimeMillis</p>"},{"location":"api/shark/-heap-analysis/created-at-time-millis/#createdattimemillis","title":"createdAtTimeMillis","text":"<p>abstract val createdAtTimeMillis: Long</p> <p>The System.currentTimeMillis when this HeapAnalysis instance was created.</p>"},{"location":"api/shark/-heap-analysis/dump-duration-millis/","title":"Dump duration millis","text":"<p>//leakcanary/shark/HeapAnalysis/dumpDurationMillis</p>"},{"location":"api/shark/-heap-analysis/dump-duration-millis/#dumpdurationmillis","title":"dumpDurationMillis","text":"<p>abstract val dumpDurationMillis: Long</p> <p>Total time spent dumping the heap.</p>"},{"location":"api/shark/-heap-analysis/heap-dump-file/","title":"Heap dump file","text":"<p>//leakcanary/shark/HeapAnalysis/heapDumpFile</p>"},{"location":"api/shark/-heap-analysis/heap-dump-file/#heapdumpfile","title":"heapDumpFile","text":"<p>abstract val heapDumpFile: File</p> <p>The hprof file that was analyzed.</p>"},{"location":"api/shark/-heap-analysis/-companion/","title":"Index","text":"<p>//leakcanary/shark/HeapAnalysis/Companion</p>"},{"location":"api/shark/-heap-analysis/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-heap-analysis/-companion/#properties","title":"Properties","text":"Name Summary DUMP_DURATION_UNKNOWN const val DUMP_DURATION_UNKNOWN: Long"},{"location":"api/shark/-heap-analysis/-companion/-d-u-m-p_-d-u-r-a-t-i-o-n_-u-n-k-n-o-w-n/","title":"d u m p  d u r a t i o n  u n k n o w n","text":"<p>//leakcanary/shark/HeapAnalysis/Companion/DUMP_DURATION_UNKNOWN</p>"},{"location":"api/shark/-heap-analysis/-companion/-d-u-m-p_-d-u-r-a-t-i-o-n_-u-n-k-n-o-w-n/#dump_duration_unknown","title":"DUMP_DURATION_UNKNOWN","text":"<p>const val DUMP_DURATION_UNKNOWN: Long</p>"},{"location":"api/shark/-heap-analysis-exception/","title":"Index","text":"<p>//leakcanary/shark/HeapAnalysisException</p>"},{"location":"api/shark/-heap-analysis-exception/#heapanalysisexception","title":"HeapAnalysisException","text":"<p>class HeapAnalysisException(cause: Throwable) : RuntimeException</p>"},{"location":"api/shark/-heap-analysis-exception/#constructors","title":"Constructors","text":"HeapAnalysisException fun HeapAnalysisException(cause: Throwable)"},{"location":"api/shark/-heap-analysis-exception/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-heap-analysis-exception/#functions","title":"Functions","text":"Name Summary addSuppressed fun addSuppressed(p0: Throwable) fillInStackTrace open fun fillInStackTrace(): Throwable getLocalizedMessage open fun getLocalizedMessage(): String getStackTrace open fun getStackTrace(): Array&lt;StackTraceElement&gt; getSuppressed fun getSuppressed(): Array&lt;Throwable&gt; initCause open fun initCause(p0: Throwable): Throwable printStackTrace open fun printStackTrace()open fun printStackTrace(p0: PrintStream)open fun printStackTrace(p0: PrintWriter) setStackTrace open fun setStackTrace(p0: Array&lt;StackTraceElement&gt;) toString open override fun toString(): String"},{"location":"api/shark/-heap-analysis-exception/#properties","title":"Properties","text":"Name Summary cause open val cause: Throwable? message open val message: String?"},{"location":"api/shark/-heap-analysis-exception/-heap-analysis-exception/","title":"heap analysis exception","text":"<p>//leakcanary/shark/HeapAnalysisException/HeapAnalysisException</p>"},{"location":"api/shark/-heap-analysis-exception/-heap-analysis-exception/#heapanalysisexception","title":"HeapAnalysisException","text":"<p>fun HeapAnalysisException(cause: Throwable)</p>"},{"location":"api/shark/-heap-analysis-exception/to-string/","title":"To string","text":"<p>//leakcanary/shark/HeapAnalysisException/toString</p>"},{"location":"api/shark/-heap-analysis-exception/to-string/#tostring","title":"toString","text":"<p>open override fun toString(): String</p>"},{"location":"api/shark/-heap-analysis-exception/-companion/","title":"Index","text":"<p>//leakcanary/shark/HeapAnalysisException/Companion</p>"},{"location":"api/shark/-heap-analysis-exception/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-heap-analysis-failure/","title":"Index","text":"<p>//leakcanary/shark/HeapAnalysisFailure</p>"},{"location":"api/shark/-heap-analysis-failure/#heapanalysisfailure","title":"HeapAnalysisFailure","text":"<p>data class HeapAnalysisFailure(val heapDumpFile: File, val createdAtTimeMillis: Long, val dumpDurationMillis: Long = DUMP_DURATION_UNKNOWN, val analysisDurationMillis: Long, val exception: HeapAnalysisException) : HeapAnalysis</p> <p>The analysis performed by HeapAnalyzer did not complete successfully.</p>"},{"location":"api/shark/-heap-analysis-failure/#constructors","title":"Constructors","text":"HeapAnalysisFailure fun HeapAnalysisFailure(heapDumpFile: File, createdAtTimeMillis: Long, dumpDurationMillis: Long = DUMP_DURATION_UNKNOWN, analysisDurationMillis: Long, exception: HeapAnalysisException)"},{"location":"api/shark/-heap-analysis-failure/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-heap-analysis-failure/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-heap-analysis-failure/#properties","title":"Properties","text":"Name Summary analysisDurationMillis open override val analysisDurationMillis: LongTotal time spent analyzing the heap. createdAtTimeMillis open override val createdAtTimeMillis: LongThe System.currentTimeMillis when this HeapAnalysis instance was created. dumpDurationMillis open override val dumpDurationMillis: LongTotal time spent dumping the heap. exception val exception: HeapAnalysisExceptionAn exception wrapping the actual exception that was thrown. heapDumpFile open override val heapDumpFile: FileThe hprof file that was analyzed."},{"location":"api/shark/-heap-analysis-failure/-heap-analysis-failure/","title":"heap analysis failure","text":"<p>//leakcanary/shark/HeapAnalysisFailure/HeapAnalysisFailure</p>"},{"location":"api/shark/-heap-analysis-failure/-heap-analysis-failure/#heapanalysisfailure","title":"HeapAnalysisFailure","text":"<p>fun HeapAnalysisFailure(heapDumpFile: File, createdAtTimeMillis: Long, dumpDurationMillis: Long = DUMP_DURATION_UNKNOWN, analysisDurationMillis: Long, exception: HeapAnalysisException)</p>"},{"location":"api/shark/-heap-analysis-failure/analysis-duration-millis/","title":"Analysis duration millis","text":"<p>//leakcanary/shark/HeapAnalysisFailure/analysisDurationMillis</p>"},{"location":"api/shark/-heap-analysis-failure/analysis-duration-millis/#analysisdurationmillis","title":"analysisDurationMillis","text":"<p>open override val analysisDurationMillis: Long</p> <p>Total time spent analyzing the heap.</p>"},{"location":"api/shark/-heap-analysis-failure/created-at-time-millis/","title":"Created at time millis","text":"<p>//leakcanary/shark/HeapAnalysisFailure/createdAtTimeMillis</p>"},{"location":"api/shark/-heap-analysis-failure/created-at-time-millis/#createdattimemillis","title":"createdAtTimeMillis","text":"<p>open override val createdAtTimeMillis: Long</p> <p>The System.currentTimeMillis when this HeapAnalysis instance was created.</p>"},{"location":"api/shark/-heap-analysis-failure/dump-duration-millis/","title":"Dump duration millis","text":"<p>//leakcanary/shark/HeapAnalysisFailure/dumpDurationMillis</p>"},{"location":"api/shark/-heap-analysis-failure/dump-duration-millis/#dumpdurationmillis","title":"dumpDurationMillis","text":"<p>open override val dumpDurationMillis: Long</p> <p>Total time spent dumping the heap.</p>"},{"location":"api/shark/-heap-analysis-failure/exception/","title":"Exception","text":"<p>//leakcanary/shark/HeapAnalysisFailure/exception</p>"},{"location":"api/shark/-heap-analysis-failure/exception/#exception","title":"exception","text":"<p>val exception: HeapAnalysisException</p> <p>An exception wrapping the actual exception that was thrown.</p>"},{"location":"api/shark/-heap-analysis-failure/heap-dump-file/","title":"Heap dump file","text":"<p>//leakcanary/shark/HeapAnalysisFailure/heapDumpFile</p>"},{"location":"api/shark/-heap-analysis-failure/heap-dump-file/#heapdumpfile","title":"heapDumpFile","text":"<p>open override val heapDumpFile: File</p> <p>The hprof file that was analyzed.</p>"},{"location":"api/shark/-heap-analysis-failure/to-string/","title":"To string","text":"<p>//leakcanary/shark/HeapAnalysisFailure/toString</p>"},{"location":"api/shark/-heap-analysis-failure/to-string/#tostring","title":"toString","text":"<p>open override fun toString(): String</p>"},{"location":"api/shark/-heap-analysis-failure/-companion/","title":"Index","text":"<p>//leakcanary/shark/HeapAnalysisFailure/Companion</p>"},{"location":"api/shark/-heap-analysis-failure/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-heap-analysis-success/","title":"Index","text":"<p>//leakcanary/shark/HeapAnalysisSuccess</p>"},{"location":"api/shark/-heap-analysis-success/#heapanalysissuccess","title":"HeapAnalysisSuccess","text":"<p>data class HeapAnalysisSuccess(val heapDumpFile: File, val createdAtTimeMillis: Long, val dumpDurationMillis: Long = DUMP_DURATION_UNKNOWN, val analysisDurationMillis: Long, val metadata: Map&lt;String, String&gt;, val applicationLeaks: List&lt;ApplicationLeak&gt;, val libraryLeaks: List&lt;LibraryLeak&gt;, val unreachableObjects: List&lt;LeakTraceObject&gt;) : HeapAnalysis</p> <p>The result of a successful heap analysis performed by HeapAnalyzer.</p>"},{"location":"api/shark/-heap-analysis-success/#constructors","title":"Constructors","text":"HeapAnalysisSuccess fun HeapAnalysisSuccess(heapDumpFile: File, createdAtTimeMillis: Long, dumpDurationMillis: Long = DUMP_DURATION_UNKNOWN, analysisDurationMillis: Long, metadata: Map&lt;String, String&gt;, applicationLeaks: List&lt;ApplicationLeak&gt;, libraryLeaks: List&lt;LibraryLeak&gt;, unreachableObjects: List&lt;LeakTraceObject&gt;)"},{"location":"api/shark/-heap-analysis-success/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-heap-analysis-success/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-heap-analysis-success/#properties","title":"Properties","text":"Name Summary allLeaks val allLeaks: Sequence&lt;Leak&gt;The list of Leak found in the heap dump by HeapAnalyzer, ie all applicationLeaks and all libraryLeaks in one list. analysisDurationMillis open override val analysisDurationMillis: LongTotal time spent analyzing the heap. applicationLeaks val applicationLeaks: List&lt;ApplicationLeak&gt;The list of ApplicationLeak found in the heap dump by HeapAnalyzer. createdAtTimeMillis open override val createdAtTimeMillis: LongThe System.currentTimeMillis when this HeapAnalysis instance was created. dumpDurationMillis open override val dumpDurationMillis: LongTotal time spent dumping the heap. heapDumpFile open override val heapDumpFile: FileThe hprof file that was analyzed. libraryLeaks val libraryLeaks: List&lt;LibraryLeak&gt;The list of LibraryLeak found in the heap dump by HeapAnalyzer. metadata val metadata: Map&lt;String, String&gt; unreachableObjects val unreachableObjects: List&lt;LeakTraceObject&gt;"},{"location":"api/shark/-heap-analysis-success/#extensions","title":"Extensions","text":"Name Summary assertionTag val HeapAnalysisSuccess.assertionTag: String? totalDurationMillis val HeapAnalysisSuccess.totalDurationMillis: Int? waitForRetainedDurationMillis val HeapAnalysisSuccess.waitForRetainedDurationMillis: Int?"},{"location":"api/shark/-heap-analysis-success/-heap-analysis-success/","title":"heap analysis success","text":"<p>//leakcanary/shark/HeapAnalysisSuccess/HeapAnalysisSuccess</p>"},{"location":"api/shark/-heap-analysis-success/-heap-analysis-success/#heapanalysissuccess","title":"HeapAnalysisSuccess","text":"<p>fun HeapAnalysisSuccess(heapDumpFile: File, createdAtTimeMillis: Long, dumpDurationMillis: Long = DUMP_DURATION_UNKNOWN, analysisDurationMillis: Long, metadata: Map&lt;String, String&gt;, applicationLeaks: List&lt;ApplicationLeak&gt;, libraryLeaks: List&lt;LibraryLeak&gt;, unreachableObjects: List&lt;LeakTraceObject&gt;)</p>"},{"location":"api/shark/-heap-analysis-success/all-leaks/","title":"All leaks","text":"<p>//leakcanary/shark/HeapAnalysisSuccess/allLeaks</p>"},{"location":"api/shark/-heap-analysis-success/all-leaks/#allleaks","title":"allLeaks","text":"<p>val allLeaks: Sequence&lt;Leak&gt;</p> <p>The list of Leak found in the heap dump by HeapAnalyzer, ie all applicationLeaks and all libraryLeaks in one list.</p>"},{"location":"api/shark/-heap-analysis-success/analysis-duration-millis/","title":"Analysis duration millis","text":"<p>//leakcanary/shark/HeapAnalysisSuccess/analysisDurationMillis</p>"},{"location":"api/shark/-heap-analysis-success/analysis-duration-millis/#analysisdurationmillis","title":"analysisDurationMillis","text":"<p>open override val analysisDurationMillis: Long</p> <p>Total time spent analyzing the heap.</p>"},{"location":"api/shark/-heap-analysis-success/application-leaks/","title":"Application leaks","text":"<p>//leakcanary/shark/HeapAnalysisSuccess/applicationLeaks</p>"},{"location":"api/shark/-heap-analysis-success/application-leaks/#applicationleaks","title":"applicationLeaks","text":"<p>val applicationLeaks: List&lt;ApplicationLeak&gt;</p> <p>The list of ApplicationLeak found in the heap dump by HeapAnalyzer.</p>"},{"location":"api/shark/-heap-analysis-success/created-at-time-millis/","title":"Created at time millis","text":"<p>//leakcanary/shark/HeapAnalysisSuccess/createdAtTimeMillis</p>"},{"location":"api/shark/-heap-analysis-success/created-at-time-millis/#createdattimemillis","title":"createdAtTimeMillis","text":"<p>open override val createdAtTimeMillis: Long</p> <p>The System.currentTimeMillis when this HeapAnalysis instance was created.</p>"},{"location":"api/shark/-heap-analysis-success/dump-duration-millis/","title":"Dump duration millis","text":"<p>//leakcanary/shark/HeapAnalysisSuccess/dumpDurationMillis</p>"},{"location":"api/shark/-heap-analysis-success/dump-duration-millis/#dumpdurationmillis","title":"dumpDurationMillis","text":"<p>open override val dumpDurationMillis: Long</p> <p>Total time spent dumping the heap.</p>"},{"location":"api/shark/-heap-analysis-success/heap-dump-file/","title":"Heap dump file","text":"<p>//leakcanary/shark/HeapAnalysisSuccess/heapDumpFile</p>"},{"location":"api/shark/-heap-analysis-success/heap-dump-file/#heapdumpfile","title":"heapDumpFile","text":"<p>open override val heapDumpFile: File</p> <p>The hprof file that was analyzed.</p>"},{"location":"api/shark/-heap-analysis-success/library-leaks/","title":"Library leaks","text":"<p>//leakcanary/shark/HeapAnalysisSuccess/libraryLeaks</p>"},{"location":"api/shark/-heap-analysis-success/library-leaks/#libraryleaks","title":"libraryLeaks","text":"<p>val libraryLeaks: List&lt;LibraryLeak&gt;</p> <p>The list of LibraryLeak found in the heap dump by HeapAnalyzer.</p>"},{"location":"api/shark/-heap-analysis-success/metadata/","title":"Metadata","text":"<p>//leakcanary/shark/HeapAnalysisSuccess/metadata</p>"},{"location":"api/shark/-heap-analysis-success/metadata/#metadata","title":"metadata","text":"<p>val metadata: Map&lt;String, String&gt;</p>"},{"location":"api/shark/-heap-analysis-success/to-string/","title":"To string","text":"<p>//leakcanary/shark/HeapAnalysisSuccess/toString</p>"},{"location":"api/shark/-heap-analysis-success/to-string/#tostring","title":"toString","text":"<p>open override fun toString(): String</p>"},{"location":"api/shark/-heap-analysis-success/unreachable-objects/","title":"Unreachable objects","text":"<p>//leakcanary/shark/HeapAnalysisSuccess/unreachableObjects</p>"},{"location":"api/shark/-heap-analysis-success/unreachable-objects/#unreachableobjects","title":"unreachableObjects","text":"<p>val unreachableObjects: List&lt;LeakTraceObject&gt;</p>"},{"location":"api/shark/-heap-analysis-success/-companion/","title":"Index","text":"<p>//leakcanary/shark/HeapAnalysisSuccess/Companion</p>"},{"location":"api/shark/-heap-analysis-success/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-heap-analyzer/","title":"Index","text":"<p>//leakcanary/shark/HeapAnalyzer</p>"},{"location":"api/shark/-heap-analyzer/#heapanalyzer","title":"HeapAnalyzer","text":"<p>class HeapAnalyzer(listener: OnAnalysisProgressListener)</p> <p>Analyzes heap dumps to look for leaks.</p>"},{"location":"api/shark/-heap-analyzer/#constructors","title":"Constructors","text":"HeapAnalyzer fun HeapAnalyzer(listener: OnAnalysisProgressListener)"},{"location":"api/shark/-heap-analyzer/#functions","title":"Functions","text":"Name Summary analyze fun analyze(heapDumpFile: File, graph: HeapGraph, leakingObjectFinder: LeakingObjectFinder, referenceMatchers: List&lt;ReferenceMatcher&gt; = emptyList(), computeRetainedHeapSize: Boolean = false, objectInspectors: List&lt;ObjectInspector&gt; = emptyList(), metadataExtractor: MetadataExtractor = MetadataExtractor.NO_OP): HeapAnalysisSearches the heap dump for leaking instances and then computes the shortest strong reference path from those instances to the GC roots."},{"location":"api/shark/-heap-analyzer/-heap-analyzer/","title":"heap analyzer","text":"<p>//leakcanary/shark/HeapAnalyzer/HeapAnalyzer</p>"},{"location":"api/shark/-heap-analyzer/-heap-analyzer/#heapanalyzer","title":"HeapAnalyzer","text":"<p>fun HeapAnalyzer(listener: OnAnalysisProgressListener)</p>"},{"location":"api/shark/-heap-analyzer/analyze/","title":"Analyze","text":"<p>//leakcanary/shark/HeapAnalyzer/analyze</p>"},{"location":"api/shark/-heap-analyzer/analyze/#analyze","title":"analyze","text":"<p>fun analyze(heapDumpFile: File, graph: HeapGraph, leakingObjectFinder: LeakingObjectFinder, referenceMatchers: List&lt;ReferenceMatcher&gt; = emptyList(), computeRetainedHeapSize: Boolean = false, objectInspectors: List&lt;ObjectInspector&gt; = emptyList(), metadataExtractor: MetadataExtractor = MetadataExtractor.NO_OP): HeapAnalysis</p> <p>Searches the heap dump for leaking instances and then computes the shortest strong reference path from those instances to the GC roots.</p>"},{"location":"api/shark/-heap-dump-rule/","title":"Index","text":"<p>//leakcanary/shark/HeapDumpRule</p>"},{"location":"api/shark/-heap-dump-rule/#heapdumprule","title":"HeapDumpRule","text":"<p>class HeapDumpRule : ExternalResource</p>"},{"location":"api/shark/-heap-dump-rule/#constructors","title":"Constructors","text":"HeapDumpRule fun HeapDumpRule()"},{"location":"api/shark/-heap-dump-rule/#functions","title":"Functions","text":"Name Summary apply open override fun apply(p0: Statement, p1: Description): Statement dumpHeap fun dumpHeap(): File"},{"location":"api/shark/-heap-dump-rule/-heap-dump-rule/","title":"heap dump rule","text":"<p>//leakcanary/shark/HeapDumpRule/HeapDumpRule</p>"},{"location":"api/shark/-heap-dump-rule/-heap-dump-rule/#heapdumprule","title":"HeapDumpRule","text":"<p>fun HeapDumpRule()</p>"},{"location":"api/shark/-heap-dump-rule/dump-heap/","title":"Dump heap","text":"<p>//leakcanary/shark/HeapDumpRule/dumpHeap</p>"},{"location":"api/shark/-heap-dump-rule/dump-heap/#dumpheap","title":"dumpHeap","text":"<p>fun dumpHeap(): File</p>"},{"location":"api/shark/-heap-field/","title":"Index","text":"<p>//leakcanary/shark/HeapField</p>"},{"location":"api/shark/-heap-field/#heapfield","title":"HeapField","text":"<p>class HeapField(val declaringClass: HeapObject.HeapClass, val name: String, val value: HeapValue)</p> <p>Represents a static field or an instance field.</p>"},{"location":"api/shark/-heap-field/#constructors","title":"Constructors","text":"HeapField fun HeapField(declaringClass: HeapObject.HeapClass, name: String, value: HeapValue)"},{"location":"api/shark/-heap-field/#properties","title":"Properties","text":"Name Summary declaringClass val declaringClass: HeapObject.HeapClassThe class this field was declared in. name val name: StringName of the field value val value: HeapValueValue of the field. Also see shorthands valueAsClass, valueAsInstance, valueAsObjectArray, valueAsPrimitiveArray. valueAsClass val valueAsClass: HeapObject.HeapClass?Return a HeapClass is value references a class, and null otherwise. valueAsInstance val valueAsInstance: HeapObject.HeapInstance?Return a HeapInstance is value references an instance, and null otherwise. valueAsObjectArray val valueAsObjectArray: HeapObject.HeapObjectArray?Return a HeapObjectArray is value references an object array, and null otherwise. valueAsPrimitiveArray val valueAsPrimitiveArray: HeapObject.HeapPrimitiveArray?Return a HeapPrimitiveArray is value references a primitive array, and null otherwise."},{"location":"api/shark/-heap-field/-heap-field/","title":"heap field","text":"<p>//leakcanary/shark/HeapField/HeapField</p>"},{"location":"api/shark/-heap-field/-heap-field/#heapfield","title":"HeapField","text":"<p>fun HeapField(declaringClass: HeapObject.HeapClass, name: String, value: HeapValue)</p>"},{"location":"api/shark/-heap-field/declaring-class/","title":"Declaring class","text":"<p>//leakcanary/shark/HeapField/declaringClass</p>"},{"location":"api/shark/-heap-field/declaring-class/#declaringclass","title":"declaringClass","text":"<p>val declaringClass: HeapObject.HeapClass</p> <p>The class this field was declared in.</p>"},{"location":"api/shark/-heap-field/name/","title":"Name","text":"<p>//leakcanary/shark/HeapField/name</p>"},{"location":"api/shark/-heap-field/name/#name","title":"name","text":"<p>val name: String</p> <p>Name of the field</p>"},{"location":"api/shark/-heap-field/value-as-class/","title":"Value as class","text":"<p>//leakcanary/shark/HeapField/valueAsClass</p>"},{"location":"api/shark/-heap-field/value-as-class/#valueasclass","title":"valueAsClass","text":"<p>val valueAsClass: HeapObject.HeapClass?</p> <p>Return a HeapClass is value references a class, and null otherwise.</p>"},{"location":"api/shark/-heap-field/value-as-instance/","title":"Value as instance","text":"<p>//leakcanary/shark/HeapField/valueAsInstance</p>"},{"location":"api/shark/-heap-field/value-as-instance/#valueasinstance","title":"valueAsInstance","text":"<p>val valueAsInstance: HeapObject.HeapInstance?</p> <p>Return a HeapInstance is value references an instance, and null otherwise.</p>"},{"location":"api/shark/-heap-field/value-as-object-array/","title":"Value as object array","text":"<p>//leakcanary/shark/HeapField/valueAsObjectArray</p>"},{"location":"api/shark/-heap-field/value-as-object-array/#valueasobjectarray","title":"valueAsObjectArray","text":"<p>val valueAsObjectArray: HeapObject.HeapObjectArray?</p> <p>Return a HeapObjectArray is value references an object array, and null otherwise.</p>"},{"location":"api/shark/-heap-field/value-as-primitive-array/","title":"Value as primitive array","text":"<p>//leakcanary/shark/HeapField/valueAsPrimitiveArray</p>"},{"location":"api/shark/-heap-field/value-as-primitive-array/#valueasprimitivearray","title":"valueAsPrimitiveArray","text":"<p>val valueAsPrimitiveArray: HeapObject.HeapPrimitiveArray?</p> <p>Return a HeapPrimitiveArray is value references a primitive array, and null otherwise.</p>"},{"location":"api/shark/-heap-field/value/","title":"Value","text":"<p>//leakcanary/shark/HeapField/value</p>"},{"location":"api/shark/-heap-field/value/#value","title":"value","text":"<p>val value: HeapValue</p> <p>Value of the field. Also see shorthands valueAsClass, valueAsInstance, valueAsObjectArray, valueAsPrimitiveArray.</p>"},{"location":"api/shark/-heap-graph/","title":"Index","text":"<p>//leakcanary/shark/HeapGraph</p>"},{"location":"api/shark/-heap-graph/#heapgraph","title":"HeapGraph","text":"<p>interface HeapGraph</p> <p>Enables navigation through the heap graph of objects.</p>"},{"location":"api/shark/-heap-graph/#functions","title":"Functions","text":"Name Summary findClassByName abstract fun findClassByName(className: String): HeapObject.HeapClass?Returns the HeapClass corresponding to the provided className, or null if the class cannot be found. findHeapDumpIndex abstract fun findHeapDumpIndex(objectId: Long): IntReturns the 1-based index in the heap dump of the object corresponding to the provided objectId, and throws IllegalArgumentException otherwise. findObjectByHeapDumpIndex abstract fun findObjectByHeapDumpIndex(heapDumpIndex: Int): HeapObjectReturns the HeapObject corresponding to the provided heapDumpIndex, and throws IllegalArgumentException if heapDumpIndex is less than 1 or more than objectCount. findObjectById abstract fun findObjectById(objectId: Long): HeapObjectReturns the HeapObject corresponding to the provided objectId, and throws IllegalArgumentException otherwise. findObjectByIdOrNull abstract fun findObjectByIdOrNull(objectId: Long): HeapObject?Returns the HeapObject corresponding to the provided objectId or null if it cannot be found. findObjectByIndex abstract fun findObjectByIndex(objectIndex: Int): HeapObjectReturns the HeapObject corresponding to the provided objectIndex, and throws IllegalArgumentException if objectIndex is less than 0 or more than objectCount - 1. objectExists abstract fun objectExists(objectId: Long): BooleanReturns true if the provided objectId exists in the heap dump."},{"location":"api/shark/-heap-graph/#properties","title":"Properties","text":"Name Summary classCount abstract val classCount: Int classes abstract val classes: Sequence&lt;HeapObject.HeapClass&gt;Sequence of all classes in the heap dump. context abstract val context: GraphContextIn memory store that can be used to store objects this HeapGraph instance. gcRoots abstract val gcRoots: List&lt;GcRoot&gt;All GC roots which type matches types known to this heap graph and which point to non null references. You can retrieve the object that a GC Root points to by calling findObjectById with GcRoot.id, however you need to first check that objectExists returns true because GC roots can point to objects that don\u2019t exist in the heap dump. identifierByteSize abstract val identifierByteSize: Int instanceCount abstract val instanceCount: Int instances abstract val instances: Sequence&lt;HeapObject.HeapInstance&gt;Sequence of all instances in the heap dump. objectArrayCount abstract val objectArrayCount: Int objectArrays abstract val objectArrays: Sequence&lt;HeapObject.HeapObjectArray&gt;Sequence of all object arrays in the heap dump. objectCount abstract val objectCount: Int objects abstract val objects: Sequence&lt;HeapObject&gt;Sequence of all objects in the heap dump. primitiveArrayCount abstract val primitiveArrayCount: Int primitiveArrays abstract val primitiveArrays: Sequence&lt;HeapObject.HeapPrimitiveArray&gt;Sequence of all primitive arrays in the heap dump."},{"location":"api/shark/-heap-graph/#inheritors","title":"Inheritors","text":"Name CloseableHeapGraph"},{"location":"api/shark/-heap-graph/#extensions","title":"Extensions","text":"Name Summary aliveAndroidServiceObjectIds val HeapGraph.aliveAndroidServiceObjectIds: List&lt;Long&gt;"},{"location":"api/shark/-heap-graph/class-count/","title":"Class count","text":"<p>//leakcanary/shark/HeapGraph/classCount</p>"},{"location":"api/shark/-heap-graph/class-count/#classcount","title":"classCount","text":"<p>abstract val classCount: Int</p>"},{"location":"api/shark/-heap-graph/classes/","title":"Classes","text":"<p>//leakcanary/shark/HeapGraph/classes</p>"},{"location":"api/shark/-heap-graph/classes/#classes","title":"classes","text":"<p>abstract val classes: Sequence&lt;HeapObject.HeapClass&gt;</p> <p>Sequence of all classes in the heap dump.</p> <p>This sequence does not trigger any IO reads.</p>"},{"location":"api/shark/-heap-graph/context/","title":"Context","text":"<p>//leakcanary/shark/HeapGraph/context</p>"},{"location":"api/shark/-heap-graph/context/#context","title":"context","text":"<p>abstract val context: GraphContext</p> <p>In memory store that can be used to store objects this HeapGraph instance.</p>"},{"location":"api/shark/-heap-graph/find-class-by-name/","title":"Find class by name","text":"<p>//leakcanary/shark/HeapGraph/findClassByName</p>"},{"location":"api/shark/-heap-graph/find-class-by-name/#findclassbyname","title":"findClassByName","text":"<p>abstract fun findClassByName(className: String): HeapObject.HeapClass?</p> <p>Returns the HeapClass corresponding to the provided className, or null if the class cannot be found.</p>"},{"location":"api/shark/-heap-graph/find-heap-dump-index/","title":"Find heap dump index","text":"<p>//leakcanary/shark/HeapGraph/findHeapDumpIndex</p>"},{"location":"api/shark/-heap-graph/find-heap-dump-index/#findheapdumpindex","title":"findHeapDumpIndex","text":"<p>abstract fun findHeapDumpIndex(objectId: Long): Int</p> <p>Returns the 1-based index in the heap dump of the object corresponding to the provided objectId, and throws IllegalArgumentException otherwise.</p> <p>This is the object index that YourKit provides in its Java profiler.</p>"},{"location":"api/shark/-heap-graph/find-object-by-heap-dump-index/","title":"Find object by heap dump index","text":"<p>//leakcanary/shark/HeapGraph/findObjectByHeapDumpIndex</p>"},{"location":"api/shark/-heap-graph/find-object-by-heap-dump-index/#findobjectbyheapdumpindex","title":"findObjectByHeapDumpIndex","text":"<p>abstract fun findObjectByHeapDumpIndex(heapDumpIndex: Int): HeapObject</p> <p>Returns the HeapObject corresponding to the provided heapDumpIndex, and throws IllegalArgumentException if heapDumpIndex is less than 1 or more than objectCount.</p> <p>This is the object index that YourKit provides in its Java profiler.</p>"},{"location":"api/shark/-heap-graph/find-object-by-id-or-null/","title":"Find object by id or null","text":"<p>//leakcanary/shark/HeapGraph/findObjectByIdOrNull</p>"},{"location":"api/shark/-heap-graph/find-object-by-id-or-null/#findobjectbyidornull","title":"findObjectByIdOrNull","text":"<p>abstract fun findObjectByIdOrNull(objectId: Long): HeapObject?</p> <p>Returns the HeapObject corresponding to the provided objectId or null if it cannot be found.</p>"},{"location":"api/shark/-heap-graph/find-object-by-id/","title":"Find object by id","text":"<p>//leakcanary/shark/HeapGraph/findObjectById</p>"},{"location":"api/shark/-heap-graph/find-object-by-id/#findobjectbyid","title":"findObjectById","text":"<p>abstract fun findObjectById(objectId: Long): HeapObject</p> <p>Returns the HeapObject corresponding to the provided objectId, and throws IllegalArgumentException otherwise.</p>"},{"location":"api/shark/-heap-graph/find-object-by-index/","title":"Find object by index","text":"<p>//leakcanary/shark/HeapGraph/findObjectByIndex</p>"},{"location":"api/shark/-heap-graph/find-object-by-index/#findobjectbyindex","title":"findObjectByIndex","text":"<p>abstract fun findObjectByIndex(objectIndex: Int): HeapObject</p> <p>Returns the HeapObject corresponding to the provided objectIndex, and throws IllegalArgumentException if objectIndex is less than 0 or more than objectCount - 1.</p>"},{"location":"api/shark/-heap-graph/gc-roots/","title":"Gc roots","text":"<p>//leakcanary/shark/HeapGraph/gcRoots</p>"},{"location":"api/shark/-heap-graph/gc-roots/#gcroots","title":"gcRoots","text":"<p>abstract val gcRoots: List&lt;GcRoot&gt;</p> <p>All GC roots which type matches types known to this heap graph and which point to non null references. You can retrieve the object that a GC Root points to by calling findObjectById with GcRoot.id, however you need to first check that objectExists returns true because GC roots can point to objects that don\u2019t exist in the heap dump.</p>"},{"location":"api/shark/-heap-graph/identifier-byte-size/","title":"Identifier byte size","text":"<p>//leakcanary/shark/HeapGraph/identifierByteSize</p>"},{"location":"api/shark/-heap-graph/identifier-byte-size/#identifierbytesize","title":"identifierByteSize","text":"<p>abstract val identifierByteSize: Int</p>"},{"location":"api/shark/-heap-graph/instance-count/","title":"Instance count","text":"<p>//leakcanary/shark/HeapGraph/instanceCount</p>"},{"location":"api/shark/-heap-graph/instance-count/#instancecount","title":"instanceCount","text":"<p>abstract val instanceCount: Int</p>"},{"location":"api/shark/-heap-graph/instances/","title":"Instances","text":"<p>//leakcanary/shark/HeapGraph/instances</p>"},{"location":"api/shark/-heap-graph/instances/#instances","title":"instances","text":"<p>abstract val instances: Sequence&lt;HeapObject.HeapInstance&gt;</p> <p>Sequence of all instances in the heap dump.</p> <p>This sequence does not trigger any IO reads.</p>"},{"location":"api/shark/-heap-graph/object-array-count/","title":"Object array count","text":"<p>//leakcanary/shark/HeapGraph/objectArrayCount</p>"},{"location":"api/shark/-heap-graph/object-array-count/#objectarraycount","title":"objectArrayCount","text":"<p>abstract val objectArrayCount: Int</p>"},{"location":"api/shark/-heap-graph/object-arrays/","title":"Object arrays","text":"<p>//leakcanary/shark/HeapGraph/objectArrays</p>"},{"location":"api/shark/-heap-graph/object-arrays/#objectarrays","title":"objectArrays","text":"<p>abstract val objectArrays: Sequence&lt;HeapObject.HeapObjectArray&gt;</p> <p>Sequence of all object arrays in the heap dump.</p> <p>This sequence does not trigger any IO reads.</p>"},{"location":"api/shark/-heap-graph/object-count/","title":"Object count","text":"<p>//leakcanary/shark/HeapGraph/objectCount</p>"},{"location":"api/shark/-heap-graph/object-count/#objectcount","title":"objectCount","text":"<p>abstract val objectCount: Int</p>"},{"location":"api/shark/-heap-graph/object-exists/","title":"Object exists","text":"<p>//leakcanary/shark/HeapGraph/objectExists</p>"},{"location":"api/shark/-heap-graph/object-exists/#objectexists","title":"objectExists","text":"<p>abstract fun objectExists(objectId: Long): Boolean</p> <p>Returns true if the provided objectId exists in the heap dump.</p>"},{"location":"api/shark/-heap-graph/objects/","title":"Objects","text":"<p>//leakcanary/shark/HeapGraph/objects</p>"},{"location":"api/shark/-heap-graph/objects/#objects","title":"objects","text":"<p>abstract val objects: Sequence&lt;HeapObject&gt;</p> <p>Sequence of all objects in the heap dump.</p> <p>This sequence does not trigger any IO reads.</p>"},{"location":"api/shark/-heap-graph/primitive-array-count/","title":"Primitive array count","text":"<p>//leakcanary/shark/HeapGraph/primitiveArrayCount</p>"},{"location":"api/shark/-heap-graph/primitive-array-count/#primitivearraycount","title":"primitiveArrayCount","text":"<p>abstract val primitiveArrayCount: Int</p>"},{"location":"api/shark/-heap-graph/primitive-arrays/","title":"Primitive arrays","text":"<p>//leakcanary/shark/HeapGraph/primitiveArrays</p>"},{"location":"api/shark/-heap-graph/primitive-arrays/#primitivearrays","title":"primitiveArrays","text":"<p>abstract val primitiveArrays: Sequence&lt;HeapObject.HeapPrimitiveArray&gt;</p> <p>Sequence of all primitive arrays in the heap dump.</p> <p>This sequence does not trigger any IO reads.</p>"},{"location":"api/shark/-heap-object/","title":"Index","text":"<p>//leakcanary/shark/HeapObject</p>"},{"location":"api/shark/-heap-object/#heapobject","title":"HeapObject","text":"<p>sealed class HeapObject</p> <p>An object in the heap dump.</p>"},{"location":"api/shark/-heap-object/#types","title":"Types","text":"Name Summary Companion object Companion HeapClass class HeapClass : HeapObjectA class in the heap dump. HeapInstance class HeapInstance : HeapObjectAn instance in the heap dump. HeapObjectArray class HeapObjectArray : HeapObjectAn object array in the heap dump. HeapPrimitiveArray class HeapPrimitiveArray : HeapObjectA primitive array in the heap dump."},{"location":"api/shark/-heap-object/#functions","title":"Functions","text":"Name Summary readRecord abstract fun readRecord(): HprofRecord.HeapDumpRecord.ObjectRecordReads and returns the underlying ObjectRecord."},{"location":"api/shark/-heap-object/#properties","title":"Properties","text":"Name Summary asClass val asClass: HeapObject.HeapClass?This HeapObject as a HeapClass if it is one, or null otherwise asInstance val asInstance: HeapObject.HeapInstance?This HeapObject as a HeapInstance if it is one, or null otherwise asObjectArray val asObjectArray: HeapObject.HeapObjectArray?This HeapObject as a HeapObjectArray if it is one, or null otherwise asPrimitiveArray val asPrimitiveArray: HeapObject.HeapPrimitiveArray?This HeapObject as a HeapPrimitiveArray if it is one, or null otherwise graph abstract val graph: HeapGraphThe graph of objects in the heap, which you can use to navigate the heap. objectId abstract val objectId: LongThe heap identifier of this object. objectIndex abstract val objectIndex: IntAn positive object index that\u2019s specific to how Shark stores objects in memory. The index starts at 0 and ends at HeapGraph.objectCount - 1. There are no gaps, every index value corresponds to an object. Classes are first, then instances, then object arrays then primitive arrays. positiveObjectId val positiveObjectId: LongobjectId masked to be a positive unique identifier, as reported in Android Studio. recordSize abstract val recordSize: IntThe total byte size for the record of this object in the heap dump."},{"location":"api/shark/-heap-object/#inheritors","title":"Inheritors","text":"Name HeapClass HeapInstance HeapObjectArray HeapPrimitiveArray"},{"location":"api/shark/-heap-object/as-class/","title":"As class","text":"<p>//leakcanary/shark/HeapObject/asClass</p>"},{"location":"api/shark/-heap-object/as-class/#asclass","title":"asClass","text":"<p>val asClass: HeapObject.HeapClass?</p> <p>This HeapObject as a HeapClass if it is one, or null otherwise</p>"},{"location":"api/shark/-heap-object/as-instance/","title":"As instance","text":"<p>//leakcanary/shark/HeapObject/asInstance</p>"},{"location":"api/shark/-heap-object/as-instance/#asinstance","title":"asInstance","text":"<p>val asInstance: HeapObject.HeapInstance?</p> <p>This HeapObject as a HeapInstance if it is one, or null otherwise</p>"},{"location":"api/shark/-heap-object/as-object-array/","title":"As object array","text":"<p>//leakcanary/shark/HeapObject/asObjectArray</p>"},{"location":"api/shark/-heap-object/as-object-array/#asobjectarray","title":"asObjectArray","text":"<p>val asObjectArray: HeapObject.HeapObjectArray?</p> <p>This HeapObject as a HeapObjectArray if it is one, or null otherwise</p>"},{"location":"api/shark/-heap-object/as-primitive-array/","title":"As primitive array","text":"<p>//leakcanary/shark/HeapObject/asPrimitiveArray</p>"},{"location":"api/shark/-heap-object/as-primitive-array/#asprimitivearray","title":"asPrimitiveArray","text":"<p>val asPrimitiveArray: HeapObject.HeapPrimitiveArray?</p> <p>This HeapObject as a HeapPrimitiveArray if it is one, or null otherwise</p>"},{"location":"api/shark/-heap-object/graph/","title":"Graph","text":"<p>//leakcanary/shark/HeapObject/graph</p>"},{"location":"api/shark/-heap-object/graph/#graph","title":"graph","text":"<p>abstract val graph: HeapGraph</p> <p>The graph of objects in the heap, which you can use to navigate the heap.</p>"},{"location":"api/shark/-heap-object/object-id/","title":"Object id","text":"<p>//leakcanary/shark/HeapObject/objectId</p>"},{"location":"api/shark/-heap-object/object-id/#objectid","title":"objectId","text":"<p>abstract val objectId: Long</p> <p>The heap identifier of this object.</p>"},{"location":"api/shark/-heap-object/object-index/","title":"Object index","text":"<p>//leakcanary/shark/HeapObject/objectIndex</p>"},{"location":"api/shark/-heap-object/object-index/#objectindex","title":"objectIndex","text":"<p>abstract val objectIndex: Int</p> <p>An positive object index that\u2019s specific to how Shark stores objects in memory. The index starts at 0 and ends at HeapGraph.objectCount - 1. There are no gaps, every index value corresponds to an object. Classes are first, then instances, then object arrays then primitive arrays.</p>"},{"location":"api/shark/-heap-object/positive-object-id/","title":"Positive object id","text":"<p>//leakcanary/shark/HeapObject/positiveObjectId</p>"},{"location":"api/shark/-heap-object/positive-object-id/#positiveobjectid","title":"positiveObjectId","text":"<p>val positiveObjectId: Long</p> <p>objectId masked to be a positive unique identifier, as reported in Android Studio.</p>"},{"location":"api/shark/-heap-object/read-record/","title":"Read record","text":"<p>//leakcanary/shark/HeapObject/readRecord</p>"},{"location":"api/shark/-heap-object/read-record/#readrecord","title":"readRecord","text":"<p>abstract fun readRecord(): HprofRecord.HeapDumpRecord.ObjectRecord</p> <p>Reads and returns the underlying ObjectRecord.</p> <p>This may trigger IO reads.</p>"},{"location":"api/shark/-heap-object/record-size/","title":"Record size","text":"<p>//leakcanary/shark/HeapObject/recordSize</p>"},{"location":"api/shark/-heap-object/record-size/#recordsize","title":"recordSize","text":"<p>abstract val recordSize: Int</p> <p>The total byte size for the record of this object in the heap dump.</p>"},{"location":"api/shark/-heap-object/-companion/","title":"Index","text":"<p>//leakcanary/shark/HeapObject/Companion</p>"},{"location":"api/shark/-heap-object/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-heap-object/-heap-class/","title":"Index","text":"<p>//leakcanary/shark/HeapObject/HeapClass</p>"},{"location":"api/shark/-heap-object/-heap-class/#heapclass","title":"HeapClass","text":"<p>class HeapClass : HeapObject</p> <p>A class in the heap dump.</p>"},{"location":"api/shark/-heap-object/-heap-class/#functions","title":"Functions","text":"Name Summary get operator fun get(fieldName: String): HeapField? instanceFieldName fun instanceFieldName(fieldRecord: HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecord.FieldRecord): StringReturns the name of the field declared in this class for the specified fieldRecord. readFieldsByteSize fun readFieldsByteSize(): IntThe total byte size of fields for instances of this class, computed as the sum of the individual size of each field of this class. This does not include the size of fields from superclasses. readRecord open override fun readRecord(): HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecordReads and returns the underlying ClassDumpRecord. readRecordFields fun readRecordFields(): List&lt;HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecord.FieldRecord&gt; readRecordStaticFields fun readRecordStaticFields(): List&lt;HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecord.StaticFieldRecord&gt; readStaticField fun readStaticField(fieldName: String): HeapField?Returns a HeapField object that reflects the specified declared field of the class represented by this HeapClass object, or null if this field does not exist. The name parameter specifies the simple name of the desired field. readStaticFields fun readStaticFields(): Sequence&lt;HeapField&gt;The static fields of this class, as a sequence of HeapField. subclassOf infix fun subclassOf(superclass: HeapObject.HeapClass): BooleanReturns true if superclass is a superclass of this HeapClass. superclassOf infix fun superclassOf(subclass: HeapObject.HeapClass): BooleanReturns true if subclass is a sub class of this HeapClass. toString open override fun toString(): String"},{"location":"api/shark/-heap-object/-heap-class/#properties","title":"Properties","text":"Name Summary asClass val asClass: HeapObject.HeapClass?This HeapObject as a HeapClass if it is one, or null otherwise asInstance val asInstance: HeapObject.HeapInstance?This HeapObject as a HeapInstance if it is one, or null otherwise asObjectArray val asObjectArray: HeapObject.HeapObjectArray?This HeapObject as a HeapObjectArray if it is one, or null otherwise asPrimitiveArray val asPrimitiveArray: HeapObject.HeapPrimitiveArray?This HeapObject as a HeapPrimitiveArray if it is one, or null otherwise classHierarchy val classHierarchy: Sequence&lt;HeapObject.HeapClass&gt;The class hierarchy starting at this class (included) and ending at the Object class (included). directInstances val directInstances: Sequence&lt;HeapObject.HeapInstance&gt;All direct instances of this class, ie excluding any instance of subclasses of this class. graph open override val graph: HeapGraphThe graph of objects in the heap, which you can use to navigate the heap. hasReferenceInstanceFields val hasReferenceInstanceFields: Boolean instanceByteSize val instanceByteSize: IntThe total byte size of fields for instances of this class, as registered in the class dump. This includes the size of fields from superclasses. instances val instances: Sequence&lt;HeapObject.HeapInstance&gt;All instances of this class, including instances of subclasses of this class. isArrayClass val isArrayClass: BooleanReturns true if this class is an array class, and false otherwise. isObjectArrayClass val isObjectArrayClass: Boolean isPrimitiveArrayClass val isPrimitiveArrayClass: Boolean isPrimitiveWrapperClass val isPrimitiveWrapperClass: BooleanWhether this is class is a primitive wrapper type name val name: StringThe name of this class, identical to Class.getName. If this class is an array class, the name has a suffix of brackets for each dimension of the array, e.g. com.Foo[][] is a class for 2 dimensional arrays of com.Foo. objectArrayInstances val objectArrayInstances: Sequence&lt;HeapObject.HeapObjectArray&gt; objectId open override val objectId: LongThe heap identifier of this object. objectIndex open override val objectIndex: IntAn positive object index that\u2019s specific to how Shark stores objects in memory. The index starts at 0 and ends at HeapGraph.objectCount - 1. There are no gaps, every index value corresponds to an object. Classes are first, then instances, then object arrays then primitive arrays. positiveObjectId val positiveObjectId: LongobjectId masked to be a positive unique identifier, as reported in Android Studio. primitiveArrayInstances val primitiveArrayInstances: Sequence&lt;HeapObject.HeapPrimitiveArray&gt;Primitive arrays are one dimensional arrays of a primitive type. N-dimension arrays of primitive types (e.g. int[][]) are object arrays pointing to primitive arrays. recordSize open override val recordSize: IntThe total byte size for the record of this object in the heap dump. simpleName val simpleName: StringReturns name stripped of any string content before the last period (included). subclasses val subclasses: Sequence&lt;HeapObject.HeapClass&gt;All the subclasses (direct and indirect) of this class, in the order they were recorded in the heap dump. superclass val superclass: HeapObject.HeapClass?The HeapClass representing the superclass of this HeapClass. If this HeapClass represents either the Object class or a primitive type, then null is returned. If this HeapClass represents an array class then the HeapClass object representing the Object class is returned."},{"location":"api/shark/-heap-object/-heap-class/class-hierarchy/","title":"Class hierarchy","text":"<p>//leakcanary/shark/HeapObject/HeapClass/classHierarchy</p>"},{"location":"api/shark/-heap-object/-heap-class/class-hierarchy/#classhierarchy","title":"classHierarchy","text":"<p>val classHierarchy: Sequence&lt;HeapObject.HeapClass&gt;</p> <p>The class hierarchy starting at this class (included) and ending at the Object class (included).</p>"},{"location":"api/shark/-heap-object/-heap-class/direct-instances/","title":"Direct instances","text":"<p>//leakcanary/shark/HeapObject/HeapClass/directInstances</p>"},{"location":"api/shark/-heap-object/-heap-class/direct-instances/#directinstances","title":"directInstances","text":"<p>val directInstances: Sequence&lt;HeapObject.HeapInstance&gt;</p> <p>All direct instances of this class, ie excluding any instance of subclasses of this class.</p>"},{"location":"api/shark/-heap-object/-heap-class/get/","title":"Get","text":"<p>//leakcanary/shark/HeapObject/HeapClass/get</p>"},{"location":"api/shark/-heap-object/-heap-class/get/#get","title":"get","text":"<p>operator fun get(fieldName: String): HeapField?</p>"},{"location":"api/shark/-heap-object/-heap-class/get/#see-also","title":"See also","text":"<p>main</p> shark.HeapObject.HeapClass"},{"location":"api/shark/-heap-object/-heap-class/graph/","title":"Graph","text":"<p>//leakcanary/shark/HeapObject/HeapClass/graph</p>"},{"location":"api/shark/-heap-object/-heap-class/graph/#graph","title":"graph","text":"<p>open override val graph: HeapGraph</p> <p>The graph of objects in the heap, which you can use to navigate the heap.</p>"},{"location":"api/shark/-heap-object/-heap-class/has-reference-instance-fields/","title":"Has reference instance fields","text":"<p>//leakcanary/shark/HeapObject/HeapClass/hasReferenceInstanceFields</p>"},{"location":"api/shark/-heap-object/-heap-class/has-reference-instance-fields/#hasreferenceinstancefields","title":"hasReferenceInstanceFields","text":"<p>val hasReferenceInstanceFields: Boolean</p>"},{"location":"api/shark/-heap-object/-heap-class/instance-byte-size/","title":"Instance byte size","text":"<p>//leakcanary/shark/HeapObject/HeapClass/instanceByteSize</p>"},{"location":"api/shark/-heap-object/-heap-class/instance-byte-size/#instancebytesize","title":"instanceByteSize","text":"<p>val instanceByteSize: Int</p> <p>The total byte size of fields for instances of this class, as registered in the class dump. This includes the size of fields from superclasses.</p>"},{"location":"api/shark/-heap-object/-heap-class/instance-byte-size/#see-also","title":"See also","text":"<p>main</p> shark.HeapObject.HeapClass"},{"location":"api/shark/-heap-object/-heap-class/instance-field-name/","title":"Instance field name","text":"<p>//leakcanary/shark/HeapObject/HeapClass/instanceFieldName</p>"},{"location":"api/shark/-heap-object/-heap-class/instance-field-name/#instancefieldname","title":"instanceFieldName","text":"<p>fun instanceFieldName(fieldRecord: HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecord.FieldRecord): String</p> <p>Returns the name of the field declared in this class for the specified fieldRecord.</p>"},{"location":"api/shark/-heap-object/-heap-class/instances/","title":"Instances","text":"<p>//leakcanary/shark/HeapObject/HeapClass/instances</p>"},{"location":"api/shark/-heap-object/-heap-class/instances/#instances","title":"instances","text":"<p>val instances: Sequence&lt;HeapObject.HeapInstance&gt;</p> <p>All instances of this class, including instances of subclasses of this class.</p>"},{"location":"api/shark/-heap-object/-heap-class/is-array-class/","title":"Is array class","text":"<p>//leakcanary/shark/HeapObject/HeapClass/isArrayClass</p>"},{"location":"api/shark/-heap-object/-heap-class/is-array-class/#isarrayclass","title":"isArrayClass","text":"<p>val isArrayClass: Boolean</p> <p>Returns true if this class is an array class, and false otherwise.</p>"},{"location":"api/shark/-heap-object/-heap-class/is-object-array-class/","title":"Is object array class","text":"<p>//leakcanary/shark/HeapObject/HeapClass/isObjectArrayClass</p>"},{"location":"api/shark/-heap-object/-heap-class/is-object-array-class/#isobjectarrayclass","title":"isObjectArrayClass","text":"<p>val isObjectArrayClass: Boolean</p>"},{"location":"api/shark/-heap-object/-heap-class/is-primitive-array-class/","title":"Is primitive array class","text":"<p>//leakcanary/shark/HeapObject/HeapClass/isPrimitiveArrayClass</p>"},{"location":"api/shark/-heap-object/-heap-class/is-primitive-array-class/#isprimitivearrayclass","title":"isPrimitiveArrayClass","text":"<p>val isPrimitiveArrayClass: Boolean</p>"},{"location":"api/shark/-heap-object/-heap-class/is-primitive-wrapper-class/","title":"Is primitive wrapper class","text":"<p>//leakcanary/shark/HeapObject/HeapClass/isPrimitiveWrapperClass</p>"},{"location":"api/shark/-heap-object/-heap-class/is-primitive-wrapper-class/#isprimitivewrapperclass","title":"isPrimitiveWrapperClass","text":"<p>val isPrimitiveWrapperClass: Boolean</p> <p>Whether this is class is a primitive wrapper type</p>"},{"location":"api/shark/-heap-object/-heap-class/name/","title":"Name","text":"<p>//leakcanary/shark/HeapObject/HeapClass/name</p>"},{"location":"api/shark/-heap-object/-heap-class/name/#name","title":"name","text":"<p>val name: String</p> <p>The name of this class, identical to Class.getName. If this class is an array class, the name has a suffix of brackets for each dimension of the array, e.g. com.Foo[][] is a class for 2 dimensional arrays of com.Foo.</p> <p>The behavior for primitive types changes depending on the VM that dumped the heap. JVM heap dumps don\u2019t have any HeapClass object for primitive types, instead the java.land.Class class has 9 instances (the 8 primitive types and void). Android heap dumps have an HeapClass object for primitive type and the java.land.Class class has no instance.</p> <p>If this is an array class, you can find the component type by removing the brackets at the end, e.g. name.substringBefore(\u2018[\u2018). Be careful when doing this for JVM heap dumps though, as if the component type is a primitive type there will not be a HeapClass object for it. This is especially tricky with N dimension primitive type arrays, which are instances of HeapObjectArray (vs single dimension primitive type arrays which are instances of HeapPrimitiveArray).</p>"},{"location":"api/shark/-heap-object/-heap-class/object-array-instances/","title":"Object array instances","text":"<p>//leakcanary/shark/HeapObject/HeapClass/objectArrayInstances</p>"},{"location":"api/shark/-heap-object/-heap-class/object-array-instances/#objectarrayinstances","title":"objectArrayInstances","text":"<p>val objectArrayInstances: Sequence&lt;HeapObject.HeapObjectArray&gt;</p>"},{"location":"api/shark/-heap-object/-heap-class/object-id/","title":"Object id","text":"<p>//leakcanary/shark/HeapObject/HeapClass/objectId</p>"},{"location":"api/shark/-heap-object/-heap-class/object-id/#objectid","title":"objectId","text":"<p>open override val objectId: Long</p> <p>The heap identifier of this object.</p>"},{"location":"api/shark/-heap-object/-heap-class/object-index/","title":"Object index","text":"<p>//leakcanary/shark/HeapObject/HeapClass/objectIndex</p>"},{"location":"api/shark/-heap-object/-heap-class/object-index/#objectindex","title":"objectIndex","text":"<p>open override val objectIndex: Int</p> <p>An positive object index that\u2019s specific to how Shark stores objects in memory. The index starts at 0 and ends at HeapGraph.objectCount - 1. There are no gaps, every index value corresponds to an object. Classes are first, then instances, then object arrays then primitive arrays.</p>"},{"location":"api/shark/-heap-object/-heap-class/primitive-array-instances/","title":"Primitive array instances","text":"<p>//leakcanary/shark/HeapObject/HeapClass/primitiveArrayInstances</p>"},{"location":"api/shark/-heap-object/-heap-class/primitive-array-instances/#primitivearrayinstances","title":"primitiveArrayInstances","text":"<p>val primitiveArrayInstances: Sequence&lt;HeapObject.HeapPrimitiveArray&gt;</p> <p>Primitive arrays are one dimensional arrays of a primitive type. N-dimension arrays of primitive types (e.g. int[][]) are object arrays pointing to primitive arrays.</p>"},{"location":"api/shark/-heap-object/-heap-class/read-fields-byte-size/","title":"Read fields byte size","text":"<p>//leakcanary/shark/HeapObject/HeapClass/readFieldsByteSize</p>"},{"location":"api/shark/-heap-object/-heap-class/read-fields-byte-size/#readfieldsbytesize","title":"readFieldsByteSize","text":"<p>fun readFieldsByteSize(): Int</p> <p>The total byte size of fields for instances of this class, computed as the sum of the individual size of each field of this class. This does not include the size of fields from superclasses.</p> <p>This may trigger IO reads.</p>"},{"location":"api/shark/-heap-object/-heap-class/read-fields-byte-size/#see-also","title":"See also","text":"<p>main</p> shark.HeapObject.HeapClass"},{"location":"api/shark/-heap-object/-heap-class/read-record-fields/","title":"Read record fields","text":"<p>//leakcanary/shark/HeapObject/HeapClass/readRecordFields</p>"},{"location":"api/shark/-heap-object/-heap-class/read-record-fields/#readrecordfields","title":"readRecordFields","text":"<p>fun readRecordFields(): List&lt;HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecord.FieldRecord&gt;</p>"},{"location":"api/shark/-heap-object/-heap-class/read-record-static-fields/","title":"Read record static fields","text":"<p>//leakcanary/shark/HeapObject/HeapClass/readRecordStaticFields</p>"},{"location":"api/shark/-heap-object/-heap-class/read-record-static-fields/#readrecordstaticfields","title":"readRecordStaticFields","text":"<p>fun readRecordStaticFields(): List&lt;HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecord.StaticFieldRecord&gt;</p>"},{"location":"api/shark/-heap-object/-heap-class/read-record/","title":"Read record","text":"<p>//leakcanary/shark/HeapObject/HeapClass/readRecord</p>"},{"location":"api/shark/-heap-object/-heap-class/read-record/#readrecord","title":"readRecord","text":"<p>open override fun readRecord(): HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecord</p> <p>Reads and returns the underlying ClassDumpRecord.</p> <p>This may trigger IO reads.</p>"},{"location":"api/shark/-heap-object/-heap-class/read-static-field/","title":"Read static field","text":"<p>//leakcanary/shark/HeapObject/HeapClass/readStaticField</p>"},{"location":"api/shark/-heap-object/-heap-class/read-static-field/#readstaticfield","title":"readStaticField","text":"<p>fun readStaticField(fieldName: String): HeapField?</p> <p>Returns a HeapField object that reflects the specified declared field of the class represented by this HeapClass object, or null if this field does not exist. The name parameter specifies the simple name of the desired field.</p> <p>Also available as a convenience operator: get</p> <p>This may trigger IO reads.</p>"},{"location":"api/shark/-heap-object/-heap-class/read-static-fields/","title":"Read static fields","text":"<p>//leakcanary/shark/HeapObject/HeapClass/readStaticFields</p>"},{"location":"api/shark/-heap-object/-heap-class/read-static-fields/#readstaticfields","title":"readStaticFields","text":"<p>fun readStaticFields(): Sequence&lt;HeapField&gt;</p> <p>The static fields of this class, as a sequence of HeapField.</p> <p>This may trigger IO reads.</p>"},{"location":"api/shark/-heap-object/-heap-class/record-size/","title":"Record size","text":"<p>//leakcanary/shark/HeapObject/HeapClass/recordSize</p>"},{"location":"api/shark/-heap-object/-heap-class/record-size/#recordsize","title":"recordSize","text":"<p>open override val recordSize: Int</p> <p>The total byte size for the record of this object in the heap dump.</p>"},{"location":"api/shark/-heap-object/-heap-class/simple-name/","title":"Simple name","text":"<p>//leakcanary/shark/HeapObject/HeapClass/simpleName</p>"},{"location":"api/shark/-heap-object/-heap-class/simple-name/#simplename","title":"simpleName","text":"<p>val simpleName: String</p> <p>Returns name stripped of any string content before the last period (included).</p>"},{"location":"api/shark/-heap-object/-heap-class/subclass-of/","title":"Subclass of","text":"<p>//leakcanary/shark/HeapObject/HeapClass/subclassOf</p>"},{"location":"api/shark/-heap-object/-heap-class/subclass-of/#subclassof","title":"subclassOf","text":"<p>infix fun subclassOf(superclass: HeapObject.HeapClass): Boolean</p> <p>Returns true if superclass is a superclass of this HeapClass.</p>"},{"location":"api/shark/-heap-object/-heap-class/subclasses/","title":"Subclasses","text":"<p>//leakcanary/shark/HeapObject/HeapClass/subclasses</p>"},{"location":"api/shark/-heap-object/-heap-class/subclasses/#subclasses","title":"subclasses","text":"<p>val subclasses: Sequence&lt;HeapObject.HeapClass&gt;</p> <p>All the subclasses (direct and indirect) of this class, in the order they were recorded in the heap dump.</p>"},{"location":"api/shark/-heap-object/-heap-class/superclass-of/","title":"Superclass of","text":"<p>//leakcanary/shark/HeapObject/HeapClass/superclassOf</p>"},{"location":"api/shark/-heap-object/-heap-class/superclass-of/#superclassof","title":"superclassOf","text":"<p>infix fun superclassOf(subclass: HeapObject.HeapClass): Boolean</p> <p>Returns true if subclass is a sub class of this HeapClass.</p>"},{"location":"api/shark/-heap-object/-heap-class/superclass/","title":"Superclass","text":"<p>//leakcanary/shark/HeapObject/HeapClass/superclass</p>"},{"location":"api/shark/-heap-object/-heap-class/superclass/#superclass","title":"superclass","text":"<p>val superclass: HeapObject.HeapClass?</p> <p>The HeapClass representing the superclass of this HeapClass. If this HeapClass represents either the Object class or a primitive type, then null is returned. If this HeapClass represents an array class then the HeapClass object representing the Object class is returned.</p>"},{"location":"api/shark/-heap-object/-heap-class/to-string/","title":"To string","text":"<p>//leakcanary/shark/HeapObject/HeapClass/toString</p>"},{"location":"api/shark/-heap-object/-heap-class/to-string/#tostring","title":"toString","text":"<p>open override fun toString(): String</p>"},{"location":"api/shark/-heap-object/-heap-instance/","title":"Index","text":"<p>//leakcanary/shark/HeapObject/HeapInstance</p>"},{"location":"api/shark/-heap-object/-heap-instance/#heapinstance","title":"HeapInstance","text":"<p>class HeapInstance : HeapObject</p> <p>An instance in the heap dump.</p>"},{"location":"api/shark/-heap-object/-heap-instance/#functions","title":"Functions","text":"Name Summary get operator fun get(declaringClassName: String, fieldName: String): HeapField?operator fun get(declaringClass: KClass&lt;out Any&gt;, fieldName: String): HeapField? instanceOf infix fun instanceOf(className: String): BooleanReturns true if this is an instance of the class named className or an instance of a subclass of that class.infix fun instanceOf(expectedClass: KClass&lt;*&gt;): Booleaninfix fun instanceOf(expectedClass: HeapObject.HeapClass): BooleanReturns true if this is an instance of expectedClass or an instance of a subclass of that class. readAsJavaString fun readAsJavaString(): String?If this HeapInstance is an instance of the String class, returns a String instance with content that matches the string in the heap dump. Otherwise returns null. readField fun readField(declaringClassName: String, fieldName: String): HeapField?Returns a HeapField object that reflects the specified declared field of the instance represented by this HeapInstance object, or null if this field does not exist. The declaringClassName specifies the class in which the desired field is declared, and the fieldName parameter specifies the simple name of the desired field.fun readField(declaringClass: KClass&lt;out Any&gt;, fieldName: String): HeapField? readFields fun readFields(): Sequence&lt;HeapField&gt;The fields of this instance, as a sequence of HeapField. readRecord open override fun readRecord(): HprofRecord.HeapDumpRecord.ObjectRecord.InstanceDumpRecordReads and returns the underlying InstanceDumpRecord. toString open override fun toString(): String"},{"location":"api/shark/-heap-object/-heap-instance/#properties","title":"Properties","text":"Name Summary asClass val asClass: HeapObject.HeapClass?This HeapObject as a HeapClass if it is one, or null otherwise asInstance val asInstance: HeapObject.HeapInstance?This HeapObject as a HeapInstance if it is one, or null otherwise asObjectArray val asObjectArray: HeapObject.HeapObjectArray?This HeapObject as a HeapObjectArray if it is one, or null otherwise asPrimitiveArray val asPrimitiveArray: HeapObject.HeapPrimitiveArray?This HeapObject as a HeapPrimitiveArray if it is one, or null otherwise byteSize val byteSize: Int graph open override val graph: HeapGraphThe graph of objects in the heap, which you can use to navigate the heap. instanceClass val instanceClass: HeapObject.HeapClassThe class of this instance. instanceClassId val instanceClassId: LongThe heap identifier of the class of this instance. instanceClassName val instanceClassName: StringThe name of the class of this instance, identical to Class.getName. instanceClassSimpleName val instanceClassSimpleName: StringReturns instanceClassName stripped of any string content before the last period (included). isPrimitiveWrapper val isPrimitiveWrapper: BooleanWhether this is an instance of a primitive wrapper type. objectId open override val objectId: LongThe heap identifier of this object. objectIndex open override val objectIndex: IntAn positive object index that\u2019s specific to how Shark stores objects in memory. The index starts at 0 and ends at HeapGraph.objectCount - 1. There are no gaps, every index value corresponds to an object. Classes are first, then instances, then object arrays then primitive arrays. positiveObjectId val positiveObjectId: LongobjectId masked to be a positive unique identifier, as reported in Android Studio. recordSize open override val recordSize: IntThe total byte size for the record of this object in the heap dump."},{"location":"api/shark/-heap-object/-heap-instance/#extensions","title":"Extensions","text":"Name Summary hexIdentityHashCode val HeapObject.HeapInstance.hexIdentityHashCode: String?The system identity hashCode represented as hex, or null if it couldn\u2019t be found. This is the string identifier you see when calling Object.toString() at runtime on a class that does not override its hashCode() method, e.g. com.example.MyThing@6bd57cf identityHashCode val HeapObject.HeapInstance.identityHashCode: Int?The system identity hash code, or null if it couldn\u2019t be found."},{"location":"api/shark/-heap-object/-heap-instance/byte-size/","title":"Byte size","text":"<p>//leakcanary/shark/HeapObject/HeapInstance/byteSize</p>"},{"location":"api/shark/-heap-object/-heap-instance/byte-size/#bytesize","title":"byteSize","text":"<p>val byteSize: Int</p>"},{"location":"api/shark/-heap-object/-heap-instance/byte-size/#see-also","title":"See also","text":"<p>main</p> shark.HeapObject.HeapClass"},{"location":"api/shark/-heap-object/-heap-instance/get/","title":"Get","text":"<p>//leakcanary/shark/HeapObject/HeapInstance/get</p>"},{"location":"api/shark/-heap-object/-heap-instance/get/#get","title":"get","text":"<p>operator fun get(declaringClass: KClass&lt;out Any&gt;, fieldName: String): HeapField?</p> <p>operator fun get(declaringClassName: String, fieldName: String): HeapField?</p>"},{"location":"api/shark/-heap-object/-heap-instance/get/#see-also","title":"See also","text":"<p>main</p> shark.HeapObject.HeapInstance"},{"location":"api/shark/-heap-object/-heap-instance/graph/","title":"Graph","text":"<p>//leakcanary/shark/HeapObject/HeapInstance/graph</p>"},{"location":"api/shark/-heap-object/-heap-instance/graph/#graph","title":"graph","text":"<p>open override val graph: HeapGraph</p> <p>The graph of objects in the heap, which you can use to navigate the heap.</p>"},{"location":"api/shark/-heap-object/-heap-instance/instance-class-id/","title":"Instance class id","text":"<p>//leakcanary/shark/HeapObject/HeapInstance/instanceClassId</p>"},{"location":"api/shark/-heap-object/-heap-instance/instance-class-id/#instanceclassid","title":"instanceClassId","text":"<p>val instanceClassId: Long</p> <p>The heap identifier of the class of this instance.</p>"},{"location":"api/shark/-heap-object/-heap-instance/instance-class-name/","title":"Instance class name","text":"<p>//leakcanary/shark/HeapObject/HeapInstance/instanceClassName</p>"},{"location":"api/shark/-heap-object/-heap-instance/instance-class-name/#instanceclassname","title":"instanceClassName","text":"<p>val instanceClassName: String</p> <p>The name of the class of this instance, identical to Class.getName.</p>"},{"location":"api/shark/-heap-object/-heap-instance/instance-class-simple-name/","title":"Instance class simple name","text":"<p>//leakcanary/shark/HeapObject/HeapInstance/instanceClassSimpleName</p>"},{"location":"api/shark/-heap-object/-heap-instance/instance-class-simple-name/#instanceclasssimplename","title":"instanceClassSimpleName","text":"<p>val instanceClassSimpleName: String</p> <p>Returns instanceClassName stripped of any string content before the last period (included).</p>"},{"location":"api/shark/-heap-object/-heap-instance/instance-class/","title":"Instance class","text":"<p>//leakcanary/shark/HeapObject/HeapInstance/instanceClass</p>"},{"location":"api/shark/-heap-object/-heap-instance/instance-class/#instanceclass","title":"instanceClass","text":"<p>val instanceClass: HeapObject.HeapClass</p> <p>The class of this instance.</p>"},{"location":"api/shark/-heap-object/-heap-instance/instance-of/","title":"Instance of","text":"<p>//leakcanary/shark/HeapObject/HeapInstance/instanceOf</p>"},{"location":"api/shark/-heap-object/-heap-instance/instance-of/#instanceof","title":"instanceOf","text":"<p>infix fun instanceOf(className: String): Boolean</p> <p>Returns true if this is an instance of the class named className or an instance of a subclass of that class.</p> <p>infix fun instanceOf(expectedClass: KClass&lt;*&gt;): Boolean</p> <p>infix fun instanceOf(expectedClass: HeapObject.HeapClass): Boolean</p> <p>Returns true if this is an instance of expectedClass or an instance of a subclass of that class.</p>"},{"location":"api/shark/-heap-object/-heap-instance/is-primitive-wrapper/","title":"Is primitive wrapper","text":"<p>//leakcanary/shark/HeapObject/HeapInstance/isPrimitiveWrapper</p>"},{"location":"api/shark/-heap-object/-heap-instance/is-primitive-wrapper/#isprimitivewrapper","title":"isPrimitiveWrapper","text":"<p>val isPrimitiveWrapper: Boolean</p> <p>Whether this is an instance of a primitive wrapper type.</p>"},{"location":"api/shark/-heap-object/-heap-instance/object-id/","title":"Object id","text":"<p>//leakcanary/shark/HeapObject/HeapInstance/objectId</p>"},{"location":"api/shark/-heap-object/-heap-instance/object-id/#objectid","title":"objectId","text":"<p>open override val objectId: Long</p> <p>The heap identifier of this object.</p>"},{"location":"api/shark/-heap-object/-heap-instance/object-index/","title":"Object index","text":"<p>//leakcanary/shark/HeapObject/HeapInstance/objectIndex</p>"},{"location":"api/shark/-heap-object/-heap-instance/object-index/#objectindex","title":"objectIndex","text":"<p>open override val objectIndex: Int</p> <p>An positive object index that\u2019s specific to how Shark stores objects in memory. The index starts at 0 and ends at HeapGraph.objectCount - 1. There are no gaps, every index value corresponds to an object. Classes are first, then instances, then object arrays then primitive arrays.</p>"},{"location":"api/shark/-heap-object/-heap-instance/read-as-java-string/","title":"Read as java string","text":"<p>//leakcanary/shark/HeapObject/HeapInstance/readAsJavaString</p>"},{"location":"api/shark/-heap-object/-heap-instance/read-as-java-string/#readasjavastring","title":"readAsJavaString","text":"<p>fun readAsJavaString(): String?</p> <p>If this HeapInstance is an instance of the String class, returns a String instance with content that matches the string in the heap dump. Otherwise returns null.</p> <p>This may trigger IO reads.</p>"},{"location":"api/shark/-heap-object/-heap-instance/read-field/","title":"Read field","text":"<p>//leakcanary/shark/HeapObject/HeapInstance/readField</p>"},{"location":"api/shark/-heap-object/-heap-instance/read-field/#readfield","title":"readField","text":"<p>fun readField(declaringClass: KClass&lt;out Any&gt;, fieldName: String): HeapField?</p>"},{"location":"api/shark/-heap-object/-heap-instance/read-field/#see-also","title":"See also","text":"<p>main</p> shark.HeapObject.HeapInstance <p>fun readField(declaringClassName: String, fieldName: String): HeapField?</p> <p>Returns a HeapField object that reflects the specified declared field of the instance represented by this HeapInstance object, or null if this field does not exist. The declaringClassName specifies the class in which the desired field is declared, and the fieldName parameter specifies the simple name of the desired field.</p> <p>Also available as a convenience operator: get</p> <p>This may trigger IO reads.</p>"},{"location":"api/shark/-heap-object/-heap-instance/read-fields/","title":"Read fields","text":"<p>//leakcanary/shark/HeapObject/HeapInstance/readFields</p>"},{"location":"api/shark/-heap-object/-heap-instance/read-fields/#readfields","title":"readFields","text":"<p>fun readFields(): Sequence&lt;HeapField&gt;</p> <p>The fields of this instance, as a sequence of HeapField.</p> <p>This may trigger IO reads.</p>"},{"location":"api/shark/-heap-object/-heap-instance/read-record/","title":"Read record","text":"<p>//leakcanary/shark/HeapObject/HeapInstance/readRecord</p>"},{"location":"api/shark/-heap-object/-heap-instance/read-record/#readrecord","title":"readRecord","text":"<p>open override fun readRecord(): HprofRecord.HeapDumpRecord.ObjectRecord.InstanceDumpRecord</p> <p>Reads and returns the underlying InstanceDumpRecord.</p> <p>This may trigger IO reads.</p>"},{"location":"api/shark/-heap-object/-heap-instance/record-size/","title":"Record size","text":"<p>//leakcanary/shark/HeapObject/HeapInstance/recordSize</p>"},{"location":"api/shark/-heap-object/-heap-instance/record-size/#recordsize","title":"recordSize","text":"<p>open override val recordSize: Int</p> <p>The total byte size for the record of this object in the heap dump.</p>"},{"location":"api/shark/-heap-object/-heap-instance/to-string/","title":"To string","text":"<p>//leakcanary/shark/HeapObject/HeapInstance/toString</p>"},{"location":"api/shark/-heap-object/-heap-instance/to-string/#tostring","title":"toString","text":"<p>open override fun toString(): String</p>"},{"location":"api/shark/-heap-object/-heap-object-array/","title":"Index","text":"<p>//leakcanary/shark/HeapObject/HeapObjectArray</p>"},{"location":"api/shark/-heap-object/-heap-object-array/#heapobjectarray","title":"HeapObjectArray","text":"<p>class HeapObjectArray : HeapObject</p> <p>An object array in the heap dump.</p>"},{"location":"api/shark/-heap-object/-heap-object-array/#functions","title":"Functions","text":"Name Summary readElements fun readElements(): Sequence&lt;HeapValue&gt;The elements in this array, as a sequence of HeapValue. readRecord open override fun readRecord(): HprofRecord.HeapDumpRecord.ObjectRecord.ObjectArrayDumpRecordReads and returns the underlying ObjectArrayDumpRecord. toString open override fun toString(): String"},{"location":"api/shark/-heap-object/-heap-object-array/#properties","title":"Properties","text":"Name Summary arrayClass val arrayClass: HeapObject.HeapClassThe class of this array. arrayClassId val arrayClassId: LongThe heap identifier of the class of this array. arrayClassName val arrayClassName: StringThe name of the class of this array, identical to Class.getName. arrayClassSimpleName val arrayClassSimpleName: StringReturns arrayClassName stripped of any string content before the last period (included). asClass val asClass: HeapObject.HeapClass?This HeapObject as a HeapClass if it is one, or null otherwise asInstance val asInstance: HeapObject.HeapInstance?This HeapObject as a HeapInstance if it is one, or null otherwise asObjectArray val asObjectArray: HeapObject.HeapObjectArray?This HeapObject as a HeapObjectArray if it is one, or null otherwise asPrimitiveArray val asPrimitiveArray: HeapObject.HeapPrimitiveArray?This HeapObject as a HeapPrimitiveArray if it is one, or null otherwise byteSize val byteSize: IntThe total byte shallow size of elements in this array. graph open override val graph: HeapGraphThe graph of objects in the heap, which you can use to navigate the heap. objectId open override val objectId: LongThe heap identifier of this object. objectIndex open override val objectIndex: IntAn positive object index that\u2019s specific to how Shark stores objects in memory. The index starts at 0 and ends at HeapGraph.objectCount - 1. There are no gaps, every index value corresponds to an object. Classes are first, then instances, then object arrays then primitive arrays. positiveObjectId val positiveObjectId: LongobjectId masked to be a positive unique identifier, as reported in Android Studio. recordSize open override val recordSize: IntThe total byte size for the record of this object in the heap dump."},{"location":"api/shark/-heap-object/-heap-object-array/array-class-id/","title":"Array class id","text":"<p>//leakcanary/shark/HeapObject/HeapObjectArray/arrayClassId</p>"},{"location":"api/shark/-heap-object/-heap-object-array/array-class-id/#arrayclassid","title":"arrayClassId","text":"<p>val arrayClassId: Long</p> <p>The heap identifier of the class of this array.</p>"},{"location":"api/shark/-heap-object/-heap-object-array/array-class-name/","title":"Array class name","text":"<p>//leakcanary/shark/HeapObject/HeapObjectArray/arrayClassName</p>"},{"location":"api/shark/-heap-object/-heap-object-array/array-class-name/#arrayclassname","title":"arrayClassName","text":"<p>val arrayClassName: String</p> <p>The name of the class of this array, identical to Class.getName.</p>"},{"location":"api/shark/-heap-object/-heap-object-array/array-class-simple-name/","title":"Array class simple name","text":"<p>//leakcanary/shark/HeapObject/HeapObjectArray/arrayClassSimpleName</p>"},{"location":"api/shark/-heap-object/-heap-object-array/array-class-simple-name/#arrayclasssimplename","title":"arrayClassSimpleName","text":"<p>val arrayClassSimpleName: String</p> <p>Returns arrayClassName stripped of any string content before the last period (included).</p>"},{"location":"api/shark/-heap-object/-heap-object-array/array-class/","title":"Array class","text":"<p>//leakcanary/shark/HeapObject/HeapObjectArray/arrayClass</p>"},{"location":"api/shark/-heap-object/-heap-object-array/array-class/#arrayclass","title":"arrayClass","text":"<p>val arrayClass: HeapObject.HeapClass</p> <p>The class of this array.</p>"},{"location":"api/shark/-heap-object/-heap-object-array/byte-size/","title":"Byte size","text":"<p>//leakcanary/shark/HeapObject/HeapObjectArray/byteSize</p>"},{"location":"api/shark/-heap-object/-heap-object-array/byte-size/#bytesize","title":"byteSize","text":"<p>val byteSize: Int</p> <p>The total byte shallow size of elements in this array.</p>"},{"location":"api/shark/-heap-object/-heap-object-array/graph/","title":"Graph","text":"<p>//leakcanary/shark/HeapObject/HeapObjectArray/graph</p>"},{"location":"api/shark/-heap-object/-heap-object-array/graph/#graph","title":"graph","text":"<p>open override val graph: HeapGraph</p> <p>The graph of objects in the heap, which you can use to navigate the heap.</p>"},{"location":"api/shark/-heap-object/-heap-object-array/object-id/","title":"Object id","text":"<p>//leakcanary/shark/HeapObject/HeapObjectArray/objectId</p>"},{"location":"api/shark/-heap-object/-heap-object-array/object-id/#objectid","title":"objectId","text":"<p>open override val objectId: Long</p> <p>The heap identifier of this object.</p>"},{"location":"api/shark/-heap-object/-heap-object-array/object-index/","title":"Object index","text":"<p>//leakcanary/shark/HeapObject/HeapObjectArray/objectIndex</p>"},{"location":"api/shark/-heap-object/-heap-object-array/object-index/#objectindex","title":"objectIndex","text":"<p>open override val objectIndex: Int</p> <p>An positive object index that\u2019s specific to how Shark stores objects in memory. The index starts at 0 and ends at HeapGraph.objectCount - 1. There are no gaps, every index value corresponds to an object. Classes are first, then instances, then object arrays then primitive arrays.</p>"},{"location":"api/shark/-heap-object/-heap-object-array/read-elements/","title":"Read elements","text":"<p>//leakcanary/shark/HeapObject/HeapObjectArray/readElements</p>"},{"location":"api/shark/-heap-object/-heap-object-array/read-elements/#readelements","title":"readElements","text":"<p>fun readElements(): Sequence&lt;HeapValue&gt;</p> <p>The elements in this array, as a sequence of HeapValue.</p> <p>This may trigger IO reads.</p>"},{"location":"api/shark/-heap-object/-heap-object-array/read-record/","title":"Read record","text":"<p>//leakcanary/shark/HeapObject/HeapObjectArray/readRecord</p>"},{"location":"api/shark/-heap-object/-heap-object-array/read-record/#readrecord","title":"readRecord","text":"<p>open override fun readRecord(): HprofRecord.HeapDumpRecord.ObjectRecord.ObjectArrayDumpRecord</p> <p>Reads and returns the underlying ObjectArrayDumpRecord.</p> <p>This may trigger IO reads.</p>"},{"location":"api/shark/-heap-object/-heap-object-array/record-size/","title":"Record size","text":"<p>//leakcanary/shark/HeapObject/HeapObjectArray/recordSize</p>"},{"location":"api/shark/-heap-object/-heap-object-array/record-size/#recordsize","title":"recordSize","text":"<p>open override val recordSize: Int</p> <p>The total byte size for the record of this object in the heap dump.</p>"},{"location":"api/shark/-heap-object/-heap-object-array/to-string/","title":"To string","text":"<p>//leakcanary/shark/HeapObject/HeapObjectArray/toString</p>"},{"location":"api/shark/-heap-object/-heap-object-array/to-string/#tostring","title":"toString","text":"<p>open override fun toString(): String</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/","title":"Index","text":"<p>//leakcanary/shark/HeapObject/HeapPrimitiveArray</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/#heapprimitivearray","title":"HeapPrimitiveArray","text":"<p>class HeapPrimitiveArray : HeapObject</p> <p>A primitive array in the heap dump.</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/#functions","title":"Functions","text":"Name Summary readRecord open override fun readRecord(): HprofRecord.HeapDumpRecord.ObjectRecord.PrimitiveArrayDumpRecordReads and returns the underlying PrimitiveArrayDumpRecord. toString open override fun toString(): String"},{"location":"api/shark/-heap-object/-heap-primitive-array/#properties","title":"Properties","text":"Name Summary arrayClass val arrayClass: HeapObject.HeapClassThe class of this array. arrayClassName val arrayClassName: StringThe name of the class of this array, identical to Class.getName. asClass val asClass: HeapObject.HeapClass?This HeapObject as a HeapClass if it is one, or null otherwise asInstance val asInstance: HeapObject.HeapInstance?This HeapObject as a HeapInstance if it is one, or null otherwise asObjectArray val asObjectArray: HeapObject.HeapObjectArray?This HeapObject as a HeapObjectArray if it is one, or null otherwise asPrimitiveArray val asPrimitiveArray: HeapObject.HeapPrimitiveArray?This HeapObject as a HeapPrimitiveArray if it is one, or null otherwise byteSize val byteSize: IntThe total byte shallow size of elements in this array. graph open override val graph: HeapGraphThe graph of objects in the heap, which you can use to navigate the heap. objectId open override val objectId: LongThe heap identifier of this object. objectIndex open override val objectIndex: IntAn positive object index that\u2019s specific to how Shark stores objects in memory. The index starts at 0 and ends at HeapGraph.objectCount - 1. There are no gaps, every index value corresponds to an object. Classes are first, then instances, then object arrays then primitive arrays. positiveObjectId val positiveObjectId: LongobjectId masked to be a positive unique identifier, as reported in Android Studio. primitiveType val primitiveType: PrimitiveTypeThe PrimitiveType of elements in this array. recordSize open override val recordSize: IntThe total byte size for the record of this object in the heap dump."},{"location":"api/shark/-heap-object/-heap-primitive-array/array-class-name/","title":"Array class name","text":"<p>//leakcanary/shark/HeapObject/HeapPrimitiveArray/arrayClassName</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/array-class-name/#arrayclassname","title":"arrayClassName","text":"<p>val arrayClassName: String</p> <p>The name of the class of this array, identical to Class.getName.</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/array-class/","title":"Array class","text":"<p>//leakcanary/shark/HeapObject/HeapPrimitiveArray/arrayClass</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/array-class/#arrayclass","title":"arrayClass","text":"<p>val arrayClass: HeapObject.HeapClass</p> <p>The class of this array.</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/byte-size/","title":"Byte size","text":"<p>//leakcanary/shark/HeapObject/HeapPrimitiveArray/byteSize</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/byte-size/#bytesize","title":"byteSize","text":"<p>val byteSize: Int</p> <p>The total byte shallow size of elements in this array.</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/graph/","title":"Graph","text":"<p>//leakcanary/shark/HeapObject/HeapPrimitiveArray/graph</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/graph/#graph","title":"graph","text":"<p>open override val graph: HeapGraph</p> <p>The graph of objects in the heap, which you can use to navigate the heap.</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/object-id/","title":"Object id","text":"<p>//leakcanary/shark/HeapObject/HeapPrimitiveArray/objectId</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/object-id/#objectid","title":"objectId","text":"<p>open override val objectId: Long</p> <p>The heap identifier of this object.</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/object-index/","title":"Object index","text":"<p>//leakcanary/shark/HeapObject/HeapPrimitiveArray/objectIndex</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/object-index/#objectindex","title":"objectIndex","text":"<p>open override val objectIndex: Int</p> <p>An positive object index that\u2019s specific to how Shark stores objects in memory. The index starts at 0 and ends at HeapGraph.objectCount - 1. There are no gaps, every index value corresponds to an object. Classes are first, then instances, then object arrays then primitive arrays.</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/primitive-type/","title":"Primitive type","text":"<p>//leakcanary/shark/HeapObject/HeapPrimitiveArray/primitiveType</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/primitive-type/#primitivetype","title":"primitiveType","text":"<p>val primitiveType: PrimitiveType</p> <p>The PrimitiveType of elements in this array.</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/read-record/","title":"Read record","text":"<p>//leakcanary/shark/HeapObject/HeapPrimitiveArray/readRecord</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/read-record/#readrecord","title":"readRecord","text":"<p>open override fun readRecord(): HprofRecord.HeapDumpRecord.ObjectRecord.PrimitiveArrayDumpRecord</p> <p>Reads and returns the underlying PrimitiveArrayDumpRecord.</p> <p>This may trigger IO reads.</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/record-size/","title":"Record size","text":"<p>//leakcanary/shark/HeapObject/HeapPrimitiveArray/recordSize</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/record-size/#recordsize","title":"recordSize","text":"<p>open override val recordSize: Int</p> <p>The total byte size for the record of this object in the heap dump.</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/to-string/","title":"To string","text":"<p>//leakcanary/shark/HeapObject/HeapPrimitiveArray/toString</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/to-string/#tostring","title":"toString","text":"<p>open override fun toString(): String</p>"},{"location":"api/shark/-heap-value/","title":"Index","text":"<p>//leakcanary/shark/HeapValue</p>"},{"location":"api/shark/-heap-value/#heapvalue","title":"HeapValue","text":"<p>class HeapValue(val graph: HeapGraph, val holder: ValueHolder)</p> <p>Represents a value in the heap dump, which can be an object reference or a primitive type.</p>"},{"location":"api/shark/-heap-value/#constructors","title":"Constructors","text":"HeapValue fun HeapValue(graph: HeapGraph, holder: ValueHolder)"},{"location":"api/shark/-heap-value/#functions","title":"Functions","text":"Name Summary readAsJavaString fun readAsJavaString(): String?If this HeapValue if it represents a non null object reference to an instance of the String class that exists in the heap dump, returns a String instance with content that matches the string in the heap dump. Otherwise returns null."},{"location":"api/shark/-heap-value/#properties","title":"Properties","text":"Name Summary asBoolean val asBoolean: Boolean?This HeapValue as a Boolean if it represents one, or null otherwise. asByte val asByte: Byte?This HeapValue as a Byte if it represents one, or null otherwise. asChar val asChar: Char?This HeapValue as a Char if it represents one, or null otherwise. asDouble val asDouble: Double?This HeapValue as a Double if it represents one, or null otherwise. asFloat val asFloat: Float?This HeapValue as a Float if it represents one, or null otherwise. asInt val asInt: Int?This HeapValue as an Int if it represents one, or null otherwise. asLong val asLong: Long?This HeapValue as a Long if it represents one, or null otherwise. asNonNullObjectId val asNonNullObjectId: Long?This HeapValue as a Long if it represents a non null object reference, or null otherwise. asObject val asObject: HeapObject?The HeapObject referenced by this HeapValue if it represents a non null object reference, or null otherwise. asObjectId val asObjectId: Long?This HeapValue as a Long if it represents an object reference, or null otherwise. asShort val asShort: Short?This HeapValue as a Short if it represents one, or null otherwise. graph val graph: HeapGraphThe graph of objects in the heap, which you can use to navigate the heap. holder val holder: ValueHolderHolds the actual value that this HeapValue represents. isNonNullReference val isNonNullReference: BooleanTrue is this HeapValue represents a non null object reference, false otherwise. isNullReference val isNullReference: BooleanTrue is this HeapValue represents a null object reference, false otherwise."},{"location":"api/shark/-heap-value/#extensions","title":"Extensions","text":"Name Summary heapValueAsString fun HeapValue.heapValueAsString(): String"},{"location":"api/shark/-heap-value/-heap-value/","title":"heap value","text":"<p>//leakcanary/shark/HeapValue/HeapValue</p>"},{"location":"api/shark/-heap-value/-heap-value/#heapvalue","title":"HeapValue","text":"<p>fun HeapValue(graph: HeapGraph, holder: ValueHolder)</p>"},{"location":"api/shark/-heap-value/as-boolean/","title":"As boolean","text":"<p>//leakcanary/shark/HeapValue/asBoolean</p>"},{"location":"api/shark/-heap-value/as-boolean/#asboolean","title":"asBoolean","text":"<p>val asBoolean: Boolean?</p> <p>This HeapValue as a Boolean if it represents one, or null otherwise.</p>"},{"location":"api/shark/-heap-value/as-byte/","title":"As byte","text":"<p>//leakcanary/shark/HeapValue/asByte</p>"},{"location":"api/shark/-heap-value/as-byte/#asbyte","title":"asByte","text":"<p>val asByte: Byte?</p> <p>This HeapValue as a Byte if it represents one, or null otherwise.</p>"},{"location":"api/shark/-heap-value/as-char/","title":"As char","text":"<p>//leakcanary/shark/HeapValue/asChar</p>"},{"location":"api/shark/-heap-value/as-char/#aschar","title":"asChar","text":"<p>val asChar: Char?</p> <p>This HeapValue as a Char if it represents one, or null otherwise.</p>"},{"location":"api/shark/-heap-value/as-double/","title":"As double","text":"<p>//leakcanary/shark/HeapValue/asDouble</p>"},{"location":"api/shark/-heap-value/as-double/#asdouble","title":"asDouble","text":"<p>val asDouble: Double?</p> <p>This HeapValue as a Double if it represents one, or null otherwise.</p>"},{"location":"api/shark/-heap-value/as-float/","title":"As float","text":"<p>//leakcanary/shark/HeapValue/asFloat</p>"},{"location":"api/shark/-heap-value/as-float/#asfloat","title":"asFloat","text":"<p>val asFloat: Float?</p> <p>This HeapValue as a Float if it represents one, or null otherwise.</p>"},{"location":"api/shark/-heap-value/as-int/","title":"As int","text":"<p>//leakcanary/shark/HeapValue/asInt</p>"},{"location":"api/shark/-heap-value/as-int/#asint","title":"asInt","text":"<p>val asInt: Int?</p> <p>This HeapValue as an Int if it represents one, or null otherwise.</p>"},{"location":"api/shark/-heap-value/as-long/","title":"As long","text":"<p>//leakcanary/shark/HeapValue/asLong</p>"},{"location":"api/shark/-heap-value/as-long/#aslong","title":"asLong","text":"<p>val asLong: Long?</p> <p>This HeapValue as a Long if it represents one, or null otherwise.</p>"},{"location":"api/shark/-heap-value/as-non-null-object-id/","title":"As non null object id","text":"<p>//leakcanary/shark/HeapValue/asNonNullObjectId</p>"},{"location":"api/shark/-heap-value/as-non-null-object-id/#asnonnullobjectid","title":"asNonNullObjectId","text":"<p>val asNonNullObjectId: Long?</p> <p>This HeapValue as a Long if it represents a non null object reference, or null otherwise.</p>"},{"location":"api/shark/-heap-value/as-object-id/","title":"As object id","text":"<p>//leakcanary/shark/HeapValue/asObjectId</p>"},{"location":"api/shark/-heap-value/as-object-id/#asobjectid","title":"asObjectId","text":"<p>val asObjectId: Long?</p> <p>This HeapValue as a Long if it represents an object reference, or null otherwise.</p>"},{"location":"api/shark/-heap-value/as-object/","title":"As object","text":"<p>//leakcanary/shark/HeapValue/asObject</p>"},{"location":"api/shark/-heap-value/as-object/#asobject","title":"asObject","text":"<p>val asObject: HeapObject?</p> <p>The HeapObject referenced by this HeapValue if it represents a non null object reference, or null otherwise.</p>"},{"location":"api/shark/-heap-value/as-short/","title":"As short","text":"<p>//leakcanary/shark/HeapValue/asShort</p>"},{"location":"api/shark/-heap-value/as-short/#asshort","title":"asShort","text":"<p>val asShort: Short?</p> <p>This HeapValue as a Short if it represents one, or null otherwise.</p>"},{"location":"api/shark/-heap-value/graph/","title":"Graph","text":"<p>//leakcanary/shark/HeapValue/graph</p>"},{"location":"api/shark/-heap-value/graph/#graph","title":"graph","text":"<p>val graph: HeapGraph</p> <p>The graph of objects in the heap, which you can use to navigate the heap.</p>"},{"location":"api/shark/-heap-value/holder/","title":"Holder","text":"<p>//leakcanary/shark/HeapValue/holder</p>"},{"location":"api/shark/-heap-value/holder/#holder","title":"holder","text":"<p>val holder: ValueHolder</p> <p>Holds the actual value that this HeapValue represents.</p>"},{"location":"api/shark/-heap-value/is-non-null-reference/","title":"Is non null reference","text":"<p>//leakcanary/shark/HeapValue/isNonNullReference</p>"},{"location":"api/shark/-heap-value/is-non-null-reference/#isnonnullreference","title":"isNonNullReference","text":"<p>val isNonNullReference: Boolean</p> <p>True is this HeapValue represents a non null object reference, false otherwise.</p>"},{"location":"api/shark/-heap-value/is-null-reference/","title":"Is null reference","text":"<p>//leakcanary/shark/HeapValue/isNullReference</p>"},{"location":"api/shark/-heap-value/is-null-reference/#isnullreference","title":"isNullReference","text":"<p>val isNullReference: Boolean</p> <p>True is this HeapValue represents a null object reference, false otherwise.</p>"},{"location":"api/shark/-heap-value/read-as-java-string/","title":"Read as java string","text":"<p>//leakcanary/shark/HeapValue/readAsJavaString</p>"},{"location":"api/shark/-heap-value/read-as-java-string/#readasjavastring","title":"readAsJavaString","text":"<p>fun readAsJavaString(): String?</p> <p>If this HeapValue if it represents a non null object reference to an instance of the String class that exists in the heap dump, returns a String instance with content that matches the string in the heap dump. Otherwise returns null.</p> <p>This may trigger IO reads.</p>"},{"location":"api/shark/-hprof-deobfuscator/","title":"Index","text":"<p>//leakcanary/shark/HprofDeobfuscator</p>"},{"location":"api/shark/-hprof-deobfuscator/#hprofdeobfuscator","title":"HprofDeobfuscator","text":"<p>class HprofDeobfuscator</p> <p>Converts a Hprof file to another file with deobfuscated class and field names.</p>"},{"location":"api/shark/-hprof-deobfuscator/#constructors","title":"Constructors","text":"HprofDeobfuscator fun HprofDeobfuscator()"},{"location":"api/shark/-hprof-deobfuscator/#functions","title":"Functions","text":"Name Summary deobfuscate fun deobfuscate(proguardMapping: ProguardMapping, inputHprofFile: File, outputHprofFile: File = File(       inputHprofFile.parent, inputHprofFile.name.replace(       \".hprof\", \"-deobfuscated.hprof\"     ).let { if (it != inputHprofFile.name) it else inputHprofFile.name + \"-deobfuscated\" })): File"},{"location":"api/shark/-hprof-deobfuscator/-hprof-deobfuscator/","title":"hprof deobfuscator","text":"<p>//leakcanary/shark/HprofDeobfuscator/HprofDeobfuscator</p>"},{"location":"api/shark/-hprof-deobfuscator/-hprof-deobfuscator/#hprofdeobfuscator","title":"HprofDeobfuscator","text":"<p>fun HprofDeobfuscator()</p>"},{"location":"api/shark/-hprof-deobfuscator/deobfuscate/","title":"Deobfuscate","text":"<p>//leakcanary/shark/HprofDeobfuscator/deobfuscate</p>"},{"location":"api/shark/-hprof-deobfuscator/deobfuscate/#deobfuscate","title":"deobfuscate","text":"<p>fun deobfuscate(proguardMapping: ProguardMapping, inputHprofFile: File, outputHprofFile: File = File(       inputHprofFile.parent, inputHprofFile.name.replace(       \".hprof\", \"-deobfuscated.hprof\"     ).let { if (it != inputHprofFile.name) it else inputHprofFile.name + \"-deobfuscated\" })): File</p>"},{"location":"api/shark/-hprof-deobfuscator/deobfuscate/#see-also","title":"See also","text":"<p>main</p> shark.HprofDeobfuscator"},{"location":"api/shark/-hprof-header/","title":"Index","text":"<p>//leakcanary/shark/HprofHeader</p>"},{"location":"api/shark/-hprof-header/#hprofheader","title":"HprofHeader","text":"<p>data class HprofHeader(val heapDumpTimestamp: Long = System.currentTimeMillis(), val version: HprofVersion = HprofVersion.ANDROID, val identifierByteSize: Int = 4)</p> <p>Represents the header metadata of a Hprof file.</p>"},{"location":"api/shark/-hprof-header/#constructors","title":"Constructors","text":"HprofHeader fun HprofHeader(heapDumpTimestamp: Long = System.currentTimeMillis(), version: HprofVersion = HprofVersion.ANDROID, identifierByteSize: Int = 4)"},{"location":"api/shark/-hprof-header/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-hprof-header/#properties","title":"Properties","text":"Name Summary heapDumpTimestamp val heapDumpTimestamp: LongUnix timestamp at which the heap was dumped. identifierByteSize val identifierByteSize: Int = 4Size of Hprof identifiers. Identifiers are used to represent UTF8 strings, objects, stack traces, etc. They can have the same size as host pointers or sizeof(void*), but are not required to be. recordsPosition val recordsPosition: IntHow many bytes from the beginning of the file can we find the hprof records at. Version string, 0 delimiter (1 byte), identifier byte size int (4 bytes) ,timestamp long (8 bytes) version val version: HprofVersionHprof version, which is tied to the runtime where the heap was dumped."},{"location":"api/shark/-hprof-header/-hprof-header/","title":"hprof header","text":"<p>//leakcanary/shark/HprofHeader/HprofHeader</p>"},{"location":"api/shark/-hprof-header/-hprof-header/#hprofheader","title":"HprofHeader","text":"<p>fun HprofHeader(heapDumpTimestamp: Long = System.currentTimeMillis(), version: HprofVersion = HprofVersion.ANDROID, identifierByteSize: Int = 4)</p>"},{"location":"api/shark/-hprof-header/heap-dump-timestamp/","title":"Heap dump timestamp","text":"<p>//leakcanary/shark/HprofHeader/heapDumpTimestamp</p>"},{"location":"api/shark/-hprof-header/heap-dump-timestamp/#heapdumptimestamp","title":"heapDumpTimestamp","text":"<p>val heapDumpTimestamp: Long</p> <p>Unix timestamp at which the heap was dumped.</p>"},{"location":"api/shark/-hprof-header/identifier-byte-size/","title":"Identifier byte size","text":"<p>//leakcanary/shark/HprofHeader/identifierByteSize</p>"},{"location":"api/shark/-hprof-header/identifier-byte-size/#identifierbytesize","title":"identifierByteSize","text":"<p>val identifierByteSize: Int = 4</p> <p>Size of Hprof identifiers. Identifiers are used to represent UTF8 strings, objects, stack traces, etc. They can have the same size as host pointers or sizeof(void*), but are not required to be.</p>"},{"location":"api/shark/-hprof-header/records-position/","title":"Records position","text":"<p>//leakcanary/shark/HprofHeader/recordsPosition</p>"},{"location":"api/shark/-hprof-header/records-position/#recordsposition","title":"recordsPosition","text":"<p>val recordsPosition: Int</p> <p>How many bytes from the beginning of the file can we find the hprof records at. Version string, 0 delimiter (1 byte), identifier byte size int (4 bytes) ,timestamp long (8 bytes)</p>"},{"location":"api/shark/-hprof-header/version/","title":"Version","text":"<p>//leakcanary/shark/HprofHeader/version</p>"},{"location":"api/shark/-hprof-header/version/#version","title":"version","text":"<p>val version: HprofVersion</p> <p>Hprof version, which is tied to the runtime where the heap was dumped.</p>"},{"location":"api/shark/-hprof-header/-companion/","title":"Index","text":"<p>//leakcanary/shark/HprofHeader/Companion</p>"},{"location":"api/shark/-hprof-header/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-hprof-header/-companion/#functions","title":"Functions","text":"Name Summary parseHeaderOf fun parseHeaderOf(hprofFile: File): HprofHeaderReads the header of the provided hprofFile and returns it as a HprofHeaderfun parseHeaderOf(source: BufferedSource): HprofHeaderReads the header of the provided source and returns it as a HprofHeader. This does not close the source."},{"location":"api/shark/-hprof-header/-companion/parse-header-of/","title":"Parse header of","text":"<p>//leakcanary/shark/HprofHeader/Companion/parseHeaderOf</p>"},{"location":"api/shark/-hprof-header/-companion/parse-header-of/#parseheaderof","title":"parseHeaderOf","text":"<p>fun parseHeaderOf(hprofFile: File): HprofHeader</p> <p>Reads the header of the provided hprofFile and returns it as a HprofHeader</p> <p>fun parseHeaderOf(source: BufferedSource): HprofHeader</p> <p>Reads the header of the provided source and returns it as a HprofHeader. This does not close the source.</p>"},{"location":"api/shark/-hprof-heap-graph/","title":"Index","text":"<p>//leakcanary/shark/HprofHeapGraph</p>"},{"location":"api/shark/-hprof-heap-graph/#hprofheapgraph","title":"HprofHeapGraph","text":"<p>class HprofHeapGraph : CloseableHeapGraph</p> <p>A HeapGraph that reads from an Hprof file indexed by HprofIndex.</p>"},{"location":"api/shark/-hprof-heap-graph/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-hprof-heap-graph/#functions","title":"Functions","text":"Name Summary close open override fun close() findClassByName open override fun findClassByName(className: String): HeapObject.HeapClass?Returns the HeapClass corresponding to the provided className, or null if the class cannot be found. findHeapDumpIndex open override fun findHeapDumpIndex(objectId: Long): IntReturns the 1-based index in the heap dump of the object corresponding to the provided objectId, and throws IllegalArgumentException otherwise. findObjectByHeapDumpIndex open override fun findObjectByHeapDumpIndex(heapDumpIndex: Int): HeapObjectReturns the HeapObject corresponding to the provided heapDumpIndex, and throws IllegalArgumentException if heapDumpIndex is less than 1 or more than objectCount. findObjectById open override fun findObjectById(objectId: Long): HeapObjectReturns the HeapObject corresponding to the provided objectId, and throws IllegalArgumentException otherwise. findObjectByIdOrNull open override fun findObjectByIdOrNull(objectId: Long): HeapObject?Returns the HeapObject corresponding to the provided objectId or null if it cannot be found. findObjectByIndex open override fun findObjectByIndex(objectIndex: Int): HeapObjectReturns the HeapObject corresponding to the provided objectIndex, and throws IllegalArgumentException if objectIndex is less than 0 or more than objectCount - 1. lruCacheStats fun lruCacheStats(): StringThis is only public so that we can publish stats. Accessing this requires casting HeapGraph to HprofHeapGraph so it\u2019s really not a public API. May change at any time! objectExists open override fun objectExists(objectId: Long): BooleanReturns true if the provided objectId exists in the heap dump."},{"location":"api/shark/-hprof-heap-graph/#properties","title":"Properties","text":"Name Summary classCount open override val classCount: Int classes open override val classes: Sequence&lt;HeapObject.HeapClass&gt;Sequence of all classes in the heap dump. context open override val context: GraphContextIn memory store that can be used to store objects this HeapGraph instance. gcRoots open override val gcRoots: List&lt;GcRoot&gt;All GC roots which type matches types known to this heap graph and which point to non null references. You can retrieve the object that a GC Root points to by calling findObjectById with GcRoot.id, however you need to first check that objectExists returns true because GC roots can point to objects that don\u2019t exist in the heap dump. identifierByteSize open override val identifierByteSize: Int instanceCount open override val instanceCount: Int instances open override val instances: Sequence&lt;HeapObject.HeapInstance&gt;Sequence of all instances in the heap dump. objectArrayCount open override val objectArrayCount: Int objectArrays open override val objectArrays: Sequence&lt;HeapObject.HeapObjectArray&gt;Sequence of all object arrays in the heap dump. objectCount open override val objectCount: Int objects open override val objects: Sequence&lt;HeapObject&gt;Sequence of all objects in the heap dump. primitiveArrayCount open override val primitiveArrayCount: Int primitiveArrays open override val primitiveArrays: Sequence&lt;HeapObject.HeapPrimitiveArray&gt;Sequence of all primitive arrays in the heap dump."},{"location":"api/shark/-hprof-heap-graph/class-count/","title":"Class count","text":"<p>//leakcanary/shark/HprofHeapGraph/classCount</p>"},{"location":"api/shark/-hprof-heap-graph/class-count/#classcount","title":"classCount","text":"<p>open override val classCount: Int</p>"},{"location":"api/shark/-hprof-heap-graph/classes/","title":"Classes","text":"<p>//leakcanary/shark/HprofHeapGraph/classes</p>"},{"location":"api/shark/-hprof-heap-graph/classes/#classes","title":"classes","text":"<p>open override val classes: Sequence&lt;HeapObject.HeapClass&gt;</p> <p>Sequence of all classes in the heap dump.</p> <p>This sequence does not trigger any IO reads.</p>"},{"location":"api/shark/-hprof-heap-graph/close/","title":"Close","text":"<p>//leakcanary/shark/HprofHeapGraph/close</p>"},{"location":"api/shark/-hprof-heap-graph/close/#close","title":"close","text":"<p>open override fun close()</p>"},{"location":"api/shark/-hprof-heap-graph/context/","title":"Context","text":"<p>//leakcanary/shark/HprofHeapGraph/context</p>"},{"location":"api/shark/-hprof-heap-graph/context/#context","title":"context","text":"<p>open override val context: GraphContext</p> <p>In memory store that can be used to store objects this HeapGraph instance.</p>"},{"location":"api/shark/-hprof-heap-graph/find-class-by-name/","title":"Find class by name","text":"<p>//leakcanary/shark/HprofHeapGraph/findClassByName</p>"},{"location":"api/shark/-hprof-heap-graph/find-class-by-name/#findclassbyname","title":"findClassByName","text":"<p>open override fun findClassByName(className: String): HeapObject.HeapClass?</p> <p>Returns the HeapClass corresponding to the provided className, or null if the class cannot be found.</p>"},{"location":"api/shark/-hprof-heap-graph/find-heap-dump-index/","title":"Find heap dump index","text":"<p>//leakcanary/shark/HprofHeapGraph/findHeapDumpIndex</p>"},{"location":"api/shark/-hprof-heap-graph/find-heap-dump-index/#findheapdumpindex","title":"findHeapDumpIndex","text":"<p>open override fun findHeapDumpIndex(objectId: Long): Int</p> <p>Returns the 1-based index in the heap dump of the object corresponding to the provided objectId, and throws IllegalArgumentException otherwise.</p> <p>This is the object index that YourKit provides in its Java profiler.</p>"},{"location":"api/shark/-hprof-heap-graph/find-object-by-heap-dump-index/","title":"Find object by heap dump index","text":"<p>//leakcanary/shark/HprofHeapGraph/findObjectByHeapDumpIndex</p>"},{"location":"api/shark/-hprof-heap-graph/find-object-by-heap-dump-index/#findobjectbyheapdumpindex","title":"findObjectByHeapDumpIndex","text":"<p>open override fun findObjectByHeapDumpIndex(heapDumpIndex: Int): HeapObject</p> <p>Returns the HeapObject corresponding to the provided heapDumpIndex, and throws IllegalArgumentException if heapDumpIndex is less than 1 or more than objectCount.</p> <p>This is the object index that YourKit provides in its Java profiler.</p>"},{"location":"api/shark/-hprof-heap-graph/find-object-by-id-or-null/","title":"Find object by id or null","text":"<p>//leakcanary/shark/HprofHeapGraph/findObjectByIdOrNull</p>"},{"location":"api/shark/-hprof-heap-graph/find-object-by-id-or-null/#findobjectbyidornull","title":"findObjectByIdOrNull","text":"<p>open override fun findObjectByIdOrNull(objectId: Long): HeapObject?</p> <p>Returns the HeapObject corresponding to the provided objectId or null if it cannot be found.</p>"},{"location":"api/shark/-hprof-heap-graph/find-object-by-id/","title":"Find object by id","text":"<p>//leakcanary/shark/HprofHeapGraph/findObjectById</p>"},{"location":"api/shark/-hprof-heap-graph/find-object-by-id/#findobjectbyid","title":"findObjectById","text":"<p>open override fun findObjectById(objectId: Long): HeapObject</p> <p>Returns the HeapObject corresponding to the provided objectId, and throws IllegalArgumentException otherwise.</p>"},{"location":"api/shark/-hprof-heap-graph/find-object-by-index/","title":"Find object by index","text":"<p>//leakcanary/shark/HprofHeapGraph/findObjectByIndex</p>"},{"location":"api/shark/-hprof-heap-graph/find-object-by-index/#findobjectbyindex","title":"findObjectByIndex","text":"<p>open override fun findObjectByIndex(objectIndex: Int): HeapObject</p> <p>Returns the HeapObject corresponding to the provided objectIndex, and throws IllegalArgumentException if objectIndex is less than 0 or more than objectCount - 1.</p>"},{"location":"api/shark/-hprof-heap-graph/gc-roots/","title":"Gc roots","text":"<p>//leakcanary/shark/HprofHeapGraph/gcRoots</p>"},{"location":"api/shark/-hprof-heap-graph/gc-roots/#gcroots","title":"gcRoots","text":"<p>open override val gcRoots: List&lt;GcRoot&gt;</p> <p>All GC roots which type matches types known to this heap graph and which point to non null references. You can retrieve the object that a GC Root points to by calling findObjectById with GcRoot.id, however you need to first check that objectExists returns true because GC roots can point to objects that don\u2019t exist in the heap dump.</p>"},{"location":"api/shark/-hprof-heap-graph/identifier-byte-size/","title":"Identifier byte size","text":"<p>//leakcanary/shark/HprofHeapGraph/identifierByteSize</p>"},{"location":"api/shark/-hprof-heap-graph/identifier-byte-size/#identifierbytesize","title":"identifierByteSize","text":"<p>open override val identifierByteSize: Int</p>"},{"location":"api/shark/-hprof-heap-graph/instance-count/","title":"Instance count","text":"<p>//leakcanary/shark/HprofHeapGraph/instanceCount</p>"},{"location":"api/shark/-hprof-heap-graph/instance-count/#instancecount","title":"instanceCount","text":"<p>open override val instanceCount: Int</p>"},{"location":"api/shark/-hprof-heap-graph/instances/","title":"Instances","text":"<p>//leakcanary/shark/HprofHeapGraph/instances</p>"},{"location":"api/shark/-hprof-heap-graph/instances/#instances","title":"instances","text":"<p>open override val instances: Sequence&lt;HeapObject.HeapInstance&gt;</p> <p>Sequence of all instances in the heap dump.</p> <p>This sequence does not trigger any IO reads.</p>"},{"location":"api/shark/-hprof-heap-graph/lru-cache-stats/","title":"Lru cache stats","text":"<p>//leakcanary/shark/HprofHeapGraph/lruCacheStats</p>"},{"location":"api/shark/-hprof-heap-graph/lru-cache-stats/#lrucachestats","title":"lruCacheStats","text":"<p>fun lruCacheStats(): String</p> <p>This is only public so that we can publish stats. Accessing this requires casting HeapGraph to HprofHeapGraph so it\u2019s really not a public API. May change at any time!</p>"},{"location":"api/shark/-hprof-heap-graph/object-array-count/","title":"Object array count","text":"<p>//leakcanary/shark/HprofHeapGraph/objectArrayCount</p>"},{"location":"api/shark/-hprof-heap-graph/object-array-count/#objectarraycount","title":"objectArrayCount","text":"<p>open override val objectArrayCount: Int</p>"},{"location":"api/shark/-hprof-heap-graph/object-arrays/","title":"Object arrays","text":"<p>//leakcanary/shark/HprofHeapGraph/objectArrays</p>"},{"location":"api/shark/-hprof-heap-graph/object-arrays/#objectarrays","title":"objectArrays","text":"<p>open override val objectArrays: Sequence&lt;HeapObject.HeapObjectArray&gt;</p> <p>Sequence of all object arrays in the heap dump.</p> <p>This sequence does not trigger any IO reads.</p>"},{"location":"api/shark/-hprof-heap-graph/object-count/","title":"Object count","text":"<p>//leakcanary/shark/HprofHeapGraph/objectCount</p>"},{"location":"api/shark/-hprof-heap-graph/object-count/#objectcount","title":"objectCount","text":"<p>open override val objectCount: Int</p>"},{"location":"api/shark/-hprof-heap-graph/object-exists/","title":"Object exists","text":"<p>//leakcanary/shark/HprofHeapGraph/objectExists</p>"},{"location":"api/shark/-hprof-heap-graph/object-exists/#objectexists","title":"objectExists","text":"<p>open override fun objectExists(objectId: Long): Boolean</p> <p>Returns true if the provided objectId exists in the heap dump.</p>"},{"location":"api/shark/-hprof-heap-graph/objects/","title":"Objects","text":"<p>//leakcanary/shark/HprofHeapGraph/objects</p>"},{"location":"api/shark/-hprof-heap-graph/objects/#objects","title":"objects","text":"<p>open override val objects: Sequence&lt;HeapObject&gt;</p> <p>Sequence of all objects in the heap dump.</p> <p>This sequence does not trigger any IO reads.</p>"},{"location":"api/shark/-hprof-heap-graph/primitive-array-count/","title":"Primitive array count","text":"<p>//leakcanary/shark/HprofHeapGraph/primitiveArrayCount</p>"},{"location":"api/shark/-hprof-heap-graph/primitive-array-count/#primitivearraycount","title":"primitiveArrayCount","text":"<p>open override val primitiveArrayCount: Int</p>"},{"location":"api/shark/-hprof-heap-graph/primitive-arrays/","title":"Primitive arrays","text":"<p>//leakcanary/shark/HprofHeapGraph/primitiveArrays</p>"},{"location":"api/shark/-hprof-heap-graph/primitive-arrays/#primitivearrays","title":"primitiveArrays","text":"<p>open override val primitiveArrays: Sequence&lt;HeapObject.HeapPrimitiveArray&gt;</p> <p>Sequence of all primitive arrays in the heap dump.</p> <p>This sequence does not trigger any IO reads.</p>"},{"location":"api/shark/-hprof-heap-graph/-companion/","title":"Index","text":"<p>//leakcanary/shark/HprofHeapGraph/Companion</p>"},{"location":"api/shark/-hprof-heap-graph/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-hprof-heap-graph/-companion/#functions","title":"Functions","text":"Name Summary openHeapGraph fun File.openHeapGraph(proguardMapping: ProguardMapping? = null, indexedGcRootTypes: Set&lt;HprofRecordTag&gt; = HprofIndex.defaultIndexedGcRootTags()): CloseableHeapGraphA facility for opening a CloseableHeapGraph from a File. This first parses the file headers with HprofHeader.parseHeaderOf, then indexes the file content with HprofIndex.indexRecordsOf and then opens a CloseableHeapGraph from the index, which you are responsible for closing after using.fun DualSourceProvider.openHeapGraph(proguardMapping: ProguardMapping? = null, indexedGcRootTypes: Set&lt;HprofRecordTag&gt; = HprofIndex.defaultIndexedGcRootTags()): CloseableHeapGraph"},{"location":"api/shark/-hprof-heap-graph/-companion/#properties","title":"Properties","text":"Name Summary INTERNAL_LRU_CACHE_SIZE var INTERNAL_LRU_CACHE_SIZE: Int = 3000This is not a public API, it\u2019s only public so that we can evaluate the effectiveness of different cache size in tests in a different module."},{"location":"api/shark/-hprof-heap-graph/-companion/-i-n-t-e-r-n-a-l_-l-r-u_-c-a-c-h-e_-s-i-z-e/","title":"i n t e r n a l  l r u  c a c h e  s i z e","text":"<p>//leakcanary/shark/HprofHeapGraph/Companion/INTERNAL_LRU_CACHE_SIZE</p>"},{"location":"api/shark/-hprof-heap-graph/-companion/-i-n-t-e-r-n-a-l_-l-r-u_-c-a-c-h-e_-s-i-z-e/#internal_lru_cache_size","title":"INTERNAL_LRU_CACHE_SIZE","text":"<p>var INTERNAL_LRU_CACHE_SIZE: Int = 3000</p> <p>This is not a public API, it\u2019s only public so that we can evaluate the effectiveness of different cache size in tests in a different module.</p> <p>LRU cache size of 3000 is a sweet spot to balance hits vs memory usage. This is based on running InstrumentationLeakDetectorTest a bunch of time on a Pixel 2 XL API 28. Hit count was ~120K, miss count ~290K</p>"},{"location":"api/shark/-hprof-heap-graph/-companion/open-heap-graph/","title":"Open heap graph","text":"<p>//leakcanary/shark/HprofHeapGraph/Companion/openHeapGraph</p>"},{"location":"api/shark/-hprof-heap-graph/-companion/open-heap-graph/#openheapgraph","title":"openHeapGraph","text":"<p>fun File.openHeapGraph(proguardMapping: ProguardMapping? = null, indexedGcRootTypes: Set&lt;HprofRecordTag&gt; = HprofIndex.defaultIndexedGcRootTags()): CloseableHeapGraph</p> <p>A facility for opening a CloseableHeapGraph from a File. This first parses the file headers with HprofHeader.parseHeaderOf, then indexes the file content with HprofIndex.indexRecordsOf and then opens a CloseableHeapGraph from the index, which you are responsible for closing after using.</p> <p>fun DualSourceProvider.openHeapGraph(proguardMapping: ProguardMapping? = null, indexedGcRootTypes: Set&lt;HprofRecordTag&gt; = HprofIndex.defaultIndexedGcRootTags()): CloseableHeapGraph</p>"},{"location":"api/shark/-hprof-index/","title":"Index","text":"<p>//leakcanary/shark/HprofIndex</p>"},{"location":"api/shark/-hprof-index/#hprofindex","title":"HprofIndex","text":"<p>class HprofIndex</p> <p>An index on a Hprof file. See openHeapGraph.</p>"},{"location":"api/shark/-hprof-index/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-hprof-index/#functions","title":"Functions","text":"Name Summary openHeapGraph fun openHeapGraph(): CloseableHeapGraphOpens a CloseableHeapGraph which you can use to navigate the indexed hprof and then close."},{"location":"api/shark/-hprof-index/open-heap-graph/","title":"Open heap graph","text":"<p>//leakcanary/shark/HprofIndex/openHeapGraph</p>"},{"location":"api/shark/-hprof-index/open-heap-graph/#openheapgraph","title":"openHeapGraph","text":"<p>fun openHeapGraph(): CloseableHeapGraph</p> <p>Opens a CloseableHeapGraph which you can use to navigate the indexed hprof and then close.</p>"},{"location":"api/shark/-hprof-index/-companion/","title":"Index","text":"<p>//leakcanary/shark/HprofIndex/Companion</p>"},{"location":"api/shark/-hprof-index/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-hprof-index/-companion/#functions","title":"Functions","text":"Name Summary defaultIndexedGcRootTags fun defaultIndexedGcRootTags(): EnumSet&lt;HprofRecordTag&gt; indexRecordsOf fun indexRecordsOf(hprofSourceProvider: DualSourceProvider, hprofHeader: HprofHeader, proguardMapping: ProguardMapping? = null, indexedGcRootTags: Set&lt;HprofRecordTag&gt; = defaultIndexedGcRootTags()): HprofIndexCreates an in memory index of an hprof source provided by hprofSourceProvider."},{"location":"api/shark/-hprof-index/-companion/default-indexed-gc-root-tags/","title":"Default indexed gc root tags","text":"<p>//leakcanary/shark/HprofIndex/Companion/defaultIndexedGcRootTags</p>"},{"location":"api/shark/-hprof-index/-companion/default-indexed-gc-root-tags/#defaultindexedgcroottags","title":"defaultIndexedGcRootTags","text":"<p>fun defaultIndexedGcRootTags(): EnumSet&lt;HprofRecordTag&gt;</p>"},{"location":"api/shark/-hprof-index/-companion/index-records-of/","title":"Index records of","text":"<p>//leakcanary/shark/HprofIndex/Companion/indexRecordsOf</p>"},{"location":"api/shark/-hprof-index/-companion/index-records-of/#indexrecordsof","title":"indexRecordsOf","text":"<p>fun indexRecordsOf(hprofSourceProvider: DualSourceProvider, hprofHeader: HprofHeader, proguardMapping: ProguardMapping? = null, indexedGcRootTags: Set&lt;HprofRecordTag&gt; = defaultIndexedGcRootTags()): HprofIndex</p> <p>Creates an in memory index of an hprof source provided by hprofSourceProvider.</p>"},{"location":"api/shark/-hprof-primitive-array-stripper/","title":"Index","text":"<p>//leakcanary/shark/HprofPrimitiveArrayStripper</p>"},{"location":"api/shark/-hprof-primitive-array-stripper/#hprofprimitivearraystripper","title":"HprofPrimitiveArrayStripper","text":"<p>class HprofPrimitiveArrayStripper</p> <p>Converts a Hprof file to another file with all primitive arrays replaced with arrays of zeroes, which can be useful to remove PII. Char arrays are handled slightly differently because 0 would be the null character so instead these become arrays of \u2018?\u2019.</p>"},{"location":"api/shark/-hprof-primitive-array-stripper/#constructors","title":"Constructors","text":"HprofPrimitiveArrayStripper fun HprofPrimitiveArrayStripper()"},{"location":"api/shark/-hprof-primitive-array-stripper/#functions","title":"Functions","text":"Name Summary stripPrimitiveArrays fun stripPrimitiveArrays(inputHprofFile: File, outputHprofFile: File = File(       inputHprofFile.parent, inputHprofFile.name.replace(       \".hprof\", \"-stripped.hprof\"     ).let { if (it != inputHprofFile.name) it else inputHprofFile.name + \"-stripped\" })): Filefun stripPrimitiveArrays(hprofSourceProvider: StreamingSourceProvider, hprofSink: BufferedSink)"},{"location":"api/shark/-hprof-primitive-array-stripper/-hprof-primitive-array-stripper/","title":"hprof primitive array stripper","text":"<p>//leakcanary/shark/HprofPrimitiveArrayStripper/HprofPrimitiveArrayStripper</p>"},{"location":"api/shark/-hprof-primitive-array-stripper/-hprof-primitive-array-stripper/#hprofprimitivearraystripper","title":"HprofPrimitiveArrayStripper","text":"<p>fun HprofPrimitiveArrayStripper()</p>"},{"location":"api/shark/-hprof-primitive-array-stripper/strip-primitive-arrays/","title":"Strip primitive arrays","text":"<p>//leakcanary/shark/HprofPrimitiveArrayStripper/stripPrimitiveArrays</p>"},{"location":"api/shark/-hprof-primitive-array-stripper/strip-primitive-arrays/#stripprimitivearrays","title":"stripPrimitiveArrays","text":"<p>fun stripPrimitiveArrays(inputHprofFile: File, outputHprofFile: File = File(       inputHprofFile.parent, inputHprofFile.name.replace(       \".hprof\", \"-stripped.hprof\"     ).let { if (it != inputHprofFile.name) it else inputHprofFile.name + \"-stripped\" })): File</p> <p>fun stripPrimitiveArrays(hprofSourceProvider: StreamingSourceProvider, hprofSink: BufferedSink)</p>"},{"location":"api/shark/-hprof-primitive-array-stripper/strip-primitive-arrays/#see-also","title":"See also","text":"<p>main</p> shark.HprofPrimitiveArrayStripper"},{"location":"api/shark/-hprof-record/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord</p>"},{"location":"api/shark/-hprof-record/#hprofrecord","title":"HprofRecord","text":"<p>sealed class HprofRecord</p> <p>A Hprof record. These data structure map 1:1 with how records are written in hprof files.</p>"},{"location":"api/shark/-hprof-record/#types","title":"Types","text":"Name Summary HeapDumpEndRecord object HeapDumpEndRecord : HprofRecordTerminates a series of heap dump segments. Concatenation of heap dump segments equals a heap dump. HeapDumpRecord sealed class HeapDumpRecord : HprofRecord LoadClassRecord class LoadClassRecord(val classSerialNumber: Int, val id: Long, val stackTraceSerialNumber: Int, val classNameStringId: Long) : HprofRecord StackFrameRecord class StackFrameRecord(val id: Long, val methodNameStringId: Long, val methodSignatureStringId: Long, val sourceFileNameStringId: Long, val classSerialNumber: Int, val lineNumber: Int) : HprofRecord StackTraceRecord class StackTraceRecord(val stackTraceSerialNumber: Int, val threadSerialNumber: Int, val stackFrameIds: LongArray) : HprofRecord StringRecord class StringRecord(val id: Long, val string: String) : HprofRecord"},{"location":"api/shark/-hprof-record/#inheritors","title":"Inheritors","text":"Name StringRecord LoadClassRecord HeapDumpEndRecord StackFrameRecord StackTraceRecord HeapDumpRecord"},{"location":"api/shark/-hprof-record/-heap-dump-end-record/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpEndRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-end-record/#heapdumpendrecord","title":"HeapDumpEndRecord","text":"<p>object HeapDumpEndRecord : HprofRecord</p> <p>Terminates a series of heap dump segments. Concatenation of heap dump segments equals a heap dump.</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/#heapdumprecord","title":"HeapDumpRecord","text":"<p>sealed class HeapDumpRecord : HprofRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/#types","title":"Types","text":"Name Summary GcRootRecord class GcRootRecord(val gcRoot: GcRoot) : HprofRecord.HeapDumpRecord HeapDumpInfoRecord class HeapDumpInfoRecord(val heapId: Int, val heapNameStringId: Long) : HprofRecord.HeapDumpRecord ObjectRecord sealed class ObjectRecord : HprofRecord.HeapDumpRecord"},{"location":"api/shark/-hprof-record/-heap-dump-record/#inheritors","title":"Inheritors","text":"Name GcRootRecord ObjectRecord HeapDumpInfoRecord"},{"location":"api/shark/-hprof-record/-heap-dump-record/-gc-root-record/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/GcRootRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-gc-root-record/#gcrootrecord","title":"GcRootRecord","text":"<p>class GcRootRecord(val gcRoot: GcRoot) : HprofRecord.HeapDumpRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-gc-root-record/#constructors","title":"Constructors","text":"GcRootRecord fun GcRootRecord(gcRoot: GcRoot)"},{"location":"api/shark/-hprof-record/-heap-dump-record/-gc-root-record/#properties","title":"Properties","text":"Name Summary gcRoot val gcRoot: GcRoot"},{"location":"api/shark/-hprof-record/-heap-dump-record/-gc-root-record/-gc-root-record/","title":"gc root record","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/GcRootRecord/GcRootRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-gc-root-record/-gc-root-record/#gcrootrecord","title":"GcRootRecord","text":"<p>fun GcRootRecord(gcRoot: GcRoot)</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-gc-root-record/gc-root/","title":"Gc root","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/GcRootRecord/gcRoot</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-gc-root-record/gc-root/#gcroot","title":"gcRoot","text":"<p>val gcRoot: GcRoot</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-heap-dump-info-record/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/HeapDumpInfoRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-heap-dump-info-record/#heapdumpinforecord","title":"HeapDumpInfoRecord","text":"<p>class HeapDumpInfoRecord(val heapId: Int, val heapNameStringId: Long) : HprofRecord.HeapDumpRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-heap-dump-info-record/#constructors","title":"Constructors","text":"HeapDumpInfoRecord fun HeapDumpInfoRecord(heapId: Int, heapNameStringId: Long)"},{"location":"api/shark/-hprof-record/-heap-dump-record/-heap-dump-info-record/#properties","title":"Properties","text":"Name Summary heapId val heapId: Int heapNameStringId val heapNameStringId: Long"},{"location":"api/shark/-hprof-record/-heap-dump-record/-heap-dump-info-record/-heap-dump-info-record/","title":"heap dump info record","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/HeapDumpInfoRecord/HeapDumpInfoRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-heap-dump-info-record/-heap-dump-info-record/#heapdumpinforecord","title":"HeapDumpInfoRecord","text":"<p>fun HeapDumpInfoRecord(heapId: Int, heapNameStringId: Long)</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-heap-dump-info-record/heap-id/","title":"Heap id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/HeapDumpInfoRecord/heapId</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-heap-dump-info-record/heap-id/#heapid","title":"heapId","text":"<p>val heapId: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-heap-dump-info-record/heap-name-string-id/","title":"Heap name string id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/HeapDumpInfoRecord/heapNameStringId</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-heap-dump-info-record/heap-name-string-id/#heapnamestringid","title":"heapNameStringId","text":"<p>val heapNameStringId: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/#objectrecord","title":"ObjectRecord","text":"<p>sealed class ObjectRecord : HprofRecord.HeapDumpRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/#types","title":"Types","text":"Name Summary ClassDumpRecord class ClassDumpRecord(val id: Long, val stackTraceSerialNumber: Int, val superclassId: Long, val classLoaderId: Long, val signersId: Long, val protectionDomainId: Long, val instanceSize: Int, val staticFields: List&lt;HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecord.StaticFieldRecord&gt;, val fields: List&lt;HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecord.FieldRecord&gt;) : HprofRecord.HeapDumpRecord.ObjectRecord InstanceDumpRecord class InstanceDumpRecord(val id: Long, val stackTraceSerialNumber: Int, val classId: Long, val fieldValues: ByteArray) : HprofRecord.HeapDumpRecord.ObjectRecord ObjectArrayDumpRecord class ObjectArrayDumpRecord(val id: Long, val stackTraceSerialNumber: Int, val arrayClassId: Long, val elementIds: LongArray) : HprofRecord.HeapDumpRecord.ObjectRecord PrimitiveArrayDumpRecord sealed class PrimitiveArrayDumpRecord : HprofRecord.HeapDumpRecord.ObjectRecord"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/#inheritors","title":"Inheritors","text":"Name ClassDumpRecord InstanceDumpRecord ObjectArrayDumpRecord PrimitiveArrayDumpRecord"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ClassDumpRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/#classdumprecord","title":"ClassDumpRecord","text":"<p>class ClassDumpRecord(val id: Long, val stackTraceSerialNumber: Int, val superclassId: Long, val classLoaderId: Long, val signersId: Long, val protectionDomainId: Long, val instanceSize: Int, val staticFields: List&lt;HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecord.StaticFieldRecord&gt;, val fields: List&lt;HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecord.FieldRecord&gt;) : HprofRecord.HeapDumpRecord.ObjectRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/#constructors","title":"Constructors","text":"ClassDumpRecord fun ClassDumpRecord(id: Long, stackTraceSerialNumber: Int, superclassId: Long, classLoaderId: Long, signersId: Long, protectionDomainId: Long, instanceSize: Int, staticFields: List&lt;HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecord.StaticFieldRecord&gt;, fields: List&lt;HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecord.FieldRecord&gt;)"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/#types","title":"Types","text":"Name Summary FieldRecord data class FieldRecord(val nameStringId: Long, val type: Int) StaticFieldRecord data class StaticFieldRecord(val nameStringId: Long, val type: Int, val value: ValueHolder)"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/#properties","title":"Properties","text":"Name Summary classLoaderId val classLoaderId: Long fields val fields: List&lt;HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecord.FieldRecord&gt; id val id: Long instanceSize val instanceSize: Int protectionDomainId val protectionDomainId: Long signersId val signersId: Long stackTraceSerialNumber val stackTraceSerialNumber: Int staticFields val staticFields: List&lt;HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecord.StaticFieldRecord&gt; superclassId val superclassId: Long"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-class-dump-record/","title":"class dump record","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ClassDumpRecord/ClassDumpRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-class-dump-record/#classdumprecord","title":"ClassDumpRecord","text":"<p>fun ClassDumpRecord(id: Long, stackTraceSerialNumber: Int, superclassId: Long, classLoaderId: Long, signersId: Long, protectionDomainId: Long, instanceSize: Int, staticFields: List&lt;HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecord.StaticFieldRecord&gt;, fields: List&lt;HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecord.FieldRecord&gt;)</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/class-loader-id/","title":"Class loader id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ClassDumpRecord/classLoaderId</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/class-loader-id/#classloaderid","title":"classLoaderId","text":"<p>val classLoaderId: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/fields/","title":"Fields","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ClassDumpRecord/fields</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/fields/#fields","title":"fields","text":"<p>val fields: List&lt;HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecord.FieldRecord&gt;</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/id/","title":"Id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ClassDumpRecord/id</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/id/#id","title":"id","text":"<p>val id: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/instance-size/","title":"Instance size","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ClassDumpRecord/instanceSize</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/instance-size/#instancesize","title":"instanceSize","text":"<p>val instanceSize: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/protection-domain-id/","title":"Protection domain id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ClassDumpRecord/protectionDomainId</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/protection-domain-id/#protectiondomainid","title":"protectionDomainId","text":"<p>val protectionDomainId: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/signers-id/","title":"Signers id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ClassDumpRecord/signersId</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/signers-id/#signersid","title":"signersId","text":"<p>val signersId: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/stack-trace-serial-number/","title":"Stack trace serial number","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ClassDumpRecord/stackTraceSerialNumber</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/stack-trace-serial-number/#stacktraceserialnumber","title":"stackTraceSerialNumber","text":"<p>val stackTraceSerialNumber: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/static-fields/","title":"Static fields","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ClassDumpRecord/staticFields</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/static-fields/#staticfields","title":"staticFields","text":"<p>val staticFields: List&lt;HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecord.StaticFieldRecord&gt;</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/superclass-id/","title":"Superclass id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ClassDumpRecord/superclassId</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/superclass-id/#superclassid","title":"superclassId","text":"<p>val superclassId: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-field-record/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ClassDumpRecord/FieldRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-field-record/#fieldrecord","title":"FieldRecord","text":"<p>data class FieldRecord(val nameStringId: Long, val type: Int)</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-field-record/#constructors","title":"Constructors","text":"FieldRecord fun FieldRecord(nameStringId: Long, type: Int)"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-field-record/#properties","title":"Properties","text":"Name Summary nameStringId val nameStringId: Long type val type: Int"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-field-record/-field-record/","title":"field record","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ClassDumpRecord/FieldRecord/FieldRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-field-record/-field-record/#fieldrecord","title":"FieldRecord","text":"<p>fun FieldRecord(nameStringId: Long, type: Int)</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-field-record/name-string-id/","title":"Name string id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ClassDumpRecord/FieldRecord/nameStringId</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-field-record/name-string-id/#namestringid","title":"nameStringId","text":"<p>val nameStringId: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-field-record/type/","title":"Type","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ClassDumpRecord/FieldRecord/type</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-field-record/type/#type","title":"type","text":"<p>val type: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ClassDumpRecord/StaticFieldRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/#staticfieldrecord","title":"StaticFieldRecord","text":"<p>data class StaticFieldRecord(val nameStringId: Long, val type: Int, val value: ValueHolder)</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/#constructors","title":"Constructors","text":"StaticFieldRecord fun StaticFieldRecord(nameStringId: Long, type: Int, value: ValueHolder)"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/#properties","title":"Properties","text":"Name Summary nameStringId val nameStringId: Long type val type: Int value val value: ValueHolder"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/-static-field-record/","title":"static field record","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ClassDumpRecord/StaticFieldRecord/StaticFieldRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/-static-field-record/#staticfieldrecord","title":"StaticFieldRecord","text":"<p>fun StaticFieldRecord(nameStringId: Long, type: Int, value: ValueHolder)</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/name-string-id/","title":"Name string id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ClassDumpRecord/StaticFieldRecord/nameStringId</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/name-string-id/#namestringid","title":"nameStringId","text":"<p>val nameStringId: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/type/","title":"Type","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ClassDumpRecord/StaticFieldRecord/type</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/type/#type","title":"type","text":"<p>val type: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/value/","title":"Value","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ClassDumpRecord/StaticFieldRecord/value</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/value/#value","title":"value","text":"<p>val value: ValueHolder</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/InstanceDumpRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/#instancedumprecord","title":"InstanceDumpRecord","text":"<p>class InstanceDumpRecord(val id: Long, val stackTraceSerialNumber: Int, val classId: Long, val fieldValues: ByteArray) : HprofRecord.HeapDumpRecord.ObjectRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/#constructors","title":"Constructors","text":"InstanceDumpRecord fun InstanceDumpRecord(id: Long, stackTraceSerialNumber: Int, classId: Long, fieldValues: ByteArray)"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/#properties","title":"Properties","text":"Name Summary classId val classId: Long fieldValues val fieldValues: ByteArrayInstance field values (this class, followed by super class, etc) id val id: Long stackTraceSerialNumber val stackTraceSerialNumber: Int"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/-instance-dump-record/","title":"instance dump record","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/InstanceDumpRecord/InstanceDumpRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/-instance-dump-record/#instancedumprecord","title":"InstanceDumpRecord","text":"<p>fun InstanceDumpRecord(id: Long, stackTraceSerialNumber: Int, classId: Long, fieldValues: ByteArray)</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/class-id/","title":"Class id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/InstanceDumpRecord/classId</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/class-id/#classid","title":"classId","text":"<p>val classId: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/field-values/","title":"Field values","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/InstanceDumpRecord/fieldValues</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/field-values/#fieldvalues","title":"fieldValues","text":"<p>val fieldValues: ByteArray</p> <p>Instance field values (this class, followed by super class, etc)</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/id/","title":"Id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/InstanceDumpRecord/id</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/id/#id","title":"id","text":"<p>val id: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/stack-trace-serial-number/","title":"Stack trace serial number","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/InstanceDumpRecord/stackTraceSerialNumber</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/stack-trace-serial-number/#stacktraceserialnumber","title":"stackTraceSerialNumber","text":"<p>val stackTraceSerialNumber: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ObjectArrayDumpRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/#objectarraydumprecord","title":"ObjectArrayDumpRecord","text":"<p>class ObjectArrayDumpRecord(val id: Long, val stackTraceSerialNumber: Int, val arrayClassId: Long, val elementIds: LongArray) : HprofRecord.HeapDumpRecord.ObjectRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/#constructors","title":"Constructors","text":"ObjectArrayDumpRecord fun ObjectArrayDumpRecord(id: Long, stackTraceSerialNumber: Int, arrayClassId: Long, elementIds: LongArray)"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/#properties","title":"Properties","text":"Name Summary arrayClassId val arrayClassId: Long elementIds val elementIds: LongArray id val id: Long stackTraceSerialNumber val stackTraceSerialNumber: Int"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/-object-array-dump-record/","title":"object array dump record","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ObjectArrayDumpRecord/ObjectArrayDumpRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/-object-array-dump-record/#objectarraydumprecord","title":"ObjectArrayDumpRecord","text":"<p>fun ObjectArrayDumpRecord(id: Long, stackTraceSerialNumber: Int, arrayClassId: Long, elementIds: LongArray)</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/array-class-id/","title":"Array class id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ObjectArrayDumpRecord/arrayClassId</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/array-class-id/#arrayclassid","title":"arrayClassId","text":"<p>val arrayClassId: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/element-ids/","title":"Element ids","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ObjectArrayDumpRecord/elementIds</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/element-ids/#elementids","title":"elementIds","text":"<p>val elementIds: LongArray</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/id/","title":"Id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ObjectArrayDumpRecord/id</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/id/#id","title":"id","text":"<p>val id: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/stack-trace-serial-number/","title":"Stack trace serial number","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ObjectArrayDumpRecord/stackTraceSerialNumber</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/stack-trace-serial-number/#stacktraceserialnumber","title":"stackTraceSerialNumber","text":"<p>val stackTraceSerialNumber: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/#primitivearraydumprecord","title":"PrimitiveArrayDumpRecord","text":"<p>sealed class PrimitiveArrayDumpRecord : HprofRecord.HeapDumpRecord.ObjectRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/#types","title":"Types","text":"Name Summary BooleanArrayDump class BooleanArrayDump(val id: Long, val stackTraceSerialNumber: Int, val array: BooleanArray) : HprofRecord.HeapDumpRecord.ObjectRecord.PrimitiveArrayDumpRecord ByteArrayDump class ByteArrayDump(val id: Long, val stackTraceSerialNumber: Int, val array: ByteArray) : HprofRecord.HeapDumpRecord.ObjectRecord.PrimitiveArrayDumpRecord CharArrayDump class CharArrayDump(val id: Long, val stackTraceSerialNumber: Int, val array: CharArray) : HprofRecord.HeapDumpRecord.ObjectRecord.PrimitiveArrayDumpRecord DoubleArrayDump class DoubleArrayDump(val id: Long, val stackTraceSerialNumber: Int, val array: DoubleArray) : HprofRecord.HeapDumpRecord.ObjectRecord.PrimitiveArrayDumpRecord FloatArrayDump class FloatArrayDump(val id: Long, val stackTraceSerialNumber: Int, val array: FloatArray) : HprofRecord.HeapDumpRecord.ObjectRecord.PrimitiveArrayDumpRecord IntArrayDump class IntArrayDump(val id: Long, val stackTraceSerialNumber: Int, val array: IntArray) : HprofRecord.HeapDumpRecord.ObjectRecord.PrimitiveArrayDumpRecord LongArrayDump class LongArrayDump(val id: Long, val stackTraceSerialNumber: Int, val array: LongArray) : HprofRecord.HeapDumpRecord.ObjectRecord.PrimitiveArrayDumpRecord ShortArrayDump class ShortArrayDump(val id: Long, val stackTraceSerialNumber: Int, val array: ShortArray) : HprofRecord.HeapDumpRecord.ObjectRecord.PrimitiveArrayDumpRecord"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/#properties","title":"Properties","text":"Name Summary id abstract val id: Long size abstract val size: Int stackTraceSerialNumber abstract val stackTraceSerialNumber: Int"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/#inheritors","title":"Inheritors","text":"Name BooleanArrayDump CharArrayDump FloatArrayDump DoubleArrayDump ByteArrayDump ShortArrayDump IntArrayDump LongArrayDump"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/id/","title":"Id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/id</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/id/#id","title":"id","text":"<p>abstract val id: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/size/","title":"Size","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/size</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/size/#size","title":"size","text":"<p>abstract val size: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/stack-trace-serial-number/","title":"Stack trace serial number","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/stackTraceSerialNumber</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/stack-trace-serial-number/#stacktraceserialnumber","title":"stackTraceSerialNumber","text":"<p>abstract val stackTraceSerialNumber: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/BooleanArrayDump</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/#booleanarraydump","title":"BooleanArrayDump","text":"<p>class BooleanArrayDump(val id: Long, val stackTraceSerialNumber: Int, val array: BooleanArray) : HprofRecord.HeapDumpRecord.ObjectRecord.PrimitiveArrayDumpRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/#constructors","title":"Constructors","text":"BooleanArrayDump fun BooleanArrayDump(id: Long, stackTraceSerialNumber: Int, array: BooleanArray)"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/#properties","title":"Properties","text":"Name Summary array val array: BooleanArray id open override val id: Long size open override val size: Int stackTraceSerialNumber open override val stackTraceSerialNumber: Int"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/-boolean-array-dump/","title":"boolean array dump","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/BooleanArrayDump/BooleanArrayDump</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/-boolean-array-dump/#booleanarraydump","title":"BooleanArrayDump","text":"<p>fun BooleanArrayDump(id: Long, stackTraceSerialNumber: Int, array: BooleanArray)</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/array/","title":"Array","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/BooleanArrayDump/array</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/array/#array","title":"array","text":"<p>val array: BooleanArray</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/id/","title":"Id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/BooleanArrayDump/id</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/id/#id","title":"id","text":"<p>open override val id: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/size/","title":"Size","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/BooleanArrayDump/size</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/size/#size","title":"size","text":"<p>open override val size: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/stack-trace-serial-number/","title":"Stack trace serial number","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/BooleanArrayDump/stackTraceSerialNumber</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/stack-trace-serial-number/#stacktraceserialnumber","title":"stackTraceSerialNumber","text":"<p>open override val stackTraceSerialNumber: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/ByteArrayDump</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/#bytearraydump","title":"ByteArrayDump","text":"<p>class ByteArrayDump(val id: Long, val stackTraceSerialNumber: Int, val array: ByteArray) : HprofRecord.HeapDumpRecord.ObjectRecord.PrimitiveArrayDumpRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/#constructors","title":"Constructors","text":"ByteArrayDump fun ByteArrayDump(id: Long, stackTraceSerialNumber: Int, array: ByteArray)"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/#properties","title":"Properties","text":"Name Summary array val array: ByteArray id open override val id: Long size open override val size: Int stackTraceSerialNumber open override val stackTraceSerialNumber: Int"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/-byte-array-dump/","title":"byte array dump","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/ByteArrayDump/ByteArrayDump</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/-byte-array-dump/#bytearraydump","title":"ByteArrayDump","text":"<p>fun ByteArrayDump(id: Long, stackTraceSerialNumber: Int, array: ByteArray)</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/array/","title":"Array","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/ByteArrayDump/array</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/array/#array","title":"array","text":"<p>val array: ByteArray</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/id/","title":"Id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/ByteArrayDump/id</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/id/#id","title":"id","text":"<p>open override val id: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/size/","title":"Size","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/ByteArrayDump/size</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/size/#size","title":"size","text":"<p>open override val size: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/stack-trace-serial-number/","title":"Stack trace serial number","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/ByteArrayDump/stackTraceSerialNumber</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/stack-trace-serial-number/#stacktraceserialnumber","title":"stackTraceSerialNumber","text":"<p>open override val stackTraceSerialNumber: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/CharArrayDump</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/#chararraydump","title":"CharArrayDump","text":"<p>class CharArrayDump(val id: Long, val stackTraceSerialNumber: Int, val array: CharArray) : HprofRecord.HeapDumpRecord.ObjectRecord.PrimitiveArrayDumpRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/#constructors","title":"Constructors","text":"CharArrayDump fun CharArrayDump(id: Long, stackTraceSerialNumber: Int, array: CharArray)"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/#properties","title":"Properties","text":"Name Summary array val array: CharArray id open override val id: Long size open override val size: Int stackTraceSerialNumber open override val stackTraceSerialNumber: Int"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/-char-array-dump/","title":"char array dump","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/CharArrayDump/CharArrayDump</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/-char-array-dump/#chararraydump","title":"CharArrayDump","text":"<p>fun CharArrayDump(id: Long, stackTraceSerialNumber: Int, array: CharArray)</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/array/","title":"Array","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/CharArrayDump/array</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/array/#array","title":"array","text":"<p>val array: CharArray</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/id/","title":"Id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/CharArrayDump/id</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/id/#id","title":"id","text":"<p>open override val id: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/size/","title":"Size","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/CharArrayDump/size</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/size/#size","title":"size","text":"<p>open override val size: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/stack-trace-serial-number/","title":"Stack trace serial number","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/CharArrayDump/stackTraceSerialNumber</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/stack-trace-serial-number/#stacktraceserialnumber","title":"stackTraceSerialNumber","text":"<p>open override val stackTraceSerialNumber: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/DoubleArrayDump</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/#doublearraydump","title":"DoubleArrayDump","text":"<p>class DoubleArrayDump(val id: Long, val stackTraceSerialNumber: Int, val array: DoubleArray) : HprofRecord.HeapDumpRecord.ObjectRecord.PrimitiveArrayDumpRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/#constructors","title":"Constructors","text":"DoubleArrayDump fun DoubleArrayDump(id: Long, stackTraceSerialNumber: Int, array: DoubleArray)"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/#properties","title":"Properties","text":"Name Summary array val array: DoubleArray id open override val id: Long size open override val size: Int stackTraceSerialNumber open override val stackTraceSerialNumber: Int"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/-double-array-dump/","title":"double array dump","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/DoubleArrayDump/DoubleArrayDump</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/-double-array-dump/#doublearraydump","title":"DoubleArrayDump","text":"<p>fun DoubleArrayDump(id: Long, stackTraceSerialNumber: Int, array: DoubleArray)</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/array/","title":"Array","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/DoubleArrayDump/array</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/array/#array","title":"array","text":"<p>val array: DoubleArray</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/id/","title":"Id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/DoubleArrayDump/id</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/id/#id","title":"id","text":"<p>open override val id: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/size/","title":"Size","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/DoubleArrayDump/size</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/size/#size","title":"size","text":"<p>open override val size: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/stack-trace-serial-number/","title":"Stack trace serial number","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/DoubleArrayDump/stackTraceSerialNumber</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/stack-trace-serial-number/#stacktraceserialnumber","title":"stackTraceSerialNumber","text":"<p>open override val stackTraceSerialNumber: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/FloatArrayDump</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/#floatarraydump","title":"FloatArrayDump","text":"<p>class FloatArrayDump(val id: Long, val stackTraceSerialNumber: Int, val array: FloatArray) : HprofRecord.HeapDumpRecord.ObjectRecord.PrimitiveArrayDumpRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/#constructors","title":"Constructors","text":"FloatArrayDump fun FloatArrayDump(id: Long, stackTraceSerialNumber: Int, array: FloatArray)"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/#properties","title":"Properties","text":"Name Summary array val array: FloatArray id open override val id: Long size open override val size: Int stackTraceSerialNumber open override val stackTraceSerialNumber: Int"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/-float-array-dump/","title":"float array dump","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/FloatArrayDump/FloatArrayDump</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/-float-array-dump/#floatarraydump","title":"FloatArrayDump","text":"<p>fun FloatArrayDump(id: Long, stackTraceSerialNumber: Int, array: FloatArray)</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/array/","title":"Array","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/FloatArrayDump/array</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/array/#array","title":"array","text":"<p>val array: FloatArray</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/id/","title":"Id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/FloatArrayDump/id</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/id/#id","title":"id","text":"<p>open override val id: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/size/","title":"Size","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/FloatArrayDump/size</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/size/#size","title":"size","text":"<p>open override val size: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/stack-trace-serial-number/","title":"Stack trace serial number","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/FloatArrayDump/stackTraceSerialNumber</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/stack-trace-serial-number/#stacktraceserialnumber","title":"stackTraceSerialNumber","text":"<p>open override val stackTraceSerialNumber: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/IntArrayDump</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/#intarraydump","title":"IntArrayDump","text":"<p>class IntArrayDump(val id: Long, val stackTraceSerialNumber: Int, val array: IntArray) : HprofRecord.HeapDumpRecord.ObjectRecord.PrimitiveArrayDumpRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/#constructors","title":"Constructors","text":"IntArrayDump fun IntArrayDump(id: Long, stackTraceSerialNumber: Int, array: IntArray)"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/#properties","title":"Properties","text":"Name Summary array val array: IntArray id open override val id: Long size open override val size: Int stackTraceSerialNumber open override val stackTraceSerialNumber: Int"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/-int-array-dump/","title":"int array dump","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/IntArrayDump/IntArrayDump</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/-int-array-dump/#intarraydump","title":"IntArrayDump","text":"<p>fun IntArrayDump(id: Long, stackTraceSerialNumber: Int, array: IntArray)</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/array/","title":"Array","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/IntArrayDump/array</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/array/#array","title":"array","text":"<p>val array: IntArray</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/id/","title":"Id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/IntArrayDump/id</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/id/#id","title":"id","text":"<p>open override val id: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/size/","title":"Size","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/IntArrayDump/size</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/size/#size","title":"size","text":"<p>open override val size: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/stack-trace-serial-number/","title":"Stack trace serial number","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/IntArrayDump/stackTraceSerialNumber</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/stack-trace-serial-number/#stacktraceserialnumber","title":"stackTraceSerialNumber","text":"<p>open override val stackTraceSerialNumber: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/LongArrayDump</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/#longarraydump","title":"LongArrayDump","text":"<p>class LongArrayDump(val id: Long, val stackTraceSerialNumber: Int, val array: LongArray) : HprofRecord.HeapDumpRecord.ObjectRecord.PrimitiveArrayDumpRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/#constructors","title":"Constructors","text":"LongArrayDump fun LongArrayDump(id: Long, stackTraceSerialNumber: Int, array: LongArray)"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/#properties","title":"Properties","text":"Name Summary array val array: LongArray id open override val id: Long size open override val size: Int stackTraceSerialNumber open override val stackTraceSerialNumber: Int"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/-long-array-dump/","title":"long array dump","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/LongArrayDump/LongArrayDump</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/-long-array-dump/#longarraydump","title":"LongArrayDump","text":"<p>fun LongArrayDump(id: Long, stackTraceSerialNumber: Int, array: LongArray)</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/array/","title":"Array","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/LongArrayDump/array</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/array/#array","title":"array","text":"<p>val array: LongArray</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/id/","title":"Id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/LongArrayDump/id</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/id/#id","title":"id","text":"<p>open override val id: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/size/","title":"Size","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/LongArrayDump/size</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/size/#size","title":"size","text":"<p>open override val size: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/stack-trace-serial-number/","title":"Stack trace serial number","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/LongArrayDump/stackTraceSerialNumber</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/stack-trace-serial-number/#stacktraceserialnumber","title":"stackTraceSerialNumber","text":"<p>open override val stackTraceSerialNumber: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/ShortArrayDump</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/#shortarraydump","title":"ShortArrayDump","text":"<p>class ShortArrayDump(val id: Long, val stackTraceSerialNumber: Int, val array: ShortArray) : HprofRecord.HeapDumpRecord.ObjectRecord.PrimitiveArrayDumpRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/#constructors","title":"Constructors","text":"ShortArrayDump fun ShortArrayDump(id: Long, stackTraceSerialNumber: Int, array: ShortArray)"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/#properties","title":"Properties","text":"Name Summary array val array: ShortArray id open override val id: Long size open override val size: Int stackTraceSerialNumber open override val stackTraceSerialNumber: Int"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/-short-array-dump/","title":"short array dump","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/ShortArrayDump/ShortArrayDump</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/-short-array-dump/#shortarraydump","title":"ShortArrayDump","text":"<p>fun ShortArrayDump(id: Long, stackTraceSerialNumber: Int, array: ShortArray)</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/array/","title":"Array","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/ShortArrayDump/array</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/array/#array","title":"array","text":"<p>val array: ShortArray</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/id/","title":"Id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/ShortArrayDump/id</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/id/#id","title":"id","text":"<p>open override val id: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/size/","title":"Size","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/ShortArrayDump/size</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/size/#size","title":"size","text":"<p>open override val size: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/stack-trace-serial-number/","title":"Stack trace serial number","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/ShortArrayDump/stackTraceSerialNumber</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/stack-trace-serial-number/#stacktraceserialnumber","title":"stackTraceSerialNumber","text":"<p>open override val stackTraceSerialNumber: Int</p>"},{"location":"api/shark/-hprof-record/-load-class-record/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/LoadClassRecord</p>"},{"location":"api/shark/-hprof-record/-load-class-record/#loadclassrecord","title":"LoadClassRecord","text":"<p>class LoadClassRecord(val classSerialNumber: Int, val id: Long, val stackTraceSerialNumber: Int, val classNameStringId: Long) : HprofRecord</p>"},{"location":"api/shark/-hprof-record/-load-class-record/#constructors","title":"Constructors","text":"LoadClassRecord fun LoadClassRecord(classSerialNumber: Int, id: Long, stackTraceSerialNumber: Int, classNameStringId: Long)"},{"location":"api/shark/-hprof-record/-load-class-record/#properties","title":"Properties","text":"Name Summary classNameStringId val classNameStringId: Long classSerialNumber val classSerialNumber: Int id val id: Long stackTraceSerialNumber val stackTraceSerialNumber: Int"},{"location":"api/shark/-hprof-record/-load-class-record/-load-class-record/","title":"load class record","text":"<p>//leakcanary/shark/HprofRecord/LoadClassRecord/LoadClassRecord</p>"},{"location":"api/shark/-hprof-record/-load-class-record/-load-class-record/#loadclassrecord","title":"LoadClassRecord","text":"<p>fun LoadClassRecord(classSerialNumber: Int, id: Long, stackTraceSerialNumber: Int, classNameStringId: Long)</p>"},{"location":"api/shark/-hprof-record/-load-class-record/class-name-string-id/","title":"Class name string id","text":"<p>//leakcanary/shark/HprofRecord/LoadClassRecord/classNameStringId</p>"},{"location":"api/shark/-hprof-record/-load-class-record/class-name-string-id/#classnamestringid","title":"classNameStringId","text":"<p>val classNameStringId: Long</p>"},{"location":"api/shark/-hprof-record/-load-class-record/class-serial-number/","title":"Class serial number","text":"<p>//leakcanary/shark/HprofRecord/LoadClassRecord/classSerialNumber</p>"},{"location":"api/shark/-hprof-record/-load-class-record/class-serial-number/#classserialnumber","title":"classSerialNumber","text":"<p>val classSerialNumber: Int</p>"},{"location":"api/shark/-hprof-record/-load-class-record/id/","title":"Id","text":"<p>//leakcanary/shark/HprofRecord/LoadClassRecord/id</p>"},{"location":"api/shark/-hprof-record/-load-class-record/id/#id","title":"id","text":"<p>val id: Long</p>"},{"location":"api/shark/-hprof-record/-load-class-record/stack-trace-serial-number/","title":"Stack trace serial number","text":"<p>//leakcanary/shark/HprofRecord/LoadClassRecord/stackTraceSerialNumber</p>"},{"location":"api/shark/-hprof-record/-load-class-record/stack-trace-serial-number/#stacktraceserialnumber","title":"stackTraceSerialNumber","text":"<p>val stackTraceSerialNumber: Int</p>"},{"location":"api/shark/-hprof-record/-stack-frame-record/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/StackFrameRecord</p>"},{"location":"api/shark/-hprof-record/-stack-frame-record/#stackframerecord","title":"StackFrameRecord","text":"<p>class StackFrameRecord(val id: Long, val methodNameStringId: Long, val methodSignatureStringId: Long, val sourceFileNameStringId: Long, val classSerialNumber: Int, val lineNumber: Int) : HprofRecord</p>"},{"location":"api/shark/-hprof-record/-stack-frame-record/#constructors","title":"Constructors","text":"StackFrameRecord fun StackFrameRecord(id: Long, methodNameStringId: Long, methodSignatureStringId: Long, sourceFileNameStringId: Long, classSerialNumber: Int, lineNumber: Int)"},{"location":"api/shark/-hprof-record/-stack-frame-record/#properties","title":"Properties","text":"Name Summary classSerialNumber val classSerialNumber: Int id val id: Long lineNumber val lineNumber: Int methodNameStringId val methodNameStringId: Long methodSignatureStringId val methodSignatureStringId: Long sourceFileNameStringId val sourceFileNameStringId: Long"},{"location":"api/shark/-hprof-record/-stack-frame-record/-stack-frame-record/","title":"stack frame record","text":"<p>//leakcanary/shark/HprofRecord/StackFrameRecord/StackFrameRecord</p>"},{"location":"api/shark/-hprof-record/-stack-frame-record/-stack-frame-record/#stackframerecord","title":"StackFrameRecord","text":"<p>fun StackFrameRecord(id: Long, methodNameStringId: Long, methodSignatureStringId: Long, sourceFileNameStringId: Long, classSerialNumber: Int, lineNumber: Int)</p>"},{"location":"api/shark/-hprof-record/-stack-frame-record/class-serial-number/","title":"Class serial number","text":"<p>//leakcanary/shark/HprofRecord/StackFrameRecord/classSerialNumber</p>"},{"location":"api/shark/-hprof-record/-stack-frame-record/class-serial-number/#classserialnumber","title":"classSerialNumber","text":"<p>val classSerialNumber: Int</p>"},{"location":"api/shark/-hprof-record/-stack-frame-record/id/","title":"Id","text":"<p>//leakcanary/shark/HprofRecord/StackFrameRecord/id</p>"},{"location":"api/shark/-hprof-record/-stack-frame-record/id/#id","title":"id","text":"<p>val id: Long</p>"},{"location":"api/shark/-hprof-record/-stack-frame-record/line-number/","title":"Line number","text":"<p>//leakcanary/shark/HprofRecord/StackFrameRecord/lineNumber</p>"},{"location":"api/shark/-hprof-record/-stack-frame-record/line-number/#linenumber","title":"lineNumber","text":"<p>val lineNumber: Int</p> <p>0 line number 0 no line information available -1 unknown location -2 compiled method (Not implemented) -3 native method (Not implemented)</p>"},{"location":"api/shark/-hprof-record/-stack-frame-record/method-name-string-id/","title":"Method name string id","text":"<p>//leakcanary/shark/HprofRecord/StackFrameRecord/methodNameStringId</p>"},{"location":"api/shark/-hprof-record/-stack-frame-record/method-name-string-id/#methodnamestringid","title":"methodNameStringId","text":"<p>val methodNameStringId: Long</p>"},{"location":"api/shark/-hprof-record/-stack-frame-record/method-signature-string-id/","title":"Method signature string id","text":"<p>//leakcanary/shark/HprofRecord/StackFrameRecord/methodSignatureStringId</p>"},{"location":"api/shark/-hprof-record/-stack-frame-record/method-signature-string-id/#methodsignaturestringid","title":"methodSignatureStringId","text":"<p>val methodSignatureStringId: Long</p>"},{"location":"api/shark/-hprof-record/-stack-frame-record/source-file-name-string-id/","title":"Source file name string id","text":"<p>//leakcanary/shark/HprofRecord/StackFrameRecord/sourceFileNameStringId</p>"},{"location":"api/shark/-hprof-record/-stack-frame-record/source-file-name-string-id/#sourcefilenamestringid","title":"sourceFileNameStringId","text":"<p>val sourceFileNameStringId: Long</p>"},{"location":"api/shark/-hprof-record/-stack-trace-record/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/StackTraceRecord</p>"},{"location":"api/shark/-hprof-record/-stack-trace-record/#stacktracerecord","title":"StackTraceRecord","text":"<p>class StackTraceRecord(val stackTraceSerialNumber: Int, val threadSerialNumber: Int, val stackFrameIds: LongArray) : HprofRecord</p>"},{"location":"api/shark/-hprof-record/-stack-trace-record/#constructors","title":"Constructors","text":"StackTraceRecord fun StackTraceRecord(stackTraceSerialNumber: Int, threadSerialNumber: Int, stackFrameIds: LongArray)"},{"location":"api/shark/-hprof-record/-stack-trace-record/#properties","title":"Properties","text":"Name Summary stackFrameIds val stackFrameIds: LongArray stackTraceSerialNumber val stackTraceSerialNumber: Int threadSerialNumber val threadSerialNumber: Int"},{"location":"api/shark/-hprof-record/-stack-trace-record/-stack-trace-record/","title":"stack trace record","text":"<p>//leakcanary/shark/HprofRecord/StackTraceRecord/StackTraceRecord</p>"},{"location":"api/shark/-hprof-record/-stack-trace-record/-stack-trace-record/#stacktracerecord","title":"StackTraceRecord","text":"<p>fun StackTraceRecord(stackTraceSerialNumber: Int, threadSerialNumber: Int, stackFrameIds: LongArray)</p>"},{"location":"api/shark/-hprof-record/-stack-trace-record/stack-frame-ids/","title":"Stack frame ids","text":"<p>//leakcanary/shark/HprofRecord/StackTraceRecord/stackFrameIds</p>"},{"location":"api/shark/-hprof-record/-stack-trace-record/stack-frame-ids/#stackframeids","title":"stackFrameIds","text":"<p>val stackFrameIds: LongArray</p>"},{"location":"api/shark/-hprof-record/-stack-trace-record/stack-trace-serial-number/","title":"Stack trace serial number","text":"<p>//leakcanary/shark/HprofRecord/StackTraceRecord/stackTraceSerialNumber</p>"},{"location":"api/shark/-hprof-record/-stack-trace-record/stack-trace-serial-number/#stacktraceserialnumber","title":"stackTraceSerialNumber","text":"<p>val stackTraceSerialNumber: Int</p>"},{"location":"api/shark/-hprof-record/-stack-trace-record/thread-serial-number/","title":"Thread serial number","text":"<p>//leakcanary/shark/HprofRecord/StackTraceRecord/threadSerialNumber</p>"},{"location":"api/shark/-hprof-record/-stack-trace-record/thread-serial-number/#threadserialnumber","title":"threadSerialNumber","text":"<p>val threadSerialNumber: Int</p>"},{"location":"api/shark/-hprof-record/-string-record/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/StringRecord</p>"},{"location":"api/shark/-hprof-record/-string-record/#stringrecord","title":"StringRecord","text":"<p>class StringRecord(val id: Long, val string: String) : HprofRecord</p>"},{"location":"api/shark/-hprof-record/-string-record/#constructors","title":"Constructors","text":"StringRecord fun StringRecord(id: Long, string: String)"},{"location":"api/shark/-hprof-record/-string-record/#properties","title":"Properties","text":"Name Summary id val id: Long string val string: String"},{"location":"api/shark/-hprof-record/-string-record/-string-record/","title":"string record","text":"<p>//leakcanary/shark/HprofRecord/StringRecord/StringRecord</p>"},{"location":"api/shark/-hprof-record/-string-record/-string-record/#stringrecord","title":"StringRecord","text":"<p>fun StringRecord(id: Long, string: String)</p>"},{"location":"api/shark/-hprof-record/-string-record/id/","title":"Id","text":"<p>//leakcanary/shark/HprofRecord/StringRecord/id</p>"},{"location":"api/shark/-hprof-record/-string-record/id/#id","title":"id","text":"<p>val id: Long</p>"},{"location":"api/shark/-hprof-record/-string-record/string/","title":"String","text":"<p>//leakcanary/shark/HprofRecord/StringRecord/string</p>"},{"location":"api/shark/-hprof-record/-string-record/string/#string","title":"string","text":"<p>val string: String</p>"},{"location":"api/shark/-hprof-record-reader/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordReader</p>"},{"location":"api/shark/-hprof-record-reader/#hprofrecordreader","title":"HprofRecordReader","text":"<p>class HprofRecordReader</p> <p>Reads hprof content from an Okio BufferedSource.</p> <p>Binary Dump Format reference: http://hg.openjdk.java.net/jdk6/jdk6/jdk/raw-file/tip/src/share /demo/jvmti/hprof/manual.html#mozTocId848088</p> <p>The Android Hprof format differs in some ways from that reference. This parser implementation is largely adapted from https://android.googlesource.com/platform/tools/base/+/studio-master-dev /perflib/src/main/java/com/android/tools/perflib</p> <p>Not thread safe, should be used from a single thread.</p>"},{"location":"api/shark/-hprof-record-reader/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-hprof-record-reader/#functions","title":"Functions","text":"Name Summary readBoolean fun readBoolean(): Boolean readBooleanArray fun readBooleanArray(arrayLength: Int): BooleanArray readByte fun readByte(): Byte readByteArray fun readByteArray(byteCount: Int): ByteArray readChar fun readChar(): Char readCharArray fun readCharArray(arrayLength: Int): CharArray readClassDumpRecord fun readClassDumpRecord(): HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecordReads a full class record after a class dump tag. readDebuggerGcRootRecord fun readDebuggerGcRootRecord(): GcRoot.Debugger readDouble fun readDouble(): Double readDoubleArray fun readDoubleArray(arrayLength: Int): DoubleArray readFinalizingGcRootRecord fun readFinalizingGcRootRecord(): GcRoot.Finalizing readFloat fun readFloat(): Float readFloatArray fun readFloatArray(arrayLength: Int): FloatArray readHeapDumpInfoRecord fun readHeapDumpInfoRecord(): HprofRecord.HeapDumpRecord.HeapDumpInfoRecord readId fun readId(): Long readIdArray fun readIdArray(arrayLength: Int): LongArray readInstanceDumpRecord fun readInstanceDumpRecord(): HprofRecord.HeapDumpRecord.ObjectRecord.InstanceDumpRecordReads a full instance record after a instance dump tag. readInt fun readInt(): Int readIntArray fun readIntArray(arrayLength: Int): IntArray readInternedStringGcRootRecord fun readInternedStringGcRootRecord(): GcRoot.InternedString readJavaFrameGcRootRecord fun readJavaFrameGcRootRecord(): GcRoot.JavaFrame readJniGlobalGcRootRecord fun readJniGlobalGcRootRecord(): GcRoot.JniGlobal readJniLocalGcRootRecord fun readJniLocalGcRootRecord(): GcRoot.JniLocal readJniMonitorGcRootRecord fun readJniMonitorGcRootRecord(): GcRoot.JniMonitor readLoadClassRecord fun readLoadClassRecord(): HprofRecord.LoadClassRecord readLong fun readLong(): Long readLongArray fun readLongArray(arrayLength: Int): LongArray readMonitorUsedGcRootRecord fun readMonitorUsedGcRootRecord(): GcRoot.MonitorUsed readNativeStackGcRootRecord fun readNativeStackGcRootRecord(): GcRoot.NativeStack readObjectArrayDumpRecord fun readObjectArrayDumpRecord(): HprofRecord.HeapDumpRecord.ObjectRecord.ObjectArrayDumpRecordReads a full object array record after a object array dump tag. readPrimitiveArrayDumpRecord fun readPrimitiveArrayDumpRecord(): HprofRecord.HeapDumpRecord.ObjectRecord.PrimitiveArrayDumpRecordReads a full primitive array record after a primitive array dump tag. readReferenceCleanupGcRootRecord fun readReferenceCleanupGcRootRecord(): GcRoot.ReferenceCleanup readShort fun readShort(): Short readShortArray fun readShortArray(arrayLength: Int): ShortArray readStackFrameRecord fun readStackFrameRecord(): HprofRecord.StackFrameRecord readStackTraceRecord fun readStackTraceRecord(): HprofRecord.StackTraceRecord readStickyClassGcRootRecord fun readStickyClassGcRootRecord(): GcRoot.StickyClass readString fun readString(byteCount: Int, charset: Charset): String readStringRecord fun readStringRecord(length: Long): HprofRecord.StringRecord readThreadBlockGcRootRecord fun readThreadBlockGcRootRecord(): GcRoot.ThreadBlock readThreadObjectGcRootRecord fun readThreadObjectGcRootRecord(): GcRoot.ThreadObject readUnknownGcRootRecord fun readUnknownGcRootRecord(): GcRoot.Unknown readUnreachableGcRootRecord fun readUnreachableGcRootRecord(): GcRoot.Unreachable readUnsignedByte fun readUnsignedByte(): Int readUnsignedInt fun readUnsignedInt(): Long readUnsignedShort fun readUnsignedShort(): Int readUtf8 fun readUtf8(byteCount: Long): String readValue fun readValue(type: Int): ValueHolderReads a value in the heap dump, which can be a reference or a primitive type. readVmInternalGcRootRecord fun readVmInternalGcRootRecord(): GcRoot.VmInternal sizeOf fun sizeOf(type: Int): Int skip fun skip(byteCount: Int)fun skip(byteCount: Long) skipClassDumpConstantPool fun skipClassDumpConstantPool() skipClassDumpFields fun skipClassDumpFields() skipClassDumpHeader fun skipClassDumpHeader() skipClassDumpRecord fun skipClassDumpRecord() skipClassDumpStaticFields fun skipClassDumpStaticFields() skipHeapDumpInfoRecord fun skipHeapDumpInfoRecord() skipId fun skipId() skipInstanceDumpRecord fun skipInstanceDumpRecord() skipObjectArrayDumpRecord fun skipObjectArrayDumpRecord() skipPrimitiveArrayDumpRecord fun skipPrimitiveArrayDumpRecord()"},{"location":"api/shark/-hprof-record-reader/#properties","title":"Properties","text":"Name Summary bytesRead val bytesRead: Long = 0How many bytes this reader has read from source. Can only increase."},{"location":"api/shark/-hprof-record-reader/bytes-read/","title":"Bytes read","text":"<p>//leakcanary/shark/HprofRecordReader/bytesRead</p>"},{"location":"api/shark/-hprof-record-reader/bytes-read/#bytesread","title":"bytesRead","text":"<p>val bytesRead: Long = 0</p> <p>How many bytes this reader has read from source. Can only increase.</p>"},{"location":"api/shark/-hprof-record-reader/read-boolean-array/","title":"Read boolean array","text":"<p>//leakcanary/shark/HprofRecordReader/readBooleanArray</p>"},{"location":"api/shark/-hprof-record-reader/read-boolean-array/#readbooleanarray","title":"readBooleanArray","text":"<p>fun readBooleanArray(arrayLength: Int): BooleanArray</p>"},{"location":"api/shark/-hprof-record-reader/read-boolean/","title":"Read boolean","text":"<p>//leakcanary/shark/HprofRecordReader/readBoolean</p>"},{"location":"api/shark/-hprof-record-reader/read-boolean/#readboolean","title":"readBoolean","text":"<p>fun readBoolean(): Boolean</p>"},{"location":"api/shark/-hprof-record-reader/read-byte-array/","title":"Read byte array","text":"<p>//leakcanary/shark/HprofRecordReader/readByteArray</p>"},{"location":"api/shark/-hprof-record-reader/read-byte-array/#readbytearray","title":"readByteArray","text":"<p>fun readByteArray(byteCount: Int): ByteArray</p>"},{"location":"api/shark/-hprof-record-reader/read-byte/","title":"Read byte","text":"<p>//leakcanary/shark/HprofRecordReader/readByte</p>"},{"location":"api/shark/-hprof-record-reader/read-byte/#readbyte","title":"readByte","text":"<p>fun readByte(): Byte</p>"},{"location":"api/shark/-hprof-record-reader/read-char-array/","title":"Read char array","text":"<p>//leakcanary/shark/HprofRecordReader/readCharArray</p>"},{"location":"api/shark/-hprof-record-reader/read-char-array/#readchararray","title":"readCharArray","text":"<p>fun readCharArray(arrayLength: Int): CharArray</p>"},{"location":"api/shark/-hprof-record-reader/read-char/","title":"Read char","text":"<p>//leakcanary/shark/HprofRecordReader/readChar</p>"},{"location":"api/shark/-hprof-record-reader/read-char/#readchar","title":"readChar","text":"<p>fun readChar(): Char</p>"},{"location":"api/shark/-hprof-record-reader/read-class-dump-record/","title":"Read class dump record","text":"<p>//leakcanary/shark/HprofRecordReader/readClassDumpRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-class-dump-record/#readclassdumprecord","title":"readClassDumpRecord","text":"<p>fun readClassDumpRecord(): HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecord</p> <p>Reads a full class record after a class dump tag.</p>"},{"location":"api/shark/-hprof-record-reader/read-debugger-gc-root-record/","title":"Read debugger gc root record","text":"<p>//leakcanary/shark/HprofRecordReader/readDebuggerGcRootRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-debugger-gc-root-record/#readdebuggergcrootrecord","title":"readDebuggerGcRootRecord","text":"<p>fun readDebuggerGcRootRecord(): GcRoot.Debugger</p>"},{"location":"api/shark/-hprof-record-reader/read-double-array/","title":"Read double array","text":"<p>//leakcanary/shark/HprofRecordReader/readDoubleArray</p>"},{"location":"api/shark/-hprof-record-reader/read-double-array/#readdoublearray","title":"readDoubleArray","text":"<p>fun readDoubleArray(arrayLength: Int): DoubleArray</p>"},{"location":"api/shark/-hprof-record-reader/read-double/","title":"Read double","text":"<p>//leakcanary/shark/HprofRecordReader/readDouble</p>"},{"location":"api/shark/-hprof-record-reader/read-double/#readdouble","title":"readDouble","text":"<p>fun readDouble(): Double</p>"},{"location":"api/shark/-hprof-record-reader/read-finalizing-gc-root-record/","title":"Read finalizing gc root record","text":"<p>//leakcanary/shark/HprofRecordReader/readFinalizingGcRootRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-finalizing-gc-root-record/#readfinalizinggcrootrecord","title":"readFinalizingGcRootRecord","text":"<p>fun readFinalizingGcRootRecord(): GcRoot.Finalizing</p>"},{"location":"api/shark/-hprof-record-reader/read-float-array/","title":"Read float array","text":"<p>//leakcanary/shark/HprofRecordReader/readFloatArray</p>"},{"location":"api/shark/-hprof-record-reader/read-float-array/#readfloatarray","title":"readFloatArray","text":"<p>fun readFloatArray(arrayLength: Int): FloatArray</p>"},{"location":"api/shark/-hprof-record-reader/read-float/","title":"Read float","text":"<p>//leakcanary/shark/HprofRecordReader/readFloat</p>"},{"location":"api/shark/-hprof-record-reader/read-float/#readfloat","title":"readFloat","text":"<p>fun readFloat(): Float</p>"},{"location":"api/shark/-hprof-record-reader/read-heap-dump-info-record/","title":"Read heap dump info record","text":"<p>//leakcanary/shark/HprofRecordReader/readHeapDumpInfoRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-heap-dump-info-record/#readheapdumpinforecord","title":"readHeapDumpInfoRecord","text":"<p>fun readHeapDumpInfoRecord(): HprofRecord.HeapDumpRecord.HeapDumpInfoRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-id-array/","title":"Read id array","text":"<p>//leakcanary/shark/HprofRecordReader/readIdArray</p>"},{"location":"api/shark/-hprof-record-reader/read-id-array/#readidarray","title":"readIdArray","text":"<p>fun readIdArray(arrayLength: Int): LongArray</p>"},{"location":"api/shark/-hprof-record-reader/read-id/","title":"Read id","text":"<p>//leakcanary/shark/HprofRecordReader/readId</p>"},{"location":"api/shark/-hprof-record-reader/read-id/#readid","title":"readId","text":"<p>fun readId(): Long</p>"},{"location":"api/shark/-hprof-record-reader/read-instance-dump-record/","title":"Read instance dump record","text":"<p>//leakcanary/shark/HprofRecordReader/readInstanceDumpRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-instance-dump-record/#readinstancedumprecord","title":"readInstanceDumpRecord","text":"<p>fun readInstanceDumpRecord(): HprofRecord.HeapDumpRecord.ObjectRecord.InstanceDumpRecord</p> <p>Reads a full instance record after a instance dump tag.</p>"},{"location":"api/shark/-hprof-record-reader/read-int-array/","title":"Read int array","text":"<p>//leakcanary/shark/HprofRecordReader/readIntArray</p>"},{"location":"api/shark/-hprof-record-reader/read-int-array/#readintarray","title":"readIntArray","text":"<p>fun readIntArray(arrayLength: Int): IntArray</p>"},{"location":"api/shark/-hprof-record-reader/read-int/","title":"Read int","text":"<p>//leakcanary/shark/HprofRecordReader/readInt</p>"},{"location":"api/shark/-hprof-record-reader/read-int/#readint","title":"readInt","text":"<p>fun readInt(): Int</p>"},{"location":"api/shark/-hprof-record-reader/read-interned-string-gc-root-record/","title":"Read interned string gc root record","text":"<p>//leakcanary/shark/HprofRecordReader/readInternedStringGcRootRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-interned-string-gc-root-record/#readinternedstringgcrootrecord","title":"readInternedStringGcRootRecord","text":"<p>fun readInternedStringGcRootRecord(): GcRoot.InternedString</p>"},{"location":"api/shark/-hprof-record-reader/read-java-frame-gc-root-record/","title":"Read java frame gc root record","text":"<p>//leakcanary/shark/HprofRecordReader/readJavaFrameGcRootRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-java-frame-gc-root-record/#readjavaframegcrootrecord","title":"readJavaFrameGcRootRecord","text":"<p>fun readJavaFrameGcRootRecord(): GcRoot.JavaFrame</p>"},{"location":"api/shark/-hprof-record-reader/read-jni-global-gc-root-record/","title":"Read jni global gc root record","text":"<p>//leakcanary/shark/HprofRecordReader/readJniGlobalGcRootRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-jni-global-gc-root-record/#readjniglobalgcrootrecord","title":"readJniGlobalGcRootRecord","text":"<p>fun readJniGlobalGcRootRecord(): GcRoot.JniGlobal</p>"},{"location":"api/shark/-hprof-record-reader/read-jni-local-gc-root-record/","title":"Read jni local gc root record","text":"<p>//leakcanary/shark/HprofRecordReader/readJniLocalGcRootRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-jni-local-gc-root-record/#readjnilocalgcrootrecord","title":"readJniLocalGcRootRecord","text":"<p>fun readJniLocalGcRootRecord(): GcRoot.JniLocal</p>"},{"location":"api/shark/-hprof-record-reader/read-jni-monitor-gc-root-record/","title":"Read jni monitor gc root record","text":"<p>//leakcanary/shark/HprofRecordReader/readJniMonitorGcRootRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-jni-monitor-gc-root-record/#readjnimonitorgcrootrecord","title":"readJniMonitorGcRootRecord","text":"<p>fun readJniMonitorGcRootRecord(): GcRoot.JniMonitor</p>"},{"location":"api/shark/-hprof-record-reader/read-load-class-record/","title":"Read load class record","text":"<p>//leakcanary/shark/HprofRecordReader/readLoadClassRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-load-class-record/#readloadclassrecord","title":"readLoadClassRecord","text":"<p>fun readLoadClassRecord(): HprofRecord.LoadClassRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-long-array/","title":"Read long array","text":"<p>//leakcanary/shark/HprofRecordReader/readLongArray</p>"},{"location":"api/shark/-hprof-record-reader/read-long-array/#readlongarray","title":"readLongArray","text":"<p>fun readLongArray(arrayLength: Int): LongArray</p>"},{"location":"api/shark/-hprof-record-reader/read-long/","title":"Read long","text":"<p>//leakcanary/shark/HprofRecordReader/readLong</p>"},{"location":"api/shark/-hprof-record-reader/read-long/#readlong","title":"readLong","text":"<p>fun readLong(): Long</p>"},{"location":"api/shark/-hprof-record-reader/read-monitor-used-gc-root-record/","title":"Read monitor used gc root record","text":"<p>//leakcanary/shark/HprofRecordReader/readMonitorUsedGcRootRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-monitor-used-gc-root-record/#readmonitorusedgcrootrecord","title":"readMonitorUsedGcRootRecord","text":"<p>fun readMonitorUsedGcRootRecord(): GcRoot.MonitorUsed</p>"},{"location":"api/shark/-hprof-record-reader/read-native-stack-gc-root-record/","title":"Read native stack gc root record","text":"<p>//leakcanary/shark/HprofRecordReader/readNativeStackGcRootRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-native-stack-gc-root-record/#readnativestackgcrootrecord","title":"readNativeStackGcRootRecord","text":"<p>fun readNativeStackGcRootRecord(): GcRoot.NativeStack</p>"},{"location":"api/shark/-hprof-record-reader/read-object-array-dump-record/","title":"Read object array dump record","text":"<p>//leakcanary/shark/HprofRecordReader/readObjectArrayDumpRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-object-array-dump-record/#readobjectarraydumprecord","title":"readObjectArrayDumpRecord","text":"<p>fun readObjectArrayDumpRecord(): HprofRecord.HeapDumpRecord.ObjectRecord.ObjectArrayDumpRecord</p> <p>Reads a full object array record after a object array dump tag.</p>"},{"location":"api/shark/-hprof-record-reader/read-primitive-array-dump-record/","title":"Read primitive array dump record","text":"<p>//leakcanary/shark/HprofRecordReader/readPrimitiveArrayDumpRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-primitive-array-dump-record/#readprimitivearraydumprecord","title":"readPrimitiveArrayDumpRecord","text":"<p>fun readPrimitiveArrayDumpRecord(): HprofRecord.HeapDumpRecord.ObjectRecord.PrimitiveArrayDumpRecord</p> <p>Reads a full primitive array record after a primitive array dump tag.</p>"},{"location":"api/shark/-hprof-record-reader/read-reference-cleanup-gc-root-record/","title":"Read reference cleanup gc root record","text":"<p>//leakcanary/shark/HprofRecordReader/readReferenceCleanupGcRootRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-reference-cleanup-gc-root-record/#readreferencecleanupgcrootrecord","title":"readReferenceCleanupGcRootRecord","text":"<p>fun readReferenceCleanupGcRootRecord(): GcRoot.ReferenceCleanup</p>"},{"location":"api/shark/-hprof-record-reader/read-short-array/","title":"Read short array","text":"<p>//leakcanary/shark/HprofRecordReader/readShortArray</p>"},{"location":"api/shark/-hprof-record-reader/read-short-array/#readshortarray","title":"readShortArray","text":"<p>fun readShortArray(arrayLength: Int): ShortArray</p>"},{"location":"api/shark/-hprof-record-reader/read-short/","title":"Read short","text":"<p>//leakcanary/shark/HprofRecordReader/readShort</p>"},{"location":"api/shark/-hprof-record-reader/read-short/#readshort","title":"readShort","text":"<p>fun readShort(): Short</p>"},{"location":"api/shark/-hprof-record-reader/read-stack-frame-record/","title":"Read stack frame record","text":"<p>//leakcanary/shark/HprofRecordReader/readStackFrameRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-stack-frame-record/#readstackframerecord","title":"readStackFrameRecord","text":"<p>fun readStackFrameRecord(): HprofRecord.StackFrameRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-stack-trace-record/","title":"Read stack trace record","text":"<p>//leakcanary/shark/HprofRecordReader/readStackTraceRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-stack-trace-record/#readstacktracerecord","title":"readStackTraceRecord","text":"<p>fun readStackTraceRecord(): HprofRecord.StackTraceRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-sticky-class-gc-root-record/","title":"Read sticky class gc root record","text":"<p>//leakcanary/shark/HprofRecordReader/readStickyClassGcRootRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-sticky-class-gc-root-record/#readstickyclassgcrootrecord","title":"readStickyClassGcRootRecord","text":"<p>fun readStickyClassGcRootRecord(): GcRoot.StickyClass</p>"},{"location":"api/shark/-hprof-record-reader/read-string-record/","title":"Read string record","text":"<p>//leakcanary/shark/HprofRecordReader/readStringRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-string-record/#readstringrecord","title":"readStringRecord","text":"<p>fun readStringRecord(length: Long): HprofRecord.StringRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-string/","title":"Read string","text":"<p>//leakcanary/shark/HprofRecordReader/readString</p>"},{"location":"api/shark/-hprof-record-reader/read-string/#readstring","title":"readString","text":"<p>fun readString(byteCount: Int, charset: Charset): String</p>"},{"location":"api/shark/-hprof-record-reader/read-thread-block-gc-root-record/","title":"Read thread block gc root record","text":"<p>//leakcanary/shark/HprofRecordReader/readThreadBlockGcRootRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-thread-block-gc-root-record/#readthreadblockgcrootrecord","title":"readThreadBlockGcRootRecord","text":"<p>fun readThreadBlockGcRootRecord(): GcRoot.ThreadBlock</p>"},{"location":"api/shark/-hprof-record-reader/read-thread-object-gc-root-record/","title":"Read thread object gc root record","text":"<p>//leakcanary/shark/HprofRecordReader/readThreadObjectGcRootRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-thread-object-gc-root-record/#readthreadobjectgcrootrecord","title":"readThreadObjectGcRootRecord","text":"<p>fun readThreadObjectGcRootRecord(): GcRoot.ThreadObject</p>"},{"location":"api/shark/-hprof-record-reader/read-unknown-gc-root-record/","title":"Read unknown gc root record","text":"<p>//leakcanary/shark/HprofRecordReader/readUnknownGcRootRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-unknown-gc-root-record/#readunknowngcrootrecord","title":"readUnknownGcRootRecord","text":"<p>fun readUnknownGcRootRecord(): GcRoot.Unknown</p>"},{"location":"api/shark/-hprof-record-reader/read-unreachable-gc-root-record/","title":"Read unreachable gc root record","text":"<p>//leakcanary/shark/HprofRecordReader/readUnreachableGcRootRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-unreachable-gc-root-record/#readunreachablegcrootrecord","title":"readUnreachableGcRootRecord","text":"<p>fun readUnreachableGcRootRecord(): GcRoot.Unreachable</p>"},{"location":"api/shark/-hprof-record-reader/read-unsigned-byte/","title":"Read unsigned byte","text":"<p>//leakcanary/shark/HprofRecordReader/readUnsignedByte</p>"},{"location":"api/shark/-hprof-record-reader/read-unsigned-byte/#readunsignedbyte","title":"readUnsignedByte","text":"<p>fun readUnsignedByte(): Int</p>"},{"location":"api/shark/-hprof-record-reader/read-unsigned-int/","title":"Read unsigned int","text":"<p>//leakcanary/shark/HprofRecordReader/readUnsignedInt</p>"},{"location":"api/shark/-hprof-record-reader/read-unsigned-int/#readunsignedint","title":"readUnsignedInt","text":"<p>fun readUnsignedInt(): Long</p>"},{"location":"api/shark/-hprof-record-reader/read-unsigned-short/","title":"Read unsigned short","text":"<p>//leakcanary/shark/HprofRecordReader/readUnsignedShort</p>"},{"location":"api/shark/-hprof-record-reader/read-unsigned-short/#readunsignedshort","title":"readUnsignedShort","text":"<p>fun readUnsignedShort(): Int</p>"},{"location":"api/shark/-hprof-record-reader/read-utf8/","title":"Read utf8","text":"<p>//leakcanary/shark/HprofRecordReader/readUtf8</p>"},{"location":"api/shark/-hprof-record-reader/read-utf8/#readutf8","title":"readUtf8","text":"<p>fun readUtf8(byteCount: Long): String</p>"},{"location":"api/shark/-hprof-record-reader/read-value/","title":"Read value","text":"<p>//leakcanary/shark/HprofRecordReader/readValue</p>"},{"location":"api/shark/-hprof-record-reader/read-value/#readvalue","title":"readValue","text":"<p>fun readValue(type: Int): ValueHolder</p> <p>Reads a value in the heap dump, which can be a reference or a primitive type.</p>"},{"location":"api/shark/-hprof-record-reader/read-vm-internal-gc-root-record/","title":"Read vm internal gc root record","text":"<p>//leakcanary/shark/HprofRecordReader/readVmInternalGcRootRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-vm-internal-gc-root-record/#readvminternalgcrootrecord","title":"readVmInternalGcRootRecord","text":"<p>fun readVmInternalGcRootRecord(): GcRoot.VmInternal</p>"},{"location":"api/shark/-hprof-record-reader/size-of/","title":"Size of","text":"<p>//leakcanary/shark/HprofRecordReader/sizeOf</p>"},{"location":"api/shark/-hprof-record-reader/size-of/#sizeof","title":"sizeOf","text":"<p>fun sizeOf(type: Int): Int</p>"},{"location":"api/shark/-hprof-record-reader/skip-class-dump-constant-pool/","title":"Skip class dump constant pool","text":"<p>//leakcanary/shark/HprofRecordReader/skipClassDumpConstantPool</p>"},{"location":"api/shark/-hprof-record-reader/skip-class-dump-constant-pool/#skipclassdumpconstantpool","title":"skipClassDumpConstantPool","text":"<p>fun skipClassDumpConstantPool()</p>"},{"location":"api/shark/-hprof-record-reader/skip-class-dump-fields/","title":"Skip class dump fields","text":"<p>//leakcanary/shark/HprofRecordReader/skipClassDumpFields</p>"},{"location":"api/shark/-hprof-record-reader/skip-class-dump-fields/#skipclassdumpfields","title":"skipClassDumpFields","text":"<p>fun skipClassDumpFields()</p>"},{"location":"api/shark/-hprof-record-reader/skip-class-dump-header/","title":"Skip class dump header","text":"<p>//leakcanary/shark/HprofRecordReader/skipClassDumpHeader</p>"},{"location":"api/shark/-hprof-record-reader/skip-class-dump-header/#skipclassdumpheader","title":"skipClassDumpHeader","text":"<p>fun skipClassDumpHeader()</p>"},{"location":"api/shark/-hprof-record-reader/skip-class-dump-record/","title":"Skip class dump record","text":"<p>//leakcanary/shark/HprofRecordReader/skipClassDumpRecord</p>"},{"location":"api/shark/-hprof-record-reader/skip-class-dump-record/#skipclassdumprecord","title":"skipClassDumpRecord","text":"<p>fun skipClassDumpRecord()</p>"},{"location":"api/shark/-hprof-record-reader/skip-class-dump-static-fields/","title":"Skip class dump static fields","text":"<p>//leakcanary/shark/HprofRecordReader/skipClassDumpStaticFields</p>"},{"location":"api/shark/-hprof-record-reader/skip-class-dump-static-fields/#skipclassdumpstaticfields","title":"skipClassDumpStaticFields","text":"<p>fun skipClassDumpStaticFields()</p>"},{"location":"api/shark/-hprof-record-reader/skip-heap-dump-info-record/","title":"Skip heap dump info record","text":"<p>//leakcanary/shark/HprofRecordReader/skipHeapDumpInfoRecord</p>"},{"location":"api/shark/-hprof-record-reader/skip-heap-dump-info-record/#skipheapdumpinforecord","title":"skipHeapDumpInfoRecord","text":"<p>fun skipHeapDumpInfoRecord()</p>"},{"location":"api/shark/-hprof-record-reader/skip-id/","title":"Skip id","text":"<p>//leakcanary/shark/HprofRecordReader/skipId</p>"},{"location":"api/shark/-hprof-record-reader/skip-id/#skipid","title":"skipId","text":"<p>fun skipId()</p>"},{"location":"api/shark/-hprof-record-reader/skip-instance-dump-record/","title":"Skip instance dump record","text":"<p>//leakcanary/shark/HprofRecordReader/skipInstanceDumpRecord</p>"},{"location":"api/shark/-hprof-record-reader/skip-instance-dump-record/#skipinstancedumprecord","title":"skipInstanceDumpRecord","text":"<p>fun skipInstanceDumpRecord()</p>"},{"location":"api/shark/-hprof-record-reader/skip-object-array-dump-record/","title":"Skip object array dump record","text":"<p>//leakcanary/shark/HprofRecordReader/skipObjectArrayDumpRecord</p>"},{"location":"api/shark/-hprof-record-reader/skip-object-array-dump-record/#skipobjectarraydumprecord","title":"skipObjectArrayDumpRecord","text":"<p>fun skipObjectArrayDumpRecord()</p>"},{"location":"api/shark/-hprof-record-reader/skip-primitive-array-dump-record/","title":"Skip primitive array dump record","text":"<p>//leakcanary/shark/HprofRecordReader/skipPrimitiveArrayDumpRecord</p>"},{"location":"api/shark/-hprof-record-reader/skip-primitive-array-dump-record/#skipprimitivearraydumprecord","title":"skipPrimitiveArrayDumpRecord","text":"<p>fun skipPrimitiveArrayDumpRecord()</p>"},{"location":"api/shark/-hprof-record-reader/skip/","title":"Skip","text":"<p>//leakcanary/shark/HprofRecordReader/skip</p>"},{"location":"api/shark/-hprof-record-reader/skip/#skip","title":"skip","text":"<p>fun skip(byteCount: Int)</p> <p>fun skip(byteCount: Long)</p>"},{"location":"api/shark/-hprof-record-reader/-companion/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordReader/Companion</p>"},{"location":"api/shark/-hprof-record-reader/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-hprof-record-tag/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag</p>"},{"location":"api/shark/-hprof-record-tag/#hprofrecordtag","title":"HprofRecordTag","text":"<p>enum HprofRecordTag : Enum&lt;HprofRecordTag&gt;</p>"},{"location":"api/shark/-hprof-record-tag/#entries","title":"Entries","text":"PRIMITIVE_ARRAY_DUMP PRIMITIVE_ARRAY_DUMP(35) OBJECT_ARRAY_DUMP OBJECT_ARRAY_DUMP(34) INSTANCE_DUMP INSTANCE_DUMP(33) CLASS_DUMP CLASS_DUMP(32) PRIMITIVE_ARRAY_NODATA PRIMITIVE_ARRAY_NODATA(195) ROOT_UNREACHABLE ROOT_UNREACHABLE(144) ROOT_JNI_MONITOR ROOT_JNI_MONITOR(142) ROOT_VM_INTERNAL ROOT_VM_INTERNAL(141) ROOT_REFERENCE_CLEANUP ROOT_REFERENCE_CLEANUP(140) ROOT_DEBUGGER ROOT_DEBUGGER(139) ROOT_FINALIZING ROOT_FINALIZING(138) ROOT_INTERNED_STRING ROOT_INTERNED_STRING(137) HEAP_DUMP_INFO HEAP_DUMP_INFO(254)Android format addition ROOT_THREAD_OBJECT ROOT_THREAD_OBJECT(8) ROOT_MONITOR_USED ROOT_MONITOR_USED(7) ROOT_THREAD_BLOCK ROOT_THREAD_BLOCK(6) ROOT_STICKY_CLASS ROOT_STICKY_CLASS(5) ROOT_NATIVE_STACK ROOT_NATIVE_STACK(4) ROOT_JAVA_FRAME ROOT_JAVA_FRAME(3) ROOT_JNI_LOCAL ROOT_JNI_LOCAL(2) ROOT_JNI_GLOBAL ROOT_JNI_GLOBAL(1) ROOT_UNKNOWN ROOT_UNKNOWN(255) CONTROL_SETTINGS CONTROL_SETTINGS(14) CPU_SAMPLES CPU_SAMPLES(13) HEAP_DUMP_END HEAP_DUMP_END(44) HEAP_DUMP_SEGMENT HEAP_DUMP_SEGMENT(28) HEAP_DUMP HEAP_DUMP(12) END_THREAD END_THREAD(11) START_THREAD START_THREAD(10) HEAP_SUMMARY HEAP_SUMMARY(7) ALLOC_SITES ALLOC_SITES(6) STACK_TRACE STACK_TRACE(5) STACK_FRAME STACK_FRAME(4) UNLOAD_CLASS UNLOAD_CLASS(3) LOAD_CLASS LOAD_CLASS(2) STRING_IN_UTF8 STRING_IN_UTF8(1)"},{"location":"api/shark/-hprof-record-tag/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-hprof-record-tag/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/tag/","title":"Tag","text":"<p>//leakcanary/shark/HprofRecordTag/tag</p>"},{"location":"api/shark/-hprof-record-tag/tag/#tag","title":"tag","text":"<p>val tag: Int</p>"},{"location":"api/shark/-hprof-record-tag/-a-l-l-o-c_-s-i-t-e-s/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/ALLOC_SITES</p>"},{"location":"api/shark/-hprof-record-tag/-a-l-l-o-c_-s-i-t-e-s/#alloc_sites","title":"ALLOC_SITES","text":"<p>ALLOC_SITES(6)</p>"},{"location":"api/shark/-hprof-record-tag/-a-l-l-o-c_-s-i-t-e-s/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-c-l-a-s-s_-d-u-m-p/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/CLASS_DUMP</p>"},{"location":"api/shark/-hprof-record-tag/-c-l-a-s-s_-d-u-m-p/#class_dump","title":"CLASS_DUMP","text":"<p>CLASS_DUMP(32)</p>"},{"location":"api/shark/-hprof-record-tag/-c-l-a-s-s_-d-u-m-p/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-c-o-n-t-r-o-l_-s-e-t-t-i-n-g-s/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/CONTROL_SETTINGS</p>"},{"location":"api/shark/-hprof-record-tag/-c-o-n-t-r-o-l_-s-e-t-t-i-n-g-s/#control_settings","title":"CONTROL_SETTINGS","text":"<p>CONTROL_SETTINGS(14)</p>"},{"location":"api/shark/-hprof-record-tag/-c-o-n-t-r-o-l_-s-e-t-t-i-n-g-s/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-c-p-u_-s-a-m-p-l-e-s/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/CPU_SAMPLES</p>"},{"location":"api/shark/-hprof-record-tag/-c-p-u_-s-a-m-p-l-e-s/#cpu_samples","title":"CPU_SAMPLES","text":"<p>CPU_SAMPLES(13)</p>"},{"location":"api/shark/-hprof-record-tag/-c-p-u_-s-a-m-p-l-e-s/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-companion/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/Companion</p>"},{"location":"api/shark/-hprof-record-tag/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-hprof-record-tag/-companion/#properties","title":"Properties","text":"Name Summary rootTags val rootTags: EnumSet&lt;HprofRecordTag&gt;"},{"location":"api/shark/-hprof-record-tag/-companion/root-tags/","title":"Root tags","text":"<p>//leakcanary/shark/HprofRecordTag/Companion/rootTags</p>"},{"location":"api/shark/-hprof-record-tag/-companion/root-tags/#roottags","title":"rootTags","text":"<p>val rootTags: EnumSet&lt;HprofRecordTag&gt;</p>"},{"location":"api/shark/-hprof-record-tag/-e-n-d_-t-h-r-e-a-d/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/END_THREAD</p>"},{"location":"api/shark/-hprof-record-tag/-e-n-d_-t-h-r-e-a-d/#end_thread","title":"END_THREAD","text":"<p>END_THREAD(11)</p>"},{"location":"api/shark/-hprof-record-tag/-e-n-d_-t-h-r-e-a-d/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/HEAP_DUMP</p>"},{"location":"api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p/#heap_dump","title":"HEAP_DUMP","text":"<p>HEAP_DUMP(12)</p>"},{"location":"api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p_-e-n-d/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/HEAP_DUMP_END</p>"},{"location":"api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p_-e-n-d/#heap_dump_end","title":"HEAP_DUMP_END","text":"<p>HEAP_DUMP_END(44)</p>"},{"location":"api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p_-e-n-d/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p_-i-n-f-o/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/HEAP_DUMP_INFO</p>"},{"location":"api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p_-i-n-f-o/#heap_dump_info","title":"HEAP_DUMP_INFO","text":"<p>HEAP_DUMP_INFO(254)</p> <p>Android format addition</p> <p>Specifies information about which heap certain objects came from. When a sub-tag of this type appears in a HPROF_HEAP_DUMP or HPROF_HEAP_DUMP_SEGMENT record, entries that follow it will be associated with the specified heap.  The HEAP_DUMP_INFO data is reset at the end of the HEAP_DUMP[_SEGMENT].  Multiple HEAP_DUMP_INFO entries may appear in a single HEAP_DUMP[_SEGMENT].</p> <p>Format: u1: Tag value (0xFE) u4: heap ID ID: heap name string ID</p>"},{"location":"api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p_-i-n-f-o/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p_-s-e-g-m-e-n-t/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/HEAP_DUMP_SEGMENT</p>"},{"location":"api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p_-s-e-g-m-e-n-t/#heap_dump_segment","title":"HEAP_DUMP_SEGMENT","text":"<p>HEAP_DUMP_SEGMENT(28)</p>"},{"location":"api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p_-s-e-g-m-e-n-t/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-h-e-a-p_-s-u-m-m-a-r-y/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/HEAP_SUMMARY</p>"},{"location":"api/shark/-hprof-record-tag/-h-e-a-p_-s-u-m-m-a-r-y/#heap_summary","title":"HEAP_SUMMARY","text":"<p>HEAP_SUMMARY(7)</p>"},{"location":"api/shark/-hprof-record-tag/-h-e-a-p_-s-u-m-m-a-r-y/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-i-n-s-t-a-n-c-e_-d-u-m-p/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/INSTANCE_DUMP</p>"},{"location":"api/shark/-hprof-record-tag/-i-n-s-t-a-n-c-e_-d-u-m-p/#instance_dump","title":"INSTANCE_DUMP","text":"<p>INSTANCE_DUMP(33)</p>"},{"location":"api/shark/-hprof-record-tag/-i-n-s-t-a-n-c-e_-d-u-m-p/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-l-o-a-d_-c-l-a-s-s/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/LOAD_CLASS</p>"},{"location":"api/shark/-hprof-record-tag/-l-o-a-d_-c-l-a-s-s/#load_class","title":"LOAD_CLASS","text":"<p>LOAD_CLASS(2)</p>"},{"location":"api/shark/-hprof-record-tag/-l-o-a-d_-c-l-a-s-s/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-o-b-j-e-c-t_-a-r-r-a-y_-d-u-m-p/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/OBJECT_ARRAY_DUMP</p>"},{"location":"api/shark/-hprof-record-tag/-o-b-j-e-c-t_-a-r-r-a-y_-d-u-m-p/#object_array_dump","title":"OBJECT_ARRAY_DUMP","text":"<p>OBJECT_ARRAY_DUMP(34)</p>"},{"location":"api/shark/-hprof-record-tag/-o-b-j-e-c-t_-a-r-r-a-y_-d-u-m-p/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-p-r-i-m-i-t-i-v-e_-a-r-r-a-y_-d-u-m-p/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/PRIMITIVE_ARRAY_DUMP</p>"},{"location":"api/shark/-hprof-record-tag/-p-r-i-m-i-t-i-v-e_-a-r-r-a-y_-d-u-m-p/#primitive_array_dump","title":"PRIMITIVE_ARRAY_DUMP","text":"<p>PRIMITIVE_ARRAY_DUMP(35)</p>"},{"location":"api/shark/-hprof-record-tag/-p-r-i-m-i-t-i-v-e_-a-r-r-a-y_-d-u-m-p/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-p-r-i-m-i-t-i-v-e_-a-r-r-a-y_-n-o-d-a-t-a/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/PRIMITIVE_ARRAY_NODATA</p>"},{"location":"api/shark/-hprof-record-tag/-p-r-i-m-i-t-i-v-e_-a-r-r-a-y_-n-o-d-a-t-a/#primitive_array_nodata","title":"PRIMITIVE_ARRAY_NODATA","text":"<p>PRIMITIVE_ARRAY_NODATA(195)</p>"},{"location":"api/shark/-hprof-record-tag/-p-r-i-m-i-t-i-v-e_-a-r-r-a-y_-n-o-d-a-t-a/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-d-e-b-u-g-g-e-r/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/ROOT_DEBUGGER</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-d-e-b-u-g-g-e-r/#root_debugger","title":"ROOT_DEBUGGER","text":"<p>ROOT_DEBUGGER(139)</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-d-e-b-u-g-g-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-f-i-n-a-l-i-z-i-n-g/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/ROOT_FINALIZING</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-f-i-n-a-l-i-z-i-n-g/#root_finalizing","title":"ROOT_FINALIZING","text":"<p>ROOT_FINALIZING(138)</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-f-i-n-a-l-i-z-i-n-g/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-i-n-t-e-r-n-e-d_-s-t-r-i-n-g/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/ROOT_INTERNED_STRING</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-i-n-t-e-r-n-e-d_-s-t-r-i-n-g/#root_interned_string","title":"ROOT_INTERNED_STRING","text":"<p>ROOT_INTERNED_STRING(137)</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-i-n-t-e-r-n-e-d_-s-t-r-i-n-g/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-j-a-v-a_-f-r-a-m-e/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/ROOT_JAVA_FRAME</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-j-a-v-a_-f-r-a-m-e/#root_java_frame","title":"ROOT_JAVA_FRAME","text":"<p>ROOT_JAVA_FRAME(3)</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-j-a-v-a_-f-r-a-m-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-j-n-i_-g-l-o-b-a-l/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/ROOT_JNI_GLOBAL</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-j-n-i_-g-l-o-b-a-l/#root_jni_global","title":"ROOT_JNI_GLOBAL","text":"<p>ROOT_JNI_GLOBAL(1)</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-j-n-i_-g-l-o-b-a-l/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-j-n-i_-l-o-c-a-l/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/ROOT_JNI_LOCAL</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-j-n-i_-l-o-c-a-l/#root_jni_local","title":"ROOT_JNI_LOCAL","text":"<p>ROOT_JNI_LOCAL(2)</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-j-n-i_-l-o-c-a-l/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-j-n-i_-m-o-n-i-t-o-r/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/ROOT_JNI_MONITOR</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-j-n-i_-m-o-n-i-t-o-r/#root_jni_monitor","title":"ROOT_JNI_MONITOR","text":"<p>ROOT_JNI_MONITOR(142)</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-j-n-i_-m-o-n-i-t-o-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-m-o-n-i-t-o-r_-u-s-e-d/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/ROOT_MONITOR_USED</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-m-o-n-i-t-o-r_-u-s-e-d/#root_monitor_used","title":"ROOT_MONITOR_USED","text":"<p>ROOT_MONITOR_USED(7)</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-m-o-n-i-t-o-r_-u-s-e-d/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-n-a-t-i-v-e_-s-t-a-c-k/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/ROOT_NATIVE_STACK</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-n-a-t-i-v-e_-s-t-a-c-k/#root_native_stack","title":"ROOT_NATIVE_STACK","text":"<p>ROOT_NATIVE_STACK(4)</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-n-a-t-i-v-e_-s-t-a-c-k/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-r-e-f-e-r-e-n-c-e_-c-l-e-a-n-u-p/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/ROOT_REFERENCE_CLEANUP</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-r-e-f-e-r-e-n-c-e_-c-l-e-a-n-u-p/#root_reference_cleanup","title":"ROOT_REFERENCE_CLEANUP","text":"<p>ROOT_REFERENCE_CLEANUP(140)</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-r-e-f-e-r-e-n-c-e_-c-l-e-a-n-u-p/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-s-t-i-c-k-y_-c-l-a-s-s/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/ROOT_STICKY_CLASS</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-s-t-i-c-k-y_-c-l-a-s-s/#root_sticky_class","title":"ROOT_STICKY_CLASS","text":"<p>ROOT_STICKY_CLASS(5)</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-s-t-i-c-k-y_-c-l-a-s-s/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-t-h-r-e-a-d_-b-l-o-c-k/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/ROOT_THREAD_BLOCK</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-t-h-r-e-a-d_-b-l-o-c-k/#root_thread_block","title":"ROOT_THREAD_BLOCK","text":"<p>ROOT_THREAD_BLOCK(6)</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-t-h-r-e-a-d_-b-l-o-c-k/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-t-h-r-e-a-d_-o-b-j-e-c-t/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/ROOT_THREAD_OBJECT</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-t-h-r-e-a-d_-o-b-j-e-c-t/#root_thread_object","title":"ROOT_THREAD_OBJECT","text":"<p>ROOT_THREAD_OBJECT(8)</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-t-h-r-e-a-d_-o-b-j-e-c-t/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-u-n-k-n-o-w-n/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/ROOT_UNKNOWN</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-u-n-k-n-o-w-n/#root_unknown","title":"ROOT_UNKNOWN","text":"<p>ROOT_UNKNOWN(255)</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-u-n-k-n-o-w-n/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-u-n-r-e-a-c-h-a-b-l-e/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/ROOT_UNREACHABLE</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-u-n-r-e-a-c-h-a-b-l-e/#root_unreachable","title":"ROOT_UNREACHABLE","text":"<p>ROOT_UNREACHABLE(144)</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-u-n-r-e-a-c-h-a-b-l-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-v-m_-i-n-t-e-r-n-a-l/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/ROOT_VM_INTERNAL</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-v-m_-i-n-t-e-r-n-a-l/#root_vm_internal","title":"ROOT_VM_INTERNAL","text":"<p>ROOT_VM_INTERNAL(141)</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-v-m_-i-n-t-e-r-n-a-l/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-s-t-a-c-k_-f-r-a-m-e/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/STACK_FRAME</p>"},{"location":"api/shark/-hprof-record-tag/-s-t-a-c-k_-f-r-a-m-e/#stack_frame","title":"STACK_FRAME","text":"<p>STACK_FRAME(4)</p>"},{"location":"api/shark/-hprof-record-tag/-s-t-a-c-k_-f-r-a-m-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-s-t-a-c-k_-t-r-a-c-e/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/STACK_TRACE</p>"},{"location":"api/shark/-hprof-record-tag/-s-t-a-c-k_-t-r-a-c-e/#stack_trace","title":"STACK_TRACE","text":"<p>STACK_TRACE(5)</p>"},{"location":"api/shark/-hprof-record-tag/-s-t-a-c-k_-t-r-a-c-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-s-t-a-r-t_-t-h-r-e-a-d/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/START_THREAD</p>"},{"location":"api/shark/-hprof-record-tag/-s-t-a-r-t_-t-h-r-e-a-d/#start_thread","title":"START_THREAD","text":"<p>START_THREAD(10)</p>"},{"location":"api/shark/-hprof-record-tag/-s-t-a-r-t_-t-h-r-e-a-d/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-s-t-r-i-n-g_-i-n_-u-t-f8/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/STRING_IN_UTF8</p>"},{"location":"api/shark/-hprof-record-tag/-s-t-r-i-n-g_-i-n_-u-t-f8/#string_in_utf8","title":"STRING_IN_UTF8","text":"<p>STRING_IN_UTF8(1)</p>"},{"location":"api/shark/-hprof-record-tag/-s-t-r-i-n-g_-i-n_-u-t-f8/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-u-n-l-o-a-d_-c-l-a-s-s/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/UNLOAD_CLASS</p>"},{"location":"api/shark/-hprof-record-tag/-u-n-l-o-a-d_-c-l-a-s-s/#unload_class","title":"UNLOAD_CLASS","text":"<p>UNLOAD_CLASS(3)</p>"},{"location":"api/shark/-hprof-record-tag/-u-n-l-o-a-d_-c-l-a-s-s/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-version/","title":"Index","text":"<p>//leakcanary/shark/HprofVersion</p>"},{"location":"api/shark/-hprof-version/#hprofversion","title":"HprofVersion","text":"<p>enum HprofVersion : Enum&lt;HprofVersion&gt; </p> <p>Supported hprof versions</p>"},{"location":"api/shark/-hprof-version/#entries","title":"Entries","text":"ANDROID ANDROID(\"JAVA PROFILE 1.0.3\") JDK_6 JDK_6(\"JAVA PROFILE 1.0.2\") JDK1_2_BETA4 JDK1_2_BETA4(\"JAVA PROFILE 1.0.1\") JDK1_2_BETA3 JDK1_2_BETA3(\"JAVA PROFILE 1.0\")"},{"location":"api/shark/-hprof-version/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int versionString val versionString: String"},{"location":"api/shark/-hprof-version/version-string/","title":"Version string","text":"<p>//leakcanary/shark/HprofVersion/versionString</p>"},{"location":"api/shark/-hprof-version/version-string/#versionstring","title":"versionString","text":"<p>val versionString: String</p>"},{"location":"api/shark/-hprof-version/-a-n-d-r-o-i-d/","title":"Index","text":"<p>//leakcanary/shark/HprofVersion/ANDROID</p>"},{"location":"api/shark/-hprof-version/-a-n-d-r-o-i-d/#android","title":"ANDROID","text":"<p>ANDROID(\"JAVA PROFILE 1.0.3\")</p>"},{"location":"api/shark/-hprof-version/-a-n-d-r-o-i-d/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int versionString val versionString: String"},{"location":"api/shark/-hprof-version/-j-d-k1_2_-b-e-t-a3/","title":"Index","text":"<p>//leakcanary/shark/HprofVersion/JDK1_2_BETA3</p>"},{"location":"api/shark/-hprof-version/-j-d-k1_2_-b-e-t-a3/#jdk1_2_beta3","title":"JDK1_2_BETA3","text":"<p>JDK1_2_BETA3(\"JAVA PROFILE 1.0\")</p>"},{"location":"api/shark/-hprof-version/-j-d-k1_2_-b-e-t-a3/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int versionString val versionString: String"},{"location":"api/shark/-hprof-version/-j-d-k1_2_-b-e-t-a4/","title":"Index","text":"<p>//leakcanary/shark/HprofVersion/JDK1_2_BETA4</p>"},{"location":"api/shark/-hprof-version/-j-d-k1_2_-b-e-t-a4/#jdk1_2_beta4","title":"JDK1_2_BETA4","text":"<p>JDK1_2_BETA4(\"JAVA PROFILE 1.0.1\")</p>"},{"location":"api/shark/-hprof-version/-j-d-k1_2_-b-e-t-a4/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int versionString val versionString: String"},{"location":"api/shark/-hprof-version/-j-d-k_6/","title":"Index","text":"<p>//leakcanary/shark/HprofVersion/JDK_6</p>"},{"location":"api/shark/-hprof-version/-j-d-k_6/#jdk_6","title":"JDK_6","text":"<p>JDK_6(\"JAVA PROFILE 1.0.2\")</p>"},{"location":"api/shark/-hprof-version/-j-d-k_6/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int versionString val versionString: String"},{"location":"api/shark/-hprof-writer/","title":"Index","text":"<p>//leakcanary/shark/HprofWriter</p>"},{"location":"api/shark/-hprof-writer/#hprofwriter","title":"HprofWriter","text":"<p>class HprofWriter : Closeable</p> <p>Generates Hprof files.</p> <p>Call openWriterFor to obtain a new instance.</p> <p>Call write to add records and close when you\u2019re done.</p>"},{"location":"api/shark/-hprof-writer/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-hprof-writer/#functions","title":"Functions","text":"Name Summary close open override fun close()Flushes to disk all HprofRecord.HeapDumpRecord that are currently written to the in memory buffer, then closes the file. valuesToBytes fun valuesToBytes(values: List&lt;ValueHolder&gt;): ByteArrayHelper method for creating a ByteArray for InstanceDumpRecord.fieldValues from a list of ValueHolder. write fun write(record: HprofRecord)Appends a HprofRecord to the heap dump. If record is a HprofRecord.HeapDumpRecord then it will not be written to an in memory buffer and written to file only when the next a record that is not a HprofRecord.HeapDumpRecord is written or when close is called."},{"location":"api/shark/-hprof-writer/#properties","title":"Properties","text":"Name Summary hprofHeader val hprofHeader: HprofHeader"},{"location":"api/shark/-hprof-writer/close/","title":"Close","text":"<p>//leakcanary/shark/HprofWriter/close</p>"},{"location":"api/shark/-hprof-writer/close/#close","title":"close","text":"<p>open override fun close()</p> <p>Flushes to disk all HprofRecord.HeapDumpRecord that are currently written to the in memory buffer, then closes the file.</p>"},{"location":"api/shark/-hprof-writer/hprof-header/","title":"Hprof header","text":"<p>//leakcanary/shark/HprofWriter/hprofHeader</p>"},{"location":"api/shark/-hprof-writer/hprof-header/#hprofheader","title":"hprofHeader","text":"<p>val hprofHeader: HprofHeader</p>"},{"location":"api/shark/-hprof-writer/values-to-bytes/","title":"Values to bytes","text":"<p>//leakcanary/shark/HprofWriter/valuesToBytes</p>"},{"location":"api/shark/-hprof-writer/values-to-bytes/#valuestobytes","title":"valuesToBytes","text":"<p>fun valuesToBytes(values: List&lt;ValueHolder&gt;): ByteArray</p> <p>Helper method for creating a ByteArray for InstanceDumpRecord.fieldValues from a list of ValueHolder.</p>"},{"location":"api/shark/-hprof-writer/write/","title":"Write","text":"<p>//leakcanary/shark/HprofWriter/write</p>"},{"location":"api/shark/-hprof-writer/write/#write","title":"write","text":"<p>fun write(record: HprofRecord)</p> <p>Appends a HprofRecord to the heap dump. If record is a HprofRecord.HeapDumpRecord then it will not be written to an in memory buffer and written to file only when the next a record that is not a HprofRecord.HeapDumpRecord is written or when close is called.</p>"},{"location":"api/shark/-hprof-writer/-companion/","title":"Index","text":"<p>//leakcanary/shark/HprofWriter/Companion</p>"},{"location":"api/shark/-hprof-writer/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-hprof-writer/-companion/#functions","title":"Functions","text":"Name Summary openWriterFor fun openWriterFor(hprofFile: File, hprofHeader: HprofHeader = HprofHeader()): HprofWriterfun openWriterFor(hprofSink: BufferedSink, hprofHeader: HprofHeader = HprofHeader()): HprofWriter"},{"location":"api/shark/-hprof-writer/-companion/open-writer-for/","title":"Open writer for","text":"<p>//leakcanary/shark/HprofWriter/Companion/openWriterFor</p>"},{"location":"api/shark/-hprof-writer/-companion/open-writer-for/#openwriterfor","title":"openWriterFor","text":"<p>fun openWriterFor(hprofFile: File, hprofHeader: HprofHeader = HprofHeader()): HprofWriter</p> <p>fun openWriterFor(hprofSink: BufferedSink, hprofHeader: HprofHeader = HprofHeader()): HprofWriter</p>"},{"location":"api/shark/-hprof-writer-helper/","title":"Index","text":"<p>//leakcanary/shark/HprofWriterHelper</p>"},{"location":"api/shark/-hprof-writer-helper/#hprofwriterhelper","title":"HprofWriterHelper","text":"<p>class HprofWriterHelper(writer: HprofWriter) : Closeable</p>"},{"location":"api/shark/-hprof-writer-helper/#constructors","title":"Constructors","text":"HprofWriterHelper fun HprofWriterHelper(writer: HprofWriter)"},{"location":"api/shark/-hprof-writer-helper/#types","title":"Types","text":"Name Summary ClassDefinition inner class ClassDefinition InstanceAndClassDefinition inner class InstanceAndClassDefinition"},{"location":"api/shark/-hprof-writer-helper/#functions","title":"Functions","text":"Name Summary arrayClass fun arrayClass(className: String): Long clazz infix fun String.clazz(block: HprofWriterHelper.ClassDefinition.() -&gt; Unit): Longfun clazz(className: String, superclassId: Long = -1L, staticFields: List&lt;Pair&lt;String, ValueHolder&gt;&gt; = emptyList(), fields: List&lt;Pair&lt;String, KClass&lt;out ValueHolder&gt;&gt;&gt; = emptyList()): Longfun clazz(classNameRecord: HprofRecord.StringRecord, superclassId: Long = -1L, staticFields: List&lt;Pair&lt;Long, ValueHolder&gt;&gt; = emptyList(), fields: List&lt;Pair&lt;Long, KClass&lt;out ValueHolder&gt;&gt;&gt; = emptyList()): Long close open override fun close() gcRoot fun gcRoot(gcRoot: GcRoot) instance infix fun String.instance(block: HprofWriterHelper.InstanceAndClassDefinition.() -&gt; Unit): ValueHolder.ReferenceHolderfun instance(classId: Long, fields: List&lt;ValueHolder&gt; = emptyList()): ValueHolder.ReferenceHolder keyedWeakReference fun keyedWeakReference(referentInstanceId: ValueHolder.ReferenceHolder): ValueHolder.ReferenceHolder objectArray fun objectArray(vararg elements: ValueHolder.ReferenceHolder): ValueHolder.ReferenceHolderfun objectArray(classId: Long, array: LongArray): Long objectArrayOf fun objectArrayOf(classId: Long, vararg elements: ValueHolder.ReferenceHolder): ValueHolder.ReferenceHolder primitiveLongArray fun primitiveLongArray(array: LongArray): Long string fun string(string: String): ValueHolder.ReferenceHolder stringRecord fun stringRecord(name: String): HprofRecord.StringRecord watchedInstance infix fun String.watchedInstance(block: HprofWriterHelper.InstanceAndClassDefinition.() -&gt; Unit): ValueHolder.ReferenceHolder"},{"location":"api/shark/-hprof-writer-helper/#properties","title":"Properties","text":"Name Summary charArrayDump val String.charArrayDump: ValueHolder.ReferenceHolder"},{"location":"api/shark/-hprof-writer-helper/-hprof-writer-helper/","title":"hprof writer helper","text":"<p>//leakcanary/shark/HprofWriterHelper/HprofWriterHelper</p>"},{"location":"api/shark/-hprof-writer-helper/-hprof-writer-helper/#hprofwriterhelper","title":"HprofWriterHelper","text":"<p>fun HprofWriterHelper(writer: HprofWriter)</p>"},{"location":"api/shark/-hprof-writer-helper/array-class/","title":"Array class","text":"<p>//leakcanary/shark/HprofWriterHelper/arrayClass</p>"},{"location":"api/shark/-hprof-writer-helper/array-class/#arrayclass","title":"arrayClass","text":"<p>fun arrayClass(className: String): Long</p>"},{"location":"api/shark/-hprof-writer-helper/char-array-dump/","title":"Char array dump","text":"<p>//leakcanary/shark/HprofWriterHelper/charArrayDump</p>"},{"location":"api/shark/-hprof-writer-helper/char-array-dump/#chararraydump","title":"charArrayDump","text":"<p>val String.charArrayDump: ValueHolder.ReferenceHolder</p>"},{"location":"api/shark/-hprof-writer-helper/clazz/","title":"Clazz","text":"<p>//leakcanary/shark/HprofWriterHelper/clazz</p>"},{"location":"api/shark/-hprof-writer-helper/clazz/#clazz","title":"clazz","text":"<p>fun clazz(className: String, superclassId: Long = -1L, staticFields: List&lt;Pair&lt;String, ValueHolder&gt;&gt; = emptyList(), fields: List&lt;Pair&lt;String, KClass&lt;out ValueHolder&gt;&gt;&gt; = emptyList()): Long</p> <p>fun clazz(classNameRecord: HprofRecord.StringRecord, superclassId: Long = -1L, staticFields: List&lt;Pair&lt;Long, ValueHolder&gt;&gt; = emptyList(), fields: List&lt;Pair&lt;Long, KClass&lt;out ValueHolder&gt;&gt;&gt; = emptyList()): Long</p> <p>infix fun String.clazz(block: HprofWriterHelper.ClassDefinition.() -&gt; Unit): Long</p>"},{"location":"api/shark/-hprof-writer-helper/close/","title":"Close","text":"<p>//leakcanary/shark/HprofWriterHelper/close</p>"},{"location":"api/shark/-hprof-writer-helper/close/#close","title":"close","text":"<p>open override fun close()</p>"},{"location":"api/shark/-hprof-writer-helper/gc-root/","title":"Gc root","text":"<p>//leakcanary/shark/HprofWriterHelper/gcRoot</p>"},{"location":"api/shark/-hprof-writer-helper/gc-root/#gcroot","title":"gcRoot","text":"<p>fun gcRoot(gcRoot: GcRoot)</p>"},{"location":"api/shark/-hprof-writer-helper/instance/","title":"Instance","text":"<p>//leakcanary/shark/HprofWriterHelper/instance</p>"},{"location":"api/shark/-hprof-writer-helper/instance/#instance","title":"instance","text":"<p>fun instance(classId: Long, fields: List&lt;ValueHolder&gt; = emptyList()): ValueHolder.ReferenceHolder</p> <p>infix fun String.instance(block: HprofWriterHelper.InstanceAndClassDefinition.() -&gt; Unit): ValueHolder.ReferenceHolder</p>"},{"location":"api/shark/-hprof-writer-helper/keyed-weak-reference/","title":"Keyed weak reference","text":"<p>//leakcanary/shark/HprofWriterHelper/keyedWeakReference</p>"},{"location":"api/shark/-hprof-writer-helper/keyed-weak-reference/#keyedweakreference","title":"keyedWeakReference","text":"<p>fun keyedWeakReference(referentInstanceId: ValueHolder.ReferenceHolder): ValueHolder.ReferenceHolder</p>"},{"location":"api/shark/-hprof-writer-helper/object-array-of/","title":"Object array of","text":"<p>//leakcanary/shark/HprofWriterHelper/objectArrayOf</p>"},{"location":"api/shark/-hprof-writer-helper/object-array-of/#objectarrayof","title":"objectArrayOf","text":"<p>fun objectArrayOf(classId: Long, vararg elements: ValueHolder.ReferenceHolder): ValueHolder.ReferenceHolder</p>"},{"location":"api/shark/-hprof-writer-helper/object-array/","title":"Object array","text":"<p>//leakcanary/shark/HprofWriterHelper/objectArray</p>"},{"location":"api/shark/-hprof-writer-helper/object-array/#objectarray","title":"objectArray","text":"<p>fun objectArray(vararg elements: ValueHolder.ReferenceHolder): ValueHolder.ReferenceHolder</p> <p>fun objectArray(classId: Long, array: LongArray): Long</p>"},{"location":"api/shark/-hprof-writer-helper/primitive-long-array/","title":"Primitive long array","text":"<p>//leakcanary/shark/HprofWriterHelper/primitiveLongArray</p>"},{"location":"api/shark/-hprof-writer-helper/primitive-long-array/#primitivelongarray","title":"primitiveLongArray","text":"<p>fun primitiveLongArray(array: LongArray): Long</p>"},{"location":"api/shark/-hprof-writer-helper/string-record/","title":"String record","text":"<p>//leakcanary/shark/HprofWriterHelper/stringRecord</p>"},{"location":"api/shark/-hprof-writer-helper/string-record/#stringrecord","title":"stringRecord","text":"<p>fun stringRecord(name: String): HprofRecord.StringRecord</p>"},{"location":"api/shark/-hprof-writer-helper/string/","title":"String","text":"<p>//leakcanary/shark/HprofWriterHelper/string</p>"},{"location":"api/shark/-hprof-writer-helper/string/#string","title":"string","text":"<p>fun string(string: String): ValueHolder.ReferenceHolder</p>"},{"location":"api/shark/-hprof-writer-helper/watched-instance/","title":"Watched instance","text":"<p>//leakcanary/shark/HprofWriterHelper/watchedInstance</p>"},{"location":"api/shark/-hprof-writer-helper/watched-instance/#watchedinstance","title":"watchedInstance","text":"<p>infix fun String.watchedInstance(block: HprofWriterHelper.InstanceAndClassDefinition.() -&gt; Unit): ValueHolder.ReferenceHolder</p>"},{"location":"api/shark/-hprof-writer-helper/-class-definition/","title":"Index","text":"<p>//leakcanary/shark/HprofWriterHelper/ClassDefinition</p>"},{"location":"api/shark/-hprof-writer-helper/-class-definition/#classdefinition","title":"ClassDefinition","text":"<p>inner class ClassDefinition</p>"},{"location":"api/shark/-hprof-writer-helper/-class-definition/#constructors","title":"Constructors","text":"ClassDefinition fun ClassDefinition()"},{"location":"api/shark/-hprof-writer-helper/-class-definition/#properties","title":"Properties","text":"Name Summary staticField val staticField: LinkedHashMap&lt;String, ValueHolder&gt;"},{"location":"api/shark/-hprof-writer-helper/-class-definition/-class-definition/","title":"class definition","text":"<p>//leakcanary/shark/HprofWriterHelper/ClassDefinition/ClassDefinition</p>"},{"location":"api/shark/-hprof-writer-helper/-class-definition/-class-definition/#classdefinition","title":"ClassDefinition","text":"<p>fun ClassDefinition()</p>"},{"location":"api/shark/-hprof-writer-helper/-class-definition/static-field/","title":"Static field","text":"<p>//leakcanary/shark/HprofWriterHelper/ClassDefinition/staticField</p>"},{"location":"api/shark/-hprof-writer-helper/-class-definition/static-field/#staticfield","title":"staticField","text":"<p>val staticField: LinkedHashMap&lt;String, ValueHolder&gt;</p>"},{"location":"api/shark/-hprof-writer-helper/-instance-and-class-definition/","title":"Index","text":"<p>//leakcanary/shark/HprofWriterHelper/InstanceAndClassDefinition</p>"},{"location":"api/shark/-hprof-writer-helper/-instance-and-class-definition/#instanceandclassdefinition","title":"InstanceAndClassDefinition","text":"<p>inner class InstanceAndClassDefinition</p>"},{"location":"api/shark/-hprof-writer-helper/-instance-and-class-definition/#constructors","title":"Constructors","text":"InstanceAndClassDefinition fun InstanceAndClassDefinition()"},{"location":"api/shark/-hprof-writer-helper/-instance-and-class-definition/#properties","title":"Properties","text":"Name Summary field val field: LinkedHashMap&lt;String, ValueHolder&gt; staticField val staticField: LinkedHashMap&lt;String, ValueHolder&gt;"},{"location":"api/shark/-hprof-writer-helper/-instance-and-class-definition/-instance-and-class-definition/","title":"instance and class definition","text":"<p>//leakcanary/shark/HprofWriterHelper/InstanceAndClassDefinition/InstanceAndClassDefinition</p>"},{"location":"api/shark/-hprof-writer-helper/-instance-and-class-definition/-instance-and-class-definition/#instanceandclassdefinition","title":"InstanceAndClassDefinition","text":"<p>fun InstanceAndClassDefinition()</p>"},{"location":"api/shark/-hprof-writer-helper/-instance-and-class-definition/field/","title":"Field","text":"<p>//leakcanary/shark/HprofWriterHelper/InstanceAndClassDefinition/field</p>"},{"location":"api/shark/-hprof-writer-helper/-instance-and-class-definition/field/#field","title":"field","text":"<p>val field: LinkedHashMap&lt;String, ValueHolder&gt;</p>"},{"location":"api/shark/-hprof-writer-helper/-instance-and-class-definition/static-field/","title":"Static field","text":"<p>//leakcanary/shark/HprofWriterHelper/InstanceAndClassDefinition/staticField</p>"},{"location":"api/shark/-hprof-writer-helper/-instance-and-class-definition/static-field/#staticfield","title":"staticField","text":"<p>val staticField: LinkedHashMap&lt;String, ValueHolder&gt;</p>"},{"location":"api/shark/-ignored-reference-matcher/","title":"Index","text":"<p>//leakcanary/shark/IgnoredReferenceMatcher</p>"},{"location":"api/shark/-ignored-reference-matcher/#ignoredreferencematcher","title":"IgnoredReferenceMatcher","text":"<p>class IgnoredReferenceMatcher(val pattern: ReferencePattern) : ReferenceMatcher</p> <p>IgnoredReferenceMatcher should be used to match references that cannot ever create leaks. The shortest path finder will never go through matching references.</p>"},{"location":"api/shark/-ignored-reference-matcher/#constructors","title":"Constructors","text":"IgnoredReferenceMatcher fun IgnoredReferenceMatcher(pattern: ReferencePattern)"},{"location":"api/shark/-ignored-reference-matcher/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-ignored-reference-matcher/#properties","title":"Properties","text":"Name Summary pattern open override val pattern: ReferencePatternThe pattern that references will be matched against."},{"location":"api/shark/-ignored-reference-matcher/-ignored-reference-matcher/","title":"ignored reference matcher","text":"<p>//leakcanary/shark/IgnoredReferenceMatcher/IgnoredReferenceMatcher</p>"},{"location":"api/shark/-ignored-reference-matcher/-ignored-reference-matcher/#ignoredreferencematcher","title":"IgnoredReferenceMatcher","text":"<p>fun IgnoredReferenceMatcher(pattern: ReferencePattern)</p>"},{"location":"api/shark/-ignored-reference-matcher/pattern/","title":"Pattern","text":"<p>//leakcanary/shark/IgnoredReferenceMatcher/pattern</p>"},{"location":"api/shark/-ignored-reference-matcher/pattern/#pattern","title":"pattern","text":"<p>open override val pattern: ReferencePattern</p> <p>The pattern that references will be matched against.</p>"},{"location":"api/shark/-ignored-reference-matcher/to-string/","title":"To string","text":"<p>//leakcanary/shark/IgnoredReferenceMatcher/toString</p>"},{"location":"api/shark/-ignored-reference-matcher/to-string/#tostring","title":"toString","text":"<p>open override fun toString(): String</p>"},{"location":"api/shark/-interactive-command/","title":"Index","text":"<p>//leakcanary/shark/InteractiveCommand</p>"},{"location":"api/shark/-interactive-command/#interactivecommand","title":"InteractiveCommand","text":"<p>class InteractiveCommand : CliktCommand</p>"},{"location":"api/shark/-interactive-command/#constructors","title":"Constructors","text":"InteractiveCommand fun InteractiveCommand()"},{"location":"api/shark/-interactive-command/#types","title":"Types","text":"Name Summary COMMAND enum COMMAND : Enum&lt;InteractiveCommand.COMMAND&gt;"},{"location":"api/shark/-interactive-command/#functions","title":"Functions","text":"Name Summary aliases open fun aliases(): Map&lt;String, List&lt;String&gt;&gt; getFormattedHelp open fun getFormattedHelp(): String getFormattedUsage open fun getFormattedUsage(): String issueMessage fun issueMessage(message: String) main fun main(argv: Array&lt;String&gt;)fun main(argv: List&lt;String&gt;) parse fun parse(argv: Array&lt;String&gt;, parentContext: Context?)fun parse(argv: List&lt;String&gt;, parentContext: Context?) registerArgument fun registerArgument(argument: Argument) registeredSubcommandNames fun registeredSubcommandNames(): List&lt;String&gt; registerOption open override fun registerOption(option: GroupableOption)fun registerOption(option: Option) registerOptionGroup fun registerOptionGroup(group: ParameterGroup) run open override fun run() toString open override fun toString(): String"},{"location":"api/shark/-interactive-command/#properties","title":"Properties","text":"Name Summary commandHelp val commandHelp: String commandHelpEpilog val commandHelpEpilog: String commandName val commandName: String context val context: Context helpTags val helpTags: Map&lt;String, String&gt; invokeWithoutSubcommand val invokeWithoutSubcommand: Boolean messages val messages: List&lt;String&gt; printHelpOnEmptyArgs val printHelpOnEmptyArgs: Boolean"},{"location":"api/shark/-interactive-command/-interactive-command/","title":"interactive command","text":"<p>//leakcanary/shark/InteractiveCommand/InteractiveCommand</p>"},{"location":"api/shark/-interactive-command/-interactive-command/#interactivecommand","title":"InteractiveCommand","text":"<p>fun InteractiveCommand()</p>"},{"location":"api/shark/-interactive-command/run/","title":"Run","text":"<p>//leakcanary/shark/InteractiveCommand/run</p>"},{"location":"api/shark/-interactive-command/run/#run","title":"run","text":"<p>open override fun run()</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/","title":"Index","text":"<p>//leakcanary/shark/InteractiveCommand/COMMAND</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/#command","title":"COMMAND","text":"<p>enum COMMAND : Enum&lt;InteractiveCommand.COMMAND&gt;</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/#entries","title":"Entries","text":"EXIT EXIT(\"exit\", \"Exit this interactive prompt.\") HELP HELP(\"help\", \"Show this message.\") DETAILED_PATH_TO_INSTANCE DETAILED_PATH_TO_INSTANCE(\"~&gt;instance\", \"CLASS_NAME@ID\", \"Show path from GC Roots to instance, highlighting suspect references.\") PATH_TO_INSTANCE PATH_TO_INSTANCE(\"-&gt;instance\", \"CLASS_NAME@ID\", \"Show path from GC Roots to instance.\") ARRAY ARRAY(\"array\", \"CLASS_NAME@ID\", \"Show array instance with a matching CLASS_NAME and Object ID.\") INSTANCE INSTANCE(\"instance\", \"CLASS_NAME@ID\", \"Show instance with a matching CLASS_NAME and Object ID.\") CLASS CLASS(\"class\", \"NAME@ID\", \"Show class with a matching NAME and Object ID.\") ANALYZE ANALYZE(\"analyze\", \"Analyze the heap dump.\")"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/#properties","title":"Properties","text":"Name Summary commandName val commandName: String help val help: String name val name: String ordinal val ordinal: Int pattern val pattern: String patternHelp val patternHelp: String suffix val suffix: String"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/command-name/","title":"Command name","text":"<p>//leakcanary/shark/InteractiveCommand/COMMAND/commandName</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/command-name/#commandname","title":"commandName","text":"<p>val commandName: String</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/help/","title":"Help","text":"<p>//leakcanary/shark/InteractiveCommand/COMMAND/help</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/help/#help","title":"help","text":"<p>val help: String</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/pattern-help/","title":"Pattern help","text":"<p>//leakcanary/shark/InteractiveCommand/COMMAND/patternHelp</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/pattern-help/#patternhelp","title":"patternHelp","text":"<p>val patternHelp: String</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/pattern/","title":"Pattern","text":"<p>//leakcanary/shark/InteractiveCommand/COMMAND/pattern</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/pattern/#pattern","title":"pattern","text":"<p>val pattern: String</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/suffix/","title":"Suffix","text":"<p>//leakcanary/shark/InteractiveCommand/COMMAND/suffix</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/suffix/#suffix","title":"suffix","text":"<p>val suffix: String</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/to-string/","title":"To string","text":"<p>//leakcanary/shark/InteractiveCommand/COMMAND/toString</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/to-string/#tostring","title":"toString","text":"<p>open override fun toString(): String</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-a-n-a-l-y-z-e/","title":"Index","text":"<p>//leakcanary/shark/InteractiveCommand/COMMAND/ANALYZE</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-a-n-a-l-y-z-e/#analyze","title":"ANALYZE","text":"<p>ANALYZE(\"analyze\", \"Analyze the heap dump.\")</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-a-n-a-l-y-z-e/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-a-n-a-l-y-z-e/#properties","title":"Properties","text":"Name Summary commandName val commandName: String help val help: String name val name: String ordinal val ordinal: Int pattern val pattern: String patternHelp val patternHelp: String suffix val suffix: String"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-a-r-r-a-y/","title":"Index","text":"<p>//leakcanary/shark/InteractiveCommand/COMMAND/ARRAY</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-a-r-r-a-y/#array","title":"ARRAY","text":"<p>ARRAY(\"array\", \"CLASS_NAME@ID\", \"Show array instance with a matching CLASS_NAME and Object ID.\")</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-a-r-r-a-y/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-a-r-r-a-y/#properties","title":"Properties","text":"Name Summary commandName val commandName: String help val help: String name val name: String ordinal val ordinal: Int pattern val pattern: String patternHelp val patternHelp: String suffix val suffix: String"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-c-l-a-s-s/","title":"Index","text":"<p>//leakcanary/shark/InteractiveCommand/COMMAND/CLASS</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-c-l-a-s-s/#class","title":"CLASS","text":"<p>CLASS(\"class\", \"NAME@ID\", \"Show class with a matching NAME and Object ID.\")</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-c-l-a-s-s/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-c-l-a-s-s/#properties","title":"Properties","text":"Name Summary commandName val commandName: String help val help: String name val name: String ordinal val ordinal: Int pattern val pattern: String patternHelp val patternHelp: String suffix val suffix: String"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-companion/","title":"Index","text":"<p>//leakcanary/shark/InteractiveCommand/COMMAND/Companion</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-companion/#functions","title":"Functions","text":"Name Summary matchesCommand infix fun String.matchesCommand(command: InteractiveCommand.COMMAND): Boolean"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-companion/matches-command/","title":"Matches command","text":"<p>//leakcanary/shark/InteractiveCommand/COMMAND/Companion/matchesCommand</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-companion/matches-command/#matchescommand","title":"matchesCommand","text":"<p>infix fun String.matchesCommand(command: InteractiveCommand.COMMAND): Boolean</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-d-e-t-a-i-l-e-d_-p-a-t-h_-t-o_-i-n-s-t-a-n-c-e/","title":"Index","text":"<p>//leakcanary/shark/InteractiveCommand/COMMAND/DETAILED_PATH_TO_INSTANCE</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-d-e-t-a-i-l-e-d_-p-a-t-h_-t-o_-i-n-s-t-a-n-c-e/#detailed_path_to_instance","title":"DETAILED_PATH_TO_INSTANCE","text":"<p>DETAILED_PATH_TO_INSTANCE(\"~&gt;instance\", \"CLASS_NAME@ID\", \"Show path from GC Roots to instance, highlighting suspect references.\")</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-d-e-t-a-i-l-e-d_-p-a-t-h_-t-o_-i-n-s-t-a-n-c-e/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-d-e-t-a-i-l-e-d_-p-a-t-h_-t-o_-i-n-s-t-a-n-c-e/#properties","title":"Properties","text":"Name Summary commandName val commandName: String help val help: String name val name: String ordinal val ordinal: Int pattern val pattern: String patternHelp val patternHelp: String suffix val suffix: String"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-e-x-i-t/","title":"Index","text":"<p>//leakcanary/shark/InteractiveCommand/COMMAND/EXIT</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-e-x-i-t/#exit","title":"EXIT","text":"<p>EXIT(\"exit\", \"Exit this interactive prompt.\")</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-e-x-i-t/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-e-x-i-t/#properties","title":"Properties","text":"Name Summary commandName val commandName: String help val help: String name val name: String ordinal val ordinal: Int pattern val pattern: String patternHelp val patternHelp: String suffix val suffix: String"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-h-e-l-p/","title":"Index","text":"<p>//leakcanary/shark/InteractiveCommand/COMMAND/HELP</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-h-e-l-p/#help","title":"HELP","text":"<p>HELP(\"help\", \"Show this message.\")</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-h-e-l-p/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-h-e-l-p/#properties","title":"Properties","text":"Name Summary commandName val commandName: String help val help: String name val name: String ordinal val ordinal: Int pattern val pattern: String patternHelp val patternHelp: String suffix val suffix: String"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-i-n-s-t-a-n-c-e/","title":"Index","text":"<p>//leakcanary/shark/InteractiveCommand/COMMAND/INSTANCE</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-i-n-s-t-a-n-c-e/#instance","title":"INSTANCE","text":"<p>INSTANCE(\"instance\", \"CLASS_NAME@ID\", \"Show instance with a matching CLASS_NAME and Object ID.\")</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-i-n-s-t-a-n-c-e/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-i-n-s-t-a-n-c-e/#properties","title":"Properties","text":"Name Summary commandName val commandName: String help val help: String name val name: String ordinal val ordinal: Int pattern val pattern: String patternHelp val patternHelp: String suffix val suffix: String"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-p-a-t-h_-t-o_-i-n-s-t-a-n-c-e/","title":"Index","text":"<p>//leakcanary/shark/InteractiveCommand/COMMAND/PATH_TO_INSTANCE</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-p-a-t-h_-t-o_-i-n-s-t-a-n-c-e/#path_to_instance","title":"PATH_TO_INSTANCE","text":"<p>PATH_TO_INSTANCE(\"-&gt;instance\", \"CLASS_NAME@ID\", \"Show path from GC Roots to instance.\")</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-p-a-t-h_-t-o_-i-n-s-t-a-n-c-e/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-p-a-t-h_-t-o_-i-n-s-t-a-n-c-e/#properties","title":"Properties","text":"Name Summary commandName val commandName: String help val help: String name val name: String ordinal val ordinal: Int pattern val pattern: String patternHelp val patternHelp: String suffix val suffix: String"},{"location":"api/shark/-jvm-test-heap-dumper/","title":"Index","text":"<p>//leakcanary/shark/JvmTestHeapDumper</p>"},{"location":"api/shark/-jvm-test-heap-dumper/#jvmtestheapdumper","title":"JvmTestHeapDumper","text":"<p>object JvmTestHeapDumper</p>"},{"location":"api/shark/-jvm-test-heap-dumper/#functions","title":"Functions","text":"Name Summary dumpHeap fun dumpHeap(fileName: String)"},{"location":"api/shark/-jvm-test-heap-dumper/dump-heap/","title":"Dump heap","text":"<p>//leakcanary/shark/JvmTestHeapDumper/dumpHeap</p>"},{"location":"api/shark/-jvm-test-heap-dumper/dump-heap/#dumpheap","title":"dumpHeap","text":"<p>fun dumpHeap(fileName: String)</p>"},{"location":"api/shark/-keyed-weak-reference-finder/","title":"Index","text":"<p>//leakcanary/shark/KeyedWeakReferenceFinder</p>"},{"location":"api/shark/-keyed-weak-reference-finder/#keyedweakreferencefinder","title":"KeyedWeakReferenceFinder","text":"<p>object KeyedWeakReferenceFinder : LeakingObjectFinder</p> <p>Finds all objects tracked by a KeyedWeakReference, ie all objects that were passed to ObjectWatcher.watch.</p>"},{"location":"api/shark/-keyed-weak-reference-finder/#functions","title":"Functions","text":"Name Summary findLeakingObjectIds open override fun findLeakingObjectIds(graph: HeapGraph): Set&lt;Long&gt;For a given heap graph, returns a set of object ids for the objects that are leaking. heapDumpUptimeMillis fun heapDumpUptimeMillis(graph: HeapGraph): Long?"},{"location":"api/shark/-keyed-weak-reference-finder/find-leaking-object-ids/","title":"Find leaking object ids","text":"<p>//leakcanary/shark/KeyedWeakReferenceFinder/findLeakingObjectIds</p>"},{"location":"api/shark/-keyed-weak-reference-finder/find-leaking-object-ids/#findleakingobjectids","title":"findLeakingObjectIds","text":"<p>open override fun findLeakingObjectIds(graph: HeapGraph): Set&lt;Long&gt;</p> <p>For a given heap graph, returns a set of object ids for the objects that are leaking.</p>"},{"location":"api/shark/-keyed-weak-reference-finder/heap-dump-uptime-millis/","title":"Heap dump uptime millis","text":"<p>//leakcanary/shark/KeyedWeakReferenceFinder/heapDumpUptimeMillis</p>"},{"location":"api/shark/-keyed-weak-reference-finder/heap-dump-uptime-millis/#heapdumpuptimemillis","title":"heapDumpUptimeMillis","text":"<p>fun heapDumpUptimeMillis(graph: HeapGraph): Long?</p>"},{"location":"api/shark/-leak/","title":"Index","text":"<p>//leakcanary/shark/Leak</p>"},{"location":"api/shark/-leak/#leak","title":"Leak","text":"<p>sealed class Leak : Serializable</p> <p>A leak found by HeapAnalyzer, either an ApplicationLeak or a LibraryLeak.</p>"},{"location":"api/shark/-leak/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-leak/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-leak/#properties","title":"Properties","text":"Name Summary leakTraces abstract val leakTraces: List&lt;LeakTrace&gt;Group of leak traces which share the same leak signature. shortDescription abstract val shortDescription: String signature abstract val signature: StringA unique SHA1 hash that represents this group of leak traces. totalRetainedHeapByteSize val totalRetainedHeapByteSize: Int?Sum of LeakTrace.retainedHeapByteSize for all elements in leakTraces. Null if the retained heap size was not computed. totalRetainedObjectCount val totalRetainedObjectCount: Int?Sum of LeakTrace.retainedObjectCount for all elements in leakTraces. Null if the retained heap size was not computed."},{"location":"api/shark/-leak/#inheritors","title":"Inheritors","text":"Name LibraryLeak ApplicationLeak"},{"location":"api/shark/-leak/leak-traces/","title":"Leak traces","text":"<p>//leakcanary/shark/Leak/leakTraces</p>"},{"location":"api/shark/-leak/leak-traces/#leaktraces","title":"leakTraces","text":"<p>abstract val leakTraces: List&lt;LeakTrace&gt;</p> <p>Group of leak traces which share the same leak signature.</p>"},{"location":"api/shark/-leak/short-description/","title":"Short description","text":"<p>//leakcanary/shark/Leak/shortDescription</p>"},{"location":"api/shark/-leak/short-description/#shortdescription","title":"shortDescription","text":"<p>abstract val shortDescription: String</p>"},{"location":"api/shark/-leak/signature/","title":"Signature","text":"<p>//leakcanary/shark/Leak/signature</p>"},{"location":"api/shark/-leak/signature/#signature","title":"signature","text":"<p>abstract val signature: String</p> <p>A unique SHA1 hash that represents this group of leak traces.</p> <p>For ApplicationLeak this is based on LeakTrace.signature and for LibraryLeak this is based on LibraryLeak.pattern.</p>"},{"location":"api/shark/-leak/to-string/","title":"To string","text":"<p>//leakcanary/shark/Leak/toString</p>"},{"location":"api/shark/-leak/to-string/#tostring","title":"toString","text":"<p>open override fun toString(): String</p>"},{"location":"api/shark/-leak/total-retained-heap-byte-size/","title":"Total retained heap byte size","text":"<p>//leakcanary/shark/Leak/totalRetainedHeapByteSize</p>"},{"location":"api/shark/-leak/total-retained-heap-byte-size/#totalretainedheapbytesize","title":"totalRetainedHeapByteSize","text":"<p>val totalRetainedHeapByteSize: Int?</p> <p>Sum of LeakTrace.retainedHeapByteSize for all elements in leakTraces. Null if the retained heap size was not computed.</p>"},{"location":"api/shark/-leak/total-retained-object-count/","title":"Total retained object count","text":"<p>//leakcanary/shark/Leak/totalRetainedObjectCount</p>"},{"location":"api/shark/-leak/total-retained-object-count/#totalretainedobjectcount","title":"totalRetainedObjectCount","text":"<p>val totalRetainedObjectCount: Int?</p> <p>Sum of LeakTrace.retainedObjectCount for all elements in leakTraces. Null if the retained heap size was not computed.</p>"},{"location":"api/shark/-leak/-companion/","title":"Index","text":"<p>//leakcanary/shark/Leak/Companion</p>"},{"location":"api/shark/-leak/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-leak-trace/","title":"Index","text":"<p>//leakcanary/shark/LeakTrace</p>"},{"location":"api/shark/-leak-trace/#leaktrace","title":"LeakTrace","text":"<p>data class LeakTrace(val gcRootType: LeakTrace.GcRootType, val referencePath: List&lt;LeakTraceReference&gt;, val leakingObject: LeakTraceObject) : Serializable</p> <p>The best strong reference path from a GC root to the leaking object. \"Best\" here means the shortest prioritized path. A large number of distinct paths can generally be found leading to a leaking object. Shark prioritizes paths that don\u2019t go through known LibraryLeakReferenceMatcher (because those are known to create leaks so it\u2019s more interesting to find other paths causing leaks), then it prioritize paths that don\u2019t go through java local gc roots (because those are harder to reason about). Taking those priorities into account, finding the shortest path means there are less LeakTraceReference that can be suspected to cause the leak.</p>"},{"location":"api/shark/-leak-trace/#constructors","title":"Constructors","text":"LeakTrace fun LeakTrace(gcRootType: LeakTrace.GcRootType, referencePath: List&lt;LeakTraceReference&gt;, leakingObject: LeakTraceObject)"},{"location":"api/shark/-leak-trace/#types","title":"Types","text":"Name Summary Companion object Companion GcRootType enum GcRootType : Enum&lt;LeakTrace.GcRootType&gt;"},{"location":"api/shark/-leak-trace/#functions","title":"Functions","text":"Name Summary referencePathElementIsSuspect fun referencePathElementIsSuspect(index: Int): BooleanReturns true if the referencePath element at the provided index contains a reference that is suspected to cause the leak, ie if index is greater than or equal to the index of the LeakTraceReference of the last non leaking object and strictly lower than the index of the LeakTraceReference of the first leaking object. toSimplePathString fun toSimplePathString(): String toString open override fun toString(): String"},{"location":"api/shark/-leak-trace/#properties","title":"Properties","text":"Name Summary gcRootType val gcRootType: LeakTrace.GcRootTypeThe Garbage Collection root that references the LeakTraceReference.originObject in the first LeakTraceReference of referencePath. leakingObject val leakingObject: LeakTraceObject referencePath val referencePath: List&lt;LeakTraceReference&gt; retainedHeapByteSize val retainedHeapByteSize: Int?The minimum number of bytes which would be freed if the leak was fixed. Null if the retained heap size was not computed. retainedObjectCount val retainedObjectCount: Int?The minimum number of objects which would be unreachable if the leak was fixed. Null if the retained heap size was not computed. signature val signature: StringA SHA1 hash that represents this leak trace. This can be useful to group together similar leak traces. suspectReferenceSubpath val suspectReferenceSubpath: Sequence&lt;LeakTraceReference&gt;A part of referencePath that contains the references suspected to cause the leak. Starts at the last non leaking object and ends before the first leaking object."},{"location":"api/shark/-leak-trace/-leak-trace/","title":"leak trace","text":"<p>//leakcanary/shark/LeakTrace/LeakTrace</p>"},{"location":"api/shark/-leak-trace/-leak-trace/#leaktrace","title":"LeakTrace","text":"<p>fun LeakTrace(gcRootType: LeakTrace.GcRootType, referencePath: List&lt;LeakTraceReference&gt;, leakingObject: LeakTraceObject)</p>"},{"location":"api/shark/-leak-trace/gc-root-type/","title":"Gc root type","text":"<p>//leakcanary/shark/LeakTrace/gcRootType</p>"},{"location":"api/shark/-leak-trace/gc-root-type/#gcroottype","title":"gcRootType","text":"<p>val gcRootType: LeakTrace.GcRootType</p> <p>The Garbage Collection root that references the LeakTraceReference.originObject in the first LeakTraceReference of referencePath.</p>"},{"location":"api/shark/-leak-trace/leaking-object/","title":"Leaking object","text":"<p>//leakcanary/shark/LeakTrace/leakingObject</p>"},{"location":"api/shark/-leak-trace/leaking-object/#leakingobject","title":"leakingObject","text":"<p>val leakingObject: LeakTraceObject</p>"},{"location":"api/shark/-leak-trace/reference-path-element-is-suspect/","title":"Reference path element is suspect","text":"<p>//leakcanary/shark/LeakTrace/referencePathElementIsSuspect</p>"},{"location":"api/shark/-leak-trace/reference-path-element-is-suspect/#referencepathelementissuspect","title":"referencePathElementIsSuspect","text":"<p>fun referencePathElementIsSuspect(index: Int): Boolean</p> <p>Returns true if the referencePath element at the provided index contains a reference that is suspected to cause the leak, ie if index is greater than or equal to the index of the LeakTraceReference of the last non leaking object and strictly lower than the index of the LeakTraceReference of the first leaking object.</p>"},{"location":"api/shark/-leak-trace/reference-path/","title":"Reference path","text":"<p>//leakcanary/shark/LeakTrace/referencePath</p>"},{"location":"api/shark/-leak-trace/reference-path/#referencepath","title":"referencePath","text":"<p>val referencePath: List&lt;LeakTraceReference&gt;</p>"},{"location":"api/shark/-leak-trace/retained-heap-byte-size/","title":"Retained heap byte size","text":"<p>//leakcanary/shark/LeakTrace/retainedHeapByteSize</p>"},{"location":"api/shark/-leak-trace/retained-heap-byte-size/#retainedheapbytesize","title":"retainedHeapByteSize","text":"<p>val retainedHeapByteSize: Int?</p> <p>The minimum number of bytes which would be freed if the leak was fixed. Null if the retained heap size was not computed.</p>"},{"location":"api/shark/-leak-trace/retained-object-count/","title":"Retained object count","text":"<p>//leakcanary/shark/LeakTrace/retainedObjectCount</p>"},{"location":"api/shark/-leak-trace/retained-object-count/#retainedobjectcount","title":"retainedObjectCount","text":"<p>val retainedObjectCount: Int?</p> <p>The minimum number of objects which would be unreachable if the leak was fixed. Null if the retained heap size was not computed.</p>"},{"location":"api/shark/-leak-trace/signature/","title":"Signature","text":"<p>//leakcanary/shark/LeakTrace/signature</p>"},{"location":"api/shark/-leak-trace/signature/#signature","title":"signature","text":"<p>val signature: String</p> <p>A SHA1 hash that represents this leak trace. This can be useful to group together similar leak traces.</p> <p>The signature is a hash of suspectReferenceSubpath.</p>"},{"location":"api/shark/-leak-trace/suspect-reference-subpath/","title":"Suspect reference subpath","text":"<p>//leakcanary/shark/LeakTrace/suspectReferenceSubpath</p>"},{"location":"api/shark/-leak-trace/suspect-reference-subpath/#suspectreferencesubpath","title":"suspectReferenceSubpath","text":"<p>val suspectReferenceSubpath: Sequence&lt;LeakTraceReference&gt;</p> <p>A part of referencePath that contains the references suspected to cause the leak. Starts at the last non leaking object and ends before the first leaking object.</p>"},{"location":"api/shark/-leak-trace/to-simple-path-string/","title":"To simple path string","text":"<p>//leakcanary/shark/LeakTrace/toSimplePathString</p>"},{"location":"api/shark/-leak-trace/to-simple-path-string/#tosimplepathstring","title":"toSimplePathString","text":"<p>fun toSimplePathString(): String</p>"},{"location":"api/shark/-leak-trace/to-string/","title":"To string","text":"<p>//leakcanary/shark/LeakTrace/toString</p>"},{"location":"api/shark/-leak-trace/to-string/#tostring","title":"toString","text":"<p>open override fun toString(): String</p>"},{"location":"api/shark/-leak-trace/-companion/","title":"Index","text":"<p>//leakcanary/shark/LeakTrace/Companion</p>"},{"location":"api/shark/-leak-trace/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/","title":"Index","text":"<p>//leakcanary/shark/LeakTrace/GcRootType</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/#gcroottype","title":"GcRootType","text":"<p>enum GcRootType : Enum&lt;LeakTrace.GcRootType&gt;</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/#entries","title":"Entries","text":"JNI_MONITOR JNI_MONITOR(\"Root JNI monitor\") THREAD_OBJECT THREAD_OBJECT(\"Thread object\") MONITOR_USED MONITOR_USED(\"Monitor (anything that called the wait() or notify() methods, or that is synchronized.)\") THREAD_BLOCK THREAD_BLOCK(\"Thread block\") STICKY_CLASS STICKY_CLASS(\"System class\") NATIVE_STACK NATIVE_STACK(\"Input or output parameters in native code\") JAVA_FRAME JAVA_FRAME(\"Java local variable\") JNI_LOCAL JNI_LOCAL(\"Local variable in native code\") JNI_GLOBAL JNI_GLOBAL(\"Global variable in native code\")"},{"location":"api/shark/-leak-trace/-gc-root-type/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-leak-trace/-gc-root-type/#properties","title":"Properties","text":"Name Summary description val description: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace/-gc-root-type/description/","title":"Description","text":"<p>//leakcanary/shark/LeakTrace/GcRootType/description</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/description/#description","title":"description","text":"<p>val description: String</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-companion/","title":"Index","text":"<p>//leakcanary/shark/LeakTrace/GcRootType/Companion</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-companion/#functions","title":"Functions","text":"Name Summary fromGcRoot fun fromGcRoot(gcRoot: GcRoot): LeakTrace.GcRootType"},{"location":"api/shark/-leak-trace/-gc-root-type/-companion/from-gc-root/","title":"From gc root","text":"<p>//leakcanary/shark/LeakTrace/GcRootType/Companion/fromGcRoot</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-companion/from-gc-root/#fromgcroot","title":"fromGcRoot","text":"<p>fun fromGcRoot(gcRoot: GcRoot): LeakTrace.GcRootType</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-j-a-v-a_-f-r-a-m-e/","title":"Index","text":"<p>//leakcanary/shark/LeakTrace/GcRootType/JAVA_FRAME</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-j-a-v-a_-f-r-a-m-e/#java_frame","title":"JAVA_FRAME","text":"<p>JAVA_FRAME(\"Java local variable\")</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-j-a-v-a_-f-r-a-m-e/#properties","title":"Properties","text":"Name Summary description val description: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace/-gc-root-type/-j-n-i_-g-l-o-b-a-l/","title":"Index","text":"<p>//leakcanary/shark/LeakTrace/GcRootType/JNI_GLOBAL</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-j-n-i_-g-l-o-b-a-l/#jni_global","title":"JNI_GLOBAL","text":"<p>JNI_GLOBAL(\"Global variable in native code\")</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-j-n-i_-g-l-o-b-a-l/#properties","title":"Properties","text":"Name Summary description val description: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace/-gc-root-type/-j-n-i_-l-o-c-a-l/","title":"Index","text":"<p>//leakcanary/shark/LeakTrace/GcRootType/JNI_LOCAL</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-j-n-i_-l-o-c-a-l/#jni_local","title":"JNI_LOCAL","text":"<p>JNI_LOCAL(\"Local variable in native code\")</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-j-n-i_-l-o-c-a-l/#properties","title":"Properties","text":"Name Summary description val description: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace/-gc-root-type/-j-n-i_-m-o-n-i-t-o-r/","title":"Index","text":"<p>//leakcanary/shark/LeakTrace/GcRootType/JNI_MONITOR</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-j-n-i_-m-o-n-i-t-o-r/#jni_monitor","title":"JNI_MONITOR","text":"<p>JNI_MONITOR(\"Root JNI monitor\")</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-j-n-i_-m-o-n-i-t-o-r/#properties","title":"Properties","text":"Name Summary description val description: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace/-gc-root-type/-m-o-n-i-t-o-r_-u-s-e-d/","title":"Index","text":"<p>//leakcanary/shark/LeakTrace/GcRootType/MONITOR_USED</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-m-o-n-i-t-o-r_-u-s-e-d/#monitor_used","title":"MONITOR_USED","text":"<p>MONITOR_USED(\"Monitor (anything that called the wait() or notify() methods, or that is synchronized.)\")</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-m-o-n-i-t-o-r_-u-s-e-d/#properties","title":"Properties","text":"Name Summary description val description: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace/-gc-root-type/-n-a-t-i-v-e_-s-t-a-c-k/","title":"Index","text":"<p>//leakcanary/shark/LeakTrace/GcRootType/NATIVE_STACK</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-n-a-t-i-v-e_-s-t-a-c-k/#native_stack","title":"NATIVE_STACK","text":"<p>NATIVE_STACK(\"Input or output parameters in native code\")</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-n-a-t-i-v-e_-s-t-a-c-k/#properties","title":"Properties","text":"Name Summary description val description: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace/-gc-root-type/-s-t-i-c-k-y_-c-l-a-s-s/","title":"Index","text":"<p>//leakcanary/shark/LeakTrace/GcRootType/STICKY_CLASS</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-s-t-i-c-k-y_-c-l-a-s-s/#sticky_class","title":"STICKY_CLASS","text":"<p>STICKY_CLASS(\"System class\")</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-s-t-i-c-k-y_-c-l-a-s-s/#properties","title":"Properties","text":"Name Summary description val description: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace/-gc-root-type/-t-h-r-e-a-d_-b-l-o-c-k/","title":"Index","text":"<p>//leakcanary/shark/LeakTrace/GcRootType/THREAD_BLOCK</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-t-h-r-e-a-d_-b-l-o-c-k/#thread_block","title":"THREAD_BLOCK","text":"<p>THREAD_BLOCK(\"Thread block\")</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-t-h-r-e-a-d_-b-l-o-c-k/#properties","title":"Properties","text":"Name Summary description val description: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace/-gc-root-type/-t-h-r-e-a-d_-o-b-j-e-c-t/","title":"Index","text":"<p>//leakcanary/shark/LeakTrace/GcRootType/THREAD_OBJECT</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-t-h-r-e-a-d_-o-b-j-e-c-t/#thread_object","title":"THREAD_OBJECT","text":"<p>THREAD_OBJECT(\"Thread object\")</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-t-h-r-e-a-d_-o-b-j-e-c-t/#properties","title":"Properties","text":"Name Summary description val description: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace-object/","title":"Index","text":"<p>//leakcanary/shark/LeakTraceObject</p>"},{"location":"api/shark/-leak-trace-object/#leaktraceobject","title":"LeakTraceObject","text":"<p>data class LeakTraceObject(val type: LeakTraceObject.ObjectType, val className: String, val labels: Set&lt;String&gt;, val leakingStatus: LeakTraceObject.LeakingStatus, val leakingStatusReason: String, val retainedHeapByteSize: Int?, val retainedObjectCount: Int?) : Serializable</p>"},{"location":"api/shark/-leak-trace-object/#constructors","title":"Constructors","text":"LeakTraceObject fun LeakTraceObject(type: LeakTraceObject.ObjectType, className: String, labels: Set&lt;String&gt;, leakingStatus: LeakTraceObject.LeakingStatus, leakingStatusReason: String, retainedHeapByteSize: Int?, retainedObjectCount: Int?)"},{"location":"api/shark/-leak-trace-object/#types","title":"Types","text":"Name Summary Companion object Companion LeakingStatus enum LeakingStatus : Enum&lt;LeakTraceObject.LeakingStatus&gt; ObjectType enum ObjectType : Enum&lt;LeakTraceObject.ObjectType&gt;"},{"location":"api/shark/-leak-trace-object/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-leak-trace-object/#properties","title":"Properties","text":"Name Summary className val className: StringClass name of the object. The class name format is the same as what would be returned by Class.getName. classSimpleName val classSimpleName: StringReturns {@link #className} without the package, ie stripped of any string content before the last period (included). labels val labels: Set&lt;String&gt;Labels that were computed during analysis. A label provides extra information that helps understand the state of the leak trace object. leakingStatus val leakingStatus: LeakTraceObject.LeakingStatus leakingStatusReason val leakingStatusReason: String retainedHeapByteSize val retainedHeapByteSize: Int?The minimum number of bytes which would be freed if all references to this object were released. Not null only if the retained heap size was computed AND leakingStatus is equal to LeakingStatus.UNKNOWN or LeakingStatus.LEAKING. retainedObjectCount val retainedObjectCount: Int?The minimum number of objects which would be unreachable if all references to this object were released. Not null only if the retained heap size was computed AND leakingStatus is equal to LeakingStatus.UNKNOWN or LeakingStatus.LEAKING. type val type: LeakTraceObject.ObjectType typeName val typeName: String"},{"location":"api/shark/-leak-trace-object/-leak-trace-object/","title":"leak trace object","text":"<p>//leakcanary/shark/LeakTraceObject/LeakTraceObject</p>"},{"location":"api/shark/-leak-trace-object/-leak-trace-object/#leaktraceobject","title":"LeakTraceObject","text":"<p>fun LeakTraceObject(type: LeakTraceObject.ObjectType, className: String, labels: Set&lt;String&gt;, leakingStatus: LeakTraceObject.LeakingStatus, leakingStatusReason: String, retainedHeapByteSize: Int?, retainedObjectCount: Int?)</p>"},{"location":"api/shark/-leak-trace-object/class-name/","title":"Class name","text":"<p>//leakcanary/shark/LeakTraceObject/className</p>"},{"location":"api/shark/-leak-trace-object/class-name/#classname","title":"className","text":"<p>val className: String</p> <p>Class name of the object. The class name format is the same as what would be returned by Class.getName.</p>"},{"location":"api/shark/-leak-trace-object/class-simple-name/","title":"Class simple name","text":"<p>//leakcanary/shark/LeakTraceObject/classSimpleName</p>"},{"location":"api/shark/-leak-trace-object/class-simple-name/#classsimplename","title":"classSimpleName","text":"<p>val classSimpleName: String</p> <p>Returns {@link #className} without the package, ie stripped of any string content before the last period (included).</p>"},{"location":"api/shark/-leak-trace-object/labels/","title":"Labels","text":"<p>//leakcanary/shark/LeakTraceObject/labels</p>"},{"location":"api/shark/-leak-trace-object/labels/#labels","title":"labels","text":"<p>val labels: Set&lt;String&gt;</p> <p>Labels that were computed during analysis. A label provides extra information that helps understand the state of the leak trace object.</p>"},{"location":"api/shark/-leak-trace-object/leaking-status-reason/","title":"Leaking status reason","text":"<p>//leakcanary/shark/LeakTraceObject/leakingStatusReason</p>"},{"location":"api/shark/-leak-trace-object/leaking-status-reason/#leakingstatusreason","title":"leakingStatusReason","text":"<p>val leakingStatusReason: String</p>"},{"location":"api/shark/-leak-trace-object/leaking-status/","title":"Leaking status","text":"<p>//leakcanary/shark/LeakTraceObject/leakingStatus</p>"},{"location":"api/shark/-leak-trace-object/leaking-status/#leakingstatus","title":"leakingStatus","text":"<p>val leakingStatus: LeakTraceObject.LeakingStatus</p>"},{"location":"api/shark/-leak-trace-object/retained-heap-byte-size/","title":"Retained heap byte size","text":"<p>//leakcanary/shark/LeakTraceObject/retainedHeapByteSize</p>"},{"location":"api/shark/-leak-trace-object/retained-heap-byte-size/#retainedheapbytesize","title":"retainedHeapByteSize","text":"<p>val retainedHeapByteSize: Int?</p> <p>The minimum number of bytes which would be freed if all references to this object were released. Not null only if the retained heap size was computed AND leakingStatus is equal to LeakingStatus.UNKNOWN or LeakingStatus.LEAKING.</p>"},{"location":"api/shark/-leak-trace-object/retained-object-count/","title":"Retained object count","text":"<p>//leakcanary/shark/LeakTraceObject/retainedObjectCount</p>"},{"location":"api/shark/-leak-trace-object/retained-object-count/#retainedobjectcount","title":"retainedObjectCount","text":"<p>val retainedObjectCount: Int?</p> <p>The minimum number of objects which would be unreachable if all references to this object were released. Not null only if the retained heap size was computed AND leakingStatus is equal to LeakingStatus.UNKNOWN or LeakingStatus.LEAKING.</p>"},{"location":"api/shark/-leak-trace-object/to-string/","title":"To string","text":"<p>//leakcanary/shark/LeakTraceObject/toString</p>"},{"location":"api/shark/-leak-trace-object/to-string/#tostring","title":"toString","text":"<p>open override fun toString(): String</p>"},{"location":"api/shark/-leak-trace-object/type-name/","title":"Type name","text":"<p>//leakcanary/shark/LeakTraceObject/typeName</p>"},{"location":"api/shark/-leak-trace-object/type-name/#typename","title":"typeName","text":"<p>val typeName: String</p>"},{"location":"api/shark/-leak-trace-object/type/","title":"Type","text":"<p>//leakcanary/shark/LeakTraceObject/type</p>"},{"location":"api/shark/-leak-trace-object/type/#type","title":"type","text":"<p>val type: LeakTraceObject.ObjectType</p>"},{"location":"api/shark/-leak-trace-object/-companion/","title":"Index","text":"<p>//leakcanary/shark/LeakTraceObject/Companion</p>"},{"location":"api/shark/-leak-trace-object/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-leak-trace-object/-leaking-status/","title":"Index","text":"<p>//leakcanary/shark/LeakTraceObject/LeakingStatus</p>"},{"location":"api/shark/-leak-trace-object/-leaking-status/#leakingstatus","title":"LeakingStatus","text":"<p>enum LeakingStatus : Enum&lt;LeakTraceObject.LeakingStatus&gt;</p>"},{"location":"api/shark/-leak-trace-object/-leaking-status/#entries","title":"Entries","text":"UNKNOWN UNKNOWN()No decision can be made about the provided object. LEAKING LEAKING()The object was no longer needed and therefore expected to be unreachable. NOT_LEAKING NOT_LEAKING()The object was needed and therefore expected to be reachable."},{"location":"api/shark/-leak-trace-object/-leaking-status/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace-object/-leaking-status/-l-e-a-k-i-n-g/","title":"Index","text":"<p>//leakcanary/shark/LeakTraceObject/LeakingStatus/LEAKING</p>"},{"location":"api/shark/-leak-trace-object/-leaking-status/-l-e-a-k-i-n-g/#leaking","title":"LEAKING","text":"<p>LEAKING()</p> <p>The object was no longer needed and therefore expected to be unreachable.</p>"},{"location":"api/shark/-leak-trace-object/-leaking-status/-l-e-a-k-i-n-g/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace-object/-leaking-status/-n-o-t_-l-e-a-k-i-n-g/","title":"Index","text":"<p>//leakcanary/shark/LeakTraceObject/LeakingStatus/NOT_LEAKING</p>"},{"location":"api/shark/-leak-trace-object/-leaking-status/-n-o-t_-l-e-a-k-i-n-g/#not_leaking","title":"NOT_LEAKING","text":"<p>NOT_LEAKING()</p> <p>The object was needed and therefore expected to be reachable.</p>"},{"location":"api/shark/-leak-trace-object/-leaking-status/-n-o-t_-l-e-a-k-i-n-g/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace-object/-leaking-status/-u-n-k-n-o-w-n/","title":"Index","text":"<p>//leakcanary/shark/LeakTraceObject/LeakingStatus/UNKNOWN</p>"},{"location":"api/shark/-leak-trace-object/-leaking-status/-u-n-k-n-o-w-n/#unknown","title":"UNKNOWN","text":"<p>UNKNOWN()</p> <p>No decision can be made about the provided object.</p>"},{"location":"api/shark/-leak-trace-object/-leaking-status/-u-n-k-n-o-w-n/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace-object/-object-type/","title":"Index","text":"<p>//leakcanary/shark/LeakTraceObject/ObjectType</p>"},{"location":"api/shark/-leak-trace-object/-object-type/#objecttype","title":"ObjectType","text":"<p>enum ObjectType : Enum&lt;LeakTraceObject.ObjectType&gt;</p>"},{"location":"api/shark/-leak-trace-object/-object-type/#entries","title":"Entries","text":"INSTANCE INSTANCE() ARRAY ARRAY() CLASS CLASS()"},{"location":"api/shark/-leak-trace-object/-object-type/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace-object/-object-type/-a-r-r-a-y/","title":"Index","text":"<p>//leakcanary/shark/LeakTraceObject/ObjectType/ARRAY</p>"},{"location":"api/shark/-leak-trace-object/-object-type/-a-r-r-a-y/#array","title":"ARRAY","text":"<p>ARRAY()</p>"},{"location":"api/shark/-leak-trace-object/-object-type/-a-r-r-a-y/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace-object/-object-type/-c-l-a-s-s/","title":"Index","text":"<p>//leakcanary/shark/LeakTraceObject/ObjectType/CLASS</p>"},{"location":"api/shark/-leak-trace-object/-object-type/-c-l-a-s-s/#class","title":"CLASS","text":"<p>CLASS()</p>"},{"location":"api/shark/-leak-trace-object/-object-type/-c-l-a-s-s/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace-object/-object-type/-i-n-s-t-a-n-c-e/","title":"Index","text":"<p>//leakcanary/shark/LeakTraceObject/ObjectType/INSTANCE</p>"},{"location":"api/shark/-leak-trace-object/-object-type/-i-n-s-t-a-n-c-e/#instance","title":"INSTANCE","text":"<p>INSTANCE()</p>"},{"location":"api/shark/-leak-trace-object/-object-type/-i-n-s-t-a-n-c-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace-reference/","title":"Index","text":"<p>//leakcanary/shark/LeakTraceReference</p>"},{"location":"api/shark/-leak-trace-reference/#leaktracereference","title":"LeakTraceReference","text":"<p>data class LeakTraceReference(val originObject: LeakTraceObject, val referenceType: LeakTraceReference.ReferenceType, val owningClassName: String, val referenceName: String) : Serializable</p> <p>A LeakTraceReference represents an origin LeakTraceObject and either a reference from that object to the LeakTraceObject in the next LeakTraceReference in LeakTrace.referencePath, or to LeakTrace.leakingObject if this is the last LeakTraceReference in LeakTrace.referencePath.</p>"},{"location":"api/shark/-leak-trace-reference/#constructors","title":"Constructors","text":"LeakTraceReference fun LeakTraceReference(originObject: LeakTraceObject, referenceType: LeakTraceReference.ReferenceType, owningClassName: String, referenceName: String)"},{"location":"api/shark/-leak-trace-reference/#types","title":"Types","text":"Name Summary Companion object Companion ReferenceType enum ReferenceType : Enum&lt;LeakTraceReference.ReferenceType&gt;"},{"location":"api/shark/-leak-trace-reference/#properties","title":"Properties","text":"Name Summary originObject val originObject: LeakTraceObject owningClassName val owningClassName: String owningClassSimpleName val owningClassSimpleName: StringReturns {@link #className} without the package, ie stripped of any string content before the last period (included). referenceDisplayName val referenceDisplayName: String referenceGenericName val referenceGenericName: String referenceName val referenceName: String referenceType val referenceType: LeakTraceReference.ReferenceType"},{"location":"api/shark/-leak-trace-reference/-leak-trace-reference/","title":"leak trace reference","text":"<p>//leakcanary/shark/LeakTraceReference/LeakTraceReference</p>"},{"location":"api/shark/-leak-trace-reference/-leak-trace-reference/#leaktracereference","title":"LeakTraceReference","text":"<p>fun LeakTraceReference(originObject: LeakTraceObject, referenceType: LeakTraceReference.ReferenceType, owningClassName: String, referenceName: String)</p>"},{"location":"api/shark/-leak-trace-reference/origin-object/","title":"Origin object","text":"<p>//leakcanary/shark/LeakTraceReference/originObject</p>"},{"location":"api/shark/-leak-trace-reference/origin-object/#originobject","title":"originObject","text":"<p>val originObject: LeakTraceObject</p>"},{"location":"api/shark/-leak-trace-reference/owning-class-name/","title":"Owning class name","text":"<p>//leakcanary/shark/LeakTraceReference/owningClassName</p>"},{"location":"api/shark/-leak-trace-reference/owning-class-name/#owningclassname","title":"owningClassName","text":"<p>val owningClassName: String</p>"},{"location":"api/shark/-leak-trace-reference/owning-class-simple-name/","title":"Owning class simple name","text":"<p>//leakcanary/shark/LeakTraceReference/owningClassSimpleName</p>"},{"location":"api/shark/-leak-trace-reference/owning-class-simple-name/#owningclasssimplename","title":"owningClassSimpleName","text":"<p>val owningClassSimpleName: String</p> <p>Returns {@link #className} without the package, ie stripped of any string content before the last period (included).</p>"},{"location":"api/shark/-leak-trace-reference/reference-display-name/","title":"Reference display name","text":"<p>//leakcanary/shark/LeakTraceReference/referenceDisplayName</p>"},{"location":"api/shark/-leak-trace-reference/reference-display-name/#referencedisplayname","title":"referenceDisplayName","text":"<p>val referenceDisplayName: String</p>"},{"location":"api/shark/-leak-trace-reference/reference-generic-name/","title":"Reference generic name","text":"<p>//leakcanary/shark/LeakTraceReference/referenceGenericName</p>"},{"location":"api/shark/-leak-trace-reference/reference-generic-name/#referencegenericname","title":"referenceGenericName","text":"<p>val referenceGenericName: String</p>"},{"location":"api/shark/-leak-trace-reference/reference-name/","title":"Reference name","text":"<p>//leakcanary/shark/LeakTraceReference/referenceName</p>"},{"location":"api/shark/-leak-trace-reference/reference-name/#referencename","title":"referenceName","text":"<p>val referenceName: String</p>"},{"location":"api/shark/-leak-trace-reference/reference-type/","title":"Reference type","text":"<p>//leakcanary/shark/LeakTraceReference/referenceType</p>"},{"location":"api/shark/-leak-trace-reference/reference-type/#referencetype","title":"referenceType","text":"<p>val referenceType: LeakTraceReference.ReferenceType</p>"},{"location":"api/shark/-leak-trace-reference/-companion/","title":"Index","text":"<p>//leakcanary/shark/LeakTraceReference/Companion</p>"},{"location":"api/shark/-leak-trace-reference/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-leak-trace-reference/-reference-type/","title":"Index","text":"<p>//leakcanary/shark/LeakTraceReference/ReferenceType</p>"},{"location":"api/shark/-leak-trace-reference/-reference-type/#referencetype","title":"ReferenceType","text":"<p>enum ReferenceType : Enum&lt;LeakTraceReference.ReferenceType&gt;</p>"},{"location":"api/shark/-leak-trace-reference/-reference-type/#entries","title":"Entries","text":"ARRAY_ENTRY ARRAY_ENTRY() LOCAL LOCAL() STATIC_FIELD STATIC_FIELD() INSTANCE_FIELD INSTANCE_FIELD()"},{"location":"api/shark/-leak-trace-reference/-reference-type/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace-reference/-reference-type/-a-r-r-a-y_-e-n-t-r-y/","title":"Index","text":"<p>//leakcanary/shark/LeakTraceReference/ReferenceType/ARRAY_ENTRY</p>"},{"location":"api/shark/-leak-trace-reference/-reference-type/-a-r-r-a-y_-e-n-t-r-y/#array_entry","title":"ARRAY_ENTRY","text":"<p>ARRAY_ENTRY()</p>"},{"location":"api/shark/-leak-trace-reference/-reference-type/-a-r-r-a-y_-e-n-t-r-y/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace-reference/-reference-type/-i-n-s-t-a-n-c-e_-f-i-e-l-d/","title":"Index","text":"<p>//leakcanary/shark/LeakTraceReference/ReferenceType/INSTANCE_FIELD</p>"},{"location":"api/shark/-leak-trace-reference/-reference-type/-i-n-s-t-a-n-c-e_-f-i-e-l-d/#instance_field","title":"INSTANCE_FIELD","text":"<p>INSTANCE_FIELD()</p>"},{"location":"api/shark/-leak-trace-reference/-reference-type/-i-n-s-t-a-n-c-e_-f-i-e-l-d/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace-reference/-reference-type/-l-o-c-a-l/","title":"Index","text":"<p>//leakcanary/shark/LeakTraceReference/ReferenceType/LOCAL</p>"},{"location":"api/shark/-leak-trace-reference/-reference-type/-l-o-c-a-l/#local","title":"LOCAL","text":"<p>LOCAL()</p>"},{"location":"api/shark/-leak-trace-reference/-reference-type/-l-o-c-a-l/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace-reference/-reference-type/-s-t-a-t-i-c_-f-i-e-l-d/","title":"Index","text":"<p>//leakcanary/shark/LeakTraceReference/ReferenceType/STATIC_FIELD</p>"},{"location":"api/shark/-leak-trace-reference/-reference-type/-s-t-a-t-i-c_-f-i-e-l-d/#static_field","title":"STATIC_FIELD","text":"<p>STATIC_FIELD()</p>"},{"location":"api/shark/-leak-trace-reference/-reference-type/-s-t-a-t-i-c_-f-i-e-l-d/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leaking-object-finder/","title":"Index","text":"<p>//leakcanary/shark/LeakingObjectFinder</p>"},{"location":"api/shark/-leaking-object-finder/#leakingobjectfinder","title":"LeakingObjectFinder","text":"<p>fun interface LeakingObjectFinder</p> <p>Finds the objects that are leaking, for which Shark will compute leak traces.</p> <p>This is a functional interface with which you can create a LeakingObjectFinder from a lambda.</p>"},{"location":"api/shark/-leaking-object-finder/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-leaking-object-finder/#functions","title":"Functions","text":"Name Summary findLeakingObjectIds abstract fun findLeakingObjectIds(graph: HeapGraph): Set&lt;Long&gt;For a given heap graph, returns a set of object ids for the objects that are leaking."},{"location":"api/shark/-leaking-object-finder/#inheritors","title":"Inheritors","text":"Name FilteringLeakingObjectFinder KeyedWeakReferenceFinder"},{"location":"api/shark/-leaking-object-finder/find-leaking-object-ids/","title":"Find leaking object ids","text":"<p>//leakcanary/shark/LeakingObjectFinder/findLeakingObjectIds</p>"},{"location":"api/shark/-leaking-object-finder/find-leaking-object-ids/#findleakingobjectids","title":"findLeakingObjectIds","text":"<p>abstract fun findLeakingObjectIds(graph: HeapGraph): Set&lt;Long&gt;</p> <p>For a given heap graph, returns a set of object ids for the objects that are leaking.</p>"},{"location":"api/shark/-leaking-object-finder/-companion/","title":"Index","text":"<p>//leakcanary/shark/LeakingObjectFinder/Companion</p>"},{"location":"api/shark/-leaking-object-finder/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-leaking-object-finder/-companion/#functions","title":"Functions","text":"Name Summary invoke inline operator fun invoke(crossinline block: (HeapGraph) -&gt; Set&lt;Long&gt;): LeakingObjectFinderUtility function to create a LeakingObjectFinder from the passed in block lambda instead of using the anonymous object : LeakingObjectFinder syntax."},{"location":"api/shark/-leaking-object-finder/-companion/invoke/","title":"Invoke","text":"<p>//leakcanary/shark/LeakingObjectFinder/Companion/invoke</p>"},{"location":"api/shark/-leaking-object-finder/-companion/invoke/#invoke","title":"invoke","text":"<p>inline operator fun invoke(crossinline block: (HeapGraph) -&gt; Set&lt;Long&gt;): LeakingObjectFinder</p> <p>Utility function to create a LeakingObjectFinder from the passed in block lambda instead of using the anonymous object : LeakingObjectFinder syntax.</p> <p>Usage:</p> <p>val listener = LeakingObjectFinder {\\ \\ }</p>"},{"location":"api/shark/-library-leak/","title":"Index","text":"<p>//leakcanary/shark/LibraryLeak</p>"},{"location":"api/shark/-library-leak/#libraryleak","title":"LibraryLeak","text":"<p>data class LibraryLeak(val leakTraces: List&lt;LeakTrace&gt;, val pattern: ReferencePattern, val description: String) : Leak</p> <p>A leak found by HeapAnalyzer, where the only path to the leaking object required going through a reference matched by pattern, as provided to a LibraryLeakReferenceMatcher instance. This is a known leak in library code that is beyond your control.</p>"},{"location":"api/shark/-library-leak/#constructors","title":"Constructors","text":"LibraryLeak fun LibraryLeak(leakTraces: List&lt;LeakTrace&gt;, pattern: ReferencePattern, description: String)"},{"location":"api/shark/-library-leak/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-library-leak/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-library-leak/#properties","title":"Properties","text":"Name Summary description val description: StringA description that conveys what we know about this library leak. leakTraces open override val leakTraces: List&lt;LeakTrace&gt;Group of leak traces which share the same leak signature. pattern val pattern: ReferencePatternThe pattern that matched one of the references in each of leakTraces, as provided to a LibraryLeakReferenceMatcher instance. shortDescription open override val shortDescription: String signature open override val signature: StringA unique SHA1 hash that represents this group of leak traces. totalRetainedHeapByteSize val totalRetainedHeapByteSize: Int?Sum of LeakTrace.retainedHeapByteSize for all elements in leakTraces. Null if the retained heap size was not computed. totalRetainedObjectCount val totalRetainedObjectCount: Int?Sum of LeakTrace.retainedObjectCount for all elements in leakTraces. Null if the retained heap size was not computed."},{"location":"api/shark/-library-leak/-library-leak/","title":"library leak","text":"<p>//leakcanary/shark/LibraryLeak/LibraryLeak</p>"},{"location":"api/shark/-library-leak/-library-leak/#libraryleak","title":"LibraryLeak","text":"<p>fun LibraryLeak(leakTraces: List&lt;LeakTrace&gt;, pattern: ReferencePattern, description: String)</p>"},{"location":"api/shark/-library-leak/description/","title":"Description","text":"<p>//leakcanary/shark/LibraryLeak/description</p>"},{"location":"api/shark/-library-leak/description/#description","title":"description","text":"<p>val description: String</p> <p>A description that conveys what we know about this library leak.</p>"},{"location":"api/shark/-library-leak/leak-traces/","title":"Leak traces","text":"<p>//leakcanary/shark/LibraryLeak/leakTraces</p>"},{"location":"api/shark/-library-leak/leak-traces/#leaktraces","title":"leakTraces","text":"<p>open override val leakTraces: List&lt;LeakTrace&gt;</p> <p>Group of leak traces which share the same leak signature.</p>"},{"location":"api/shark/-library-leak/pattern/","title":"Pattern","text":"<p>//leakcanary/shark/LibraryLeak/pattern</p>"},{"location":"api/shark/-library-leak/pattern/#pattern","title":"pattern","text":"<p>val pattern: ReferencePattern</p> <p>The pattern that matched one of the references in each of leakTraces, as provided to a LibraryLeakReferenceMatcher instance.</p>"},{"location":"api/shark/-library-leak/short-description/","title":"Short description","text":"<p>//leakcanary/shark/LibraryLeak/shortDescription</p>"},{"location":"api/shark/-library-leak/short-description/#shortdescription","title":"shortDescription","text":"<p>open override val shortDescription: String</p>"},{"location":"api/shark/-library-leak/signature/","title":"Signature","text":"<p>//leakcanary/shark/LibraryLeak/signature</p>"},{"location":"api/shark/-library-leak/signature/#signature","title":"signature","text":"<p>open override val signature: String</p> <p>A unique SHA1 hash that represents this group of leak traces.</p> <p>For ApplicationLeak this is based on LeakTrace.signature and for LibraryLeak this is based on LibraryLeak.pattern.</p>"},{"location":"api/shark/-library-leak/to-string/","title":"To string","text":"<p>//leakcanary/shark/LibraryLeak/toString</p>"},{"location":"api/shark/-library-leak/to-string/#tostring","title":"toString","text":"<p>open override fun toString(): String</p>"},{"location":"api/shark/-library-leak/-companion/","title":"Index","text":"<p>//leakcanary/shark/LibraryLeak/Companion</p>"},{"location":"api/shark/-library-leak/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-library-leak-reference-matcher/","title":"Index","text":"<p>//leakcanary/shark/LibraryLeakReferenceMatcher</p>"},{"location":"api/shark/-library-leak-reference-matcher/#libraryleakreferencematcher","title":"LibraryLeakReferenceMatcher","text":"<p>data class LibraryLeakReferenceMatcher(val pattern: ReferencePattern, val description: String = \"\", val patternApplies: (HeapGraph) -&gt; Boolean = { true }) : ReferenceMatcher</p> <p>LibraryLeakReferenceMatcher should be used to match references in library code that are known to create leaks and are beyond your control. The shortest path finder will only go through matching references after it has exhausted references that don\u2019t match, prioritizing finding an application leak over a known library leak. Library leaks will be reported as LibraryLeak instead of ApplicationLeak.</p>"},{"location":"api/shark/-library-leak-reference-matcher/#constructors","title":"Constructors","text":"LibraryLeakReferenceMatcher fun LibraryLeakReferenceMatcher(pattern: ReferencePattern, description: String = \"\", patternApplies: (HeapGraph) -&gt; Boolean = { true })"},{"location":"api/shark/-library-leak-reference-matcher/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-library-leak-reference-matcher/#properties","title":"Properties","text":"Name Summary description val description: StringA description that conveys what we know about this library leak. pattern open override val pattern: ReferencePatternThe pattern that references will be matched against. patternApplies val patternApplies: (HeapGraph) -&gt; BooleanWhether the identified leak may exist in the provided HeapGraph. Defaults to true. If the heap dump comes from a VM that runs a different version of the library that doesn\u2019t have the leak, then this should return false."},{"location":"api/shark/-library-leak-reference-matcher/-library-leak-reference-matcher/","title":"library leak reference matcher","text":"<p>//leakcanary/shark/LibraryLeakReferenceMatcher/LibraryLeakReferenceMatcher</p>"},{"location":"api/shark/-library-leak-reference-matcher/-library-leak-reference-matcher/#libraryleakreferencematcher","title":"LibraryLeakReferenceMatcher","text":"<p>fun LibraryLeakReferenceMatcher(pattern: ReferencePattern, description: String = \"\", patternApplies: (HeapGraph) -&gt; Boolean = { true })</p>"},{"location":"api/shark/-library-leak-reference-matcher/description/","title":"Description","text":"<p>//leakcanary/shark/LibraryLeakReferenceMatcher/description</p>"},{"location":"api/shark/-library-leak-reference-matcher/description/#description","title":"description","text":"<p>val description: String</p> <p>A description that conveys what we know about this library leak.</p>"},{"location":"api/shark/-library-leak-reference-matcher/pattern-applies/","title":"Pattern applies","text":"<p>//leakcanary/shark/LibraryLeakReferenceMatcher/patternApplies</p>"},{"location":"api/shark/-library-leak-reference-matcher/pattern-applies/#patternapplies","title":"patternApplies","text":"<p>val patternApplies: (HeapGraph) -&gt; Boolean</p> <p>Whether the identified leak may exist in the provided HeapGraph. Defaults to true. If the heap dump comes from a VM that runs a different version of the library that doesn\u2019t have the leak, then this should return false.</p>"},{"location":"api/shark/-library-leak-reference-matcher/pattern/","title":"Pattern","text":"<p>//leakcanary/shark/LibraryLeakReferenceMatcher/pattern</p>"},{"location":"api/shark/-library-leak-reference-matcher/pattern/#pattern","title":"pattern","text":"<p>open override val pattern: ReferencePattern</p> <p>The pattern that references will be matched against.</p>"},{"location":"api/shark/-library-leak-reference-matcher/to-string/","title":"To string","text":"<p>//leakcanary/shark/LibraryLeakReferenceMatcher/toString</p>"},{"location":"api/shark/-library-leak-reference-matcher/to-string/#tostring","title":"toString","text":"<p>open override fun toString(): String</p>"},{"location":"api/shark/-metadata-extractor/","title":"Index","text":"<p>//leakcanary/shark/MetadataExtractor</p>"},{"location":"api/shark/-metadata-extractor/#metadataextractor","title":"MetadataExtractor","text":"<p>fun interface MetadataExtractor</p> <p>Extracts metadata from a hprof to be reported in HeapAnalysisSuccess.metadata.</p> <p>This is a functional interface with which you can create a MetadataExtractor from a lambda.</p>"},{"location":"api/shark/-metadata-extractor/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-metadata-extractor/#functions","title":"Functions","text":"Name Summary extractMetadata abstract fun extractMetadata(graph: HeapGraph): Map&lt;String, String&gt;"},{"location":"api/shark/-metadata-extractor/#inheritors","title":"Inheritors","text":"Name AndroidMetadataExtractor"},{"location":"api/shark/-metadata-extractor/extract-metadata/","title":"Extract metadata","text":"<p>//leakcanary/shark/MetadataExtractor/extractMetadata</p>"},{"location":"api/shark/-metadata-extractor/extract-metadata/#extractmetadata","title":"extractMetadata","text":"<p>abstract fun extractMetadata(graph: HeapGraph): Map&lt;String, String&gt;</p>"},{"location":"api/shark/-metadata-extractor/-companion/","title":"Index","text":"<p>//leakcanary/shark/MetadataExtractor/Companion</p>"},{"location":"api/shark/-metadata-extractor/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-metadata-extractor/-companion/#functions","title":"Functions","text":"Name Summary invoke inline operator fun invoke(crossinline block: (HeapGraph) -&gt; Map&lt;String, String&gt;): MetadataExtractorUtility function to create a MetadataExtractor from the passed in block lambda instead of using the anonymous object : MetadataExtractor syntax."},{"location":"api/shark/-metadata-extractor/-companion/#properties","title":"Properties","text":"Name Summary NO_OP val NO_OP: MetadataExtractorA no-op MetadataExtractor"},{"location":"api/shark/-metadata-extractor/-companion/-n-o_-o-p/","title":"n o  o p","text":"<p>//leakcanary/shark/MetadataExtractor/Companion/NO_OP</p>"},{"location":"api/shark/-metadata-extractor/-companion/-n-o_-o-p/#no_op","title":"NO_OP","text":"<p>val NO_OP: MetadataExtractor</p> <p>A no-op MetadataExtractor</p>"},{"location":"api/shark/-metadata-extractor/-companion/invoke/","title":"Invoke","text":"<p>//leakcanary/shark/MetadataExtractor/Companion/invoke</p>"},{"location":"api/shark/-metadata-extractor/-companion/invoke/#invoke","title":"invoke","text":"<p>inline operator fun invoke(crossinline block: (HeapGraph) -&gt; Map&lt;String, String&gt;): MetadataExtractor</p> <p>Utility function to create a MetadataExtractor from the passed in block lambda instead of using the anonymous object : MetadataExtractor syntax.</p> <p>Usage:</p> <p>val inspector = MetadataExtractor { graph -&gt;\\ \\ }</p>"},{"location":"api/shark/-neo4-j-command/","title":"Index","text":"<p>//leakcanary/shark/Neo4JCommand</p>"},{"location":"api/shark/-neo4-j-command/#neo4jcommand","title":"Neo4JCommand","text":"<p>class Neo4JCommand : CliktCommand</p> <p>Example commands:</p> <p>MATCH (roots: GcRoots) RETURN roots</p> <p>MATCH (activity: Instance) -:CLASS|SUPER*1..-&gt; (c:Class {className: \"android.app.Activity\"}) RETURN activity</p> <p>MATCH (activity: Instance) -:CLASS|SUPER*1..-&gt; (c:Class {className: \"android.app.Activity\"}) WHERE \"android.app.Activity.mDestroyed = true\" in activity.fields RETURN activity</p> <p>MATCH (roots: GcRoots) MATCH (activity: Instance) -:CLASS|SUPER*1..-&gt;(c:Class {className: \"android.app.Activity\"}) WHERE \"android.app.Activity.mDestroyed = true\" in activity.fields RETURN shortestPath((roots)-:ROOT|REF*-&gt;(activity))</p>"},{"location":"api/shark/-neo4-j-command/#constructors","title":"Constructors","text":"Neo4JCommand fun Neo4JCommand()"},{"location":"api/shark/-neo4-j-command/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-neo4-j-command/#functions","title":"Functions","text":"Name Summary aliases open fun aliases(): Map&lt;String, List&lt;String&gt;&gt; getFormattedHelp open fun getFormattedHelp(): String getFormattedUsage open fun getFormattedUsage(): String issueMessage fun issueMessage(message: String) main fun main(argv: Array&lt;String&gt;)fun main(argv: List&lt;String&gt;) parse fun parse(argv: Array&lt;String&gt;, parentContext: Context?)fun parse(argv: List&lt;String&gt;, parentContext: Context?) registerArgument fun registerArgument(argument: Argument) registeredSubcommandNames fun registeredSubcommandNames(): List&lt;String&gt; registerOption open override fun registerOption(option: GroupableOption)fun registerOption(option: Option) registerOptionGroup fun registerOptionGroup(group: ParameterGroup) run open override fun run() toString open override fun toString(): String"},{"location":"api/shark/-neo4-j-command/#properties","title":"Properties","text":"Name Summary commandHelp val commandHelp: String commandHelpEpilog val commandHelpEpilog: String commandName val commandName: String context val context: Context helpTags val helpTags: Map&lt;String, String&gt; invokeWithoutSubcommand val invokeWithoutSubcommand: Boolean messages val messages: List&lt;String&gt; printHelpOnEmptyArgs val printHelpOnEmptyArgs: Boolean"},{"location":"api/shark/-neo4-j-command/-neo4-j-command/","title":"neo4 j command","text":"<p>//leakcanary/shark/Neo4JCommand/Neo4JCommand</p>"},{"location":"api/shark/-neo4-j-command/-neo4-j-command/#neo4jcommand","title":"Neo4JCommand","text":"<p>fun Neo4JCommand()</p>"},{"location":"api/shark/-neo4-j-command/run/","title":"Run","text":"<p>//leakcanary/shark/Neo4JCommand/run</p>"},{"location":"api/shark/-neo4-j-command/run/#run","title":"run","text":"<p>open override fun run()</p>"},{"location":"api/shark/-neo4-j-command/-companion/","title":"Index","text":"<p>//leakcanary/shark/Neo4JCommand/Companion</p>"},{"location":"api/shark/-neo4-j-command/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-neo4-j-command/-companion/#functions","title":"Functions","text":"Name Summary dump fun CliktCommand.dump(heapDumpFile: File, dbParentFolder: File, proguardMappingFile: File?) heapValueAsString fun HeapValue.heapValueAsString(): String"},{"location":"api/shark/-neo4-j-command/-companion/#properties","title":"Properties","text":"Name Summary PHANTOM_REFERENCE val PHANTOM_REFERENCE: String REFERENCE val REFERENCE: String SOFT_REFERENCE val SOFT_REFERENCE: String WEAK_REFERENCE val WEAK_REFERENCE: String"},{"location":"api/shark/-neo4-j-command/-companion/-p-h-a-n-t-o-m_-r-e-f-e-r-e-n-c-e/","title":"p h a n t o m  r e f e r e n c e","text":"<p>//leakcanary/shark/Neo4JCommand/Companion/PHANTOM_REFERENCE</p>"},{"location":"api/shark/-neo4-j-command/-companion/-p-h-a-n-t-o-m_-r-e-f-e-r-e-n-c-e/#phantom_reference","title":"PHANTOM_REFERENCE","text":"<p>val PHANTOM_REFERENCE: String</p>"},{"location":"api/shark/-neo4-j-command/-companion/-r-e-f-e-r-e-n-c-e/","title":"r e f e r e n c e","text":"<p>//leakcanary/shark/Neo4JCommand/Companion/REFERENCE</p>"},{"location":"api/shark/-neo4-j-command/-companion/-r-e-f-e-r-e-n-c-e/#reference","title":"REFERENCE","text":"<p>val REFERENCE: String</p>"},{"location":"api/shark/-neo4-j-command/-companion/-s-o-f-t_-r-e-f-e-r-e-n-c-e/","title":"s o f t  r e f e r e n c e","text":"<p>//leakcanary/shark/Neo4JCommand/Companion/SOFT_REFERENCE</p>"},{"location":"api/shark/-neo4-j-command/-companion/-s-o-f-t_-r-e-f-e-r-e-n-c-e/#soft_reference","title":"SOFT_REFERENCE","text":"<p>val SOFT_REFERENCE: String</p>"},{"location":"api/shark/-neo4-j-command/-companion/-w-e-a-k_-r-e-f-e-r-e-n-c-e/","title":"w e a k  r e f e r e n c e","text":"<p>//leakcanary/shark/Neo4JCommand/Companion/WEAK_REFERENCE</p>"},{"location":"api/shark/-neo4-j-command/-companion/-w-e-a-k_-r-e-f-e-r-e-n-c-e/#weak_reference","title":"WEAK_REFERENCE","text":"<p>val WEAK_REFERENCE: String</p>"},{"location":"api/shark/-neo4-j-command/-companion/dump/","title":"Dump","text":"<p>//leakcanary/shark/Neo4JCommand/Companion/dump</p>"},{"location":"api/shark/-neo4-j-command/-companion/dump/#dump","title":"dump","text":"<p>fun CliktCommand.dump(heapDumpFile: File, dbParentFolder: File, proguardMappingFile: File?)</p>"},{"location":"api/shark/-neo4-j-command/-companion/heap-value-as-string/","title":"Heap value as string","text":"<p>//leakcanary/shark/Neo4JCommand/Companion/heapValueAsString</p>"},{"location":"api/shark/-neo4-j-command/-companion/heap-value-as-string/#heapvalueasstring","title":"heapValueAsString","text":"<p>fun HeapValue.heapValueAsString(): String</p>"},{"location":"api/shark/-object-inspector/","title":"Index","text":"<p>//leakcanary/shark/ObjectInspector</p>"},{"location":"api/shark/-object-inspector/#objectinspector","title":"ObjectInspector","text":"<p>fun interface ObjectInspector</p> <p>Provides LeakCanary with insights about objects (classes, instances and arrays) found in the heap. inspect will be called for each object that LeakCanary wants to know more about. The implementation can then use the provided ObjectReporter to provide insights for that object.</p> <p>This is a functional interface with which you can create a ObjectInspector from a lambda.</p>"},{"location":"api/shark/-object-inspector/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-object-inspector/#functions","title":"Functions","text":"Name Summary inspect abstract fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-object-inspector/#inheritors","title":"Inheritors","text":"Name AppSingletonInspector ObjectInspectors AndroidObjectInspectors"},{"location":"api/shark/-object-inspector/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/ObjectInspector/inspect</p>"},{"location":"api/shark/-object-inspector/inspect/#inspect","title":"inspect","text":"<p>abstract fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-object-inspector/inspect/#see-also","title":"See also","text":"<p>main</p> shark.ObjectInspector"},{"location":"api/shark/-object-inspector/-companion/","title":"Index","text":"<p>//leakcanary/shark/ObjectInspector/Companion</p>"},{"location":"api/shark/-object-inspector/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-object-inspector/-companion/#functions","title":"Functions","text":"Name Summary invoke inline operator fun invoke(crossinline block: (ObjectReporter) -&gt; Unit): ObjectInspectorUtility function to create a ObjectInspector from the passed in block lambda instead of using the anonymous object : OnHeapAnalyzedListener syntax."},{"location":"api/shark/-object-inspector/-companion/invoke/","title":"Invoke","text":"<p>//leakcanary/shark/ObjectInspector/Companion/invoke</p>"},{"location":"api/shark/-object-inspector/-companion/invoke/#invoke","title":"invoke","text":"<p>inline operator fun invoke(crossinline block: (ObjectReporter) -&gt; Unit): ObjectInspector</p> <p>Utility function to create a ObjectInspector from the passed in block lambda instead of using the anonymous object : OnHeapAnalyzedListener syntax.</p> <p>Usage:</p> <p>val inspector = ObjectInspector { reporter -&gt;\\ \\ }</p>"},{"location":"api/shark/-object-inspectors/","title":"Index","text":"<p>//leakcanary/shark/ObjectInspectors</p>"},{"location":"api/shark/-object-inspectors/#objectinspectors","title":"ObjectInspectors","text":"<p>enum ObjectInspectors : Enum&lt;ObjectInspectors&gt; , ObjectInspector</p> <p>A set of default ObjectInspectors that knows about common JDK objects.</p>"},{"location":"api/shark/-object-inspectors/#entries","title":"Entries","text":"THREAD THREAD() ANONYMOUS_CLASS ANONYMOUS_CLASS() CLASS CLASS() CLASSLOADER CLASSLOADER() KEYED_WEAK_REFERENCE KEYED_WEAK_REFERENCE()"},{"location":"api/shark/-object-inspectors/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-object-inspectors/#functions","title":"Functions","text":"Name Summary inspect abstract fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-object-inspectors/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-object-inspectors/-a-n-o-n-y-m-o-u-s_-c-l-a-s-s/","title":"Index","text":"<p>//leakcanary/shark/ObjectInspectors/ANONYMOUS_CLASS</p>"},{"location":"api/shark/-object-inspectors/-a-n-o-n-y-m-o-u-s_-c-l-a-s-s/#anonymous_class","title":"ANONYMOUS_CLASS","text":"<p>ANONYMOUS_CLASS()</p>"},{"location":"api/shark/-object-inspectors/-a-n-o-n-y-m-o-u-s_-c-l-a-s-s/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-object-inspectors/-a-n-o-n-y-m-o-u-s_-c-l-a-s-s/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-object-inspectors/-a-n-o-n-y-m-o-u-s_-c-l-a-s-s/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/ObjectInspectors/ANONYMOUS_CLASS/inspect</p>"},{"location":"api/shark/-object-inspectors/-a-n-o-n-y-m-o-u-s_-c-l-a-s-s/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-object-inspectors/-a-n-o-n-y-m-o-u-s_-c-l-a-s-s/inspect/#see-also","title":"See also","text":"<p>main</p> shark.ObjectInspector"},{"location":"api/shark/-object-inspectors/-c-l-a-s-s/","title":"Index","text":"<p>//leakcanary/shark/ObjectInspectors/CLASS</p>"},{"location":"api/shark/-object-inspectors/-c-l-a-s-s/#class","title":"CLASS","text":"<p>CLASS()</p>"},{"location":"api/shark/-object-inspectors/-c-l-a-s-s/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-object-inspectors/-c-l-a-s-s/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-object-inspectors/-c-l-a-s-s/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/ObjectInspectors/CLASS/inspect</p>"},{"location":"api/shark/-object-inspectors/-c-l-a-s-s/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-object-inspectors/-c-l-a-s-s/inspect/#see-also","title":"See also","text":"<p>main</p> shark.ObjectInspector"},{"location":"api/shark/-object-inspectors/-c-l-a-s-s-l-o-a-d-e-r/","title":"Index","text":"<p>//leakcanary/shark/ObjectInspectors/CLASSLOADER</p>"},{"location":"api/shark/-object-inspectors/-c-l-a-s-s-l-o-a-d-e-r/#classloader","title":"CLASSLOADER","text":"<p>CLASSLOADER()</p>"},{"location":"api/shark/-object-inspectors/-c-l-a-s-s-l-o-a-d-e-r/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-object-inspectors/-c-l-a-s-s-l-o-a-d-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-object-inspectors/-c-l-a-s-s-l-o-a-d-e-r/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/ObjectInspectors/CLASSLOADER/inspect</p>"},{"location":"api/shark/-object-inspectors/-c-l-a-s-s-l-o-a-d-e-r/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-object-inspectors/-c-l-a-s-s-l-o-a-d-e-r/inspect/#see-also","title":"See also","text":"<p>main</p> shark.ObjectInspector"},{"location":"api/shark/-object-inspectors/-companion/","title":"Index","text":"<p>//leakcanary/shark/ObjectInspectors/Companion</p>"},{"location":"api/shark/-object-inspectors/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-object-inspectors/-companion/#functions","title":"Functions","text":"Name Summary createLeakingObjectFilters fun createLeakingObjectFilters(inspectors: Set&lt;ObjectInspectors&gt;): List&lt;FilteringLeakingObjectFinder.LeakingObjectFilter&gt;Creates a list of LeakingObjectFilter based on the passed in ObjectInspectors."},{"location":"api/shark/-object-inspectors/-companion/#properties","title":"Properties","text":"Name Summary jdkDefaults val jdkDefaults: List&lt;ObjectInspector&gt; jdkLeakingObjectFilters val jdkLeakingObjectFilters: List&lt;FilteringLeakingObjectFinder.LeakingObjectFilter&gt;Returns a list of LeakingObjectFilter suitable for common JDK projects."},{"location":"api/shark/-object-inspectors/-companion/create-leaking-object-filters/","title":"Create leaking object filters","text":"<p>//leakcanary/shark/ObjectInspectors/Companion/createLeakingObjectFilters</p>"},{"location":"api/shark/-object-inspectors/-companion/create-leaking-object-filters/#createleakingobjectfilters","title":"createLeakingObjectFilters","text":"<p>fun createLeakingObjectFilters(inspectors: Set&lt;ObjectInspectors&gt;): List&lt;FilteringLeakingObjectFinder.LeakingObjectFilter&gt;</p> <p>Creates a list of LeakingObjectFilter based on the passed in ObjectInspectors.</p>"},{"location":"api/shark/-object-inspectors/-companion/jdk-defaults/","title":"Jdk defaults","text":"<p>//leakcanary/shark/ObjectInspectors/Companion/jdkDefaults</p>"},{"location":"api/shark/-object-inspectors/-companion/jdk-defaults/#jdkdefaults","title":"jdkDefaults","text":"<p>val jdkDefaults: List&lt;ObjectInspector&gt;</p>"},{"location":"api/shark/-object-inspectors/-companion/jdk-defaults/#see-also","title":"See also","text":"<p>main</p> shark.ObjectInspectors"},{"location":"api/shark/-object-inspectors/-companion/jdk-leaking-object-filters/","title":"Jdk leaking object filters","text":"<p>//leakcanary/shark/ObjectInspectors/Companion/jdkLeakingObjectFilters</p>"},{"location":"api/shark/-object-inspectors/-companion/jdk-leaking-object-filters/#jdkleakingobjectfilters","title":"jdkLeakingObjectFilters","text":"<p>val jdkLeakingObjectFilters: List&lt;FilteringLeakingObjectFinder.LeakingObjectFilter&gt;</p> <p>Returns a list of LeakingObjectFilter suitable for common JDK projects.</p>"},{"location":"api/shark/-object-inspectors/-k-e-y-e-d_-w-e-a-k_-r-e-f-e-r-e-n-c-e/","title":"Index","text":"<p>//leakcanary/shark/ObjectInspectors/KEYED_WEAK_REFERENCE</p>"},{"location":"api/shark/-object-inspectors/-k-e-y-e-d_-w-e-a-k_-r-e-f-e-r-e-n-c-e/#keyed_weak_reference","title":"KEYED_WEAK_REFERENCE","text":"<p>KEYED_WEAK_REFERENCE()</p>"},{"location":"api/shark/-object-inspectors/-k-e-y-e-d_-w-e-a-k_-r-e-f-e-r-e-n-c-e/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-object-inspectors/-k-e-y-e-d_-w-e-a-k_-r-e-f-e-r-e-n-c-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-object-inspectors/-k-e-y-e-d_-w-e-a-k_-r-e-f-e-r-e-n-c-e/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/ObjectInspectors/KEYED_WEAK_REFERENCE/inspect</p>"},{"location":"api/shark/-object-inspectors/-k-e-y-e-d_-w-e-a-k_-r-e-f-e-r-e-n-c-e/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-object-inspectors/-k-e-y-e-d_-w-e-a-k_-r-e-f-e-r-e-n-c-e/inspect/#see-also","title":"See also","text":"<p>main</p> shark.ObjectInspector"},{"location":"api/shark/-object-inspectors/-t-h-r-e-a-d/","title":"Index","text":"<p>//leakcanary/shark/ObjectInspectors/THREAD</p>"},{"location":"api/shark/-object-inspectors/-t-h-r-e-a-d/#thread","title":"THREAD","text":"<p>THREAD()</p>"},{"location":"api/shark/-object-inspectors/-t-h-r-e-a-d/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-object-inspectors/-t-h-r-e-a-d/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-object-inspectors/-t-h-r-e-a-d/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/ObjectInspectors/THREAD/inspect</p>"},{"location":"api/shark/-object-inspectors/-t-h-r-e-a-d/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-object-inspectors/-t-h-r-e-a-d/inspect/#see-also","title":"See also","text":"<p>main</p> shark.ObjectInspector"},{"location":"api/shark/-object-reporter/","title":"Index","text":"<p>//leakcanary/shark/ObjectReporter</p>"},{"location":"api/shark/-object-reporter/#objectreporter","title":"ObjectReporter","text":"<p>class ObjectReporter(val heapObject: HeapObject)</p> <p>Enables ObjectInspector implementations to provide insights on heapObject, which is an object (class, instance or array) found in the heap.</p> <p>A given ObjectReporter only maps to one object in the heap, but is shared to many ObjectInspector implementations and accumulates insights.</p>"},{"location":"api/shark/-object-reporter/#constructors","title":"Constructors","text":"ObjectReporter fun ObjectReporter(heapObject: HeapObject)"},{"location":"api/shark/-object-reporter/#functions","title":"Functions","text":"Name Summary whenInstanceOf fun whenInstanceOf(expectedClassName: String, block: ObjectReporter.(HeapObject.HeapInstance) -&gt; Unit)Runs block if ObjectReporter.heapObject is an instance of expectedClassName.fun whenInstanceOf(expectedClass: KClass&lt;out Any&gt;, block: ObjectReporter.(HeapObject.HeapInstance) -&gt; Unit)Runs block if ObjectReporter.heapObject is an instance of expectedClass."},{"location":"api/shark/-object-reporter/#properties","title":"Properties","text":"Name Summary heapObject val heapObject: HeapObject labels val labels: LinkedHashSet&lt;String&gt;Labels that will be visible on the corresponding heapObject in the leak trace. leakingReasons val leakingReasons: MutableSet&lt;String&gt;Reasons for which this object is expected to be unreachable (ie it\u2019s leaking). notLeakingReasons val notLeakingReasons: MutableSet&lt;String&gt;Reasons for which this object is expected to be reachable (ie it\u2019s not leaking)."},{"location":"api/shark/-object-reporter/-object-reporter/","title":"object reporter","text":"<p>//leakcanary/shark/ObjectReporter/ObjectReporter</p>"},{"location":"api/shark/-object-reporter/-object-reporter/#objectreporter","title":"ObjectReporter","text":"<p>fun ObjectReporter(heapObject: HeapObject)</p>"},{"location":"api/shark/-object-reporter/heap-object/","title":"Heap object","text":"<p>//leakcanary/shark/ObjectReporter/heapObject</p>"},{"location":"api/shark/-object-reporter/heap-object/#heapobject","title":"heapObject","text":"<p>val heapObject: HeapObject</p>"},{"location":"api/shark/-object-reporter/labels/","title":"Labels","text":"<p>//leakcanary/shark/ObjectReporter/labels</p>"},{"location":"api/shark/-object-reporter/labels/#labels","title":"labels","text":"<p>val labels: LinkedHashSet&lt;String&gt;</p> <p>Labels that will be visible on the corresponding heapObject in the leak trace.</p>"},{"location":"api/shark/-object-reporter/leaking-reasons/","title":"Leaking reasons","text":"<p>//leakcanary/shark/ObjectReporter/leakingReasons</p>"},{"location":"api/shark/-object-reporter/leaking-reasons/#leakingreasons","title":"leakingReasons","text":"<p>val leakingReasons: MutableSet&lt;String&gt;</p> <p>Reasons for which this object is expected to be unreachable (ie it\u2019s leaking).</p>"},{"location":"api/shark/-object-reporter/not-leaking-reasons/","title":"Not leaking reasons","text":"<p>//leakcanary/shark/ObjectReporter/notLeakingReasons</p>"},{"location":"api/shark/-object-reporter/not-leaking-reasons/#notleakingreasons","title":"notLeakingReasons","text":"<p>val notLeakingReasons: MutableSet&lt;String&gt;</p> <p>Reasons for which this object is expected to be reachable (ie it\u2019s not leaking).</p>"},{"location":"api/shark/-object-reporter/when-instance-of/","title":"When instance of","text":"<p>//leakcanary/shark/ObjectReporter/whenInstanceOf</p>"},{"location":"api/shark/-object-reporter/when-instance-of/#wheninstanceof","title":"whenInstanceOf","text":"<p>fun whenInstanceOf(expectedClass: KClass&lt;out Any&gt;, block: ObjectReporter.(HeapObject.HeapInstance) -&gt; Unit)</p> <p>Runs block if ObjectReporter.heapObject is an instance of expectedClass.</p> <p>fun whenInstanceOf(expectedClassName: String, block: ObjectReporter.(HeapObject.HeapInstance) -&gt; Unit)</p> <p>Runs block if ObjectReporter.heapObject is an instance of expectedClassName.</p>"},{"location":"api/shark/-on-analysis-progress-listener/","title":"Index","text":"<p>//leakcanary/shark/OnAnalysisProgressListener</p>"},{"location":"api/shark/-on-analysis-progress-listener/#onanalysisprogresslistener","title":"OnAnalysisProgressListener","text":"<p>fun interface OnAnalysisProgressListener</p> <p>Reports progress from the HeapAnalyzer as they occur, as Step values.</p> <p>This is a functional interface with which you can create a OnAnalysisProgressListener from a lambda.</p>"},{"location":"api/shark/-on-analysis-progress-listener/#types","title":"Types","text":"Name Summary Companion object Companion Step enum Step : Enum&lt;OnAnalysisProgressListener.Step&gt;"},{"location":"api/shark/-on-analysis-progress-listener/#functions","title":"Functions","text":"Name Summary onAnalysisProgress abstract fun onAnalysisProgress(step: OnAnalysisProgressListener.Step)"},{"location":"api/shark/-on-analysis-progress-listener/on-analysis-progress/","title":"On analysis progress","text":"<p>//leakcanary/shark/OnAnalysisProgressListener/onAnalysisProgress</p>"},{"location":"api/shark/-on-analysis-progress-listener/on-analysis-progress/#onanalysisprogress","title":"onAnalysisProgress","text":"<p>abstract fun onAnalysisProgress(step: OnAnalysisProgressListener.Step)</p>"},{"location":"api/shark/-on-analysis-progress-listener/-companion/","title":"Index","text":"<p>//leakcanary/shark/OnAnalysisProgressListener/Companion</p>"},{"location":"api/shark/-on-analysis-progress-listener/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-on-analysis-progress-listener/-companion/#functions","title":"Functions","text":"Name Summary invoke inline operator fun invoke(crossinline block: (OnAnalysisProgressListener.Step) -&gt; Unit): OnAnalysisProgressListenerUtility function to create a OnAnalysisProgressListener from the passed in block lambda instead of using the anonymous object : OnAnalysisProgressListener syntax."},{"location":"api/shark/-on-analysis-progress-listener/-companion/#properties","title":"Properties","text":"Name Summary NO_OP val NO_OP: OnAnalysisProgressListenerA no-op OnAnalysisProgressListener"},{"location":"api/shark/-on-analysis-progress-listener/-companion/-n-o_-o-p/","title":"n o  o p","text":"<p>//leakcanary/shark/OnAnalysisProgressListener/Companion/NO_OP</p>"},{"location":"api/shark/-on-analysis-progress-listener/-companion/-n-o_-o-p/#no_op","title":"NO_OP","text":"<p>val NO_OP: OnAnalysisProgressListener</p> <p>A no-op OnAnalysisProgressListener</p>"},{"location":"api/shark/-on-analysis-progress-listener/-companion/invoke/","title":"Invoke","text":"<p>//leakcanary/shark/OnAnalysisProgressListener/Companion/invoke</p>"},{"location":"api/shark/-on-analysis-progress-listener/-companion/invoke/#invoke","title":"invoke","text":"<p>inline operator fun invoke(crossinline block: (OnAnalysisProgressListener.Step) -&gt; Unit): OnAnalysisProgressListener</p> <p>Utility function to create a OnAnalysisProgressListener from the passed in block lambda instead of using the anonymous object : OnAnalysisProgressListener syntax.</p> <p>Usage:</p> <p>val listener = OnAnalysisProgressListener {\\ \\ }</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/","title":"Index","text":"<p>//leakcanary/shark/OnAnalysisProgressListener/Step</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/#step","title":"Step","text":"<p>enum Step : Enum&lt;OnAnalysisProgressListener.Step&gt;</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/#entries","title":"Entries","text":"REPORTING_HEAP_ANALYSIS REPORTING_HEAP_ANALYSIS() BUILDING_LEAK_TRACES BUILDING_LEAK_TRACES() COMPUTING_RETAINED_SIZE COMPUTING_RETAINED_SIZE() COMPUTING_NATIVE_RETAINED_SIZE COMPUTING_NATIVE_RETAINED_SIZE() INSPECTING_OBJECTS INSPECTING_OBJECTS() FINDING_DOMINATORS FINDING_DOMINATORS() FINDING_PATHS_TO_RETAINED_OBJECTS FINDING_PATHS_TO_RETAINED_OBJECTS() FINDING_RETAINED_OBJECTS FINDING_RETAINED_OBJECTS() EXTRACTING_METADATA EXTRACTING_METADATA() PARSING_HEAP_DUMP PARSING_HEAP_DUMP()"},{"location":"api/shark/-on-analysis-progress-listener/-step/#properties","title":"Properties","text":"Name Summary humanReadableName val humanReadableName: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-on-analysis-progress-listener/-step/human-readable-name/","title":"Human readable name","text":"<p>//leakcanary/shark/OnAnalysisProgressListener/Step/humanReadableName</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/human-readable-name/#humanreadablename","title":"humanReadableName","text":"<p>val humanReadableName: String</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-b-u-i-l-d-i-n-g_-l-e-a-k_-t-r-a-c-e-s/","title":"Index","text":"<p>//leakcanary/shark/OnAnalysisProgressListener/Step/BUILDING_LEAK_TRACES</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-b-u-i-l-d-i-n-g_-l-e-a-k_-t-r-a-c-e-s/#building_leak_traces","title":"BUILDING_LEAK_TRACES","text":"<p>BUILDING_LEAK_TRACES()</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-b-u-i-l-d-i-n-g_-l-e-a-k_-t-r-a-c-e-s/#properties","title":"Properties","text":"Name Summary humanReadableName val humanReadableName: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-on-analysis-progress-listener/-step/-c-o-m-p-u-t-i-n-g_-n-a-t-i-v-e_-r-e-t-a-i-n-e-d_-s-i-z-e/","title":"Index","text":"<p>//leakcanary/shark/OnAnalysisProgressListener/Step/COMPUTING_NATIVE_RETAINED_SIZE</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-c-o-m-p-u-t-i-n-g_-n-a-t-i-v-e_-r-e-t-a-i-n-e-d_-s-i-z-e/#computing_native_retained_size","title":"COMPUTING_NATIVE_RETAINED_SIZE","text":"<p>COMPUTING_NATIVE_RETAINED_SIZE()</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-c-o-m-p-u-t-i-n-g_-n-a-t-i-v-e_-r-e-t-a-i-n-e-d_-s-i-z-e/#properties","title":"Properties","text":"Name Summary humanReadableName val humanReadableName: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-on-analysis-progress-listener/-step/-c-o-m-p-u-t-i-n-g_-r-e-t-a-i-n-e-d_-s-i-z-e/","title":"Index","text":"<p>//leakcanary/shark/OnAnalysisProgressListener/Step/COMPUTING_RETAINED_SIZE</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-c-o-m-p-u-t-i-n-g_-r-e-t-a-i-n-e-d_-s-i-z-e/#computing_retained_size","title":"COMPUTING_RETAINED_SIZE","text":"<p>COMPUTING_RETAINED_SIZE()</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-c-o-m-p-u-t-i-n-g_-r-e-t-a-i-n-e-d_-s-i-z-e/#properties","title":"Properties","text":"Name Summary humanReadableName val humanReadableName: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-on-analysis-progress-listener/-step/-e-x-t-r-a-c-t-i-n-g_-m-e-t-a-d-a-t-a/","title":"Index","text":"<p>//leakcanary/shark/OnAnalysisProgressListener/Step/EXTRACTING_METADATA</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-e-x-t-r-a-c-t-i-n-g_-m-e-t-a-d-a-t-a/#extracting_metadata","title":"EXTRACTING_METADATA","text":"<p>EXTRACTING_METADATA()</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-e-x-t-r-a-c-t-i-n-g_-m-e-t-a-d-a-t-a/#properties","title":"Properties","text":"Name Summary humanReadableName val humanReadableName: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-on-analysis-progress-listener/-step/-f-i-n-d-i-n-g_-d-o-m-i-n-a-t-o-r-s/","title":"Index","text":"<p>//leakcanary/shark/OnAnalysisProgressListener/Step/FINDING_DOMINATORS</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-f-i-n-d-i-n-g_-d-o-m-i-n-a-t-o-r-s/#finding_dominators","title":"FINDING_DOMINATORS","text":"<p>FINDING_DOMINATORS()</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-f-i-n-d-i-n-g_-d-o-m-i-n-a-t-o-r-s/#properties","title":"Properties","text":"Name Summary humanReadableName val humanReadableName: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-on-analysis-progress-listener/-step/-f-i-n-d-i-n-g_-p-a-t-h-s_-t-o_-r-e-t-a-i-n-e-d_-o-b-j-e-c-t-s/","title":"Index","text":"<p>//leakcanary/shark/OnAnalysisProgressListener/Step/FINDING_PATHS_TO_RETAINED_OBJECTS</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-f-i-n-d-i-n-g_-p-a-t-h-s_-t-o_-r-e-t-a-i-n-e-d_-o-b-j-e-c-t-s/#finding_paths_to_retained_objects","title":"FINDING_PATHS_TO_RETAINED_OBJECTS","text":"<p>FINDING_PATHS_TO_RETAINED_OBJECTS()</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-f-i-n-d-i-n-g_-p-a-t-h-s_-t-o_-r-e-t-a-i-n-e-d_-o-b-j-e-c-t-s/#properties","title":"Properties","text":"Name Summary humanReadableName val humanReadableName: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-on-analysis-progress-listener/-step/-f-i-n-d-i-n-g_-r-e-t-a-i-n-e-d_-o-b-j-e-c-t-s/","title":"Index","text":"<p>//leakcanary/shark/OnAnalysisProgressListener/Step/FINDING_RETAINED_OBJECTS</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-f-i-n-d-i-n-g_-r-e-t-a-i-n-e-d_-o-b-j-e-c-t-s/#finding_retained_objects","title":"FINDING_RETAINED_OBJECTS","text":"<p>FINDING_RETAINED_OBJECTS()</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-f-i-n-d-i-n-g_-r-e-t-a-i-n-e-d_-o-b-j-e-c-t-s/#properties","title":"Properties","text":"Name Summary humanReadableName val humanReadableName: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-on-analysis-progress-listener/-step/-i-n-s-p-e-c-t-i-n-g_-o-b-j-e-c-t-s/","title":"Index","text":"<p>//leakcanary/shark/OnAnalysisProgressListener/Step/INSPECTING_OBJECTS</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-i-n-s-p-e-c-t-i-n-g_-o-b-j-e-c-t-s/#inspecting_objects","title":"INSPECTING_OBJECTS","text":"<p>INSPECTING_OBJECTS()</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-i-n-s-p-e-c-t-i-n-g_-o-b-j-e-c-t-s/#properties","title":"Properties","text":"Name Summary humanReadableName val humanReadableName: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-on-analysis-progress-listener/-step/-p-a-r-s-i-n-g_-h-e-a-p_-d-u-m-p/","title":"Index","text":"<p>//leakcanary/shark/OnAnalysisProgressListener/Step/PARSING_HEAP_DUMP</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-p-a-r-s-i-n-g_-h-e-a-p_-d-u-m-p/#parsing_heap_dump","title":"PARSING_HEAP_DUMP","text":"<p>PARSING_HEAP_DUMP()</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-p-a-r-s-i-n-g_-h-e-a-p_-d-u-m-p/#properties","title":"Properties","text":"Name Summary humanReadableName val humanReadableName: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-on-analysis-progress-listener/-step/-r-e-p-o-r-t-i-n-g_-h-e-a-p_-a-n-a-l-y-s-i-s/","title":"Index","text":"<p>//leakcanary/shark/OnAnalysisProgressListener/Step/REPORTING_HEAP_ANALYSIS</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-r-e-p-o-r-t-i-n-g_-h-e-a-p_-a-n-a-l-y-s-i-s/#reporting_heap_analysis","title":"REPORTING_HEAP_ANALYSIS","text":"<p>REPORTING_HEAP_ANALYSIS()</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-r-e-p-o-r-t-i-n-g_-h-e-a-p_-a-n-a-l-y-s-i-s/#properties","title":"Properties","text":"Name Summary humanReadableName val humanReadableName: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-on-hprof-record-listener/","title":"Index","text":"<p>//leakcanary/shark/OnHprofRecordListener</p>"},{"location":"api/shark/-on-hprof-record-listener/#onhprofrecordlistener","title":"OnHprofRecordListener","text":"<p>fun interface OnHprofRecordListener</p> <p>Listener passed in to StreamingHprofReader.readRecords, gets notified for each HprofRecord found in the heap dump which types is in the set of the recordTypes parameter passed to StreamingHprofReader.readRecords.</p> <p>This is a functional interface with which you can create a OnHprofRecordListener from a lambda.</p>"},{"location":"api/shark/-on-hprof-record-listener/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-on-hprof-record-listener/#functions","title":"Functions","text":"Name Summary onHprofRecord abstract fun onHprofRecord(position: Long, record: HprofRecord)"},{"location":"api/shark/-on-hprof-record-listener/on-hprof-record/","title":"On hprof record","text":"<p>//leakcanary/shark/OnHprofRecordListener/onHprofRecord</p>"},{"location":"api/shark/-on-hprof-record-listener/on-hprof-record/#onhprofrecord","title":"onHprofRecord","text":"<p>abstract fun onHprofRecord(position: Long, record: HprofRecord)</p>"},{"location":"api/shark/-on-hprof-record-listener/-companion/","title":"Index","text":"<p>//leakcanary/shark/OnHprofRecordListener/Companion</p>"},{"location":"api/shark/-on-hprof-record-listener/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-on-hprof-record-listener/-companion/#functions","title":"Functions","text":"Name Summary invoke inline operator fun invoke(crossinline block: (Long, HprofRecord) -&gt; Unit): OnHprofRecordListenerUtility function to create a OnHprofRecordListener from the passed in block lambda instead of using the anonymous object : OnHprofRecordListener syntax."},{"location":"api/shark/-on-hprof-record-listener/-companion/invoke/","title":"Invoke","text":"<p>//leakcanary/shark/OnHprofRecordListener/Companion/invoke</p>"},{"location":"api/shark/-on-hprof-record-listener/-companion/invoke/#invoke","title":"invoke","text":"<p>inline operator fun invoke(crossinline block: (Long, HprofRecord) -&gt; Unit): OnHprofRecordListener</p> <p>Utility function to create a OnHprofRecordListener from the passed in block lambda instead of using the anonymous object : OnHprofRecordListener syntax.</p> <p>Usage:</p> <p>val listener = OnHprofRecordListener { position, record -&gt;\\ \\ }</p>"},{"location":"api/shark/-on-hprof-record-tag-listener/","title":"Index","text":"<p>//leakcanary/shark/OnHprofRecordTagListener</p>"},{"location":"api/shark/-on-hprof-record-tag-listener/#onhprofrecordtaglistener","title":"OnHprofRecordTagListener","text":"<p>fun interface OnHprofRecordTagListener</p> <p>Listener passed in to StreamingHprofReader.readRecords, gets notified for each HprofRecordTag found in the heap dump.</p> <p>Listener implementations are expected to read all bytes corresponding to a given tag from the provided reader before returning.</p>"},{"location":"api/shark/-on-hprof-record-tag-listener/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-on-hprof-record-tag-listener/#functions","title":"Functions","text":"Name Summary onHprofRecord abstract fun onHprofRecord(tag: HprofRecordTag, length: Long, reader: HprofRecordReader)"},{"location":"api/shark/-on-hprof-record-tag-listener/on-hprof-record/","title":"On hprof record","text":"<p>//leakcanary/shark/OnHprofRecordTagListener/onHprofRecord</p>"},{"location":"api/shark/-on-hprof-record-tag-listener/on-hprof-record/#onhprofrecord","title":"onHprofRecord","text":"<p>abstract fun onHprofRecord(tag: HprofRecordTag, length: Long, reader: HprofRecordReader)</p>"},{"location":"api/shark/-on-hprof-record-tag-listener/-companion/","title":"Index","text":"<p>//leakcanary/shark/OnHprofRecordTagListener/Companion</p>"},{"location":"api/shark/-on-hprof-record-tag-listener/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-on-hprof-record-tag-listener/-companion/#functions","title":"Functions","text":"Name Summary invoke inline operator fun invoke(crossinline block: (HprofRecordTag, Long, HprofRecordReader) -&gt; Unit): OnHprofRecordTagListenerUtility function to create a OnHprofRecordTagListener from the passed in block lambda instead of using the anonymous object : OnHprofRecordTagListener syntax."},{"location":"api/shark/-on-hprof-record-tag-listener/-companion/invoke/","title":"Invoke","text":"<p>//leakcanary/shark/OnHprofRecordTagListener/Companion/invoke</p>"},{"location":"api/shark/-on-hprof-record-tag-listener/-companion/invoke/#invoke","title":"invoke","text":"<p>inline operator fun invoke(crossinline block: (HprofRecordTag, Long, HprofRecordReader) -&gt; Unit): OnHprofRecordTagListener</p> <p>Utility function to create a OnHprofRecordTagListener from the passed in block lambda instead of using the anonymous object : OnHprofRecordTagListener syntax.</p> <p>Usage:</p> <p>val listener = OnHprofRecordTagListener { tag, length, reader -&gt;\\ \\ }</p>"},{"location":"api/shark/-primitive-type/","title":"Index","text":"<p>//leakcanary/shark/PrimitiveType</p>"},{"location":"api/shark/-primitive-type/#primitivetype","title":"PrimitiveType","text":"<p>enum PrimitiveType : Enum&lt;PrimitiveType&gt; </p> <p>A primitive type in the prof.</p>"},{"location":"api/shark/-primitive-type/#entries","title":"Entries","text":"LONG LONG(11, 8) INT INT(10, 4) SHORT SHORT(9, 2) BYTE BYTE(8, 1) DOUBLE DOUBLE(7, 8) FLOAT FLOAT(6, 4) CHAR CHAR(5, 2) BOOLEAN BOOLEAN(4, 1)"},{"location":"api/shark/-primitive-type/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-primitive-type/#properties","title":"Properties","text":"Name Summary byteSize val byteSize: IntThe size in bytes for each value of that type. hprofType val hprofType: IntThe hprof defined \"basic type\". name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-primitive-type/byte-size/","title":"Byte size","text":"<p>//leakcanary/shark/PrimitiveType/byteSize</p>"},{"location":"api/shark/-primitive-type/byte-size/#bytesize","title":"byteSize","text":"<p>val byteSize: Int</p> <p>The size in bytes for each value of that type.</p>"},{"location":"api/shark/-primitive-type/hprof-type/","title":"Hprof type","text":"<p>//leakcanary/shark/PrimitiveType/hprofType</p>"},{"location":"api/shark/-primitive-type/hprof-type/#hproftype","title":"hprofType","text":"<p>val hprofType: Int</p> <p>The hprof defined \"basic type\".</p>"},{"location":"api/shark/-primitive-type/-b-o-o-l-e-a-n/","title":"Index","text":"<p>//leakcanary/shark/PrimitiveType/BOOLEAN</p>"},{"location":"api/shark/-primitive-type/-b-o-o-l-e-a-n/#boolean","title":"BOOLEAN","text":"<p>BOOLEAN(4, 1)</p>"},{"location":"api/shark/-primitive-type/-b-o-o-l-e-a-n/#properties","title":"Properties","text":"Name Summary byteSize val byteSize: IntThe size in bytes for each value of that type. hprofType val hprofType: IntThe hprof defined \"basic type\". name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-primitive-type/-b-y-t-e/","title":"Index","text":"<p>//leakcanary/shark/PrimitiveType/BYTE</p>"},{"location":"api/shark/-primitive-type/-b-y-t-e/#byte","title":"BYTE","text":"<p>BYTE(8, 1)</p>"},{"location":"api/shark/-primitive-type/-b-y-t-e/#properties","title":"Properties","text":"Name Summary byteSize val byteSize: IntThe size in bytes for each value of that type. hprofType val hprofType: IntThe hprof defined \"basic type\". name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-primitive-type/-c-h-a-r/","title":"Index","text":"<p>//leakcanary/shark/PrimitiveType/CHAR</p>"},{"location":"api/shark/-primitive-type/-c-h-a-r/#char","title":"CHAR","text":"<p>CHAR(5, 2)</p>"},{"location":"api/shark/-primitive-type/-c-h-a-r/#properties","title":"Properties","text":"Name Summary byteSize val byteSize: IntThe size in bytes for each value of that type. hprofType val hprofType: IntThe hprof defined \"basic type\". name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-primitive-type/-companion/","title":"Index","text":"<p>//leakcanary/shark/PrimitiveType/Companion</p>"},{"location":"api/shark/-primitive-type/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-primitive-type/-companion/#properties","title":"Properties","text":"Name Summary byteSizeByHprofType val byteSizeByHprofType: Map&lt;Int, Int&gt; primitiveTypeByHprofType val primitiveTypeByHprofType: Map&lt;Int, PrimitiveType&gt; REFERENCE_HPROF_TYPE const val REFERENCE_HPROF_TYPE: Int = 2The hprof defined \"basic type\" for references."},{"location":"api/shark/-primitive-type/-companion/-r-e-f-e-r-e-n-c-e_-h-p-r-o-f_-t-y-p-e/","title":"r e f e r e n c e  h p r o f  t y p e","text":"<p>//leakcanary/shark/PrimitiveType/Companion/REFERENCE_HPROF_TYPE</p>"},{"location":"api/shark/-primitive-type/-companion/-r-e-f-e-r-e-n-c-e_-h-p-r-o-f_-t-y-p-e/#reference_hprof_type","title":"REFERENCE_HPROF_TYPE","text":"<p>const val REFERENCE_HPROF_TYPE: Int = 2</p> <p>The hprof defined \"basic type\" for references.</p>"},{"location":"api/shark/-primitive-type/-companion/byte-size-by-hprof-type/","title":"Byte size by hprof type","text":"<p>//leakcanary/shark/PrimitiveType/Companion/byteSizeByHprofType</p>"},{"location":"api/shark/-primitive-type/-companion/byte-size-by-hprof-type/#bytesizebyhproftype","title":"byteSizeByHprofType","text":"<p>val byteSizeByHprofType: Map&lt;Int, Int&gt;</p>"},{"location":"api/shark/-primitive-type/-companion/primitive-type-by-hprof-type/","title":"Primitive type by hprof type","text":"<p>//leakcanary/shark/PrimitiveType/Companion/primitiveTypeByHprofType</p>"},{"location":"api/shark/-primitive-type/-companion/primitive-type-by-hprof-type/#primitivetypebyhproftype","title":"primitiveTypeByHprofType","text":"<p>val primitiveTypeByHprofType: Map&lt;Int, PrimitiveType&gt;</p>"},{"location":"api/shark/-primitive-type/-d-o-u-b-l-e/","title":"Index","text":"<p>//leakcanary/shark/PrimitiveType/DOUBLE</p>"},{"location":"api/shark/-primitive-type/-d-o-u-b-l-e/#double","title":"DOUBLE","text":"<p>DOUBLE(7, 8)</p>"},{"location":"api/shark/-primitive-type/-d-o-u-b-l-e/#properties","title":"Properties","text":"Name Summary byteSize val byteSize: IntThe size in bytes for each value of that type. hprofType val hprofType: IntThe hprof defined \"basic type\". name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-primitive-type/-f-l-o-a-t/","title":"Index","text":"<p>//leakcanary/shark/PrimitiveType/FLOAT</p>"},{"location":"api/shark/-primitive-type/-f-l-o-a-t/#float","title":"FLOAT","text":"<p>FLOAT(6, 4)</p>"},{"location":"api/shark/-primitive-type/-f-l-o-a-t/#properties","title":"Properties","text":"Name Summary byteSize val byteSize: IntThe size in bytes for each value of that type. hprofType val hprofType: IntThe hprof defined \"basic type\". name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-primitive-type/-i-n-t/","title":"Index","text":"<p>//leakcanary/shark/PrimitiveType/INT</p>"},{"location":"api/shark/-primitive-type/-i-n-t/#int","title":"INT","text":"<p>INT(10, 4)</p>"},{"location":"api/shark/-primitive-type/-i-n-t/#properties","title":"Properties","text":"Name Summary byteSize val byteSize: IntThe size in bytes for each value of that type. hprofType val hprofType: IntThe hprof defined \"basic type\". name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-primitive-type/-l-o-n-g/","title":"Index","text":"<p>//leakcanary/shark/PrimitiveType/LONG</p>"},{"location":"api/shark/-primitive-type/-l-o-n-g/#long","title":"LONG","text":"<p>LONG(11, 8)</p>"},{"location":"api/shark/-primitive-type/-l-o-n-g/#properties","title":"Properties","text":"Name Summary byteSize val byteSize: IntThe size in bytes for each value of that type. hprofType val hprofType: IntThe hprof defined \"basic type\". name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-primitive-type/-s-h-o-r-t/","title":"Index","text":"<p>//leakcanary/shark/PrimitiveType/SHORT</p>"},{"location":"api/shark/-primitive-type/-s-h-o-r-t/#short","title":"SHORT","text":"<p>SHORT(9, 2)</p>"},{"location":"api/shark/-primitive-type/-s-h-o-r-t/#properties","title":"Properties","text":"Name Summary byteSize val byteSize: IntThe size in bytes for each value of that type. hprofType val hprofType: IntThe hprof defined \"basic type\". name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-proguard-mapping/","title":"Index","text":"<p>//leakcanary/shark/ProguardMapping</p>"},{"location":"api/shark/-proguard-mapping/#proguardmapping","title":"ProguardMapping","text":"<p>class ProguardMapping</p>"},{"location":"api/shark/-proguard-mapping/#constructors","title":"Constructors","text":"ProguardMapping fun ProguardMapping()"},{"location":"api/shark/-proguard-mapping/#functions","title":"Functions","text":"Name Summary addMapping fun addMapping(obfuscatedName: String, clearName: String)Adds entry to the obfuscatedToClearNamesMap map. deobfuscateClassName fun deobfuscateClassName(obfuscatedClassName: String): StringReturns deobfuscated class name or original string if there is no mapping for given obfuscated name. deobfuscateFieldName fun deobfuscateFieldName(obfuscatedClass: String, obfuscatedField: String): StringReturns deobfuscated field name or original string if there is no mapping for given obfuscated name."},{"location":"api/shark/-proguard-mapping/#extensions","title":"Extensions","text":"Name Summary create fun ProguardMapping.create(block: ProguardMappingHelper.() -&gt; Unit): ProguardMapping"},{"location":"api/shark/-proguard-mapping/-proguard-mapping/","title":"proguard mapping","text":"<p>//leakcanary/shark/ProguardMapping/ProguardMapping</p>"},{"location":"api/shark/-proguard-mapping/-proguard-mapping/#proguardmapping","title":"ProguardMapping","text":"<p>fun ProguardMapping()</p>"},{"location":"api/shark/-proguard-mapping/add-mapping/","title":"Add mapping","text":"<p>//leakcanary/shark/ProguardMapping/addMapping</p>"},{"location":"api/shark/-proguard-mapping/add-mapping/#addmapping","title":"addMapping","text":"<p>fun addMapping(obfuscatedName: String, clearName: String)</p> <p>Adds entry to the obfuscatedToClearNamesMap map.</p>"},{"location":"api/shark/-proguard-mapping/deobfuscate-class-name/","title":"Deobfuscate class name","text":"<p>//leakcanary/shark/ProguardMapping/deobfuscateClassName</p>"},{"location":"api/shark/-proguard-mapping/deobfuscate-class-name/#deobfuscateclassname","title":"deobfuscateClassName","text":"<p>fun deobfuscateClassName(obfuscatedClassName: String): String</p> <p>Returns deobfuscated class name or original string if there is no mapping for given obfuscated name.</p>"},{"location":"api/shark/-proguard-mapping/deobfuscate-field-name/","title":"Deobfuscate field name","text":"<p>//leakcanary/shark/ProguardMapping/deobfuscateFieldName</p>"},{"location":"api/shark/-proguard-mapping/deobfuscate-field-name/#deobfuscatefieldname","title":"deobfuscateFieldName","text":"<p>fun deobfuscateFieldName(obfuscatedClass: String, obfuscatedField: String): String</p> <p>Returns deobfuscated field name or original string if there is no mapping for given obfuscated name.</p>"},{"location":"api/shark/-proguard-mapping-helper/","title":"Index","text":"<p>//leakcanary/shark/ProguardMappingHelper</p>"},{"location":"api/shark/-proguard-mapping-helper/#proguardmappinghelper","title":"ProguardMappingHelper","text":"<p>class ProguardMappingHelper(proguardMapping: ProguardMapping)</p>"},{"location":"api/shark/-proguard-mapping-helper/#constructors","title":"Constructors","text":"ProguardMappingHelper fun ProguardMappingHelper(proguardMapping: ProguardMapping)"},{"location":"api/shark/-proguard-mapping-helper/#types","title":"Types","text":"Name Summary Class inner class Class(val nameMapping: Pair&lt;String, String&gt;)"},{"location":"api/shark/-proguard-mapping-helper/#functions","title":"Functions","text":"Name Summary clazz fun clazz(className: Pair&lt;String, String&gt;, fieldsBlock: ProguardMappingHelper.Class.() -&gt; Unit = {}) field fun ProguardMappingHelper.Class.field(block: () -&gt; Pair&lt;String, String&gt;)"},{"location":"api/shark/-proguard-mapping-helper/-proguard-mapping-helper/","title":"proguard mapping helper","text":"<p>//leakcanary/shark/ProguardMappingHelper/ProguardMappingHelper</p>"},{"location":"api/shark/-proguard-mapping-helper/-proguard-mapping-helper/#proguardmappinghelper","title":"ProguardMappingHelper","text":"<p>fun ProguardMappingHelper(proguardMapping: ProguardMapping)</p>"},{"location":"api/shark/-proguard-mapping-helper/clazz/","title":"Clazz","text":"<p>//leakcanary/shark/ProguardMappingHelper/clazz</p>"},{"location":"api/shark/-proguard-mapping-helper/clazz/#clazz","title":"clazz","text":"<p>fun clazz(className: Pair&lt;String, String&gt;, fieldsBlock: ProguardMappingHelper.Class.() -&gt; Unit = {})</p>"},{"location":"api/shark/-proguard-mapping-helper/field/","title":"Field","text":"<p>//leakcanary/shark/ProguardMappingHelper/field</p>"},{"location":"api/shark/-proguard-mapping-helper/field/#field","title":"field","text":"<p>fun ProguardMappingHelper.Class.field(block: () -&gt; Pair&lt;String, String&gt;)</p>"},{"location":"api/shark/-proguard-mapping-helper/-class/","title":"Index","text":"<p>//leakcanary/shark/ProguardMappingHelper/Class</p>"},{"location":"api/shark/-proguard-mapping-helper/-class/#class","title":"Class","text":"<p>inner class Class(val nameMapping: Pair&lt;String, String&gt;)</p>"},{"location":"api/shark/-proguard-mapping-helper/-class/#constructors","title":"Constructors","text":"Class fun Class(nameMapping: Pair&lt;String, String&gt;)"},{"location":"api/shark/-proguard-mapping-helper/-class/#properties","title":"Properties","text":"Name Summary fieldMappings val fieldMappings: MutableSet&lt;Pair&lt;String, String&gt;&gt; nameMapping val nameMapping: Pair&lt;String, String&gt;"},{"location":"api/shark/-proguard-mapping-helper/-class/-class/","title":"class","text":"<p>//leakcanary/shark/ProguardMappingHelper/Class/Class</p>"},{"location":"api/shark/-proguard-mapping-helper/-class/-class/#class","title":"Class","text":"<p>fun Class(nameMapping: Pair&lt;String, String&gt;)</p>"},{"location":"api/shark/-proguard-mapping-helper/-class/field-mappings/","title":"Field mappings","text":"<p>//leakcanary/shark/ProguardMappingHelper/Class/fieldMappings</p>"},{"location":"api/shark/-proguard-mapping-helper/-class/field-mappings/#fieldmappings","title":"fieldMappings","text":"<p>val fieldMappings: MutableSet&lt;Pair&lt;String, String&gt;&gt;</p>"},{"location":"api/shark/-proguard-mapping-helper/-class/name-mapping/","title":"Name mapping","text":"<p>//leakcanary/shark/ProguardMappingHelper/Class/nameMapping</p>"},{"location":"api/shark/-proguard-mapping-helper/-class/name-mapping/#namemapping","title":"nameMapping","text":"<p>val nameMapping: Pair&lt;String, String&gt;</p>"},{"location":"api/shark/-proguard-mapping-reader/","title":"Index","text":"<p>//leakcanary/shark/ProguardMappingReader</p>"},{"location":"api/shark/-proguard-mapping-reader/#proguardmappingreader","title":"ProguardMappingReader","text":"<p>class ProguardMappingReader(proguardMappingInputStream: InputStream)</p>"},{"location":"api/shark/-proguard-mapping-reader/#constructors","title":"Constructors","text":"ProguardMappingReader fun ProguardMappingReader(proguardMappingInputStream: InputStream)"},{"location":"api/shark/-proguard-mapping-reader/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-proguard-mapping-reader/#functions","title":"Functions","text":"Name Summary readProguardMapping fun readProguardMapping(): ProguardMapping"},{"location":"api/shark/-proguard-mapping-reader/-proguard-mapping-reader/","title":"proguard mapping reader","text":"<p>//leakcanary/shark/ProguardMappingReader/ProguardMappingReader</p>"},{"location":"api/shark/-proguard-mapping-reader/-proguard-mapping-reader/#proguardmappingreader","title":"ProguardMappingReader","text":"<p>fun ProguardMappingReader(proguardMappingInputStream: InputStream)</p>"},{"location":"api/shark/-proguard-mapping-reader/read-proguard-mapping/","title":"Read proguard mapping","text":"<p>//leakcanary/shark/ProguardMappingReader/readProguardMapping</p>"},{"location":"api/shark/-proguard-mapping-reader/read-proguard-mapping/#readproguardmapping","title":"readProguardMapping","text":"<p>fun readProguardMapping(): ProguardMapping</p>"},{"location":"api/shark/-proguard-mapping-reader/-companion/","title":"Index","text":"<p>//leakcanary/shark/ProguardMappingReader/Companion</p>"},{"location":"api/shark/-proguard-mapping-reader/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-random-access-hprof-reader/","title":"Index","text":"<p>//leakcanary/shark/RandomAccessHprofReader</p>"},{"location":"api/shark/-random-access-hprof-reader/#randomaccesshprofreader","title":"RandomAccessHprofReader","text":"<p>class RandomAccessHprofReader : Closeable</p> <p>Reads records in a Hprof source, one at a time with a specific position and size. Call openReaderFor to obtain a new instance.</p>"},{"location":"api/shark/-random-access-hprof-reader/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-random-access-hprof-reader/#functions","title":"Functions","text":"Name Summary close open override fun close() readRecord fun &lt;T&gt; readRecord(recordPosition: Long, recordSize: Long, withRecordReader: HprofRecordReader.() -&gt; T): TLoads recordSize bytes at recordPosition into the buffer that backs HprofRecordReader then calls withRecordReader with that reader as a receiver. withRecordReader is expected to use the receiver reader to read one record of exactly recordSize bytes."},{"location":"api/shark/-random-access-hprof-reader/close/","title":"Close","text":"<p>//leakcanary/shark/RandomAccessHprofReader/close</p>"},{"location":"api/shark/-random-access-hprof-reader/close/#close","title":"close","text":"<p>open override fun close()</p>"},{"location":"api/shark/-random-access-hprof-reader/read-record/","title":"Read record","text":"<p>//leakcanary/shark/RandomAccessHprofReader/readRecord</p>"},{"location":"api/shark/-random-access-hprof-reader/read-record/#readrecord","title":"readRecord","text":"<p>fun &lt;T&gt; readRecord(recordPosition: Long, recordSize: Long, withRecordReader: HprofRecordReader.() -&gt; T): T</p> <p>Loads recordSize bytes at recordPosition into the buffer that backs HprofRecordReader then calls withRecordReader with that reader as a receiver. withRecordReader is expected to use the receiver reader to read one record of exactly recordSize bytes.</p>"},{"location":"api/shark/-random-access-hprof-reader/read-record/#return","title":"Return","text":"<p>the results from withRecordReader</p>"},{"location":"api/shark/-random-access-hprof-reader/-companion/","title":"Index","text":"<p>//leakcanary/shark/RandomAccessHprofReader/Companion</p>"},{"location":"api/shark/-random-access-hprof-reader/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-random-access-hprof-reader/-companion/#functions","title":"Functions","text":"Name Summary openReaderFor fun openReaderFor(hprofFile: File, hprofHeader: HprofHeader = HprofHeader.parseHeaderOf(hprofFile)): RandomAccessHprofReaderfun openReaderFor(hprofSourceProvider: RandomAccessSourceProvider, hprofHeader: HprofHeader = hprofSourceProvider.openRandomAccessSource()         .use { HprofHeader.parseHeaderOf(it.asStreamingSource()) }): RandomAccessHprofReader"},{"location":"api/shark/-random-access-hprof-reader/-companion/open-reader-for/","title":"Open reader for","text":"<p>//leakcanary/shark/RandomAccessHprofReader/Companion/openReaderFor</p>"},{"location":"api/shark/-random-access-hprof-reader/-companion/open-reader-for/#openreaderfor","title":"openReaderFor","text":"<p>fun openReaderFor(hprofFile: File, hprofHeader: HprofHeader = HprofHeader.parseHeaderOf(hprofFile)): RandomAccessHprofReader</p> <p>fun openReaderFor(hprofSourceProvider: RandomAccessSourceProvider, hprofHeader: HprofHeader = hprofSourceProvider.openRandomAccessSource()         .use { HprofHeader.parseHeaderOf(it.asStreamingSource()) }): RandomAccessHprofReader</p>"},{"location":"api/shark/-random-access-source/","title":"Index","text":"<p>//leakcanary/shark/RandomAccessSource</p>"},{"location":"api/shark/-random-access-source/#randomaccesssource","title":"RandomAccessSource","text":"<p>interface RandomAccessSource : Closeable</p>"},{"location":"api/shark/-random-access-source/#functions","title":"Functions","text":"Name Summary asStreamingSource open fun asStreamingSource(): BufferedSource close abstract override fun close() read abstract fun read(sink: Buffer, position: Long, byteCount: Long): Long"},{"location":"api/shark/-random-access-source/as-streaming-source/","title":"As streaming source","text":"<p>//leakcanary/shark/RandomAccessSource/asStreamingSource</p>"},{"location":"api/shark/-random-access-source/as-streaming-source/#asstreamingsource","title":"asStreamingSource","text":"<p>open fun asStreamingSource(): BufferedSource</p>"},{"location":"api/shark/-random-access-source/read/","title":"Read","text":"<p>//leakcanary/shark/RandomAccessSource/read</p>"},{"location":"api/shark/-random-access-source/read/#read","title":"read","text":"<p>abstract fun read(sink: Buffer, position: Long, byteCount: Long): Long</p>"},{"location":"api/shark/-random-access-source-provider/","title":"Index","text":"<p>//leakcanary/shark/RandomAccessSourceProvider</p>"},{"location":"api/shark/-random-access-source-provider/#randomaccesssourceprovider","title":"RandomAccessSourceProvider","text":"<p>fun interface RandomAccessSourceProvider</p> <p>Can open RandomAccessSource instances.</p>"},{"location":"api/shark/-random-access-source-provider/#functions","title":"Functions","text":"Name Summary openRandomAccessSource abstract fun openRandomAccessSource(): RandomAccessSource"},{"location":"api/shark/-random-access-source-provider/#inheritors","title":"Inheritors","text":"Name DualSourceProvider"},{"location":"api/shark/-random-access-source-provider/open-random-access-source/","title":"Open random access source","text":"<p>//leakcanary/shark/RandomAccessSourceProvider/openRandomAccessSource</p>"},{"location":"api/shark/-random-access-source-provider/open-random-access-source/#openrandomaccesssource","title":"openRandomAccessSource","text":"<p>abstract fun openRandomAccessSource(): RandomAccessSource</p>"},{"location":"api/shark/-reference-matcher/","title":"Index","text":"<p>//leakcanary/shark/ReferenceMatcher</p>"},{"location":"api/shark/-reference-matcher/#referencematcher","title":"ReferenceMatcher","text":"<p>sealed class ReferenceMatcher</p> <p>Used to pattern match known patterns of references in the heap, either to ignore them (IgnoredReferenceMatcher) or to mark them as library leaks (LibraryLeakReferenceMatcher).</p>"},{"location":"api/shark/-reference-matcher/#properties","title":"Properties","text":"Name Summary pattern abstract val pattern: ReferencePatternThe pattern that references will be matched against."},{"location":"api/shark/-reference-matcher/#inheritors","title":"Inheritors","text":"Name LibraryLeakReferenceMatcher IgnoredReferenceMatcher"},{"location":"api/shark/-reference-matcher/pattern/","title":"Pattern","text":"<p>//leakcanary/shark/ReferenceMatcher/pattern</p>"},{"location":"api/shark/-reference-matcher/pattern/#pattern","title":"pattern","text":"<p>abstract val pattern: ReferencePattern</p> <p>The pattern that references will be matched against.</p>"},{"location":"api/shark/-reference-pattern/","title":"Index","text":"<p>//leakcanary/shark/ReferencePattern</p>"},{"location":"api/shark/-reference-pattern/#referencepattern","title":"ReferencePattern","text":"<p>sealed class ReferencePattern : Serializable</p> <p>A pattern that will match references for a given ReferenceMatcher.</p>"},{"location":"api/shark/-reference-pattern/#types","title":"Types","text":"Name Summary Companion object Companion InstanceFieldPattern data class InstanceFieldPattern(val className: String, val fieldName: String) : ReferencePatternMatches instances field references, identified by className and fieldName. JavaLocalPattern data class JavaLocalPattern(val threadName: String) : ReferencePatternMatches local references held in the stack of frames of a given thread, identified by its name. NativeGlobalVariablePattern data class NativeGlobalVariablePattern(val className: String) : ReferencePatternMatches native global variables (also known as jni global gc roots) that reference Java objects. The class name will match against classes, instances and object arrays with a matching class name. StaticFieldPattern data class StaticFieldPattern(val className: String, val fieldName: String) : ReferencePatternMatches static field references, identified by className and fieldName."},{"location":"api/shark/-reference-pattern/#inheritors","title":"Inheritors","text":"Name JavaLocalPattern StaticFieldPattern InstanceFieldPattern NativeGlobalVariablePattern"},{"location":"api/shark/-reference-pattern/-companion/","title":"Index","text":"<p>//leakcanary/shark/ReferencePattern/Companion</p>"},{"location":"api/shark/-reference-pattern/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-reference-pattern/-instance-field-pattern/","title":"Index","text":"<p>//leakcanary/shark/ReferencePattern/InstanceFieldPattern</p>"},{"location":"api/shark/-reference-pattern/-instance-field-pattern/#instancefieldpattern","title":"InstanceFieldPattern","text":"<p>data class InstanceFieldPattern(val className: String, val fieldName: String) : ReferencePattern</p> <p>Matches instances field references, identified by className and fieldName.</p> <p>Note: If fieldName is declared in a superclass it will still match for subclasses. This is to support overriding of rules for specific cases. If two ReferenceMatcher match for the same fieldName but for different className in a class hierarchy, then the closest class in the hierarchy wins.</p>"},{"location":"api/shark/-reference-pattern/-instance-field-pattern/#constructors","title":"Constructors","text":"InstanceFieldPattern fun InstanceFieldPattern(className: String, fieldName: String)"},{"location":"api/shark/-reference-pattern/-instance-field-pattern/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-reference-pattern/-instance-field-pattern/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-reference-pattern/-instance-field-pattern/#properties","title":"Properties","text":"Name Summary className val className: String fieldName val fieldName: String"},{"location":"api/shark/-reference-pattern/-instance-field-pattern/-instance-field-pattern/","title":"instance field pattern","text":"<p>//leakcanary/shark/ReferencePattern/InstanceFieldPattern/InstanceFieldPattern</p>"},{"location":"api/shark/-reference-pattern/-instance-field-pattern/-instance-field-pattern/#instancefieldpattern","title":"InstanceFieldPattern","text":"<p>fun InstanceFieldPattern(className: String, fieldName: String)</p>"},{"location":"api/shark/-reference-pattern/-instance-field-pattern/class-name/","title":"Class name","text":"<p>//leakcanary/shark/ReferencePattern/InstanceFieldPattern/className</p>"},{"location":"api/shark/-reference-pattern/-instance-field-pattern/class-name/#classname","title":"className","text":"<p>val className: String</p>"},{"location":"api/shark/-reference-pattern/-instance-field-pattern/field-name/","title":"Field name","text":"<p>//leakcanary/shark/ReferencePattern/InstanceFieldPattern/fieldName</p>"},{"location":"api/shark/-reference-pattern/-instance-field-pattern/field-name/#fieldname","title":"fieldName","text":"<p>val fieldName: String</p>"},{"location":"api/shark/-reference-pattern/-instance-field-pattern/to-string/","title":"To string","text":"<p>//leakcanary/shark/ReferencePattern/InstanceFieldPattern/toString</p>"},{"location":"api/shark/-reference-pattern/-instance-field-pattern/to-string/#tostring","title":"toString","text":"<p>open override fun toString(): String</p>"},{"location":"api/shark/-reference-pattern/-instance-field-pattern/-companion/","title":"Index","text":"<p>//leakcanary/shark/ReferencePattern/InstanceFieldPattern/Companion</p>"},{"location":"api/shark/-reference-pattern/-instance-field-pattern/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-reference-pattern/-java-local-pattern/","title":"Index","text":"<p>//leakcanary/shark/ReferencePattern/JavaLocalPattern</p>"},{"location":"api/shark/-reference-pattern/-java-local-pattern/#javalocalpattern","title":"JavaLocalPattern","text":"<p>data class JavaLocalPattern(val threadName: String) : ReferencePattern</p> <p>Matches local references held in the stack of frames of a given thread, identified by its name.</p>"},{"location":"api/shark/-reference-pattern/-java-local-pattern/#constructors","title":"Constructors","text":"JavaLocalPattern fun JavaLocalPattern(threadName: String)"},{"location":"api/shark/-reference-pattern/-java-local-pattern/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-reference-pattern/-java-local-pattern/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-reference-pattern/-java-local-pattern/#properties","title":"Properties","text":"Name Summary threadName val threadName: String"},{"location":"api/shark/-reference-pattern/-java-local-pattern/-java-local-pattern/","title":"java local pattern","text":"<p>//leakcanary/shark/ReferencePattern/JavaLocalPattern/JavaLocalPattern</p>"},{"location":"api/shark/-reference-pattern/-java-local-pattern/-java-local-pattern/#javalocalpattern","title":"JavaLocalPattern","text":"<p>fun JavaLocalPattern(threadName: String)</p>"},{"location":"api/shark/-reference-pattern/-java-local-pattern/thread-name/","title":"Thread name","text":"<p>//leakcanary/shark/ReferencePattern/JavaLocalPattern/threadName</p>"},{"location":"api/shark/-reference-pattern/-java-local-pattern/thread-name/#threadname","title":"threadName","text":"<p>val threadName: String</p>"},{"location":"api/shark/-reference-pattern/-java-local-pattern/to-string/","title":"To string","text":"<p>//leakcanary/shark/ReferencePattern/JavaLocalPattern/toString</p>"},{"location":"api/shark/-reference-pattern/-java-local-pattern/to-string/#tostring","title":"toString","text":"<p>open override fun toString(): String</p>"},{"location":"api/shark/-reference-pattern/-java-local-pattern/-companion/","title":"Index","text":"<p>//leakcanary/shark/ReferencePattern/JavaLocalPattern/Companion</p>"},{"location":"api/shark/-reference-pattern/-java-local-pattern/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-reference-pattern/-native-global-variable-pattern/","title":"Index","text":"<p>//leakcanary/shark/ReferencePattern/NativeGlobalVariablePattern</p>"},{"location":"api/shark/-reference-pattern/-native-global-variable-pattern/#nativeglobalvariablepattern","title":"NativeGlobalVariablePattern","text":"<p>data class NativeGlobalVariablePattern(val className: String) : ReferencePattern</p> <p>Matches native global variables (also known as jni global gc roots) that reference Java objects. The class name will match against classes, instances and object arrays with a matching class name.</p>"},{"location":"api/shark/-reference-pattern/-native-global-variable-pattern/#constructors","title":"Constructors","text":"NativeGlobalVariablePattern fun NativeGlobalVariablePattern(className: String)"},{"location":"api/shark/-reference-pattern/-native-global-variable-pattern/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-reference-pattern/-native-global-variable-pattern/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-reference-pattern/-native-global-variable-pattern/#properties","title":"Properties","text":"Name Summary className val className: String"},{"location":"api/shark/-reference-pattern/-native-global-variable-pattern/-native-global-variable-pattern/","title":"native global variable pattern","text":"<p>//leakcanary/shark/ReferencePattern/NativeGlobalVariablePattern/NativeGlobalVariablePattern</p>"},{"location":"api/shark/-reference-pattern/-native-global-variable-pattern/-native-global-variable-pattern/#nativeglobalvariablepattern","title":"NativeGlobalVariablePattern","text":"<p>fun NativeGlobalVariablePattern(className: String)</p>"},{"location":"api/shark/-reference-pattern/-native-global-variable-pattern/class-name/","title":"Class name","text":"<p>//leakcanary/shark/ReferencePattern/NativeGlobalVariablePattern/className</p>"},{"location":"api/shark/-reference-pattern/-native-global-variable-pattern/class-name/#classname","title":"className","text":"<p>val className: String</p>"},{"location":"api/shark/-reference-pattern/-native-global-variable-pattern/to-string/","title":"To string","text":"<p>//leakcanary/shark/ReferencePattern/NativeGlobalVariablePattern/toString</p>"},{"location":"api/shark/-reference-pattern/-native-global-variable-pattern/to-string/#tostring","title":"toString","text":"<p>open override fun toString(): String</p>"},{"location":"api/shark/-reference-pattern/-native-global-variable-pattern/-companion/","title":"Index","text":"<p>//leakcanary/shark/ReferencePattern/NativeGlobalVariablePattern/Companion</p>"},{"location":"api/shark/-reference-pattern/-native-global-variable-pattern/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-reference-pattern/-static-field-pattern/","title":"Index","text":"<p>//leakcanary/shark/ReferencePattern/StaticFieldPattern</p>"},{"location":"api/shark/-reference-pattern/-static-field-pattern/#staticfieldpattern","title":"StaticFieldPattern","text":"<p>data class StaticFieldPattern(val className: String, val fieldName: String) : ReferencePattern</p> <p>Matches static field references, identified by className and fieldName.</p>"},{"location":"api/shark/-reference-pattern/-static-field-pattern/#constructors","title":"Constructors","text":"StaticFieldPattern fun StaticFieldPattern(className: String, fieldName: String)"},{"location":"api/shark/-reference-pattern/-static-field-pattern/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-reference-pattern/-static-field-pattern/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-reference-pattern/-static-field-pattern/#properties","title":"Properties","text":"Name Summary className val className: String fieldName val fieldName: String"},{"location":"api/shark/-reference-pattern/-static-field-pattern/-static-field-pattern/","title":"static field pattern","text":"<p>//leakcanary/shark/ReferencePattern/StaticFieldPattern/StaticFieldPattern</p>"},{"location":"api/shark/-reference-pattern/-static-field-pattern/-static-field-pattern/#staticfieldpattern","title":"StaticFieldPattern","text":"<p>fun StaticFieldPattern(className: String, fieldName: String)</p>"},{"location":"api/shark/-reference-pattern/-static-field-pattern/class-name/","title":"Class name","text":"<p>//leakcanary/shark/ReferencePattern/StaticFieldPattern/className</p>"},{"location":"api/shark/-reference-pattern/-static-field-pattern/class-name/#classname","title":"className","text":"<p>val className: String</p>"},{"location":"api/shark/-reference-pattern/-static-field-pattern/field-name/","title":"Field name","text":"<p>//leakcanary/shark/ReferencePattern/StaticFieldPattern/fieldName</p>"},{"location":"api/shark/-reference-pattern/-static-field-pattern/field-name/#fieldname","title":"fieldName","text":"<p>val fieldName: String</p>"},{"location":"api/shark/-reference-pattern/-static-field-pattern/to-string/","title":"To string","text":"<p>//leakcanary/shark/ReferencePattern/StaticFieldPattern/toString</p>"},{"location":"api/shark/-reference-pattern/-static-field-pattern/to-string/#tostring","title":"toString","text":"<p>open override fun toString(): String</p>"},{"location":"api/shark/-reference-pattern/-static-field-pattern/-companion/","title":"Index","text":"<p>//leakcanary/shark/ReferencePattern/StaticFieldPattern/Companion</p>"},{"location":"api/shark/-reference-pattern/-static-field-pattern/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-shark-cli-command/","title":"Index","text":"<p>//leakcanary/shark/SharkCliCommand</p>"},{"location":"api/shark/-shark-cli-command/#sharkclicommand","title":"SharkCliCommand","text":"<p>class SharkCliCommand : CliktCommand</p>"},{"location":"api/shark/-shark-cli-command/#constructors","title":"Constructors","text":"SharkCliCommand fun SharkCliCommand()"},{"location":"api/shark/-shark-cli-command/#types","title":"Types","text":"Name Summary CommandParams class CommandParams(val source: SharkCliCommand.HeapDumpSource, val obfuscationMappingPath: File?) Companion object Companion HeapDumpSource sealed class HeapDumpSource"},{"location":"api/shark/-shark-cli-command/#functions","title":"Functions","text":"Name Summary aliases open fun aliases(): Map&lt;String, List&lt;String&gt;&gt; getFormattedHelp open fun getFormattedHelp(): String getFormattedUsage open fun getFormattedUsage(): String issueMessage fun issueMessage(message: String) main fun main(argv: Array&lt;String&gt;)fun main(argv: List&lt;String&gt;) parse fun parse(argv: Array&lt;String&gt;, parentContext: Context?)fun parse(argv: List&lt;String&gt;, parentContext: Context?) registerArgument fun registerArgument(argument: Argument) registeredSubcommandNames fun registeredSubcommandNames(): List&lt;String&gt; registerOption open override fun registerOption(option: GroupableOption)fun registerOption(option: Option) registerOptionGroup fun registerOptionGroup(group: ParameterGroup) run open override fun run() toString open override fun toString(): String"},{"location":"api/shark/-shark-cli-command/#properties","title":"Properties","text":"Name Summary commandHelp val commandHelp: String commandHelpEpilog val commandHelpEpilog: String commandName val commandName: String context val context: Context helpTags val helpTags: Map&lt;String, String&gt; invokeWithoutSubcommand val invokeWithoutSubcommand: Boolean messages val messages: List&lt;String&gt; printHelpOnEmptyArgs val printHelpOnEmptyArgs: Boolean"},{"location":"api/shark/-shark-cli-command/-shark-cli-command/","title":"shark cli command","text":"<p>//leakcanary/shark/SharkCliCommand/SharkCliCommand</p>"},{"location":"api/shark/-shark-cli-command/-shark-cli-command/#sharkclicommand","title":"SharkCliCommand","text":"<p>fun SharkCliCommand()</p>"},{"location":"api/shark/-shark-cli-command/run/","title":"Run","text":"<p>//leakcanary/shark/SharkCliCommand/run</p>"},{"location":"api/shark/-shark-cli-command/run/#run","title":"run","text":"<p>open override fun run()</p>"},{"location":"api/shark/-shark-cli-command/-command-params/","title":"Index","text":"<p>//leakcanary/shark/SharkCliCommand/CommandParams</p>"},{"location":"api/shark/-shark-cli-command/-command-params/#commandparams","title":"CommandParams","text":"<p>class CommandParams(val source: SharkCliCommand.HeapDumpSource, val obfuscationMappingPath: File?)</p>"},{"location":"api/shark/-shark-cli-command/-command-params/#constructors","title":"Constructors","text":"CommandParams fun CommandParams(source: SharkCliCommand.HeapDumpSource, obfuscationMappingPath: File?)"},{"location":"api/shark/-shark-cli-command/-command-params/#properties","title":"Properties","text":"Name Summary obfuscationMappingPath val obfuscationMappingPath: File? source val source: SharkCliCommand.HeapDumpSource"},{"location":"api/shark/-shark-cli-command/-command-params/-command-params/","title":"command params","text":"<p>//leakcanary/shark/SharkCliCommand/CommandParams/CommandParams</p>"},{"location":"api/shark/-shark-cli-command/-command-params/-command-params/#commandparams","title":"CommandParams","text":"<p>fun CommandParams(source: SharkCliCommand.HeapDumpSource, obfuscationMappingPath: File?)</p>"},{"location":"api/shark/-shark-cli-command/-command-params/obfuscation-mapping-path/","title":"Obfuscation mapping path","text":"<p>//leakcanary/shark/SharkCliCommand/CommandParams/obfuscationMappingPath</p>"},{"location":"api/shark/-shark-cli-command/-command-params/obfuscation-mapping-path/#obfuscationmappingpath","title":"obfuscationMappingPath","text":"<p>val obfuscationMappingPath: File?</p>"},{"location":"api/shark/-shark-cli-command/-command-params/source/","title":"Source","text":"<p>//leakcanary/shark/SharkCliCommand/CommandParams/source</p>"},{"location":"api/shark/-shark-cli-command/-command-params/source/#source","title":"source","text":"<p>val source: SharkCliCommand.HeapDumpSource</p>"},{"location":"api/shark/-shark-cli-command/-companion/","title":"Index","text":"<p>//leakcanary/shark/SharkCliCommand/Companion</p>"},{"location":"api/shark/-shark-cli-command/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-shark-cli-command/-companion/#functions","title":"Functions","text":"Name Summary echo fun CliktCommand.echo(message: Any?, trailingNewline: Boolean = true, err: Boolean = false, lineSeparator: String = context.console.lineSeparator)Copy of CliktCommand.echo to make it publicly visible and therefore accessible from CliktCommand extension functions echoNewline fun CliktCommand.echoNewline() retrieveHeapDumpFile fun CliktCommand.retrieveHeapDumpFile(params: SharkCliCommand.CommandParams): File runCommand fun runCommand(directory: File, vararg arguments: String): String"},{"location":"api/shark/-shark-cli-command/-companion/#properties","title":"Properties","text":"Name Summary sharkCliParams var Context.sharkCliParams: SharkCliCommand.CommandParams"},{"location":"api/shark/-shark-cli-command/-companion/echo-newline/","title":"Echo newline","text":"<p>//leakcanary/shark/SharkCliCommand/Companion/echoNewline</p>"},{"location":"api/shark/-shark-cli-command/-companion/echo-newline/#echonewline","title":"echoNewline","text":"<p>fun CliktCommand.echoNewline()</p>"},{"location":"api/shark/-shark-cli-command/-companion/echo/","title":"Echo","text":"<p>//leakcanary/shark/SharkCliCommand/Companion/echo</p>"},{"location":"api/shark/-shark-cli-command/-companion/echo/#echo","title":"echo","text":"<p>fun CliktCommand.echo(message: Any?, trailingNewline: Boolean = true, err: Boolean = false, lineSeparator: String = context.console.lineSeparator)</p> <p>Copy of CliktCommand.echo to make it publicly visible and therefore accessible from CliktCommand extension functions</p>"},{"location":"api/shark/-shark-cli-command/-companion/retrieve-heap-dump-file/","title":"Retrieve heap dump file","text":"<p>//leakcanary/shark/SharkCliCommand/Companion/retrieveHeapDumpFile</p>"},{"location":"api/shark/-shark-cli-command/-companion/retrieve-heap-dump-file/#retrieveheapdumpfile","title":"retrieveHeapDumpFile","text":"<p>fun CliktCommand.retrieveHeapDumpFile(params: SharkCliCommand.CommandParams): File</p>"},{"location":"api/shark/-shark-cli-command/-companion/run-command/","title":"Run command","text":"<p>//leakcanary/shark/SharkCliCommand/Companion/runCommand</p>"},{"location":"api/shark/-shark-cli-command/-companion/run-command/#runcommand","title":"runCommand","text":"<p>fun runCommand(directory: File, vararg arguments: String): String</p>"},{"location":"api/shark/-shark-cli-command/-companion/shark-cli-params/","title":"Shark cli params","text":"<p>//leakcanary/shark/SharkCliCommand/Companion/sharkCliParams</p>"},{"location":"api/shark/-shark-cli-command/-companion/shark-cli-params/#sharkcliparams","title":"sharkCliParams","text":"<p>var Context.sharkCliParams: SharkCliCommand.CommandParams</p>"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/","title":"Index","text":"<p>//leakcanary/shark/SharkCliCommand/HeapDumpSource</p>"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/#heapdumpsource","title":"HeapDumpSource","text":"<p>sealed class HeapDumpSource</p>"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/#types","title":"Types","text":"Name Summary HprofFileSource class HprofFileSource(val file: File) : SharkCliCommand.HeapDumpSource ProcessSource class ProcessSource(val processName: String, val deviceId: String?) : SharkCliCommand.HeapDumpSource"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/#inheritors","title":"Inheritors","text":"Name HprofFileSource ProcessSource"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/-hprof-file-source/","title":"Index","text":"<p>//leakcanary/shark/SharkCliCommand/HeapDumpSource/HprofFileSource</p>"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/-hprof-file-source/#hproffilesource","title":"HprofFileSource","text":"<p>class HprofFileSource(val file: File) : SharkCliCommand.HeapDumpSource</p>"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/-hprof-file-source/#constructors","title":"Constructors","text":"HprofFileSource fun HprofFileSource(file: File)"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/-hprof-file-source/#properties","title":"Properties","text":"Name Summary file val file: File"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/-hprof-file-source/-hprof-file-source/","title":"hprof file source","text":"<p>//leakcanary/shark/SharkCliCommand/HeapDumpSource/HprofFileSource/HprofFileSource</p>"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/-hprof-file-source/-hprof-file-source/#hproffilesource","title":"HprofFileSource","text":"<p>fun HprofFileSource(file: File)</p>"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/-hprof-file-source/file/","title":"File","text":"<p>//leakcanary/shark/SharkCliCommand/HeapDumpSource/HprofFileSource/file</p>"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/-hprof-file-source/file/#file","title":"file","text":"<p>val file: File</p>"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/-process-source/","title":"Index","text":"<p>//leakcanary/shark/SharkCliCommand/HeapDumpSource/ProcessSource</p>"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/-process-source/#processsource","title":"ProcessSource","text":"<p>class ProcessSource(val processName: String, val deviceId: String?) : SharkCliCommand.HeapDumpSource</p>"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/-process-source/#constructors","title":"Constructors","text":"ProcessSource fun ProcessSource(processName: String, deviceId: String?)"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/-process-source/#properties","title":"Properties","text":"Name Summary deviceId val deviceId: String? processName val processName: String"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/-process-source/-process-source/","title":"process source","text":"<p>//leakcanary/shark/SharkCliCommand/HeapDumpSource/ProcessSource/ProcessSource</p>"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/-process-source/-process-source/#processsource","title":"ProcessSource","text":"<p>fun ProcessSource(processName: String, deviceId: String?)</p>"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/-process-source/device-id/","title":"Device id","text":"<p>//leakcanary/shark/SharkCliCommand/HeapDumpSource/ProcessSource/deviceId</p>"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/-process-source/device-id/#deviceid","title":"deviceId","text":"<p>val deviceId: String?</p>"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/-process-source/process-name/","title":"Process name","text":"<p>//leakcanary/shark/SharkCliCommand/HeapDumpSource/ProcessSource/processName</p>"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/-process-source/process-name/#processname","title":"processName","text":"<p>val processName: String</p>"},{"location":"api/shark/-shark-log/","title":"Index","text":"<p>//leakcanary/shark/SharkLog</p>"},{"location":"api/shark/-shark-log/#sharklog","title":"SharkLog","text":"<p>object SharkLog</p> <p>Central Logger for all Shark artifacts. Set logger to change where these logs go.</p>"},{"location":"api/shark/-shark-log/#types","title":"Types","text":"Name Summary Logger interface Logger"},{"location":"api/shark/-shark-log/#functions","title":"Functions","text":"Name Summary d inline fun d(message: () -&gt; String)inline fun d(throwable: Throwable, message: () -&gt; String)"},{"location":"api/shark/-shark-log/#properties","title":"Properties","text":"Name Summary logger @Volatilevar logger: SharkLog.Logger? = null"},{"location":"api/shark/-shark-log/d/","title":"D","text":"<p>//leakcanary/shark/SharkLog/d</p>"},{"location":"api/shark/-shark-log/d/#d","title":"d","text":"<p>inline fun d(message: () -&gt; String)</p> <p>inline fun d(throwable: Throwable, message: () -&gt; String)</p>"},{"location":"api/shark/-shark-log/d/#see-also","title":"See also","text":"<p>main</p> shark.SharkLog.Logger"},{"location":"api/shark/-shark-log/logger/","title":"Logger","text":"<p>//leakcanary/shark/SharkLog/logger</p>"},{"location":"api/shark/-shark-log/logger/#logger","title":"logger","text":"<p>@Volatile</p> <p>var logger: SharkLog.Logger? = null</p>"},{"location":"api/shark/-shark-log/-logger/","title":"Index","text":"<p>//leakcanary/shark/SharkLog/Logger</p>"},{"location":"api/shark/-shark-log/-logger/#logger","title":"Logger","text":"<p>interface Logger</p>"},{"location":"api/shark/-shark-log/-logger/#see-also","title":"See also","text":"<p>main</p> shark.SharkLog"},{"location":"api/shark/-shark-log/-logger/#functions","title":"Functions","text":"Name Summary d abstract fun d(message: String)Logs a debug message formatted with the passed in arguments.abstract fun d(throwable: Throwable, message: String)Logs a Throwable and debug message formatted with the passed in arguments."},{"location":"api/shark/-shark-log/-logger/#inheritors","title":"Inheritors","text":"Name LogcatSharkLog"},{"location":"api/shark/-shark-log/-logger/d/","title":"D","text":"<p>//leakcanary/shark/SharkLog/Logger/d</p>"},{"location":"api/shark/-shark-log/-logger/d/#d","title":"d","text":"<p>abstract fun d(message: String)</p> <p>Logs a debug message formatted with the passed in arguments.</p> <p>abstract fun d(throwable: Throwable, message: String)</p> <p>Logs a Throwable and debug message formatted with the passed in arguments.</p>"},{"location":"api/shark/-streaming-hprof-reader/","title":"Index","text":"<p>//leakcanary/shark/StreamingHprofReader</p>"},{"location":"api/shark/-streaming-hprof-reader/#streaminghprofreader","title":"StreamingHprofReader","text":"<p>class StreamingHprofReader</p> <p>Reads the entire content of a Hprof source in one fell swoop. Call readerFor to obtain a new instance.</p>"},{"location":"api/shark/-streaming-hprof-reader/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-streaming-hprof-reader/#functions","title":"Functions","text":"Name Summary readRecords fun readRecords(recordTags: Set&lt;HprofRecordTag&gt;, listener: OnHprofRecordTagListener): LongObtains a new source to read all hprof records from and calls listener back for each record that matches one of the provided recordTags."},{"location":"api/shark/-streaming-hprof-reader/#extensions","title":"Extensions","text":"Name Summary asStreamingRecordReader fun StreamingHprofReader.asStreamingRecordReader(): StreamingRecordReaderAdapter"},{"location":"api/shark/-streaming-hprof-reader/read-records/","title":"Read records","text":"<p>//leakcanary/shark/StreamingHprofReader/readRecords</p>"},{"location":"api/shark/-streaming-hprof-reader/read-records/#readrecords","title":"readRecords","text":"<p>fun readRecords(recordTags: Set&lt;HprofRecordTag&gt;, listener: OnHprofRecordTagListener): Long</p> <p>Obtains a new source to read all hprof records from and calls listener back for each record that matches one of the provided recordTags.</p>"},{"location":"api/shark/-streaming-hprof-reader/read-records/#return","title":"Return","text":"<p>the number of bytes read from the source</p>"},{"location":"api/shark/-streaming-hprof-reader/-companion/","title":"Index","text":"<p>//leakcanary/shark/StreamingHprofReader/Companion</p>"},{"location":"api/shark/-streaming-hprof-reader/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-streaming-hprof-reader/-companion/#functions","title":"Functions","text":"Name Summary readerFor fun readerFor(hprofFile: File, hprofHeader: HprofHeader = HprofHeader.parseHeaderOf(hprofFile)): StreamingHprofReaderCreates a StreamingHprofReader for the provided hprofFile. hprofHeader will be read from hprofFile unless you provide it.fun readerFor(hprofSourceProvider: StreamingSourceProvider, hprofHeader: HprofHeader = hprofSourceProvider.openStreamingSource()         .use { HprofHeader.parseHeaderOf(it) }): StreamingHprofReaderCreates a StreamingHprofReader that will call StreamingSourceProvider.openStreamingSource on every readRecords to obtain a Source to read the hprof data from. Before reading the hprof records, StreamingHprofReader will skip HprofHeader.recordsPosition bytes."},{"location":"api/shark/-streaming-hprof-reader/-companion/reader-for/","title":"Reader for","text":"<p>//leakcanary/shark/StreamingHprofReader/Companion/readerFor</p>"},{"location":"api/shark/-streaming-hprof-reader/-companion/reader-for/#readerfor","title":"readerFor","text":"<p>fun readerFor(hprofFile: File, hprofHeader: HprofHeader = HprofHeader.parseHeaderOf(hprofFile)): StreamingHprofReader</p> <p>Creates a StreamingHprofReader for the provided hprofFile. hprofHeader will be read from hprofFile unless you provide it.</p> <p>fun readerFor(hprofSourceProvider: StreamingSourceProvider, hprofHeader: HprofHeader = hprofSourceProvider.openStreamingSource()         .use { HprofHeader.parseHeaderOf(it) }): StreamingHprofReader</p> <p>Creates a StreamingHprofReader that will call StreamingSourceProvider.openStreamingSource on every readRecords to obtain a Source to read the hprof data from. Before reading the hprof records, StreamingHprofReader will skip HprofHeader.recordsPosition bytes.</p>"},{"location":"api/shark/-streaming-record-reader-adapter/","title":"Index","text":"<p>//leakcanary/shark/StreamingRecordReaderAdapter</p>"},{"location":"api/shark/-streaming-record-reader-adapter/#streamingrecordreaderadapter","title":"StreamingRecordReaderAdapter","text":"<p>class StreamingRecordReaderAdapter(streamingHprofReader: StreamingHprofReader)</p> <p>Wraps a StreamingHprofReader to provide a higher level API that streams HprofRecord instances.</p>"},{"location":"api/shark/-streaming-record-reader-adapter/#constructors","title":"Constructors","text":"StreamingRecordReaderAdapter fun StreamingRecordReaderAdapter(streamingHprofReader: StreamingHprofReader)"},{"location":"api/shark/-streaming-record-reader-adapter/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-streaming-record-reader-adapter/#functions","title":"Functions","text":"Name Summary readRecords fun readRecords(recordTypes: Set&lt;KClass&lt;out HprofRecord&gt;&gt;, listener: OnHprofRecordListener): LongObtains a new source to read all hprof records from and calls listener back for each record that matches one of the provided recordTypes."},{"location":"api/shark/-streaming-record-reader-adapter/-streaming-record-reader-adapter/","title":"streaming record reader adapter","text":"<p>//leakcanary/shark/StreamingRecordReaderAdapter/StreamingRecordReaderAdapter</p>"},{"location":"api/shark/-streaming-record-reader-adapter/-streaming-record-reader-adapter/#streamingrecordreaderadapter","title":"StreamingRecordReaderAdapter","text":"<p>fun StreamingRecordReaderAdapter(streamingHprofReader: StreamingHprofReader)</p>"},{"location":"api/shark/-streaming-record-reader-adapter/read-records/","title":"Read records","text":"<p>//leakcanary/shark/StreamingRecordReaderAdapter/readRecords</p>"},{"location":"api/shark/-streaming-record-reader-adapter/read-records/#readrecords","title":"readRecords","text":"<p>fun readRecords(recordTypes: Set&lt;KClass&lt;out HprofRecord&gt;&gt;, listener: OnHprofRecordListener): Long</p> <p>Obtains a new source to read all hprof records from and calls listener back for each record that matches one of the provided recordTypes.</p>"},{"location":"api/shark/-streaming-record-reader-adapter/read-records/#return","title":"Return","text":"<p>the number of bytes read from the source</p>"},{"location":"api/shark/-streaming-record-reader-adapter/-companion/","title":"Index","text":"<p>//leakcanary/shark/StreamingRecordReaderAdapter/Companion</p>"},{"location":"api/shark/-streaming-record-reader-adapter/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-streaming-record-reader-adapter/-companion/#functions","title":"Functions","text":"Name Summary asHprofTags fun Set&lt;KClass&lt;out HprofRecord&gt;&gt;.asHprofTags(): EnumSet&lt;HprofRecordTag&gt; asStreamingRecordReader fun StreamingHprofReader.asStreamingRecordReader(): StreamingRecordReaderAdapter"},{"location":"api/shark/-streaming-record-reader-adapter/-companion/as-hprof-tags/","title":"As hprof tags","text":"<p>//leakcanary/shark/StreamingRecordReaderAdapter/Companion/asHprofTags</p>"},{"location":"api/shark/-streaming-record-reader-adapter/-companion/as-hprof-tags/#ashproftags","title":"asHprofTags","text":"<p>fun Set&lt;KClass&lt;out HprofRecord&gt;&gt;.asHprofTags(): EnumSet&lt;HprofRecordTag&gt;</p>"},{"location":"api/shark/-streaming-record-reader-adapter/-companion/as-streaming-record-reader/","title":"As streaming record reader","text":"<p>//leakcanary/shark/StreamingRecordReaderAdapter/Companion/asStreamingRecordReader</p>"},{"location":"api/shark/-streaming-record-reader-adapter/-companion/as-streaming-record-reader/#asstreamingrecordreader","title":"asStreamingRecordReader","text":"<p>fun StreamingHprofReader.asStreamingRecordReader(): StreamingRecordReaderAdapter</p>"},{"location":"api/shark/-streaming-source-provider/","title":"Index","text":"<p>//leakcanary/shark/StreamingSourceProvider</p>"},{"location":"api/shark/-streaming-source-provider/#streamingsourceprovider","title":"StreamingSourceProvider","text":"<p>fun interface StreamingSourceProvider</p> <p>Can open Source instances.</p>"},{"location":"api/shark/-streaming-source-provider/#functions","title":"Functions","text":"Name Summary openStreamingSource abstract fun openStreamingSource(): BufferedSource"},{"location":"api/shark/-streaming-source-provider/#inheritors","title":"Inheritors","text":"Name DualSourceProvider"},{"location":"api/shark/-streaming-source-provider/open-streaming-source/","title":"Open streaming source","text":"<p>//leakcanary/shark/StreamingSourceProvider/openStreamingSource</p>"},{"location":"api/shark/-streaming-source-provider/open-streaming-source/#openstreamingsource","title":"openStreamingSource","text":"<p>abstract fun openStreamingSource(): BufferedSource</p>"},{"location":"api/shark/-strip-hprof-command/","title":"Index","text":"<p>//leakcanary/shark/StripHprofCommand</p>"},{"location":"api/shark/-strip-hprof-command/#striphprofcommand","title":"StripHprofCommand","text":"<p>class StripHprofCommand : CliktCommand</p>"},{"location":"api/shark/-strip-hprof-command/#constructors","title":"Constructors","text":"StripHprofCommand fun StripHprofCommand()"},{"location":"api/shark/-strip-hprof-command/#functions","title":"Functions","text":"Name Summary aliases open fun aliases(): Map&lt;String, List&lt;String&gt;&gt; getFormattedHelp open fun getFormattedHelp(): String getFormattedUsage open fun getFormattedUsage(): String issueMessage fun issueMessage(message: String) main fun main(argv: Array&lt;String&gt;)fun main(argv: List&lt;String&gt;) parse fun parse(argv: Array&lt;String&gt;, parentContext: Context?)fun parse(argv: List&lt;String&gt;, parentContext: Context?) registerArgument fun registerArgument(argument: Argument) registeredSubcommandNames fun registeredSubcommandNames(): List&lt;String&gt; registerOption open override fun registerOption(option: GroupableOption)fun registerOption(option: Option) registerOptionGroup fun registerOptionGroup(group: ParameterGroup) run open override fun run() toString open override fun toString(): String"},{"location":"api/shark/-strip-hprof-command/#properties","title":"Properties","text":"Name Summary commandHelp val commandHelp: String commandHelpEpilog val commandHelpEpilog: String commandName val commandName: String context val context: Context helpTags val helpTags: Map&lt;String, String&gt; invokeWithoutSubcommand val invokeWithoutSubcommand: Boolean messages val messages: List&lt;String&gt; printHelpOnEmptyArgs val printHelpOnEmptyArgs: Boolean"},{"location":"api/shark/-strip-hprof-command/-strip-hprof-command/","title":"strip hprof command","text":"<p>//leakcanary/shark/StripHprofCommand/StripHprofCommand</p>"},{"location":"api/shark/-strip-hprof-command/-strip-hprof-command/#striphprofcommand","title":"StripHprofCommand","text":"<p>fun StripHprofCommand()</p>"},{"location":"api/shark/-strip-hprof-command/run/","title":"Run","text":"<p>//leakcanary/shark/StripHprofCommand/run</p>"},{"location":"api/shark/-strip-hprof-command/run/#run","title":"run","text":"<p>open override fun run()</p>"},{"location":"api/shark/-throwing-cancelable-file-source-provider/","title":"Index","text":"<p>//leakcanary/shark/ThrowingCancelableFileSourceProvider</p>"},{"location":"api/shark/-throwing-cancelable-file-source-provider/#throwingcancelablefilesourceprovider","title":"ThrowingCancelableFileSourceProvider","text":"<p>class ThrowingCancelableFileSourceProvider(file: File, throwIfCanceled: Runnable) : DualSourceProvider</p> <p>A DualSourceProvider that invokes throwIfCanceled before every read, allowing cancellation of IO based work built on top by throwing an exception.</p>"},{"location":"api/shark/-throwing-cancelable-file-source-provider/#constructors","title":"Constructors","text":"ThrowingCancelableFileSourceProvider fun ThrowingCancelableFileSourceProvider(file: File, throwIfCanceled: Runnable)"},{"location":"api/shark/-throwing-cancelable-file-source-provider/#functions","title":"Functions","text":"Name Summary openRandomAccessSource open override fun openRandomAccessSource(): RandomAccessSource openStreamingSource open override fun openStreamingSource(): BufferedSource"},{"location":"api/shark/-throwing-cancelable-file-source-provider/-throwing-cancelable-file-source-provider/","title":"throwing cancelable file source provider","text":"<p>//leakcanary/shark/ThrowingCancelableFileSourceProvider/ThrowingCancelableFileSourceProvider</p>"},{"location":"api/shark/-throwing-cancelable-file-source-provider/-throwing-cancelable-file-source-provider/#throwingcancelablefilesourceprovider","title":"ThrowingCancelableFileSourceProvider","text":"<p>fun ThrowingCancelableFileSourceProvider(file: File, throwIfCanceled: Runnable)</p>"},{"location":"api/shark/-throwing-cancelable-file-source-provider/open-random-access-source/","title":"Open random access source","text":"<p>//leakcanary/shark/ThrowingCancelableFileSourceProvider/openRandomAccessSource</p>"},{"location":"api/shark/-throwing-cancelable-file-source-provider/open-random-access-source/#openrandomaccesssource","title":"openRandomAccessSource","text":"<p>open override fun openRandomAccessSource(): RandomAccessSource</p>"},{"location":"api/shark/-throwing-cancelable-file-source-provider/open-streaming-source/","title":"Open streaming source","text":"<p>//leakcanary/shark/ThrowingCancelableFileSourceProvider/openStreamingSource</p>"},{"location":"api/shark/-throwing-cancelable-file-source-provider/open-streaming-source/#openstreamingsource","title":"openStreamingSource","text":"<p>open override fun openStreamingSource(): BufferedSource</p>"},{"location":"api/shark/-value-holder/","title":"Index","text":"<p>//leakcanary/shark/ValueHolder</p>"},{"location":"api/shark/-value-holder/#valueholder","title":"ValueHolder","text":"<p>sealed class ValueHolder</p> <p>A value in the heap dump, which can be a ReferenceHolder or a primitive type.</p>"},{"location":"api/shark/-value-holder/#types","title":"Types","text":"Name Summary BooleanHolder data class BooleanHolder(val value: Boolean) : ValueHolder ByteHolder data class ByteHolder(val value: Byte) : ValueHolder CharHolder data class CharHolder(val value: Char) : ValueHolder Companion object Companion DoubleHolder data class DoubleHolder(val value: Double) : ValueHolder FloatHolder data class FloatHolder(val value: Float) : ValueHolder IntHolder data class IntHolder(val value: Int) : ValueHolder LongHolder data class LongHolder(val value: Long) : ValueHolder ReferenceHolder data class ReferenceHolder(val value: Long) : ValueHolder ShortHolder data class ShortHolder(val value: Short) : ValueHolder"},{"location":"api/shark/-value-holder/#inheritors","title":"Inheritors","text":"Name ReferenceHolder BooleanHolder CharHolder FloatHolder DoubleHolder ByteHolder ShortHolder IntHolder LongHolder"},{"location":"api/shark/-value-holder/-boolean-holder/","title":"Index","text":"<p>//leakcanary/shark/ValueHolder/BooleanHolder</p>"},{"location":"api/shark/-value-holder/-boolean-holder/#booleanholder","title":"BooleanHolder","text":"<p>data class BooleanHolder(val value: Boolean) : ValueHolder</p>"},{"location":"api/shark/-value-holder/-boolean-holder/#constructors","title":"Constructors","text":"BooleanHolder fun BooleanHolder(value: Boolean)"},{"location":"api/shark/-value-holder/-boolean-holder/#properties","title":"Properties","text":"Name Summary value val value: Boolean"},{"location":"api/shark/-value-holder/-boolean-holder/-boolean-holder/","title":"boolean holder","text":"<p>//leakcanary/shark/ValueHolder/BooleanHolder/BooleanHolder</p>"},{"location":"api/shark/-value-holder/-boolean-holder/-boolean-holder/#booleanholder","title":"BooleanHolder","text":"<p>fun BooleanHolder(value: Boolean)</p>"},{"location":"api/shark/-value-holder/-boolean-holder/value/","title":"Value","text":"<p>//leakcanary/shark/ValueHolder/BooleanHolder/value</p>"},{"location":"api/shark/-value-holder/-boolean-holder/value/#value","title":"value","text":"<p>val value: Boolean</p>"},{"location":"api/shark/-value-holder/-byte-holder/","title":"Index","text":"<p>//leakcanary/shark/ValueHolder/ByteHolder</p>"},{"location":"api/shark/-value-holder/-byte-holder/#byteholder","title":"ByteHolder","text":"<p>data class ByteHolder(val value: Byte) : ValueHolder</p>"},{"location":"api/shark/-value-holder/-byte-holder/#constructors","title":"Constructors","text":"ByteHolder fun ByteHolder(value: Byte)"},{"location":"api/shark/-value-holder/-byte-holder/#properties","title":"Properties","text":"Name Summary value val value: Byte"},{"location":"api/shark/-value-holder/-byte-holder/-byte-holder/","title":"byte holder","text":"<p>//leakcanary/shark/ValueHolder/ByteHolder/ByteHolder</p>"},{"location":"api/shark/-value-holder/-byte-holder/-byte-holder/#byteholder","title":"ByteHolder","text":"<p>fun ByteHolder(value: Byte)</p>"},{"location":"api/shark/-value-holder/-byte-holder/value/","title":"Value","text":"<p>//leakcanary/shark/ValueHolder/ByteHolder/value</p>"},{"location":"api/shark/-value-holder/-byte-holder/value/#value","title":"value","text":"<p>val value: Byte</p>"},{"location":"api/shark/-value-holder/-char-holder/","title":"Index","text":"<p>//leakcanary/shark/ValueHolder/CharHolder</p>"},{"location":"api/shark/-value-holder/-char-holder/#charholder","title":"CharHolder","text":"<p>data class CharHolder(val value: Char) : ValueHolder</p>"},{"location":"api/shark/-value-holder/-char-holder/#constructors","title":"Constructors","text":"CharHolder fun CharHolder(value: Char)"},{"location":"api/shark/-value-holder/-char-holder/#properties","title":"Properties","text":"Name Summary value val value: Char"},{"location":"api/shark/-value-holder/-char-holder/-char-holder/","title":"char holder","text":"<p>//leakcanary/shark/ValueHolder/CharHolder/CharHolder</p>"},{"location":"api/shark/-value-holder/-char-holder/-char-holder/#charholder","title":"CharHolder","text":"<p>fun CharHolder(value: Char)</p>"},{"location":"api/shark/-value-holder/-char-holder/value/","title":"Value","text":"<p>//leakcanary/shark/ValueHolder/CharHolder/value</p>"},{"location":"api/shark/-value-holder/-char-holder/value/#value","title":"value","text":"<p>val value: Char</p>"},{"location":"api/shark/-value-holder/-companion/","title":"Index","text":"<p>//leakcanary/shark/ValueHolder/Companion</p>"},{"location":"api/shark/-value-holder/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-value-holder/-companion/#properties","title":"Properties","text":"Name Summary NULL_REFERENCE const val NULL_REFERENCE: Long = 0"},{"location":"api/shark/-value-holder/-companion/-n-u-l-l_-r-e-f-e-r-e-n-c-e/","title":"n u l l  r e f e r e n c e","text":"<p>//leakcanary/shark/ValueHolder/Companion/NULL_REFERENCE</p>"},{"location":"api/shark/-value-holder/-companion/-n-u-l-l_-r-e-f-e-r-e-n-c-e/#null_reference","title":"NULL_REFERENCE","text":"<p>const val NULL_REFERENCE: Long = 0</p>"},{"location":"api/shark/-value-holder/-double-holder/","title":"Index","text":"<p>//leakcanary/shark/ValueHolder/DoubleHolder</p>"},{"location":"api/shark/-value-holder/-double-holder/#doubleholder","title":"DoubleHolder","text":"<p>data class DoubleHolder(val value: Double) : ValueHolder</p>"},{"location":"api/shark/-value-holder/-double-holder/#constructors","title":"Constructors","text":"DoubleHolder fun DoubleHolder(value: Double)"},{"location":"api/shark/-value-holder/-double-holder/#properties","title":"Properties","text":"Name Summary value val value: Double"},{"location":"api/shark/-value-holder/-double-holder/-double-holder/","title":"double holder","text":"<p>//leakcanary/shark/ValueHolder/DoubleHolder/DoubleHolder</p>"},{"location":"api/shark/-value-holder/-double-holder/-double-holder/#doubleholder","title":"DoubleHolder","text":"<p>fun DoubleHolder(value: Double)</p>"},{"location":"api/shark/-value-holder/-double-holder/value/","title":"Value","text":"<p>//leakcanary/shark/ValueHolder/DoubleHolder/value</p>"},{"location":"api/shark/-value-holder/-double-holder/value/#value","title":"value","text":"<p>val value: Double</p>"},{"location":"api/shark/-value-holder/-float-holder/","title":"Index","text":"<p>//leakcanary/shark/ValueHolder/FloatHolder</p>"},{"location":"api/shark/-value-holder/-float-holder/#floatholder","title":"FloatHolder","text":"<p>data class FloatHolder(val value: Float) : ValueHolder</p>"},{"location":"api/shark/-value-holder/-float-holder/#constructors","title":"Constructors","text":"FloatHolder fun FloatHolder(value: Float)"},{"location":"api/shark/-value-holder/-float-holder/#properties","title":"Properties","text":"Name Summary value val value: Float"},{"location":"api/shark/-value-holder/-float-holder/-float-holder/","title":"float holder","text":"<p>//leakcanary/shark/ValueHolder/FloatHolder/FloatHolder</p>"},{"location":"api/shark/-value-holder/-float-holder/-float-holder/#floatholder","title":"FloatHolder","text":"<p>fun FloatHolder(value: Float)</p>"},{"location":"api/shark/-value-holder/-float-holder/value/","title":"Value","text":"<p>//leakcanary/shark/ValueHolder/FloatHolder/value</p>"},{"location":"api/shark/-value-holder/-float-holder/value/#value","title":"value","text":"<p>val value: Float</p>"},{"location":"api/shark/-value-holder/-int-holder/","title":"Index","text":"<p>//leakcanary/shark/ValueHolder/IntHolder</p>"},{"location":"api/shark/-value-holder/-int-holder/#intholder","title":"IntHolder","text":"<p>data class IntHolder(val value: Int) : ValueHolder</p>"},{"location":"api/shark/-value-holder/-int-holder/#constructors","title":"Constructors","text":"IntHolder fun IntHolder(value: Int)"},{"location":"api/shark/-value-holder/-int-holder/#properties","title":"Properties","text":"Name Summary value val value: Int"},{"location":"api/shark/-value-holder/-int-holder/-int-holder/","title":"int holder","text":"<p>//leakcanary/shark/ValueHolder/IntHolder/IntHolder</p>"},{"location":"api/shark/-value-holder/-int-holder/-int-holder/#intholder","title":"IntHolder","text":"<p>fun IntHolder(value: Int)</p>"},{"location":"api/shark/-value-holder/-int-holder/value/","title":"Value","text":"<p>//leakcanary/shark/ValueHolder/IntHolder/value</p>"},{"location":"api/shark/-value-holder/-int-holder/value/#value","title":"value","text":"<p>val value: Int</p>"},{"location":"api/shark/-value-holder/-long-holder/","title":"Index","text":"<p>//leakcanary/shark/ValueHolder/LongHolder</p>"},{"location":"api/shark/-value-holder/-long-holder/#longholder","title":"LongHolder","text":"<p>data class LongHolder(val value: Long) : ValueHolder</p>"},{"location":"api/shark/-value-holder/-long-holder/#constructors","title":"Constructors","text":"LongHolder fun LongHolder(value: Long)"},{"location":"api/shark/-value-holder/-long-holder/#properties","title":"Properties","text":"Name Summary value val value: Long"},{"location":"api/shark/-value-holder/-long-holder/-long-holder/","title":"long holder","text":"<p>//leakcanary/shark/ValueHolder/LongHolder/LongHolder</p>"},{"location":"api/shark/-value-holder/-long-holder/-long-holder/#longholder","title":"LongHolder","text":"<p>fun LongHolder(value: Long)</p>"},{"location":"api/shark/-value-holder/-long-holder/value/","title":"Value","text":"<p>//leakcanary/shark/ValueHolder/LongHolder/value</p>"},{"location":"api/shark/-value-holder/-long-holder/value/#value","title":"value","text":"<p>val value: Long</p>"},{"location":"api/shark/-value-holder/-reference-holder/","title":"Index","text":"<p>//leakcanary/shark/ValueHolder/ReferenceHolder</p>"},{"location":"api/shark/-value-holder/-reference-holder/#referenceholder","title":"ReferenceHolder","text":"<p>data class ReferenceHolder(val value: Long) : ValueHolder</p>"},{"location":"api/shark/-value-holder/-reference-holder/#constructors","title":"Constructors","text":"ReferenceHolder fun ReferenceHolder(value: Long)"},{"location":"api/shark/-value-holder/-reference-holder/#properties","title":"Properties","text":"Name Summary isNull val isNull: Boolean value val value: Long"},{"location":"api/shark/-value-holder/-reference-holder/-reference-holder/","title":"reference holder","text":"<p>//leakcanary/shark/ValueHolder/ReferenceHolder/ReferenceHolder</p>"},{"location":"api/shark/-value-holder/-reference-holder/-reference-holder/#referenceholder","title":"ReferenceHolder","text":"<p>fun ReferenceHolder(value: Long)</p>"},{"location":"api/shark/-value-holder/-reference-holder/is-null/","title":"Is null","text":"<p>//leakcanary/shark/ValueHolder/ReferenceHolder/isNull</p>"},{"location":"api/shark/-value-holder/-reference-holder/is-null/#isnull","title":"isNull","text":"<p>val isNull: Boolean</p>"},{"location":"api/shark/-value-holder/-reference-holder/value/","title":"Value","text":"<p>//leakcanary/shark/ValueHolder/ReferenceHolder/value</p>"},{"location":"api/shark/-value-holder/-reference-holder/value/#value","title":"value","text":"<p>val value: Long</p>"},{"location":"api/shark/-value-holder/-short-holder/","title":"Index","text":"<p>//leakcanary/shark/ValueHolder/ShortHolder</p>"},{"location":"api/shark/-value-holder/-short-holder/#shortholder","title":"ShortHolder","text":"<p>data class ShortHolder(val value: Short) : ValueHolder</p>"},{"location":"api/shark/-value-holder/-short-holder/#constructors","title":"Constructors","text":"ShortHolder fun ShortHolder(value: Short)"},{"location":"api/shark/-value-holder/-short-holder/#properties","title":"Properties","text":"Name Summary value val value: Short"},{"location":"api/shark/-value-holder/-short-holder/-short-holder/","title":"short holder","text":"<p>//leakcanary/shark/ValueHolder/ShortHolder/ShortHolder</p>"},{"location":"api/shark/-value-holder/-short-holder/-short-holder/#shortholder","title":"ShortHolder","text":"<p>fun ShortHolder(value: Short)</p>"},{"location":"api/shark/-value-holder/-short-holder/value/","title":"Value","text":"<p>//leakcanary/shark/ValueHolder/ShortHolder/value</p>"},{"location":"api/shark/-value-holder/-short-holder/value/#value","title":"value","text":"<p>val value: Short</p>"},{"location":"snippets/bugsnag-uploader/","title":"Bugsnag uploader","text":"<pre><code>import android.app.Application\nimport com.bugsnag.android.Bugsnag\nimport com.bugsnag.android.Configuration\nimport com.bugsnag.android.ErrorTypes\nimport com.bugsnag.android.Event\nimport com.bugsnag.android.ThreadSendPolicy\nimport shark.HeapAnalysis\nimport shark.HeapAnalysisFailure\nimport shark.HeapAnalysisSuccess\nimport shark.Leak\nimport shark.LeakTrace\nimport shark.LeakTraceReference\nimport shark.LibraryLeak\n\nclass BugsnagLeakUploader(applicationContext: Application) {\n\nprivate val bugsnagClient = Bugsnag.start(\napplicationContext,\nConfiguration(\"YOUR_BUGSNAG_API_KEY\").apply {\nenabledErrorTypes = ErrorTypes(\nanrs = false,\nndkCrashes = false,\nunhandledExceptions = false,\nunhandledRejections = false\n)\nsendThreads = ThreadSendPolicy.NEVER\n}\n)\n\nfun upload(heapAnalysis: HeapAnalysis) {\nwhen (heapAnalysis) {\nis HeapAnalysisSuccess -&gt; {\nval allLeakTraces = heapAnalysis\n.allLeaks\n.toList()\n.flatMap { leak -&gt;\nleak.leakTraces.map { leakTrace -&gt; leak to leakTrace }\n}\nif (allLeakTraces.isEmpty()) {\n// Track how often we perform a heap analysis that yields no result.\nbugsnagClient.notify(NoLeakException()) { event -&gt;\nevent.addHeapAnalysis(heapAnalysis)\ntrue\n}\n} else {\nallLeakTraces.forEach { (leak, leakTrace) -&gt;\nval message = \"Memory leak: ${leak.shortDescription}. See LEAK tab.\"\nval exception = leakTrace.asFakeException(message)\nbugsnagClient.notify(exception) { event -&gt;\nevent.addHeapAnalysis(heapAnalysis)\nevent.addLeak(leak)\nevent.addLeakTrace(leakTrace)\nevent.groupingHash = leak.signature\ntrue\n}\n}\n}\n}\nis HeapAnalysisFailure -&gt; {\n// Please file any reported failure to\n// https://github.com/square/leakcanary/issues\nbugsnagClient.notify(heapAnalysis.exception)\n}\n}\n}\n\nclass NoLeakException : RuntimeException()\n\nprivate fun Event.addHeapAnalysis(heapAnalysis: HeapAnalysisSuccess) {\naddMetadata(\"Leak\", \"heapDumpPath\", heapAnalysis.heapDumpFile.absolutePath)\nheapAnalysis.metadata.forEach { (key, value) -&gt;\naddMetadata(\"Leak\", key, value)\n}\naddMetadata(\"Leak\", \"analysisDurationMs\", heapAnalysis.analysisDurationMillis)\n}\n\nprivate fun Event.addLeak(leak: Leak) {\naddMetadata(\"Leak\", \"libraryLeak\", leak is LibraryLeak)\nif (leak is LibraryLeak) {\naddMetadata(\"Leak\", \"libraryLeakPattern\", leak.pattern.toString())\naddMetadata(\"Leak\", \"libraryLeakDescription\", leak.description)\n}\n}\n\nprivate fun Event.addLeakTrace(leakTrace: LeakTrace) {\naddMetadata(\"Leak\", \"retainedHeapByteSize\", leakTrace.retainedHeapByteSize)\naddMetadata(\"Leak\", \"signature\", leakTrace.signature)\naddMetadata(\"Leak\", \"leakTrace\", leakTrace.toString())\n}\n\nprivate fun LeakTrace.asFakeException(message: String): RuntimeException {\nval exception = RuntimeException(message)\nval stackTrace = mutableListOf&lt;StackTraceElement&gt;()\nstackTrace.add(StackTraceElement(\"GcRoot\", gcRootType.name, \"GcRoot.kt\", 42))\nfor (cause in referencePath) {\nstackTrace.add(buildStackTraceElement(cause))\n}\nexception.stackTrace = stackTrace.toTypedArray()\nreturn exception\n}\n\nprivate fun buildStackTraceElement(reference: LeakTraceReference): StackTraceElement {\nval file = reference.owningClassName.substringAfterLast(\".\") + \".kt\"\nreturn StackTraceElement(reference.owningClassName, reference.referenceDisplayName, file, 42)\n}\n}\n</code></pre>"}]}
\ No newline at end of file
+{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"LeakCanary \ud83d\udc24","text":"<p>LeakCanary is a memory leak detection library for Android.</p> <p> </p> <p>LeakCanary\u2019s knowledge of the internals of the Android Framework gives it a unique ability to narrow down the cause of each leak, helping developers dramatically reduce jank, <code>Application Not Responding</code> freezes and <code>OutOfMemoryError</code> crashes.</p> <p>Get started!</p> <p>Quote</p> <p>\u201cA small leak will sink a great ship.\u201d - Benjamin Franklin</p>"},{"location":"blog-articles/","title":"Blog Articles","text":"<ul> <li>Memory Leaks in Android</li> <li>Detect memory leaks in your instrumentation tests using LeakCanary</li> <li>9 ways to avoid memory leaks in Android</li> <li>LeakCanary - Deobfuscation Feature Explained</li> <li>LeakCanary - An in-depth example of Android memory-leaks in MVP architecture</li> <li>Detecting memory leaks in Android applications</li> </ul> <p>Your article should be here, please update this list! Any technical level welcome.</p>"},{"location":"changelog/","title":"Change Log","text":"<p>Please thank our contributors \ud83d\ude4f \ud83d\ude4f \ud83d\ude4f.</p>"},{"location":"changelog/#version-214-2024-04-17","title":"Version 2.14 (2024-04-17)","text":"<ul> <li>\ud83d\udc1b #2650 Removed accidental usage of <code>SettableFuture</code>, a <code>WorkManager</code> internal class, which will be removed in a future release of WorkManager. After updating WorkManager to that future release, all versions of LeakCanary from 2.8 to 2.13 will crash on leak analysis. To avoid a nasty surprise in the near future, update to LeakCanary 2.14.</li> <li>\ud83d\udd28 #2660 Add proguard mapping support for LeakCanary release.</li> <li>\ud83d\udc1b #2531 Heap dump &amp; leak lists not preserving list position when navigating.</li> <li>\ud83d\udc24 #2615 Automatic fix of AOSP PermissionControllerManager leak (issuetracker.google.com/issues/318415056).</li> <li>\ud83d\udc24 #2559 Ignore <code>UiModeManager</code> AOSP leak.</li> <li>\ud83d\udca5 #2643 Fixed rare crash on RenderHeapDumpScreen.</li> </ul>"},{"location":"changelog/#version-30-alpha-1-2024-01-09","title":"Version 3.0 Alpha 1 (2024-01-09)","text":"<p>This alpha release marks the start of the work on LeakCanary 3. It\u2019s not stable! While I intend to rework some APIs, I also want to minimize migration work. The best way to ensure migrations will go smoothly is to try upgrading to a 3.0 alpha and to let me know if you get any compile or runtime error.</p>"},{"location":"changelog/#heap-growth","title":"Heap Growth","text":"<p>New APIs, not stable yet: the <code>shark-heap-growth</code> artifact contains APIs for writing test scenarios that detect repeated heap growth.</p> <p>Here\u2019s how it\u2019s used with an Espresso test:</p> <pre><code>class MyEspressoTest {\n\n@Test\nfun greeter_says_hello_does_not_leak() {\n// Runs in a loop until the heap stops growing or we reach max heap dumps.\nval heapTraversal = HeapGrowthDetector.detectRepeatedHeapGrowth {\n// Runs repeatedly until the heap stops growing or we reach maxHeapDumps.\nonView(withId(R.id.name_field)).perform(typeText(\"Steve\"))\nonView(withId(R.id.greet_button)).perform(click())\nonView(withText(\"Hello Steve!\")).check(matches(isDisplayed()))\n}\n\nassertThat(heapTraversal.growingNodes).isEmpty()\n}\n}\n</code></pre> <p>Here\u2019s an example set up, this is all very manual for now.</p> <p>Add the new dependency:</p> <pre><code>dependencies {\nandroidTestImplementation 'com.squareup.leakcanary:shark-heap-growth:3.0-alpha-1'\nandroidTestImplementation 'com.squareup.leakcanary:leakcanary-android-core:3.0-alpha-1'\n}\n</code></pre> <p>Create an implementation setup for Espresso in process UI tests:</p> <pre><code>import leakcanary.AndroidDebugHeapDumper\nimport shark.AndroidReferenceMatchers\nimport shark.AndroidReferenceReaderFactory\nimport shark.CloseableHeapGraph\nimport shark.DiffingHeapGrowthDetector\nimport shark.HeapGraphProvider\nimport shark.HeapTraversal\nimport shark.HprofHeapGraph.Companion.openHeapGraph\nimport shark.IgnoredReferenceMatcher\nimport shark.LiveHeapGrowthDetector\nimport shark.LoopingHeapGrowthDetector\nimport shark.MatchingGcRootProvider\nimport shark.ReferencePattern.InstanceFieldPattern\nimport java.io.File\nimport java.text.SimpleDateFormat\nimport java.util.Date\nimport java.util.Locale\n\n/**\n * Heap growth detector for in process Espresso UI tests.\n *\n * Call [LiveHeapGrowthDetector.detectRepeatedHeapGrowth] with a scenario to repeat,\n * then assert that the resulting [shark.HeapTraversalWithDiff.growingNodes] is empty.\n */\nval HeapGrowthDetector by lazy {\nval referenceMatchers = AndroidReferenceMatchers.appDefaults +\nHeapTraversal.ignoredReferences +\n// https://cs.android.com/android/_/android/platform/frameworks/base/+/6985fb39f07294fb979b14ba0ebabfd2fea06d34\nIgnoredReferenceMatcher(InstanceFieldPattern(\"android.os.StrictMode\", \"sLastVmViolationTime\"))\n\nval dateFormat = SimpleDateFormat(\"yyyy-MM-dd_HH-mm-ss_SSS'-heap-growth.hprof'\", Locale.US)\nval uploadedTracesDirectory = File(\"/sdcard/traces/\")\nuploadedTracesDirectory.mkdirs()\ncheck(uploadedTracesDirectory.exists()) {\n\"Expected heap dump folder to exist: ${uploadedTracesDirectory.absolutePath}\"\n}\n\nval heapGraphProvider = HeapGraphProvider {\nval fileName = dateFormat.format(Date())\nval heapDumpFile = File(uploadedTracesDirectory, fileName)\nAndroidDebugHeapDumper.dumpHeap(heapDumpFile)\ncheck(heapDumpFile.exists()) {\n\"Expected file to exist after heap dump: ${heapDumpFile.absolutePath}\"\n}\nval realGraph = heapDumpFile.openHeapGraph()\nobject : CloseableHeapGraph by realGraph {\noverride fun close() {\nrealGraph.close()\nheapDumpFile.delete()\n}\n}\n}\n\nLiveHeapGrowthDetector(\nmaxHeapDumps = 5,\nheapGraphProvider = heapGraphProvider,\nscenarioLoopsPerDump = 5,\ndetector = LoopingHeapGrowthDetector(\nDiffingHeapGrowthDetector(\nreferenceReaderFactory = AndroidReferenceReaderFactory(referenceMatchers),\ngcRootProvider = MatchingGcRootProvider(referenceMatchers)\n)\n)\n)\n}\n</code></pre> <p>Ensure your UI tests have enough heap by updating <code>src/androidTest/AndroidManifest.xml</code>:</p> <pre><code>&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\n&lt;manifest\nxmlns:android=\"http://schemas.android.com/apk/res/android\"&gt;\n\n&lt;!-- Performing the heap growth analysis in process requires more heap. --&gt;\n&lt;application\nandroid:largeHeap=\"true\"/&gt;\n&lt;/manifest&gt;\n</code></pre>"},{"location":"changelog/#reference-readers","title":"Reference readers","text":"<p>New APIs, not stable yet: <code>ReferenceReader</code> implementations aka expanders, are now public APIs. The names might change. These class define how LeakCanary traverses the graph, and allow for the creating of virtual references, as introduced here. These new APIs make it possible to add support for more custom data structures, and they\u2019re also useful when working directly with the <code>shark</code> APIs (for example, these APIs were necessary to build the heap growth detection tooling mentioned above).</p>"},{"location":"changelog/#objectwatcher-apis-refactor","title":"ObjectWatcher APIs refactor","text":"<p>#2612 is a first attempt at refactoring the reachability APIs. I already found backward compatibility issues (#2617), will fix in the next alpha, and probably still change the API shape.</p> <p>The general purpose of this refactor is to move away from the static singletons and high coupling of the current implementation, making the reachability APIs more useful in a variaty of contexts.</p>"},{"location":"changelog/#other-bug-fixes-and-improvements","title":"Other bug fixes and improvements \ud83d\udc1b\ud83d\udd28","text":"<ul> <li>Bumped Kotlin to 1.8.21</li> <li>Dropped support for detecting support fragment leaks: apps should all have migrated to Android X by now, and if not they can easily add their own implementation back.</li> </ul> <p>This list reflects only a subset of all changes. For more details, the full diff.</p>"},{"location":"changelog/#version-213-2024-01-03","title":"Version 2.13 (2024-01-03)","text":"<ul> <li>\ud83d\udc1b #2565 Fix AndroidX Fragments incorrectly marked as leaking if detached but not destroyed.</li> <li>\ud83d\udca5 #2568 Fixed missing <code>RECEIVER_EXPORTED</code> flag when calling <code>registerReceiver()</code> on API 34+.</li> <li>\ud83d\udd28 #2555 Binder stubs are now called out in leak traces.</li> <li>\ud83d\udc24 #2601 Added several known manufacturer &amp; framework leaks.</li> </ul>"},{"location":"changelog/#version-212-2023-06-29","title":"Version 2.12 (2023-06-29)","text":"<ul> <li>\ud83d\udca5 #2527 <code>LifecycleRegistry</code> in <code>androidx.lifecycle:lifecycle-runtime</code> was migrated to kotlin and its <code>mState</code> field name changed to <code>state</code> which broke LeakCanary expectations.</li> <li>\ud83d\udc24 #2545 Added several known manufacturer &amp; framework leaks.</li> </ul>"},{"location":"changelog/#version-211-2023-05-17","title":"Version 2.11 (2023-05-17)","text":"<ul> <li>\ud83d\udc1b #1764 Ignore phantom classes that were unloaded than reloaded (long time LeakCanary bug).</li> <li>\ud83d\udc1b #2471 Fix LeakCanary introducing a weird leak in Google\u2019s CI infra.</li> <li>\ud83d\udc1b #2496 Fix broken ViewModel leak detection</li> </ul>"},{"location":"changelog/#version-210-2022-11-10","title":"Version 2.10 (2022-11-10)","text":""},{"location":"changelog/#experimental-neo4j-heap-dump-exploration","title":"Experimental Neo4j heap dump exploration","text":"<p><code>shark-cli</code> has a new experiment <code>neo4j</code> command that will convert a heap dump into an embedded Neo4j database and then open Neo4j Browser to explore the heap dump.</p> <pre><code>brew install leakcanary-shark\n\nshark-cli --process com.example.app.debug neo4j\n</code></pre> <p></p>"},{"location":"changelog/#other-bug-fixes-and-improvements_1","title":"Other bug fixes and improvements \ud83d\udc1b\ud83d\udd28","text":"<ul> <li>\ud83d\udc24 #2440 Add Android 13 <code>POST_NOTICICATIONS</code> permission as well as a new <code>LeakCanary.Config.showNotifications</code> config to disable notifications entirely.</li> <li>\ud83d\udc24 #2416 Add Android 13 monochrome icon.</li> <li>\ud83d\udca5 #2371 Fix db crash when navigating heap dump screen.</li> <li>\ud83d\udc1b #2393 Allow LeakCanary to be defined as an AndroidX Startup dependency.</li> <li>\ud83d\udca5 #2430 Fix ShortcutManager crash on Android TV.</li> <li>\ud83d\udca5 #2382 Fix heap dump close crash.</li> </ul> <p>This list reflects only a subset of all changes. For more details, see the 2.10 Milestone and the full diff.</p>"},{"location":"changelog/#version-291-2022-04-20","title":"Version 2.9.1 (2022-04-20)","text":""},{"location":"changelog/#preface","title":"Preface","text":"<p>What are some things you\u2019d like to see in a future LeakCanary 3 version? Tell me on Twitter!</p> <p>Some ideas I\u2019m playing with:</p> <ul> <li>Moving heap analysis leak visualisation to a separate single app (written with Compose!) available on the PlayStore.</li> <li>Bumping Okio to 3.0</li> <li>Multiplatform heap analysis? Analyze a JVM heap dump in your browser?!</li> <li>Visualize the heap dominators / retained size as a treemap.</li> <li>A backend for LeakCanary?</li> </ul> <p>Anyway, that\u2019s still very much the future, let\u2019s talk about what\u2019s in <code>2.9.1</code> now!</p>"},{"location":"changelog/#new-metrics-in-heap-analysis-metadata","title":"New metrics in heap analysis metadata","text":"<p>I built LeakCanary to help fix leaks, but in doing so I accidentally wrote a fairly flexible heap dump parser. Since we\u2019re parsing the heap to find leaks anyway, we might as well report additional interesting metrics. Here\u2019s what you\u2019ll now see in the heap dump metadata:</p> <ul> <li>Class count: count of loaded classes</li> <li>Instance count</li> <li>Primitive array count</li> <li>Object array count</li> <li>Thread count</li> <li>Heap total bytes</li> <li>Bitmap count</li> <li>Bitmap total bytes</li> <li>Large bitmap count (bitmaps with more pixels than 1.1x the pixels on screen)</li> <li>Large bitmap total bytes</li> <li>SQLiteDatabase in memory (open or closed, as well as their file path)</li> </ul> <p>This is just a first pass, feedback and ideas welcome!</p>"},{"location":"changelog/#performance-improvements","title":"Performance improvements","text":"<p>The heap analysis now traverses the heap dump using <code>RandomAccessFile</code> instead of <code>FileChannel.transferTo()</code> and is now 40% faster on API 23 and 20% faster on newer APIs. Also, sticky class GC roots are now deduplicated, which great reduces the memory footprint of LeakCanary on API 23 (#2324). You can read about the related investigation on py.hashnode.dev.</p>"},{"location":"changelog/#breaking-change-failtestonleakrunlistener-deleted","title":"Breaking change:  FailTestOnLeakRunListener deleted","text":"<p><code>FailTestOnLeakRunListener</code>, <code>FailTestOnLeak</code> and <code>FailAnnotatedTestOnLeakRunListener</code> were deprecated in LeakCanary 2.8 as they rely on hacking the Android Test library internals which have since changed, and have been replaced by <code>LeakAssertions.assertNoLeak()</code> and the <code>DetectLeaksAfterTestSuccess</code> test rule. I was initially planning of keep these around, but as I tried to increase API level coverage in LeakCanary I needed to upgrade the Android Test library to a more recent version, and the hacks now had compilation errors. So they\u2019re gone: #2282. If you can\u2019t use the test rules just yet, you\u2019re welcome to copy paste the listener implementations in your own codebase.</p>"},{"location":"changelog/#other-bug-fixes-and-improvements_2","title":"Other bug fixes and improvements \ud83d\udc1b\ud83d\udd28","text":"<ul> <li>\ud83d\udca5 #2367 Fixed <code>AndroidLeakFixes.FLUSH_HANDLER_THREADS</code> (<code>HandlerThread</code> can have a null <code>Looper</code>).</li> <li>\ud83d\udca5 #2286 Update Curtains to include Proguard rules and prevent <code>WindowCallbackWrapper</code> crashes.</li> <li>\ud83d\udca5 #2294 Fixed <code>WindowDelegateCallback.onMenuOpened()</code> crash.</li> <li>\ud83d\udc24 #2328 Fixed ToastEventListener leak. Sorry \ud83d\ude2c!</li> <li>\ud83d\udca5 #2310 Fixed crash when using WorkManager &lt; 2.1.0.</li> <li>\ud83d\udca5 #2342 Fixed crash when <code>HashSet.map</code> is null (which isn\u2019t supposed to happen, oh well, Android \ud83e\udd37\u200d\u2642\ufe0f).</li> <li>\ud83d\udc1b #2117 Fixed StrictMode disk read violations.</li> <li>\ud83d\udca5 #2351 Fixed a race causing a startup crash.</li> <li>\ud83d\udca5 #2315 Fixed crash when using Okio 1.14.</li> <li>\ud83d\udc1b #2182 Fixed multi rescheduling of <code>BackgroundListener$checkAppInBackground</code>.</li> <li>\ud83d\udca5 #2360 Fixed SQLiteOpenHelper concurrent creation crash.</li> </ul> <p>This list reflects only a subset of all changes. For more details, see the 2.9 Milestone and the full diff.</p>"},{"location":"changelog/#version-281-2022-01-06","title":"Version 2.8.1 (2022-01-06)","text":"<p>This is a bugfix release, a quick follow up to <code>2.8</code> which had a few major issues \ud83d\ude05. If you haven\u2019t yet, you should definitely read the <code>2.8</code> changelog.</p>"},{"location":"changelog/#thanks","title":"Thanks","text":"<p>Please thank @dicosta, @Goooler, @plnice, @preetha1326 for their contributions, bug reports and feature requests \ud83d\ude4f \ud83d\ude4f \ud83d\ude4f.</p>"},{"location":"changelog/#crash-fixes","title":"Crash fixes \ud83d\udca5\ud83d\udca5\ud83d\udca5","text":"<p>This patch release fixes not 1, not 2, but 3 crashes!</p> <ul> <li>\ud83d\udca5 #2268 WorkManager expedited request crashes before API 31.</li> <li>\ud83d\udca5 #2270 Updating <code>LeakCanary.config</code> crashes when <code>AppWatcher</code> is not installed.</li> <li>\ud83d\udca5 #2271 Analysis failure on API 25 because <code>HashMap$Entry</code> became <code>HashMap$HashMapEntry</code> (on API 25) before it finally changed to <code>HashMap$Node</code>.</li> </ul> <p>For more details, see the 2.8.1 Milestone and the full diff.</p>"},{"location":"changelog/#version-28-2022-01-04","title":"Version 2.8 (2022-01-04)","text":"<p>Note: please update to <code>2.8.1</code> instead.</p>"},{"location":"changelog/#preface_1","title":"Preface","text":"<p>The last release was 9 months ago. What happened?! Well, soon after releasing LeakCanary 2.7, I had my 2nd baby, a wonderful daughter \ud83d\ude0d. Having 2 young kids leaves a lot less time available for Open Source work\u2026 but it\u2019s worth it!</p> <p>\u2015 P.Y.</p>"},{"location":"changelog/#thanks_1","title":"Thanks","text":"<p>Please thank @aaronweihe, @alhah, @Andre-max, @AoraMD, @BraisGabin, @breezenan, @Goooler, @iliaskomp @Jeff11, @jmnwong, @IdioticMadman, @keyur1sst, @lchen8, @leinardi, @Maragues, @mars885, @mateuszkwiecinski, @matiash, @maxxx, @preetha1326, @SimonMarquis, @slavonnet, @Sonphil, @summerlyr, @SUPERCILEX, @utwyko, @ZacSweers, @ziranshang, @zoltish for their contributions, bug reports and feature requests \ud83d\ude4f \ud83d\ude4f \ud83d\ude4f.</p>"},{"location":"changelog/#improved-support-for-data-structure-internals","title":"Improved support for data structure internals","text":"<p>\ud83e\udd13 Inspired by Android Studio, LeakCanary\u2019s node discovery during heap graph traversal is now abstracted away. This allows overlaying logical structure over common data structure internals.</p> <p>\ud83d\ude05 WHAT?!</p> <p>\ud83d\udc49 This means we can make known data structures look more like their APIs than their internals. For example, developers tend to think of setting a <code>HashMap</code> entry as <code>map[\"key\"] = value</code> rather than <code>map.table[hash(\"key\")].next.next.next = Node(value)</code>, which is what LeakCanary would previously show in its leak traces.</p> <p>Let\u2019s look at a <code>HashMap</code> example:</p> <pre><code>class CheckoutController {\n\nval tabs = HashMap&lt;String, Tab&gt;()\n\nfun addItemsTab(tab: Tab) {\ntabs[\"ItemsTab\"] = tab\n}\n}\n</code></pre> <p>If the <code>Tab</code> instance holds on to a view, we might see a leak trace that would look like this:</p> <pre><code>\u2502 ...\n\u251c\u2500 com.example.CheckoutController instance\n\u2502    \u2193 CheckoutController.tabs\n\u251c\u2500 java.util.HashMap instance\n\u2502    \u2193 HashMap.table\n\u251c\u2500 java.util.HashMap$Node[] array\n\u2502    \u2193 HashMap$Node[42]\n\u251c\u2500 java.util.HashMap$Node instance\n\u2502    \u2193 HashMap$Node.next\n\u251c\u2500 java.util.HashMap$Node instance\n\u2502    \u2193 HashMap$Node.value\n\u251c\u2500 com.example.Tab instance\n\u2502 ...\n</code></pre> <p>With the improved data structure support, the leak trace is much clearer (also note how the <code>ItemsTab</code> string key is now surfaced):</p> <pre><code>\u2502 ...\n\u251c\u2500 com.example.CheckoutController instance\n\u2502    \u2193 CheckoutController.tabs\n\u251c\u2500 java.util.HashMap instance\n\u2502    \u2193 HashMap[ItemsTab]\n\u251c\u2500 com.example.Tab instance\n\u2502 ...\n</code></pre> <p>Another benefit of this change is that leak signatures become less dependent of the runtime, and therefore are more consistent. This is especially true for any data structure that relies on a linked list (<code>HashMap</code>, <code>LinkedList</code>, <code>MessageQueue</code>, \u2026). Currently LeakCanary supports a limited set of common data structures from Apache Harmony, Open JDK, and the Android SDK. Let me know what else you need!</p>"},{"location":"changelog/#objectanimator-leaks","title":"ObjectAnimator leaks","text":"<p>LeakCanary will now detect leaks that trigger when forgetting to cancel <code>ObjectAnimator</code>. This new feature is enabled by the node discovery changes described above!</p> <p>Let\u2019s say you accidentally start an infinite <code>ObjectAnimator</code> and never cancel it, like so:</p> <pre><code>class ExampleActivity : Activity() {\n\noverride fun onCreate(savedInstanceState: Bundle?) {\nsuper.onCreate(savedInstanceState)\nsetContentView(R.layout.main_activity)\nfindViewById&lt;Button&gt;(R.id.button).setOnClickListener { view -&gt;\nObjectAnimator.ofFloat(view, View.ALPHA, 0.1f, 0.2f).apply {\nduration = 100\nrepeatMode = ValueAnimator.REVERSE\nrepeatCount = ValueAnimator.INFINITE\nstart()\n}\n}\n}\n}\n</code></pre> <p>In previous releases, LeakCanary would detect that the animated view is leaking but it wouldn\u2019t be able to find the leak and instead would report it as an unreachable object: An unreachable object is still in memory but LeakCanary could not find a strong reference path from GC roots.</p> <p>LeakCanary now reports the leak and adds animator state information, helping detect and fix any infinite <code>ObjectAnimator</code>.</p> <pre><code>\u252c\u2500\u2500\u2500\n\u2502 GC Root: Thread object\n\u2502\n\u251c\u2500 java.lang.Thread instance\n\u2502    Leaking: NO (the main thread always runs)\n\u2502    Thread name: 'main'\n\u2502    \u2193 Thread.threadLocals\n\u2502             ~~~~~~~~~~~~\n...\n\u251c\u2500 android.animation.ObjectAnimator instance\n\u2502    Leaking: UNKNOWN\n\u2502    mListeners = null\n\u2502    mPropertyName = null\n\u2502    mProperty.mName = alpha\n\u2502    mProperty.mType = java.lang.Float\n\u2502    mInitialized = true\n\u2502    mStarted = true\n\u2502    mRunning = true\n\u2502    mAnimationEndRequested = false\n\u2502    mDuration = 100\n\u2502    mStartDelay = 0\n\u2502    mRepeatCount = INFINITE (-1)\n\u2502    mRepeatMode = REVERSE (2)\n\u2502    \u2193 ObjectAnimator.mTarget\n\u2502                     ~~~~~~~\n\u2570\u2192 android.widget.Button instance\n     Leaking: YES (View.mContext references a destroyed activity)\n</code></pre> <p>To learn more, see this AOSP issue: ObjectAnimator.mTarget weak ref creates memory leaks on infinite animators.</p>"},{"location":"changelog/#leak-detection-in-tests","title":"Leak detection in tests","text":"<p>Previous releases of <code>leakcanary-android-instrumentation</code> introduced a <code>FailTestOnLeakRunListener</code> which could run leak detection after each UI tests. Unfortunately <code>FailTestOnLeakRunListener</code> relied on a hack around <code>androidx.test</code> internals to report failures. The internals keep changing with every <code>androidx.test</code> release and breaking <code>FailTestOnLeakRunListener</code> \ud83d\ude2d.</p> <p><code>FailTestOnLeakRunListener</code> is now deprecated (\ud83d\udc4b) and replaced by the <code>DetectLeaksAfterTestSuccess</code> test rule, which you can add to your test like any normal test rule.</p> <p>Additionally, you can call <code>LeakAssertions.assertNoLeak()</code> from anywhere in your instrumentation tests. You can also annotate tests with <code>@SkipLeakDetection</code> (for that to work you\u2019ll also need to set up the <code>TestDescriptionHolder</code> test rule).</p> <pre><code>class CartTest {\n@get:Rule\nval rules = RuleChain.outerRule(TestDescriptionHolder)\n.around(DetectLeaksAfterTestSuccess())\n.around(ActivityScenarioRule(CartActivity::class.java))\n\n@Test\nfun addItemToCart() {\n// ...\n}\n\n@SkipLeakDetection(\"See #1234\")\n@Test\nfun removeItemFromCart() {\n// ...\n}\n}\n</code></pre>"},{"location":"changelog/#android-12","title":"Android 12","text":"<p>Hopefully this time we fixed everything that Android 12 broke: missing <code>exported:true</code> tags, missing pending intent flags, and <code>ForegroundServiceStartNotAllowedException</code> crashes. If not, let us know! Can\u2019t wait for Android 13 to break everything again \ud83e\udd2c.</p>"},{"location":"changelog/#workmanager","title":"WorkManager","text":"<p>Running an Android Service without crashing (<code>ForegroundServiceStartNotAllowedException</code>\u2026) is becoming harder with every release of Android, so I got rid of the LeakCanary heap analyzer service! Instead, LeakCanary leverages WorkManager if you already have it as a dependency. If you don\u2019t use WorkManager, then LeakCanary will fall back to using a simple thread.</p> <p>Note: I recommend using at least WorkManager 2.7.0 as it adds the <code>WorkRequest.Builder.setExpedited()</code> API which LeakCanary leverages if available.</p>"},{"location":"changelog/#multi-process","title":"Multi process","text":"<p>Switching to WorkManager also impacts the LeakCanary multi process approach, which now leverages WorkManager remote jobs. Blog on how I got this working: WorkManager multi-process for libraries.</p> <p>Multi process is harder to get right so you should only use this if LeakCanary frequently runs out of memory while performing the heap analysis. Here are the updated set up steps:</p> <p>1) Add the <code>leakcanary-android-process</code> dependency and keep the <code>leakcanary-android</code> dependency.</p> <pre><code>dependencies {\ndebugImplementation 'com.squareup.leakcanary:leakcanary-android:2.8'\ndebugImplementation 'com.squareup.leakcanary:leakcanary-android-process:2.8'\n}\n</code></pre> <p>2) Skip the initialization code in the <code>Application</code> class</p> <pre><code>class ExampleApplication : Application() {\n\noverride fun onCreate() {\nif (LeakCanaryProcess.isInAnalyzerProcess(this)) {\nreturn\n}\nsuper.onCreate()\n// normal init goes here, skipped in :leakcanary process.\n}\n}\n</code></pre> <p>That\u2019s it! Note that event listeners (see below) related to the analysis will fire in the remote process.</p>"},{"location":"changelog/#androidx-app-startup","title":"AndroidX App Startup","text":"<p>LeakCanary now optionally supports the AndroidX App Startup library. All you need to do is replace the <code>leakcanary-android</code> dependency with <code>leakcanary-android-startup</code>:</p> <pre><code>dependencies {\n// Remove the normal leakcanary-android dependency\n// debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.8'\ndebugImplementation 'com.squareup.leakcanary:leakcanary-android-startup:2.8'\n}\n</code></pre> <p>Note 1: <code>leakcanary-android</code> adds the code for automatic installl to <code>leakcanary-android-core</code>. If you\u2019re calling <code>AppWatcher.manualInstall()</code>, you can depend directly on <code>leakcanary-android-core</code> instead of <code>leakcanary-android</code>, and you won\u2019t need the disable any automatic install.</p> <p>Note 2: the same principle applies to <code>leakcanary-object-watcher-android</code>: it depends on <code>leakcanary-object-watcher-android-core</code> and adds automatic install, while <code>leakcanary-object-watcher-android-startup</code> leverages the App Startup library. Same for <code>plumber-android</code>, <code>plumber-android-core</code> and  <code>plumber-android-startup</code>.</p>"},{"location":"changelog/#event-listeners","title":"Event listeners","text":"<p><code>LeakCanary.Config</code> has a new <code>eventListeners</code> field allowing you to react to LeakCanary\u2019s lifecycle. If you want to customize this, you most likely should be keeping the default list of listeners and add or remove from it.</p> <p>For example, if you want to disable the LeakCanary toast:</p> <pre><code>LeakCanary.config = LeakCanary.config.run {\ncopy(\neventListeners = eventListeners.filter {\nit !is ToastEventListener\n}\n)\n}\n</code></pre> <p>If you want to upload heap analysis results:</p> <pre><code>LeakCanary.config = LeakCanary.config.run {\ncopy(\neventListeners = eventListeners + EventListener { event -&gt;\nif (event is HeapAnalysisSucceeded) {\n// Upload event.heapAnalysis\n}\n}\n)\n}\n</code></pre> <p>Note: <code>Leakcanary.Config.onHeapAnalyzedListener</code> still works but is now deprecated.</p> <p>Feedback welcome on this new API!</p>"},{"location":"changelog/#other-bug-fixes-and-improvements_3","title":"Other bug fixes and improvements \ud83d\udc1b\ud83d\udd28","text":"<ul> <li>#2096 Opening / sharing heap dump files now supports LeakCanary as an option.</li> <li>#2210 First Compose dedicated object inspectors!</li> <li>#2121 Support for customizing the heap dumper.</li> </ul> <p>This list reflects only a subset of all changes. For more details, see the 2.8 Milestone and the full diff.</p>"},{"location":"changelog/#version-27-2021-03-26","title":"Version 2.7 (2021-03-26)","text":"<p>Please thank @chao2zhang, @ihrupin, @jzbrooks, @msfjarvis, @reneargento, @Unpublished for their contributions, bug reports and feature requests \ud83d\ude4f \ud83d\ude4f \ud83d\ude4f.</p>"},{"location":"changelog/#finer-grained-root-view-watching","title":"Finer grained root view watching","text":"<p>In version 2.6, LeakCanary added detection of root views retained after  <code>View.onDetachedFromWindow()</code>. This helps find more leaks, but unfortunately some Android widgets keep a detached root view around to reattach it later (e.g. spinner). App developers also sometimes do the same with dialogs, keeping a single instance around and calling <code>show()</code> and <code>hide()</code> as needed. As a result, LeakCanary would report leaks that were actually not leaks.</p> <p>In version 2.7, the default behavior changed: LeakCanary will continue to detect leaks of toasts, but will ignore root views created by a PopupWindow (which is what Android widgets use). It will also ignore root views created by a dialog by default, and you can turn this back on by setting the <code>leak_canary_watcher_watch_dismissed_dialogs</code> resource boolean to true:</p> <pre><code>&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\n&lt;resources&gt;\n&lt;bool name=\"leak_canary_watcher_watch_dismissed_dialogs\"&gt;true&lt;/bool&gt;\n&lt;/resources&gt;\n</code></pre> <p>This is implemented using a new Square library: Curtains.</p>"},{"location":"changelog/#targeting-android-12","title":"Targeting Android 12","text":"<p>We fixed two issues for apps that want to target Android 12:</p> <ul> <li>#2074 Activities that use intent filters must declare the <code>android:exported</code> attribute.</li> <li>#2079 PendingIntent requires the <code>FLAG_IMMUTABLE</code> flag.</li> </ul>"},{"location":"changelog/#bug-fixes-and-improvements","title":"Bug fixes and improvements \ud83d\udc1b\ud83d\udd28","text":"<ul> <li>#2075 Fixed crash when sharing heap dumps.</li> <li>#2067 Fixed crash when opening leaks from older versions (before 2.6) of LeakCanary.</li> <li>#2049 Fixed Plumber crash due to R8 shaking AndroidLeakFixes.</li> <li>#2084 Fixed Shark crash when used from multiple threads.</li> <li>#2054 \ud83d\ude48\ud83d\ude49\ud83d\ude4a Blocked Monkeys from deleting leaks.</li> <li>#2069 Added X button to the root leak activity (for custom devices with no back button)</li> <li>#2091 Added receiver details if LoadedApk shows up in the leaktrace.</li> <li>#2083 Added service status details (created or not) to leaktrace.</li> <li>#2099 Retry button if analysis fails.</li> <li>#2066 When heap analysis in UI tests is skipped and NoAnalysis is returned, NoAnalysis now includes a reason to help debug why it didn\u2019t run.</li> <li>#2000 The LeakCanary CI now leverages GitHub actions instead of Travis.</li> </ul> <p>For more details, see the 2.7 Milestone and the full diff.</p>"},{"location":"changelog/#version-26-christmas-release-2020-12-24","title":"Version 2.6 - Christmas Release \ud83c\udf84 (2020-12-24)","text":"<p>Please thank @chao2zhang, @ChaosLeung, @LitterSun, @mickverm, @opatry, @Thomas-Vos, @tricknology, @rahul-a, @samoylenkodmitry, @sing0055, @ubiratansoares for their contributions, bug reports and feature requests \ud83d\ude4f \ud83d\ude4f \ud83d\ude4f.</p> <p>This Christmas Release includes several external contributions and a bunch of cool new features! \ud83c\udf81\ud83c\udf81</p>"},{"location":"changelog/#detecting-root-views-retained-after-viewondetachedfromwindow","title":"Detecting root views retained after <code>View.onDetachedFromWindow()</code>","text":"<p>On Android, every displayed view hierarchy is attached to a window, whether it be the view hierarchy of an activity, a dialog, a toast or a chat head. After a view hierarchy is detached from its window, it should be garbage collected.</p> <p>LeakCanary already detects leaks of activity view hierarchies because retained detached views reference their activity context and LeakCanary detects activities retained after <code>Activity.onDestroy()</code>. In this new release, LeakCanary will now detect the leak of a dialog view hierarchy as soon as that dialog is dismissed, or any other view that is passed to WindowManager.removeView().</p>"},{"location":"changelog/#detecting-services-retained-after-serviceondestroy","title":"Detecting services retained after <code>Service.onDestroy()</code>","text":"<p>After an Android service is destroyed, it should be garbage collected. Unfortunately, the Android SDK does not provide any generic API to observe the service lifecycle. We worked around that using reflection on greylist APIs (details in #2014). Let\u2019s hope this motivates the Android team to build the APIs developers need.</p>"},{"location":"changelog/#configuring-retained-object-detection","title":"Configuring retained object detection","text":"<p>With the detection of 2 new types of retained objects, we\u2019re also adding APIs to configure which watchers should be installed as well as adding filtering capabilities.</p> <p>First, disable the automatic install:</p> <pre><code>&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\n&lt;resources&gt;\n&lt;bool name=\"leak_canary_watcher_auto_install\"&gt;false&lt;/bool&gt;\n&lt;/resources&gt;\n</code></pre> <p>Then you can install LeakCanary manually. LeakCanary 2.6 comes with 4 watchers installed by default: <code>ActivityWatcher</code>, <code>FragmentAndViewModelWatcher</code>, <code>RootViewWatcher</code>, <code>ServiceWatcher</code>. Here\u2019s an example to get all the default watchers except <code>ServiceWatcher</code>:</p> <pre><code>class DebugExampleApplication : ExampleApplication() {\n\noverride fun onCreate() {\nsuper.onCreate()\n\nval watchersToInstall = AppWatcher.appDefaultWatchers(application)\n.filter { it !is ServiceWatcher }\n\nAppWatcher.manualInstall(\napplication = application,\nwatchersToInstall = watchersToInstall\n)\n}\n}\n</code></pre> <p>LeakCanary introduces a new functional (SAM) interface implemented by <code>ObjectWatcher</code>: <code>ReachabilityWatcher</code>, with a <code>ReachabilityWatcher.expectWeaklyReachable()</code> method that replaces the now deprecated <code>ObjectWatcher.watch()</code> method. You can create the default watcher instances with a custom <code>ReachabilityWatcher</code> that delegates to <code>AppWatcher.objectWatcher</code> but filters out specific instances (e.g. <code>BadSdkLeakingFragment</code>):</p> <pre><code>class DebugExampleApplication : ExampleApplication() {\n\noverride fun onCreate() {\nsuper.onCreate()\n\nval delegate = ReachabilityWatcher { watchedObject, description -&gt;\nif (watchedObject !is BadSdkLeakingFragment) {\nAppWatcher.objectWatcher.expectWeaklyReachable(watchedObject, description)\n}\n}\n\nval watchersToInstall = AppWatcher.appDefaultWatchers(application, delegate)\n\nAppWatcher.manualInstall(\napplication = application,\nwatchersToInstall = watchersToInstall\n)\n}\n}\n</code></pre> <p>With these new configuration options, <code>AppWatcher.config</code> is now deprecated and a no-op.</p>"},{"location":"changelog/#dumping-the-heap-on-screen-off","title":"Dumping the heap on screen off","text":"<p>The default threshold to dump the heap is 5 retained objects when the app is visible, and 1 retained object when the app is not visible. Up until now, visible meant \u201cthe app has at least one activity in started state\u201d. In LeakCanary 2.6, the app will now be considered not visible if the device screen is off, lowering the threshold to trigger heap dumps when you turn off the device screen.</p>"},{"location":"changelog/#leakcanary-for-releases","title":"LeakCanary for releases","text":"<p>LeakCanary 2.6 introduces a new artifact: <code>leakcanary-android-release</code>. This artifact exposes APIs to run a heap analysis in release builds, in production.</p> <p>Danger</p> <p>Everything about this is experimental. Running a heap analysis in production is not a very common thing to do, and we\u2019re still learning and experimenting with this. Also, both the artifact name and the APIs may change.</p> <pre><code>dependencies {\n// debugImplementation because LeakCanary should only run in debug builds.\ndebugImplementation 'com.squareup.leakcanary:leakcanary-android:2.6'\n\n// NEW: LeakCanary for releases!\nreleaseImplementation 'com.squareup.leakcanary:leakcanary-android-release:2.6'\n// Optional: detect retained objects. This helps but is not required.\nreleaseImplementation 'com.squareup.leakcanary:leakcanary-object-watcher-android:2.6'\n}\n</code></pre> <p>Here\u2019s a code example that runs a heap analysis when the screen is turned off or the app enters background, checking first if a Firebase Remote Config flag is turned on, and uploading the result to Bugsnag:</p> <pre><code>class ReleaseExampleApplication : ExampleApplication() {\n\n// Cancels heap analysis if \"heap_analysis_flag\" is false.\nprivate val flagInterceptor by lazy {\nobject : HeapAnalysisInterceptor {\n\nval remoteConfig: FirebaseRemoteConfig = TODO()\n\noverride fun intercept(chain: Chain): HeapAnalysisJob.Result {\nif (remoteConfig.getBoolean(\"heap_analysis_flag\")) {\nchain.job.cancel(\"heap_analysis_flag false\")\n}\nreturn chain.proceed()\n}\n}\n}\n\nprivate val analysisClient by lazy {\nHeapAnalysisClient(\n// Use private app storage. cacheDir is never backed up which is important.\nheapDumpDirectoryProvider = { cacheDir },\n// stripHeapDump: remove all user data from hprof before analysis.\nconfig = HeapAnalysisConfig(stripHeapDump = true),\n// Default interceptors may cancel analysis for several other reasons.\ninterceptors = listOf(flagInterceptor) + HeapAnalysisClient.defaultInterceptors(this)\n)\n}\n\nprivate val analysisExecutor by lazy {\nExecutors.newSingleThreadExecutor {\nthread(start = false, name = \"Heap analysis executor\") {\nandroid.os.Process.setThreadPriority(THREAD_PRIORITY_BACKGROUND)\nit.run()\n}\n}\n}\n\nprivate val analysisCallback: (Result) -&gt; Unit by lazy {\nval uploader = BugsnagHeapAnalysisUploader(this@ReleaseExampleApplication)\n{ result -&gt;\nif (result is Done) {\nuploader.upload(result.analysis)\n}\n}\n}\n\noverride fun onCreate() {\nsuper.onCreate()\n\n// Delete any remaining heap dump (if we crashed)\nanalysisExecutor.execute {\nanalysisClient.deleteHeapDumpFiles()\n}\n\n// Starts heap analysis on background importance\nBackgroundTrigger(\napplication = this,\nanalysisClient = analysisClient,\nanalysisExecutor = analysisExecutor,\nanalysisCallback = analysisCallback\n).start()\n\n// Starts heap analysis when screen off\nScreenOffTrigger(\napplication = this,\nanalysisClient = analysisClient,\nanalysisExecutor = analysisExecutor,\nanalysisCallback = analysisCallback\n).start()\n}\n\n/**\n   * Call this to trigger heap analysis manually, e.g. from\n   * a help button.\n   *\n   * This method returns a `HeapAnalysisJob` on which you can\n   * call `HeapAnalysisJob.cancel()` at any time.\n   */\nfun triggerHeapAnalysisNow(): HeapAnalysisJob {\nval job = analysisClient.newJob()\nanalysisExecutor.execute {\nval result = job.execute()\nanalysisCallback(result)\n}\nreturn job\n}\n}\n</code></pre> <p>The Bugsnag uploader:</p> <pre><code>class BugsnagHeapAnalysisUploader(applicationContext: Application) {\n\nprivate val bugsnagClient: Client\n\ninit {\nbugsnagClient = Client(\napplicationContext,\nBUGSNAG_API_KEY,\nDO_NOT_ENABLE_EXCEPTION_HANDLER\n)\nbugsnagClient.setSendThreads(false)\n}\n\nfun upload(heapAnalysis: HeapAnalysis) {\nwhen (heapAnalysis) {\nis HeapAnalysisSuccess -&gt; {\nval exception = HeapAnalysisReport()\nbugsnagClient.notify(exception) { report -&gt;\nval metaData = report.error.metaData\nmetaData.addToTab(\"Heap Analysis\", \"result\", heapAnalysis.toString())\n}\n}\nis HeapAnalysisFailure -&gt; {\n// Please file any reported failure to\n// https://github.com/square/leakcanary/issues\nbugsnagClient.notify(heapAnalysis.exception)\n}\n}\n}\n\n// Exception with fake unique stacktrace to send all reports to the same error entry.\nclass HeapAnalysisReport : Exception(\"Check the HEAP ANALYSIS tab\") {\noverride fun fillInStackTrace(): Throwable {\nstackTrace = arrayOf(\nStackTraceElement(\n\"HeapAnalysisReport\",\n\"analyzeHeap\",\n\"HeapAnalysisReport.kt\",\n1\n)\n)\nreturn this\n}\n}\n\ncompanion object {\nprivate const val BUGSNAG_API_KEY = YOUR_BUGSNAG_API_KEY\nprivate const val DO_NOT_ENABLE_EXCEPTION_HANDLER = false\n}\n}\n</code></pre>"},{"location":"changelog/#more-leak-fixes-in-plumber","title":"More leak fixes in Plumber","text":"<p>We added 3 new automatic fixes for known AOSP leaks in <code>plumber-android</code> (details: #1993). As a reminder, <code>plumber-android</code> is automatically included when you add <code>leakcanary-android</code>, and you can add it manually for build types that don\u2019t include LeakCanary:</p> <pre><code>dependencies {\n  // leakcanary-android adds plumber-android to debug builds\n  debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.6'\n\n  // This adds plumber-android to all build types\n  implementation 'com.squareup.leakcanary:plumber-android:2.6'\n}\n</code></pre>"},{"location":"changelog/#bug-fixes-and-improvements_1","title":"Bug fixes and improvements \ud83d\udc1b\ud83d\udd28","text":"<ul> <li>#1948 Leakcanary is now compiled against Kotlin 1.4 (while staying 1.3 compatible) to support Functional (SAM) interfaces.</li> <li>#1956 The retained object size is displayed as a human readable output (KB, MB, \u2026).</li> <li>#1976 Improved default object inspectors and leak finders for <code>View</code> and <code>Context</code>.</li> <li>#1972 Fields are printed with the parent class name that holds the field in leak traces.</li> <li>#1981 Fixed StrictMode policy violation (main thread read from disk).</li> <li>#1977 Report objects that are not strongly reachable.</li> <li>#2018 &amp; #2019 Fixed crashes in LeakCanary UI (discovered by Monkey tests).</li> <li>#2015 Fixed crash on Android &lt; 16.</li> <li>#2023 Fixed crash in plugin projects.</li> </ul> <p>For more details, see the 2.6 Milestone and the full diff.</p>"},{"location":"changelog/#version-25-2020-10-01","title":"Version 2.5 (2020-10-01)","text":"<p>Please thank @Amokrane, @Armaxis, @askont, @chao2zhang, @daniil-shevtsov, @eygraber, @msfjarvis, @mzgreen, @lchen8, @rpattabi, @sahil2441, @SylvainGirod, @vhow for their contributions, bug reports and feature requests \ud83d\ude4f \ud83d\ude4f \ud83d\ude4f.</p>"},{"location":"changelog/#heap-analysis-is-twice-as-fast","title":"Heap analysis is twice as fast \ud83d\udc24\ud83d\udca8","text":"<p>No one asked, so we delivered! We rewrote several core components in Shark (LeakCanary\u2019s heap analyzer) to dramatically reduce IO reads and allocations while keeping memory constant. More details on Twitter: thread by @ArtemChubaryan and thread by @Piwai.</p>"},{"location":"changelog/#compute-retained-size-within-the-leak-trace","title":"Compute retained size within the leak trace","text":"<p>Previously, LeakCanary computed the retained size for the leaking object (the last object in the leak trace). However, the bad reference causing objects to leak is often higher up in the leak trace and everything that it holds onto is actually leaking. So LeakCanary now computes the retained size for all the objects in the leaktrace that have a LEAKING or UNKNOWN status:</p> <pre><code>\u252c\u2500\u2500\u2500\n\u2502 GC Root: System class\n\u2502\n\u251c\u2500 com.example.MySingleton class\n\u2502    Leaking: NO (a class is never leaking)\n\u2502    \u2193 static MySingleton.leakedView\n\u2502                         ~~~~~~~~~~\n\u251c\u2500 android.widget.TextView instance\n\u2502    Leaking: YES (View.mContext references a destroyed activity)\n\u2502    Retaining 46326 bytes in 942 objects\n\u2502    \u2193 TextView.mContext\n\u2570\u2192 com.example.MainActivity instance\n\u200b     Leaking: YES (Activity#mDestroyed is true)\n\u200b     Retaining 1432 bytes in 36 objects\n</code></pre>"},{"location":"changelog/#disable-leakcanary-from-the-ui","title":"Disable LeakCanary from the UI","text":"<p>New toggle to disable heap dumping, which can be useful for QA, or when doing a product demo. LeakCanary will still show a notification when an object is retained.</p> <p></p>"},{"location":"changelog/#deobfuscating-hprof-files","title":"Deobfuscating hprof files","text":"<p>The Shark CLI can now deobfuscate heap dumps:</p> <pre><code>brew install leakcanary-shark\n\nshark-cli --hprof heapdump.hprof -m mapping.txt deobfuscate-hprof\n</code></pre>"},{"location":"changelog/#bug-fixes-and-improvements_2","title":"Bug fixes and improvements \ud83d\udc1b\ud83d\udd28","text":"<ul> <li>Heap analysis text results now wrap to a max width when sharing them from the LeakCanary activity or printing to logcat. This will make it harder to miss details that are lost at the end of long lines of text.</li> <li>The <code>leak_canary_watcher_auto_install</code>, <code>leak_canary_allow_in_non_debuggable_build</code> and <code>leak_canary_plumber_auto_install</code> resource booleans were meant to be public.</li> <li>We sprinkled a few <code>@JvmStatic</code> to help Java consummers.</li> <li>Fixed crash when no browser installed.</li> <li>Use distinct group for LeakCanary notifications.</li> <li>The heap analysis result now includes the heap dump duration because it looks like Android 11 heap dumps are sometimes super slow. We also added more perf related metrics.</li> <li>Disable logging when AppWatcher runs in release builds.</li> <li>Highlight library leak patterns directly within the leak traces.</li> <li>Improved inspections for Context, View and ContextImpl.</li> </ul> <p>For more details, see the 2.5 Milestone and the full diff.</p>"},{"location":"changelog/#version-24-2020-06-10","title":"Version 2.4 (2020-06-10)","text":"<p>Please thank @0x109, @andersu, @antoniomerlin, @bishiboosh, @ckesc, @jrodbx, @LouisCAD, @marcardar, @OlivierGenez, @pyricau, @runningcode, @seljad, @worldsnas for their contributions, bug reports and feature requests.</p>"},{"location":"changelog/#plumber-android-is-a-new-artifact-that-fixes-known-android-leaks","title":"<code>plumber-android</code> is a new artifact that fixes known Android leaks \ud83d\udebd\ud83d\udd27","text":"<p>LeakCanary reports all leaks, including leaks caused by a known bug in 3rd party code that you do not have control over (reported as Library leaks). That can be annoying! LeakCanary now ships with a new dependency, <code>plumber-android</code>, which performs hacks at runtime to fix some of these known leaks. This releases has fixes for 11 known leaks, but this is just the beginning. Contributions welcome! \ud83d\ude4f</p> <p>Note that since the <code>leakcanary-android</code> dependency is usually added as a <code>debugImplementation</code> dependency, the <code>plumber-android</code> is transitively added only in debug builds, so it will not fix leaks in your release builds. You can add the dependency directly as <code>implementation</code> to get these fixes in release builds as well:</p> <pre><code>dependencies {\nimplementation 'com.squareup.leakcanary:plumber-android:2.4'\n}\n</code></pre> <p>Warning</p> <p>While several of these fixes already ship in release builds of Square apps, this is the first official release of <code>plumber-android</code>, so you should consider it experimental.</p>"},{"location":"changelog/#analyzing-leaks-from-the-cli-is-easier-than-ever","title":"Analyzing leaks from the CLI is easier than ever \ud83c\udf7a","text":"<p>The Shark CLI can now be installed via Homebrew</p> <pre><code>brew install leakcanary-shark\n</code></pre> <p>You can then look for leaks in apps on any connected device, for example:</p> <pre><code>$ shark-cli --device emulator-5554 --process com.example.app.debug analyze\n</code></pre>"},{"location":"changelog/#support-for-android-test-orchestrator","title":"Support for Android Test Orchestrator \ud83c\udfbc","text":"<p>If you set up LeakCanary to report test failures when detecting leaks in instrumentation tests, it now works with Android Test Orchestrator as well. No change required, LeakCanary will automatically detect thatAndroid Test Orchestrator is running and hook into it.</p>"},{"location":"changelog/#no-more-master-branch","title":"No more <code>master</code> branch","text":"<p>The branch name <code>master</code> comes from the master / slave terminology. We renamed the default branch to <code>main</code>, a small step towards making the LeakCanary community a safer space. Here\u2019s a good thread on this topic.</p>"},{"location":"changelog/#bug-fixes-and-improvements_3","title":"Bug fixes and improvements \ud83d\udc1b\ud83d\udd28","text":"<ul> <li>URLs in Library Leak descriptions are now clickable</li> <li>Fixed ordering issues causing improper config with manual setup. A related change is that <code>AppWatcher.Config.enabled</code> is now deprecated.</li> <li>Fixed possible OutOfMemoryError failure when computing retained size: we were loading to memory large arrays from the heap dump just to get their size.</li> </ul> <p>For more details, see the 2.4 Milestone and the full diff.</p>"},{"location":"changelog/#version-23-2020-04-08","title":"Version 2.3 (2020-04-08)","text":"<p>This is a minor release on the feature front, but a large release on the documentation front!</p> <p>Many thanks to @adamfit, @Amokrane, @Armaxis, @artnc, @burakeregar, @ClaasJG, @clementcontet, @ckesc, @cketti, @fbenbassat, @Guneetgstar, @Igorxp5, @JLLeitschuh, @KidAndroid, @ligi, @mzgreen, @pyricau, @sprintuu, @tevjef, @thrlr123 for the contributions, bug reports and feature requests.</p> <p>We asked for help and immediately started seeing more contributions. Thanks all! Check out the How to help page.</p>"},{"location":"changelog/#leakcanary-will-now-crash-in-release-builds","title":"LeakCanary will now crash in release builds","text":"<p>Despite the documentation insisting on using <code>debugImplementation</code>, we\u2019ve seen apps ship LeakCanary in release builds. Mistakes happen, so we\u2019ve made that mistake harder to miss by making LeakCanary crash when included in release builds.</p> <p>Learn More: LeakCanary in release builds.</p>"},{"location":"changelog/#doc-site","title":"Doc site \ud83d\udec0\ud83d\udca5","text":"<p>The doc site content has changed quite a bit! We applied advice from Google\u2019s tech writing guide. If you\u2019ve been confused by Library Leaks before, check out see the new Categorizing leaks section. Take a look around, let us know what you think.</p>"},{"location":"changelog/#bug-fixes-and-improvements_4","title":"Bug fixes and improvements \ud83d\ude09","text":"<ul> <li>The new deobfuscation Gradle plugin wasn\u2019t working with Gradle 3.6, this is now fixed. Also removed the requirement for the plugin to be applied after AGP.</li> <li>Fixed 2 crashes (#1768 &amp; #1769) in the LeakCanary UI found by a sneaky monkey runner \ud83d\ude48.</li> <li>The LeakCanary UI updates immediately when a heap analysis is added or deleted.</li> <li>Fixed a crash when updating from LeakCanary 2.0.</li> <li>The About section of the LeakCanary now surfaces whether heap dumping is currently enabled.</li> <li>Fixed process not exiting in SharkCLI on Windows.</li> <li>Improved error message when obfuscation mappings appear to be missing.</li> </ul> <p>For more details, see the 2.3 Milestone and the full diff.</p>"},{"location":"changelog/#version-22-2020-02-05","title":"Version 2.2 (2020-02-05)","text":"<p>We\u2019ve got some good stuff for the first release of the decade!</p> <p>Many thanks to @AndroidInternal, @Armaxis, @lic2050, @mzgreen, @orenktaboola, @personshelldon, @Plastix, @pyricau for the contributions, bug reports and feature requests.</p>"},{"location":"changelog/#viewmodel-leak-detection","title":"ViewModel leak detection","text":"<p>Android ViewModels are really cool! Their lifecycle is much nicer than fragments or activities, but sometimes mistakes happen. LeakCanary will now automatically detect ViewModel leaks and report any ViewModel instance retained after its <code>onCleared()</code> method was called.</p>"},{"location":"changelog/#android-tv","title":"Android TV","text":"<p>LeakCanary is finally coming to big screens near you! Best part - no additional setup is required, just enable it like you would for a mobile device. Now whenever there\u2019s a leak - you will see a helpful Toast appear with all the details. Make sure to check out our new Android TV section and chill!</p>"},{"location":"changelog/#java-friendly-config-builders","title":"Java-friendly Config builders","text":"<p>It was brought to our attention that configuring <code>LeakCanary</code> and <code>AppWatcher</code> was a miserable experience from Java code. Well, not anymore!</p> <p>Now you can use <code>LeakCanary.Config.Builder</code> and <code>AppWatcher.Config.Builder</code> to have idiomatic Java when updating the configurations. For example:</p> <pre><code>LeakCanary.Config config = LeakCanary.getConfig().newBuilder()\n  .retainedVisibleThreshold(3)\n  .computeRetainedHeapSize(false)\n  .build();\nLeakCanary.setConfig(config);\n</code></pre> <p>If you notice any other problems when using LeakCanary from Java, please file an issue! We take Java-interop seriously and will be happy to improve LeakCanary\u2019s API!</p> <p>For more details, see the 2.2 Milestone and the full diff.</p>"},{"location":"changelog/#version-21-2019-12-31","title":"Version 2.1 (2019-12-31)","text":"<p>A special New Year\u2019s Eve release \ud83e\udd73, the next release will be in another decade \ud83d\ude0e!</p> <p>Many thanks to @adamfit, @alexander-smityuk, @Armaxis, @BraisGabin, @devism, @ditclear, @jrodbx, @jstefanowski, @Maragues, @mzgreen, @pyricau for the contributions, bug reports and feature requests.</p>"},{"location":"changelog/#a-gradle-plugin-for-obfuscated-apps","title":"A Gradle plugin for obfuscated apps","text":"<p>It\u2019s fairly common for teams to have a QA build that is tested before making the release build. Usually that build will be obfuscated (via Proguard or R8), but also add LeakCanary to detect leaks during QA. This leads to obfuscated leak traces, which are hard to understand \ud83e\udd2f. Check out our new Gradle deobfuscation plugin and rejoice!</p>"},{"location":"changelog/#ui-twix-tweaks","title":"UI twix tweaks","text":"<p>In 2.0 we changed the LeakCanary UI and UX, and built a foundation on which 2.1 extends.</p> <p></p> <ul> <li>Since 2.0, Leaks are grouped by their distinct signature. In 2.1 there\u2019s a <code>New</code> tag that will show until you open up a leak. There\u2019s also a <code>Library Leak</code> tag for leaks that are known to be caused by a bug in the Android Framework or Google libraries, and the library leak description now shows up in the UI.</li> <li>The type of the Java objects (class, instance, array) is now displayed in the LeakTrace, e.g. see <code>FontsContract class</code> and <code>ExampleApplication instance</code> above.</li> <li>The type of the GC root now shows up at the root of the leak trace. Makes sense!</li> <li>The leak result notification has an importance now set to MAX so that it\u2019ll show up right in your face. If you turn it off, the canary will haunt you in your dreams \ud83d\udc24\ud83d\udc7b. To save your sanity and your device battery, automatic heap dumps now won\u2019t happen more often than once per minute.</li> <li>The resource id name for <code>View</code> instances is now displayed in the leak trace. You shouldn\u2019t look at the implementation.</li> </ul> <pre><code>\u251c\u2500 android.widget.TextView instance\n\u2502    View.mID = R.id.helper_text\n</code></pre>"},{"location":"changelog/#documentation-goodies","title":"Documentation goodies","text":"<ul> <li>The Fundamentals page was entirely rewritten, split into 3 pages and moved to its own tab. Please read it and provide feedback!</li> <li>At Square, we have been uploading leaks to Bugsnag for 3 years now, so that no leak ever gets missed. Follow this recipe!</li> <li>Did you know you can run LeakCanary in a JVM?</li> </ul>"},{"location":"changelog/#api-breaking-bettering-changes","title":"API breaking bettering changes","text":"<ul> <li>The APIs of the <code>Leak</code> and <code>LeakTrace</code> classes have significantly changed, e.g. all <code>LeakTrace</code> instances with an identical signature are grouped under the same Leak object. Despite these breaking changes, this release version is a minor update. Oh noes, what about semantic versioning \ud83d\ude31? Ask Don Quixote.</li> <li>You can now customize the way LeakCanary finds the leaking objects in the heap dump. For example, here\u2019s the configuration SharkCli uses to find leaks in heap dumps of apps that don\u2019t even have the LeakCanary dependency:</li> </ul> <pre><code>LeakCanary.config = LeakCanary.config.copy(\nleakingObjectFinder = FilteringLeakingObjectFinder(\nAndroidObjectInspectors.appLeakingObjectFilters\n)\n)\n</code></pre> <ul> <li>LeakCanary automatically disables itself in tests by detecting that the <code>org.junit.Test</code> is in the classpath. Unfortunately, some apps ship Junit in their app debug classpath (e.g. when using OkHttp MockWebServer). You can now customize which class is used to detect tests:</li> </ul> <pre><code>&lt;resources&gt;\n&lt;string name=\"leak_canary_test_class_name\"&gt;assertk.Assert&lt;/string&gt;\n&lt;/resources&gt;\n</code></pre>"},{"location":"changelog/#interactive-cli","title":"Interactive CLI","text":"<p>Shark CLI was rewritten on top of Clikt:</p> <pre><code>$ shark-cli\nUsage: shark-cli [OPTIONS] COMMAND [ARGS]...\n\n                 ^`.                 .=\"\"=.\n ^_              \\  \\               / _  _ \\\n\\ \\             {   \\             |  d  b  |\n{  \\           /     `~~~--__     \\   /\\   /\n {   \\___----~~'              `~~-_/'-=\\/=-'\\,\n  \\                         /// a  `~.      \\ \\\n  / /~~~~-, ,__.    ,      ///  __,,,,)      \\ |\n  \\/      \\/    `~~~;   ,---~~-_`/ \\        / \\/\n                   /   /            '.    .'\n                  '._.'             _|`~~`|_\n                                    /|\\  /|\\\n\nOptions:\n  -p, --process NAME              Full or partial name of a process, e.g.\n                                  \"example\" would match \"com.example.app\"\n-d, --device ID                 device/emulator id\n  -m, --obfuscation-mapping PATH  path to obfuscation mapping file\n  --verbose / --no-verbose        provide additional details as to what\n                                  shark-cli is doing\n  -h, --hprof FILE                path to a .hprof file\n  --help                          Show this message and exit\n\nCommands:\n  interactive   Explore a heap dump.\n  analyze       Analyze a heap dump.\n  dump-process  Dump the heap and pull the hprof file.\n  strip-hprof   Replace all primitive arrays from the provided heap dump with\n                arrays of zeroes and generate a new \"-stripped.hprof\" file.\n</code></pre> <p>There\u2019s a new <code>interactive</code> command which enables exploring the heap dump from the command line:</p> <pre><code>$ shark-cli -h heapdump.hprof interactive\nEnter command [help]:\nhelp\n\nAvailable commands:\n  analyze                   Analyze the heap dump.\n  class NAME@ID             Show class with a matching NAME and Object ID.\n  instance CLASS_NAME@ID    Show instance with a matching CLASS_NAME and Object\nID.\n  array CLASS_NAME@ID       Show array instance with a matching CLASS_NAME and\nObject ID.\n  -&gt;instance CLASS_NAME@ID  Show path from GC Roots to instance.\n  ~&gt;instance CLASS_NAME@ID  Show path from GC Roots to instance, highlighting\nsuspect references.\n  help                      Show this message.\n  exit                      Exit this interactive prompt.\n</code></pre> <p>We\u2019re currently exploring the idea of adding support for SQL queries, feedback welcome!</p> <p>For more details, see the 2.1 Milestone and the full diff.</p>"},{"location":"changelog/#version-20-2019-11-27","title":"Version 2.0 (2019-11-27)","text":"<p>In the past 7 months, LeakCanary went through 3 alphas and 5 betas, encompassing 23 contributors over 493 commits, 35826 insertions and 10156 deletions.</p>"},{"location":"changelog/#should-i-upgrade","title":"Should I upgrade?","text":"<p>YES! LeakCanary 2 is so much better, it might make you excited when you see a new memory leak. Follow the upgrade guide, you won\u2019t regret it!</p>"},{"location":"changelog/#so-whats-changed-since-163","title":"So, what\u2019s changed since 1.6.3?","text":"<p>Everything. The LeakCanary codebase went from ~6000 lines of Java to ~16000 lines of Kotlin, excluding comments &amp; blanks.</p> <p>Isn\u2019t Kotlin supposed to drastically reduce the amount of boilerplate code?</p> <p>Absolutely! And it did. But then, we wrote more code. LeakCanary used to depend on HAHA, a repackaging of perflib, the heap dump parser used by Android Studio. Unfortunately perflib was slow and used too much memory, so LeakCanary now includes its own heap dump parser: Shark. The extra code comes from Shark, but also from having a lot more automated tests, and an improved UI layer.</p> <p>One major difference: when the app is in foreground, LeakCanary 2 will not trigger on every retained instance. Instead it will wait until the app goes in background or to reach a threashold of 5 retained instances in foreground. The analysis will then find all the leaks at once, and group identical leaks in the results UI. Please read the Fundamentals section to learn more!</p>"},{"location":"changelog/#random-facts","title":"Random facts","text":"<ul> <li>You can customize the Leaks launcher icon and label: learn more here.</li> <li>If you ` press on your main activity launcher icon, you should see a LeakCanary dynamic shortcut. You can then long press that to drop it on your home screen, and the launcher shows that it\u2019s the leaks launcher for your app.</li> <li>Out of the box, LeakCanary tracks all fragments flavors: AOSP, Support Library and Android X.</li> <li>From within the leak screen, you can share a leak to stack overflow. You can also share a heap dump, or import and analyze a heap dump from another device.</li> <li>You can run LeakCanary from your computer command line, on any debuggable app even if that app doesn\u2019t have LeakCanary: learn more here.</li> <li>The new documentation is fully searchable and includes the API documentation. Try the search bar \u2934.</li> <li>A large 160Mb heap dump uses 2Gb memory when opening it in Android Studio, but only 40Mb with Shark.</li> </ul>"},{"location":"changelog/#changes-since-20-beta-5","title":"Changes since 2.0 Beta 5","text":"<ul> <li>Shark CLI supports multiple connected devices #1642</li> <li>Fixed missing sources from Maven Central #1643</li> <li>Updated notification icon to avoid confusion with Twitter DM notifications, and added icons to bottom navigation bar #1648</li> <li>Automatic leak detection for support library fragments #1611</li> </ul> <p>Many thanks to @AndreasBoehm, @jrodbx, @pyricau for the contributions, bug reports and feature requests.</p> <p>For more details, see the 2.0 Milestone and the full diff.</p>"},{"location":"changelog/#version-20-beta-5-2019-11-25","title":"Version 2.0 Beta 5 (2019-11-25)","text":"<ul> <li>Major bugfix: native gc roots were accidentally ignored in Beta 4, as a result some leaks were not found #1634</li> <li>Fixed Lint warning (<code>leak_canary_about_message</code> string triggered multiple substitutions warning) #1630</li> </ul> <p>Many thanks to @DanEdgarTarget, @msfjarvis, @PaulWoitaschek, @pyricau, @ZacSweers for the contributions, bug reports and feature requests.</p> <p>For more details, see the 2.0-beta-5 Milestone and the full diff.</p>"},{"location":"changelog/#version-20-beta-4-2019-11-18","title":"Version 2.0 Beta 4 (2019-11-18)","text":"<ul> <li>Improved string rendering for heap analysis results</li> <li>UX redesign #1445</li> <li>Support for pattern matching of native reference leaks #1562</li> <li>Added support for deobfuscation using Proguard mapping files in Shark #1499. This isn\u2019t directly supported in LeakCanary yet.</li> <li>Added support for extracting metadata from the heap dump (see the recipe) #1519</li> <li>Improved auto disabling of LeakCanary in Unit and UI tests #1552</li> <li>Several performance improvements when parsing heap dumps</li> <li>Fixed several bugs and crashes</li> <li>Added new known leak patterns</li> </ul> <p>Many thanks to @Armaxis, @BraisGabin, @bric3, @elihart, @fernandospr, @flickator, @gabrysgab, @JorgeDLS, @lannyf77, @msfjarvis, @mzgreen, @ozmium, @PaulWoitaschek, @pyricau, @shelpy, @vRallev, @ZacSweers for the contributions, bug reports and feature requests.</p> <p>For more details, see the 2.0-beta-4 Milestone and the full diff.</p>"},{"location":"changelog/#version-20-beta-3-2019-08-22","title":"Version 2.0 Beta 3 (2019-08-22)","text":"<ul> <li>Baseline memory usage for large hprofs divided by 3 and removed memory spikes #1543</li> <li>Fixed crash when LeakCanary is initialized from another process #1529</li> <li>Java local references are deprioritized to look for longer alternative paths #1525</li> <li>Fixed <code>JavaLocalPattern</code> not matching on Lollipop #1524</li> </ul> <p>Many thanks to @Armaxis, @elihart, @emartynov, @hmcgreevy-instil, @pyricau for the contributions, bug reports and feature requests.</p> <p>For more details, see the 2.0-beta-3 Milestone and the full diff.</p>"},{"location":"changelog/#version-20-beta-2-2019-08-02","title":"Version 2.0 Beta 2 (2019-08-02)","text":"<ul> <li>Fixed Leak analysis failed: Object id not found in heap dump. #1516</li> <li>10x speed increase of hprof indexing on large heap dumps #1520</li> </ul> <p>Many thanks to @kolphi, @pyricau, @ZacSweers for the contributions, bug reports and feature requests.</p> <p>For more details, see the 2.0-beta-2 Milestone and the full diff.</p>"},{"location":"changelog/#version-20-beta-1-2019-07-30","title":"Version 2.0 Beta 1 (2019-07-30)","text":"<ul> <li>New standalone library! Shark is the heap analyzer that powers LeakCanary 2, and it can run in any Java VM. It comes with a CLI: you can now run <code>shark-cli analyze-process com.example.myapp</code> from your computer.</li> <li>New Heap Explorer directly on device! Open a Heap Analysis in LeakCanary, tap the options menu and select \u201cHeap Explorer\u201d. This is still experimental and not very user friendly, contributions welcome!</li> <li>Large API rewrite to improve usability. If you used the alpha with a customized configuration, there are breaking changes. Of note: LeakSentry became AppWatcher, RefWatcher became ObjectWatcher, AndroidExcludedRefs became AndroidReferenceMatchers, AnalysisResultListener became OnHeapAnalyzedListener, AndroidLeakTraceInspectors became AndroidObjectInspectors.</li> <li>The entire API surface is now documented and the documentation is available on this website: see the LeakCanary API tab at the top.</li> <li>Removed the dependency on Android X. No more configuration issues! #1462</li> <li>Added Proguard rules for LeakCanary and ObjectWatcher. #1500</li> <li>Display LeakCanary version in the About screen. #1448</li> <li>Bug fixes, new reference matchers and object inspectors</li> </ul> <p>Many thanks to @arctouch-carlosottoboni, @jemaystermind, @kushagrakumar27, @pyricau, @snkashis for the contributions, bug reports and feature requests.</p> <p>For more details, see the 2.0-beta-1 Milestone and the full diff.</p>"},{"location":"changelog/#version-20-alpha-3-2019-07-04","title":"Version 2.0 Alpha 3 (2019-07-04)","text":"<ul> <li>#1401 LeakCanary can now import all hprof files created from prior LeakCanary versions.</li> <li>#1414 New API: <code>RefWatcher.retainedInstances</code> which returns the instances that are currently considered retained.</li> <li>#1419 New APIs: <code>LeakCanary.Config.maxStoredHeapDumps</code> (default 7) and <code>LeakCanary.Config.requestWriteExternalStoragePermission</code> (default false). LeakCanary won\u2019t ask for the external storage permission anymore by default.</li> <li>#1338 API change: <code>LeakCanary.Config.exclusionsFactory</code> replaced with <code>LeakCanary.Config.knownReferences</code> (simpler use), <code>LeakCanary.Config.leakInspectors</code> and <code>LeakCanary.Config.labelers</code> merged into <code>LeakCanary.Config.leakTraceInspectors</code> which provides access to the entire leak trace as well as a new graph oriented API that replaces the low level hprof parser API.</li> <li>#1382 LeakCanary now disables automatic heap dumping when running in AndroidX UI tests.</li> <li>#1424 API rename: <code>RefWatcher.hasRetainedReferences</code> =&gt; <code>RefWatcher.hasRetainedInstances</code>, <code>RefWatcher.retainedReferenceCount</code> =&gt; <code>RefWatcher.retainedInstanceCount</code>, <code>RefWatcher.hasWatchedReferences</code> =&gt; <code>RefWatcher.hasWatchedInstances</code>, <code>RefWatcher.removeKeysRetainedBeforeHeapDump</code> =&gt; <code>RefWatcher.removeInstancesRetainedBeforeHeapDump</code>, <code>RefWatcher.clearWatchedReferences</code> =&gt; <code>RefWatcher.clearWatchedInstances</code>.</li> <li>#1432 #1438 #1440 New \u201cwon\u2019t fix\u201d leaks and leak trace inspectors</li> <li>#1374 #1364 #1366 #1417 #1399 #1416 #1407 #1427 #1385 Bug and crash fixes</li> </ul> <p>Many thanks to @1step2hell, @afollestad, @ansman, @bjdodson, @BraisGabin, @EBfVince, @jaredsburrows, @pforhan, @pyricau, @tellypresence, @wiyarmir for the contributions, bug reports and feature requests.</p> <p>For more details, see the 2.0-alpha-3 Milestone and the full diff.</p>"},{"location":"changelog/#version-20-alpha-2-2019-05-21","title":"Version 2.0 Alpha 2 (2019-05-21)","text":"<ul> <li>#1040 Import and analyze hprof files from other devices</li> <li>#1344 Computing retained size</li> <li>#1325 New notification showing current count of retained instances</li> <li>#1079 \u201cExcluded\u201d leaks have been renamed to \u201cWon\u2019t fix\u201d leaks to clarify meaning.</li> <li>#1328 New leaks are called out in the UI.</li> <li>#1327 LeakSentry can be enabled / disabled and is automatically disabled in non debuggable builds.</li> <li>#1173 Experimental: now reporting leaks that only go through weak references (previously reported as \u201cno path to instance\u201d)</li> <li>#1339 Readded support for Thread name based exclusions</li> <li>#1312 Fixed bug causing LeakCanary to stop detecting leaks after the app is killed.</li> <li>#1310 #1313 #1314 #1340 #1337 Many API changes</li> <li>#1296 #1293 #1306 #1336 Fixed several crashes.</li> </ul> <p>Many thanks to @forrestbice, @Foso, @Goddchen, @marcosholgado, @orionlee, @pyricau, @satoshun, @ZacSweers for the contributions!</p> <p>For more details, see the 2.0-alpha-2 Milestone and the full diff.</p>"},{"location":"changelog/#version-20-alpha-1-2019-04-23","title":"Version 2.0 Alpha 1 (2019-04-23)","text":"<ul> <li>New logo, thanks @flickator!</li> <li>Entirely rewritten to 100% Kotlin</li> <li>Multiple leaks detected in one analysis<ul> <li>The heap is dumped when the app goes in the background, or when a minimum of 5 leaks is reached in the foreground.</li> </ul> </li> <li>Leak grouping<ul> <li>Leaks that share similar causes are grouped in the UI.</li> <li>New screens to see the list of groups and each group.</li> <li>Improved leaktrace strings to highlight leak causes.</li> <li>Leaks can be shared to Stack Overflow</li> </ul> </li> <li>New library: LeakSentry.<ul> <li>Detects when objects are leaking and triggers LeakCanary</li> <li>Can be used independently in production, for instance to report the number of leaking instances on an OutOfMemoryError crash.</li> </ul> </li> <li>New heap parser<ul> <li>Uses 90% less memory and 6 times faster than the prior heap parser.</li> <li>Runs in the same process as the app on a low priority thread.</li> <li>No more dependency on Perflib and TroveJ. New dependency on Okio.</li> <li>The old parser is still available as <code>leakcanary-android-perflib</code> but will be removed after alpha.</li> </ul> </li> <li>Labelers can add any string content to leak elements</li> <li>0 code setup, just add the one debug dependency.</li> <li>Simpler configuration options</li> <li>Updated from support library to Android X</li> </ul> <p>Many thanks to @BraisGabin, @colinmarsch, @jrodbx, @flickator, @JakeWharton, @pyricau, @WhatsEmo for the contributions!</p> <p>For more details, see the 2.0-alpha-1 Milestone and the full diff.</p>"},{"location":"changelog/#version-163-2019-01-10","title":"Version 1.6.3 (2019-01-10)","text":"<ul> <li>#1163 Fixed leaks being incorrectly classified as \u201cno leak\u201d due to missed GC Roots.</li> <li>#1153 <code>LeakCanary.isInAnalyzerProcess</code> now correctly returns true in the analyzer process prior to any first leak (could be triggered by starting the leak result activity).</li> <li>#1158 Stopped enabling DisplayLeakActivity when not using DisplayLeakService.</li> <li>#1135 Fixed IndexOutOfBoundsException for leak traces of size 1.</li> <li>#1163 Keep \u201cno leak\u201d heap dumps.</li> </ul> <p>Many thanks to @KMaragh, @pyricau, @SebRut for the code contributions!</p> <p>For more details, see the 1.6.3 Milestone and the full diff.</p>"},{"location":"changelog/#version-162-2018-10-16","title":"Version 1.6.2 (2018-10-16)","text":"<ul> <li>#1067 Fixed TransactionTooLargeException crash (leak analysis would never complete).</li> <li>#1061 Detection of Fragment view leaks after Fragment#onDestroyView().</li> <li>#1076 Added the FOREGROUND_SERVICE permission for Android P.</li> <li>#1062 The LeakCanary toast now always shows correctly. It doesn\u2019t show if there is no activity in foreground.</li> <li>#1115 Reenabled the DisplayLeakActivity icon on fresh installs.</li> <li>#1100 Added nullability annotations to improve Kotlin support.</li> <li>Updates to excluded leaks (commits).</li> <li>Updates to reachability inspectors (commits).</li> </ul> <p>Many thanks to @fractalwrench, @ZacSweers, @Goddchen, @igokoro, @IlyaGulya, @JakeWharton, @javmarina, @jokermonn, @jrodbx, @Parseus, @pyricau, @scottkennedy for the code contributions!</p>"},{"location":"changelog/#public-api-changes","title":"Public API changes","text":"<ul> <li>Subclasses of <code>AbstractAnalysisResultService</code> should now override <code>onHeapAnalyzed(@NonNull AnalyzedHeap analyzedHeap)</code> instead of <code>onHeapAnalyzed(@NonNull HeapDump heapDump, @NonNull AnalysisResult result)</code></li> </ul> <p>For more details, see the 1.6.2 Milestone and the full diff.</p>"},{"location":"changelog/#version-161-2018-06-21","title":"Version 1.6.1 (2018-06-21)","text":"<ul> <li>#727 Improved leak analysis: LeakCanary now identifies and highlights the potential causes of the leak.</li> <li>#1011 We noticed that computing the retained heap size could take a long time, so it\u2019s now optional and off by default.</li> <li>#633 Support for detecting leaks in instrumentation tests (see the wiki).</li> <li>#985 Ability to convert leak traces into stack traces for easy remote reporting (see the wiki).</li> <li>#983 Support for watching destroyed Fragments.</li> <li>#846 LeakCanary now uses foreground services and displays a notification when the analysis is in progress. This also fixes crashes when analyzing in background on O+.</li> <li>The LeakCanary icon (to start to DisplayLeakActivity) is now hidden by default, and only enabled after the first leak is found.</li> <li>#775 Fixed crash when sharing heap dumps on O+ and added a dependency to the support-core-utils library.</li> <li>#930 DisplayLeakActivity has a responsive icon.</li> <li>#685 Stopped doing IO on main thread in DisplayLeakActivity (fixes StrictMode errors).</li> <li>#999 Updated HAHA to 2.0.4, which uses Trove4j as an external dependency (from jcenter) instead of rebundling it. This is to clarify licences (Apache v2 vs LGPL 2.1).</li> <li>Several bug and crash fixes.</li> </ul> <p>Many thanks to @AdityaAnand1, @alhah, @christxph, @csoon03, @daqi, @JakeWharton, @jankovd, @jrodbx, @kurtisnelson, @NightlyNexus, @pyricau, @SalvatoreT, @shmuelr, @tokou, @xueqiushi  for the code contributions!</p> <p>Note: we made a 1.6 release but quickly followed up with 1.6.1 due to #1058.</p>"},{"location":"changelog/#public-api-changes_1","title":"Public API changes","text":"<ul> <li>The installed ref watcher singleton is now available via <code>LeakCanary.installedRefWatcher()</code></li> <li><code>AnalysisResult.leakTraceAsFakeException()</code> returns an exception that can be used to report and group leak traces to a tool like Bugsnag or Crashlytics.</li> <li>New <code>InstrumentationLeakDetector</code> and <code>FailTestOnLeakRunListener</code> APIs for detecting leaks in instrumentation tests.</li> <li>New <code>Reachability.Inspector</code> and <code>RefWatcherBuilder.stethoscopeClasses()</code> API to establish reachability and help identify leak causes.</li> <li>Watching activities can be disabled with <code>AndroidRefWatcherBuilder.watchActivities(false)</code>, watching fragments can be disabled with <code>AndroidRefWatcherBuilder.watchFragments(false)</code></li> <li><code>LeakCanary.setDisplayLeakActivityDirectoryProvider()</code> is deprecated and replaced with <code>LeakCanary.setLeakDirectoryProvider()</code></li> <li>New <code>RefWatcherBuilder.computeRetainedHeapSize()</code> API to enable the computing of the retained heap size (off by default).</li> </ul> <p>For more details, see the 1.6.1 Milestone and the full diff.</p>"},{"location":"changelog/#version-154-2017-09-22","title":"Version 1.5.4 (2017-09-22)","text":"<ul> <li>Restore Java 7 compatibility in leakcanary-watcher</li> </ul>"},{"location":"changelog/#version-153-2017-09-17","title":"Version 1.5.3 (2017-09-17)","text":"<ul> <li>Fix broken 1.5.2 build</li> <li>Convert leakcanary-watcher from Android library to Java library</li> <li>Disable finish animations in RequestStoragePermissionActivity</li> <li>Corrected README sample for Robolectric tests</li> </ul> <p>For more details, see the full diff.</p>"},{"location":"changelog/#version-152-2017-08-09","title":"Version 1.5.2 (2017-08-09)","text":"<ul> <li>New excluded leaks</li> <li>Move Leakcanary UI into leak analyzer process</li> <li>Ignore computing retained sizes for bitmaps on O+</li> <li>Add notification channel for persistent messages on O+</li> <li>Exclude permission activity from recents menu</li> <li>Updated README and sample for handling Robolectric tests</li> </ul> <p>For more details, see the full diff.</p>"},{"location":"changelog/#version-151-2017-04-25","title":"Version 1.5.1 (2017-04-25)","text":"<ul> <li>New excluded leaks</li> <li>Fix java.util.MissingFormatArgumentException in DisplayLeakService</li> <li>Separate task affinities for different apps</li> <li>Bump minSdk to 14</li> <li>Fix HahaHelper for O Preview</li> </ul> <p>For more details, see the full diff.</p>"},{"location":"changelog/#version-15-2016-09-28","title":"Version 1.5 (2016-09-28)","text":"<ul> <li>New excluded leaks</li> <li>Added <code>LeakCanary.isInAnalyzerProcess()</code> to the no-op jar</li> <li>Fixed several file access issues:<ul> <li>No more cleanup on startup, we rotate the heap dump files on every new heap dump.</li> <li>LeakCanary now falls back to the app directory until it can write to the external storage.</li> </ul> </li> <li>Leak notifications now each use a distinct notification instead of erasing each other.</li> <li>If LeakCanary can\u2019t perform a heap dump for any reason (e.g. analysis in progress, debugger attached), it retries later with an exponential backoff.</li> <li>Added confirmation dialog when user deletes all leaks.</li> <li>Replace the two LeakCanary configuration methods with a builder that provides more flexibility, see <code>LeakCanary.refWatcher()</code>.</li> </ul> <p>For more details, see the full diff.</p>"},{"location":"changelog/#public-api-changes_2","title":"Public API changes","text":"<ul> <li>New <code>HeapAnalyzer.findTrackedReferences()</code> method for headless analysis when you have no context on what leaked.</li> <li>Added <code>LeakCanary.isInAnalyzerProcess()</code> to the no-op jar</li> <li>Added <code>LeakCanary.refWatcher()</code> which returns an <code>AndroidRefWatcherBuilder</code> that extends <code>RefWatcherBuilder</code> and lets you fully customize the <code>RefWatcher</code> instance.</li> <li>Removed <code>LeakCanary.install(Application, Class)</code> and <code>LeakCanary.androidWatcher(Context, HeapDump.Listener, ExcludedRefs)</code>.</li> <li>Removed <code>R.integer.leak_canary_max_stored_leaks</code> and <code>R.integer.leak_canary_watch_delay_millis</code>, those can now be set via <code>LeakCanary.refWatcher()</code>.</li> <li>Updated the <code>LeakDirectoryProvider</code> API to centralize all file related responsibilities.</li> <li><code>RefWatcher</code> is now constructed with a <code>WatchExecutor</code> which executes a <code>Retryable</code>, instead of an <code>Executor</code> that executes a <code>Runnable</code>.</li> <li><code>HeapDumper.NO_DUMP</code> was renamed <code>HeapDumper.RETRY_LATER</code></li> </ul>"},{"location":"changelog/#version-14-2016-09-11","title":"Version 1.4 (2016-09-11)","text":"<ul> <li>Fix false negative where GC root is of type android.os.Binder #482</li> <li>Update HAHA to 2.0.3; clear compiler warnings #563</li> <li>Correct some mistakes in German translation #516</li> <li>Don\u2019t loop when storage permission denied #422</li> <li>Remove old references to \u201c__\u201d prefixed resources #477</li> <li>Fix permission crash for DisplayLeakActivity on M #382</li> <li>Fix NPE when thread name not found in heap dump #417</li> <li>Add version info to stacktrace #473</li> </ul>"},{"location":"changelog/#version-14-beta2-2016-03-23","title":"Version 1.4-beta2 (2016-03-23)","text":"<ul> <li>Add reason for ignoring to analysis result #365.</li> <li>Lower memory usage when parsing heap dumps on M #223.</li> <li>Fix NPE in LeakCanaryInternals.isInServiceProcess() #449.</li> <li>New ignored Android SDK leaks #297,#322.</li> <li>Use leakcanary-android-no-op in test builds #143.</li> <li>Fixes to allow LeakCanary to work with ProGuard #398.</li> <li>Optimize png assets #406.</li> <li>Fix delete button not working on error views #408.</li> <li>Add German translation #437.</li> </ul>"},{"location":"changelog/#version-14-beta1-2016-01-08","title":"Version 1.4-beta1 (2016-01-08)","text":"<ul> <li>Switched to HAHA 2.0.2 with uses Perflib instead of MAT under the hood #219. This fixes crashes and improves speed a lot.</li> <li>We can now parse Android M heap dumps #267, although there are still memory issues (see #223).</li> <li>Excluded leaks are now reported as well and available in the display leak activity.</li> <li>Added ProGuard configuration for #132.</li> <li>Many new ignored Android SDK leaks.</li> <li>Added excluded leaks to text report #119.</li> <li>Added LeakCanary SHA to text report #120.</li> <li>Added CanaryLog API to replace the logger: #201.</li> <li>Renamed all resources to begin with <code>leak_canary_</code> instead of <code>__leak_canary</code>#161</li> <li>No crash when heap dump fails #226.</li> <li>Add retained size to leak reports #162.</li> </ul>"},{"location":"changelog/#public-api-changes_3","title":"Public API changes","text":"<ul> <li>AnalysisResult.failure is now a <code>Throwable</code> instead of an <code>Exception</code>. Main goal is to catch and correctly report OOMs while parsing.</li> <li>Added ARRAY_ENTRY to LeakTraceElement.Type for references through array entries.</li> <li>Renamed <code>ExcludedRefs</code> fields.</li> <li>Each <code>ExcludedRef</code> entry can now be ignored entirely or \u201ckept only if no other path\u201d.</li> <li>Added support for ignoring all fields (static and non static) for a given class.</li> </ul>"},{"location":"changelog/#version-131-2015-05-16","title":"Version 1.3.1 (2015-05-16)","text":"<ul> <li>Heap dumps and analysis results are now saved on the sd card: #21.</li> <li><code>ExcludedRef</code> and <code>AndroidExcludedRefs</code> are customizable: #12 #73.</li> <li>7 new ignored Android SDK leaks: #1 #4 #32 #89 #82 #97.</li> <li>Fixed 3 crashes in LeakCanary: #37 #46 #66.</li> <li>Fixed StrictMode thread policy violations: #15.</li> <li>Updated <code>minSdkVersion</code> from <code>9</code> to <code>8</code>: #57.</li> <li>Added LeakCanary version name to <code>LeakCanary.leakInfo()</code>: #49.</li> <li><code>leakcanary-android-no-op</code> is lighter, it does not depend on <code>leakcanary-watcher</code> anymore, only 2 classes now: #74.</li> <li>Adding field state details to the text leak trace.</li> <li>A Toast is displayed while the heap dump is in progress to warn that the UI will freeze: #20. You can customize the toast by providing your own layout named <code>__leak_canary_heap_dump_toast.xml</code> (e.g. you could make it an empty layout).</li> <li>If the analysis fails, the result and heap dump are kept so that it can be reported to LeakCanary: #102.</li> <li>Update to HAHA 1.3 to fix a 2 crashes #3 46</li> </ul>"},{"location":"changelog/#public-api-changes_4","title":"Public API changes","text":"<ul> <li>When upgrading from 1.3 to 1.3.1, previously saved heap dumps will not be readable any more, but they won\u2019t be removed from the app directory. You should probably uninstall your app.</li> <li>Added <code>android.permission.WRITE_EXTERNAL_STORAGE</code> to <code>leakcanary-android</code> artifact.</li> <li><code>LeakCanary.androidWatcher()</code> parameter types have changed (+ExcludedRefs).</li> <li><code>LeakCanary.leakInfo()</code> parameter types have changed (+boolean)</li> <li><code>ExcludedRef</code> is now serializable and immutable, instances can be created using <code>ExcludedRef.Builder</code>.</li> <li><code>ExcludedRef</code> is available in <code>HeapDump</code></li> <li><code>AndroidExcludedRefs</code> is an enum, you can now pick the leaks you want to ignore in <code>AndroidExcludedRefs</code> by creating an <code>EnumSet</code> and calling <code>AndroidExcludedRefs.createBuilder()</code>.</li> <li><code>AndroidExcludedRefs.createAppDefaults()</code> &amp; <code>AndroidExcludedRefs.createAndroidDefaults()</code> return a <code>ExcludedRef.Builder</code>.</li> <li><code>ExcludedRef</code> moved from <code>leakcanary-analyzer</code> to <code>leakcanary-watcher</code></li> </ul>"},{"location":"changelog/#version-13-2015-05-08","title":"Version 1.3 (2015-05-08)","text":"<p>Initial release.</p>"},{"location":"changelog/#dependencies","title":"Dependencies","text":""},{"location":"code_of_conduct/","title":"Open Source Code of Conduct","text":"<p>At Square, we are committed to contributing to the open source community and simplifying the process of releasing and managing open source software. We\u2019ve seen incredible support and enthusiasm from thousands of people who have already contributed to our projects\u200a\u2014\u200aand we want to ensure our community continues to be truly open for everyone.</p> <p>This code of conduct outlines our expectations for participants, as well as steps to reporting unacceptable behavior. We are committed to providing a welcoming and inspiring community for all and expect our code of conduct to be honored.</p> <p>Square\u2019s open source community strives to:</p> <ul> <li> <p>Be open: We invite anyone to participate in any aspect of our projects. Our community is    open, and any responsibility can be carried by a contributor who demonstrates the required    capacity and competence.</p> </li> <li> <p>Be considerate: People use our work, and we depend on the work of others. Consider users and    colleagues before taking action. For example, changes to code, infrastructure, policy, and    documentation may negatively impact others.</p> </li> <li> <p>Be respectful: We expect people to work together to resolve conflict, assume good intentions,    and act with empathy. Do not turn disagreements into personal attacks.</p> </li> <li> <p>Be collaborative: Collaboration reduces redundancy and improves the quality of our work. We    strive for transparency within our open source community, and we work closely with upstream    developers and others in the free software community to coordinate our efforts.</p> </li> <li> <p>Be pragmatic: Questions are encouraged and should be asked early in the process to avoid    problems later. Be thoughtful and considerate when seeking out the appropriate forum for your    questions. Those who are asked should be responsive and helpful.</p> </li> <li> <p>Step down considerately: Members of every project come and go. When somebody leaves or    disengages from the project, they should make it known and take the proper steps to ensure that    others can pick up where they left off.</p> </li> </ul> <p>This code is not exhaustive or complete. It serves to distill our common understanding of a collaborative, shared environment, and goals. We expect it to be followed in spirit as much as in the letter.</p>"},{"location":"code_of_conduct/#diversity-statement","title":"Diversity Statement","text":"<p>We encourage everyone to participate and are committed to building a community for all. Although we may not be able to satisfy everyone, we all agree that everyone is equal.</p> <p>Whenever a participant has made a mistake, we expect them to take responsibility for it. If someone has been harmed or offended, it is our responsibility to listen carefully and respectfully, and do our best to right the wrong.</p> <p>Although this list cannot be exhaustive, we explicitly honor diversity in age, culture, ethnicity, gender identity or expression, language, national origin, political beliefs, profession, race, religion, sexual orientation, socioeconomic status, and technical ability. We will not tolerate discrimination based on any of the protected characteristics above, including participants with disabilities.</p>"},{"location":"code_of_conduct/#reporting-issues","title":"Reporting Issues","text":"<p>If you experience or witness unacceptable behavior\u200a\u2014\u200aor have any other concerns\u200a\u2014\u200aplease report it by emailing codeofconduct@squareup.com. For more details, please see our Reporting Guidelines below.</p>"},{"location":"code_of_conduct/#thanks","title":"Thanks","text":"<p>Some of the ideas and wording for the statements and guidelines above were based on work by the Twitter, Ubuntu, GDC, and Django communities. We are thankful for their work.</p>"},{"location":"code_of_conduct/#reporting-guide","title":"Reporting Guide","text":"<p>If you experience or witness unacceptable behavior\u200a\u2014\u200aor have any other concerns\u200a\u2014\u200aplease report it by emailing codeofconduct@squareup.com. All reports will be handled with discretion.</p> <p>In your report please include:</p> <ul> <li>Your contact information.</li> <li>Names (real, nicknames, or pseudonyms) of any individuals involved. If there are additional    witnesses, please include them as well.</li> <li>Your account of what occurred, and if you believe the incident is ongoing. If there is a publicly    available record (e.g. a mailing list archive or a public IRC logger), please include a link.</li> <li>Any additional information that may be helpful.</li> </ul> <p>After filing a report, a representative from the Square Code of Conduct committee will contact you personally. The committee will then review the incident, follow up with any additional questions, and make a decision as to how to respond.</p> <p>Anyone asked to stop unacceptable behavior is expected to comply immediately. If an individual engages in unacceptable behavior, the Square Code of Conduct committee may take any action they deem appropriate, up to and including a permanent ban from all of Square spaces without warning.</p>"},{"location":"dev-env/","title":"Dev Environment for LeakCanary contributors","text":""},{"location":"dev-env/#setup","title":"Setup","text":"<ul> <li>Download Android Studio.</li> <li>We use two spaces code indentation, use <code>SquareAndroid</code> code style settings from https://github.com/square/java-code-styles.</li> <li>Build with <code>./gradlew build</code>.</li> <li>Running the failing UI tests to confirm leak detection correctly fails UI tests: <code>./gradlew leakcanary-android-sample:connectedCheck</code>.</li> <li>Normal UI tests: <code>./gradlew leakcanary-android-core:connectedCheck</code>.</li> </ul>"},{"location":"dev-env/#static-code-analysis","title":"Static Code Analysis","text":"<ul> <li>LeakCanary uses Detekt for static Code analysis.</li> <li>Analyze the entire project with <code>./gradlew check</code> or particular modules with <code>./gradlew :module-name:check</code>. Detekt will fail the build if any ruleset violations are found. You should fix all issues before pushing the branch to remote.</li> <li>There\u2019s also a git pre-push hook that will run analysis automatically before pushing a branch to the remote. If there are any violations - it will prevent the push. Fix the issues!</li> <li>You can bypass the git hook though; Travis CI will still run checks and will fail if any violations are found. </li> <li>Detekt report will be printed in the console and saved to <code>/moduleDir/build/reports/</code>.</li> </ul>"},{"location":"dev-env/#deploying-locally","title":"Deploying locally","text":"<p>To deploy LeakCanary to your local maven repository, run the following command, changing the path to the path of your local repository:</p> <pre><code>./gradlew uploadArchives -PSNAPSHOT_REPOSITORY_URL=file:///Users/py/.m2/repository\n</code></pre> <p>Then add the SNAPSHOT dependency and <code>mavenLocal()</code> repository to your project:</p> <pre><code>dependencies {\n  debugImplementation 'com.squareup.leakcanary:leakcanary-android:3.0-alpha-2-SNAPSHOT'\n}\n\nrepositories {\n  mavenLocal()\n}\n</code></pre>"},{"location":"dev-env/#deploying-the-docs-locally","title":"Deploying the docs locally","text":"<p>Installing or updating the docs dependencies:</p> <pre><code>pip install --requirement docs/requirements.txt\n</code></pre> <p>Deploying locally</p> <pre><code>mkdocs serve\n</code></pre>"},{"location":"faq/","title":"FAQ","text":""},{"location":"faq/#can-a-leak-be-caused-by-the-android-sdk","title":"Can a leak be caused by the Android SDK?","text":"<p>Yes. There are a number of known memory leaks that have been fixed over time in AOSP as well as in manufacturer implementations. When such a leak occurs, there is little you can do as an app developer to fix it. For that reason, LeakCanary has a built-in list of known Android leaks to recognize, called Library Leaks (see Categorizing leaks).</p> <p>If you find a new one, please create an issue (choose \ud83e\udd16Leak in Android SDK / support library) and follow these steps:</p> <ol> <li>Provide the entire leak trace information (including metadata), and use backticks (`) for formatting.</li> <li>Read the AOSP source for that version of Android, and try to figure out why it happens. You can easily navigate through SDK versions by switching branches on the GitHub mirror: android/platform_frameworks_base.</li> <li>Check if it happens on the latest version of Android, and otherwise use blame to find when it was fixed.</li> <li>If it\u2019s still happening, build a simple repro case.</li> <li>File an issue on b.android.com with the leak trace and the repro case. Please remember to follow up the issue when there are new responses. b/176886060 is a good example of effective and respectful communication.</li> <li>Create a PR in LeakCanary to update AndroidReferenceMatchers. Optional: if you find a hack to clear that leak on previous versions of Android, feel free to document it.</li> </ol>"},{"location":"faq/#how-do-i-know-if-leakcanary-is-running","title":"How do I know if LeakCanary is running?","text":"<p>You can confirm that LeakCanary starts correctly by filtering on the LeakCanary tag in Logcat:</p> <pre><code>$ adb logcat | grep LeakCanary\n\nD/LeakCanary: Installing AppWatcher\n</code></pre> <p>If you do not see <code>Installing AppWatcher</code> in the logs, check your dependencies (<code>./gradlew app:dependencies</code>) and make sure LeakCanary is there.</p> <p>Note that LeakCanary is automatically disabled in tests (see LeakCanary test environment detection):</p> <pre><code>$ adb logcat | grep LeakCanary\n\nD/LeakCanary: Installing AppWatcher\nD/LeakCanary: JUnit detected in classpath, app is running tests =&gt; disabling heap dumping &amp; analysis\nD/LeakCanary: Updated LeakCanary.config: Config(dumpHeap=false)\n</code></pre>"},{"location":"faq/#where-does-leakcanary-store-heap-dumps","title":"Where does LeakCanary store heap dumps?","text":"<p>The default behavior is to store heap dumps in a <code>leakcanary</code> folder under the app directory. If the app has been granted the <code>android.permission.WRITE_EXTERNAL_STORAGE</code> permission, then heap dumps will be stored in a <code>leakcanary-com.example</code> folder (where <code>com.example</code> is your app package name) under the <code>Download</code> folder of the external storage. If the app has not been granted the <code>android.permission.WRITE_EXTERNAL_STORAGE</code> permission but that permission is listed in <code>AndroidManifest.xml</code> then LeakCanary will show a notification that can be tapped to grant permission.</p>"},{"location":"faq/#how-can-i-dig-beyond-the-leak-trace","title":"How can I dig beyond the leak trace?","text":"<p>Sometimes the leak trace isn\u2019t enough and you need to dig into a heap dump with MAT or YourKit.</p> <ul> <li>Go to a heap analysis screen, click the overflow menu and select Share Heap Dump.</li> </ul> <p>Here\u2019s how you can find the leaking instance in the heap dump:</p> <ol> <li>Look for all instances of <code>leakcanary.KeyedWeakReference</code>.</li> <li>For each of these, look at the <code>key</code> field.</li> <li>Find the <code>KeyedWeakReference</code> that has a <code>key</code> field equal to the reference key reported by LeakCanary.</li> <li>The <code>referent</code> field of that <code>KeyedWeakReference</code> is your leaking object.</li> <li>From then on, the matter is in your hands. A good start is to look at the shortest path to GC Roots (excluding weak references).</li> </ol>"},{"location":"faq/#how-does-leakcanary-get-installed-by-only-adding-a-dependency","title":"How does LeakCanary get installed by only adding a dependency?","text":"<p>On Android, content providers are created after the Application instance is created but before Application.onCreate() is called. The <code>leakcanary-object-watcher-android</code> artifact has a non exported ContentProvider defined in its <code>AndroidManifest.xml</code> file. When that ContentProvider is installed, it adds activity and fragment lifecycle listeners to the application.</p>"},{"location":"faq/#how-many-methods-does-leakcanary-add","title":"How many methods does LeakCanary add?","text":"<p>0. LeakCanary is a debug only library.</p>"},{"location":"faq/#how-do-i-use-the-snapshot-version","title":"How do I use the SNAPSHOT version?","text":"<p>Update your dependencies to the latest SNAPSHOT (see build.gradle):</p> <pre><code>dependencies {\n  debugImplementation 'com.squareup.leakcanary:leakcanary-android:3.0-alpha-2-SNAPSHOT'\n}\n</code></pre> <p>Add Sonatype\u2019s <code>snapshots</code> repository:</p> <pre><code>repositories {\n  mavenCentral()\n  maven {\n    url 'https://s01.oss.sonatype.org/content/repositories/snapshots/'\n  }\n}\n</code></pre> <p>Status of the snapshot build: </p>"},{"location":"faq/#whos-behind-leakcanary","title":"Who\u2019s behind LeakCanary?","text":"<p>LeakCanary was created and open sourced by @pyricau, with many contributions from the community.</p>"},{"location":"faq/#why-is-it-called-leakcanary","title":"Why is it called LeakCanary?","text":"<p>The name LeakCanary is a reference to the expression canary in a coal mine, because LeakCanary is a sentinel used to detect risks by providing advance warning of a danger. Props to @edenman for suggesting it!</p>"},{"location":"faq/#who-made-the-logo","title":"Who made the logo?","text":"<ul> <li>@pyricau quickly made the first version of the logo. It was based on cliparts from Android Asset Studio, mixed with the selection from a photo of a Canary. The exclamation mark means danger, the shield stands for protection, and the bird, well, is a canary.</li> <li>@romainguy turned the ugly logo into a nice vector asset.</li> <li>@flickator designed a much nicer logo for LeakCanary 2.0!</li> </ul>"},{"location":"fundamentals-fixing-a-memory-leak/","title":"Fixing a memory leak","text":"<p>A memory leak is a programming error that causes an application to keep a reference to an object that is no longer needed. Somewhere in the code, there\u2019s a reference that should have been cleared and wasn\u2019t.</p> <p>Follow these 4 steps to fix memory leaks:</p> <ol> <li>Find the leak trace.</li> <li>Narrow down the suspect references.</li> <li>Find the reference causing the leak.</li> <li>Fix the leak.</li> </ol> <p>LeakCanary helps you with the first two steps. The last two steps are up to you!</p>"},{"location":"fundamentals-fixing-a-memory-leak/#1-find-the-leak-trace","title":"1. Find the leak trace","text":"<p>A leak trace is a shorter name for the best strong reference path from garbage collection roots to the retained object, ie the path of references that is holding an object in memory, therefore preventing it from being garbage collected.</p> <p>For example, let\u2019s store a helper singleton in a static field:</p> <pre><code>class Helper {\n}\n\nclass Utils {\npublic static Helper helper = new Helper();\n}\n</code></pre> <p>Let\u2019s tell LeakCanary that the singleton instance is expected to be garbage collected:</p> <pre><code>AppWatcher.objectWatcher.watch(Utils.helper)\n</code></pre> <p>The leak trace for that singleton looks like this:</p> <pre><code>\u252c\u2500\u2500\u2500\n\u2502 GC Root: Local variable in native code\n\u2502\n\u251c\u2500 dalvik.system.PathClassLoader instance\n\u2502    \u2193 PathClassLoader.runtimeInternalObjects\n\u251c\u2500 java.lang.Object[] array\n\u2502    \u2193 Object[].[43]\n\u251c\u2500 com.example.Utils class\n\u2502    \u2193 static Utils.helper\n\u2570\u2192 java.example.Helper\n</code></pre> <p>Let\u2019s break it down! At the top, a <code>PathClassLoader</code> instance is held by a garbage collection (GC) root, more specifically a local variable in native code. GC roots are special objects that are always reachable, ie they cannot be garbage collected. There are 4 main types of GC root:</p> <ul> <li>Local variables, which belong to the stack of a thread.</li> <li>Instances of active Java threads.</li> <li>System Classes, which never unload.</li> <li>Native references, which are controlled by native code.</li> </ul> <pre><code>\u252c\u2500\u2500\u2500\n\u2502 GC Root: Local variable in native code\n\u2502\n\u251c\u2500 dalvik.system.PathClassLoader instance\n</code></pre> <p>A line starting with <code>\u251c\u2500</code> represents a Java object (either a class, an object array or an instance), and a line starting with <code>\u2502    \u2193</code> represents a reference to the Java object on the next line.</p> <p><code>PathClassLoader</code> has a <code>runtimeInternalObjects</code> field that is a reference to an array of <code>Object</code>:</p> <pre><code>\u251c\u2500 dalvik.system.PathClassLoader instance\n\u2502    \u2193 PathClassLoader.runtimeInternalObjects\n\u251c\u2500 java.lang.Object[] array\n</code></pre> <p>The element at position 43 in that array of <code>Object</code> is a reference to the <code>Utils</code> class.</p> <pre><code>\u251c\u2500 java.lang.Object[] array\n\u2502    \u2193 Object[].[43]\n\u251c\u2500 com.example.Utils class\n</code></pre> <p>A line starting with <code>\u2570\u2192</code> represents the leaking object, ie the object that is passed to AppWatcher.objectWatcher.watch().</p> <p>The <code>Utils</code> class has a static <code>helper</code> field which is a reference to the leaking object, which is the Helper singleton instance:</p> <pre><code>\u251c\u2500 com.example.Utils class\n\u2502    \u2193 static Utils.helper\n\u2570\u2192 java.example.Helper instance\n</code></pre>"},{"location":"fundamentals-fixing-a-memory-leak/#2-narrow-down-the-suspect-references","title":"2. Narrow down the suspect references","text":"<p>A leak trace is a path of references. Initially, all references in that path are suspected of causing the leak, but LeakCanary can automatically narrow down the suspect references. To understand what that means, let\u2019s go through that process manually.</p> <p>Here\u2019s an example of bad Android code:</p> <pre><code>class ExampleApplication : Application() {\nval leakedViews = mutableListOf&lt;View&gt;()\n}\n\nclass MainActivity : Activity() {\noverride fun onCreate(savedInstanceState: Bundle?) {\nsuper.onCreate(savedInstanceState)\nsetContentView(R.layout.main_activity)\n\nval textView = findViewById&lt;View&gt;(R.id.helper_text)\n\nval app = application as ExampleApplication\n// This creates a leak, What a Terrible Failure!\napp.leakedViews.add(textView)\n}\n}\n</code></pre> <p>LeakCanary produces a leak trace that looks like this:</p> <pre><code>\u252c\u2500\u2500\u2500\n\u2502 GC Root: System class\n\u2502\n\u251c\u2500 android.provider.FontsContract class\n\u2502    \u2193 static FontsContract.sContext\n\u251c\u2500 com.example.leakcanary.ExampleApplication instance\n\u2502    \u2193 ExampleApplication.leakedViews\n\u251c\u2500 java.util.ArrayList instance\n\u2502    \u2193 ArrayList.elementData\n\u251c\u2500 java.lang.Object[] array\n\u2502    \u2193 Object[].[0]\n\u251c\u2500 android.widget.TextView instance\n\u2502    \u2193 TextView.mContext\n\u2570\u2192 com.example.leakcanary.MainActivity instance\n</code></pre> <p>Here\u2019s how to read that leak trace:</p> <p>The <code>FontsContract</code> class is a system class (see <code>GC Root: System class</code>) and has an <code>sContext</code> static field which references an <code>ExampleApplication</code> instance which has a <code>leakedViews</code> field which references an <code>ArrayList</code> instance which references an array (the array backing the array list implementation) which has an element that references a <code>TextView</code> which has an <code>mContext</code> field which references a destroyed instance of <code>MainActivity</code>.</p> <p>LeakCanary highlights all references suspected of causing this leak using ~~~ underlines. Initially, all references are suspect:</p> <pre><code>\u252c\u2500\u2500\u2500\n\u2502 GC Root: System class\n\u2502\n\u251c\u2500 android.provider.FontsContract class\n\u2502    \u2193 static FontsContract.sContext\n\u2502                           ~~~~~~~~\n\u251c\u2500 com.example.leakcanary.ExampleApplication instance\n\u2502    Leaking: NO (Application is a singleton)\n\u2502    \u2193 ExampleApplication.leakedViews\n\u2502                         ~~~~~~~~~~~\n\u251c\u2500 java.util.ArrayList instance\n\u2502    \u2193 ArrayList.elementData\n\u2502                ~~~~~~~~~~~\n\u251c\u2500 java.lang.Object[] array\n\u2502    \u2193 Object[].[0]\n\u2502               ~~~\n\u251c\u2500 android.widget.TextView instance\n\u2502    \u2193 TextView.mContext\n\u2502               ~~~~~~~~\n\u2570\u2192 com.example.leakcanary.MainActivity instance\n</code></pre> <p>Then, LeakCanary makes deductions about the state and the lifecycle of the objects in the leak trace. In an Android app the <code>Application</code> instance is a singleton that is never garbage collected, so it\u2019s never leaking (<code>Leaking: NO (Application is a singleton)</code>). From that, LeakCanary concludes that the leak is not caused by <code>FontsContract.sContext</code> (removal of corresponding <code>~~~</code>). Here\u2019s the updated leak trace:</p> <pre><code>\u252c\u2500\u2500\u2500\n\u2502 GC Root: System class\n\u2502\n\u251c\u2500 android.provider.FontsContract class\n\u2502    \u2193 static FontsContract.sContext\n\u251c\u2500 com.example.leakcanary.ExampleApplication instance\n\u2502    Leaking: NO (Application is a singleton)\n\u2502    \u2193 ExampleApplication.leakedViews\n\u2502                         ~~~~~~~~~~~\n\u251c\u2500 java.util.ArrayList instance\n\u2502    \u2193 ArrayList.elementData\n\u2502                ~~~~~~~~~~~\n\u251c\u2500 java.lang.Object[] array\n\u2502    \u2193 Object[].[0]\n\u2502               ~~~\n\u251c\u2500 android.widget.TextView instance\n\u2502    \u2193 TextView.mContext\n\u2502               ~~~~~~~~\n\u2570\u2192 com.example.leakcanary.MainActivity instance\n</code></pre> <p>The <code>TextView</code> instance references the destroyed <code>MainActivity</code> instance via it\u2019s <code>mContext</code> field. Views should not survive the lifecycle of their context, so LeakCanary knows that this <code>TextView</code> instance is leaking (<code>Leaking: YES (View.mContext references a destroyed activity)</code>), and therefore that the leak is not caused by <code>TextView.mContext</code> (removal of corresponding <code>~~~</code>). Here\u2019s the updated leak trace:</p> <pre><code>\u252c\u2500\u2500\u2500\n\u2502 GC Root: System class\n\u2502\n\u251c\u2500 android.provider.FontsContract class\n\u2502    \u2193 static FontsContract.sContext\n\u251c\u2500 com.example.leakcanary.ExampleApplication instance\n\u2502    Leaking: NO (Application is a singleton)\n\u2502    \u2193 ExampleApplication.leakedViews\n\u2502                         ~~~~~~~~~~~\n\u251c\u2500 java.util.ArrayList instance\n\u2502    \u2193 ArrayList.elementData\n\u2502                ~~~~~~~~~~~\n\u251c\u2500 java.lang.Object[] array\n\u2502    \u2193 Object[].[0]\n\u2502               ~~~\n\u251c\u2500 android.widget.TextView instance\n\u2502    Leaking: YES (View.mContext references a destroyed activity)\n\u2502    \u2193 TextView.mContext\n\u2570\u2192 com.example.leakcanary.MainActivity instance\n</code></pre> <p>To summarize, LeakCanary inspects the state of objects in the leak trace to figure out if these objects are leaking (<code>Leaking: YES</code> vs <code>Leaking: NO</code>), and leverages that information to narrow down the suspect references. You can provide custom <code>ObjectInspector</code> implementations to improve how LeakCanary works in your codebase (see Identifying leaking objects and labeling objects).</p>"},{"location":"fundamentals-fixing-a-memory-leak/#3-find-the-reference-causing-the-leak","title":"3. Find the reference causing the leak","text":"<p>In the previous example, LeakCanary narrowed down the suspect references to <code>ExampleApplication.leakedViews</code>, <code>ArrayList.elementData</code> and <code>Object[].[0]</code>:</p> <pre><code>\u252c\u2500\u2500\u2500\n\u2502 GC Root: System class\n\u2502\n\u251c\u2500 android.provider.FontsContract class\n\u2502    \u2193 static FontsContract.sContext\n\u251c\u2500 com.example.leakcanary.ExampleApplication instance\n\u2502    Leaking: NO (Application is a singleton)\n\u2502    \u2193 ExampleApplication.leakedViews\n\u2502                         ~~~~~~~~~~~\n\u251c\u2500 java.util.ArrayList instance\n\u2502    \u2193 ArrayList.elementData\n\u2502                ~~~~~~~~~~~\n\u251c\u2500 java.lang.Object[] array\n\u2502    \u2193 Object[].[0]\n\u2502               ~~~\n\u251c\u2500 android.widget.TextView instance\n\u2502    Leaking: YES (View.mContext references a destroyed activity)\n\u2502    \u2193 TextView.mContext\n\u2570\u2192 com.example.leakcanary.MainActivity instance\n</code></pre> <p><code>ArrayList.elementData</code> and <code>Object[].[0]</code> are implementation details of <code>ArrayList</code>, and it\u2019s unlikely that there\u2019s a bug in the <code>ArrayList</code> implementation, so the reference causing the leak is the only remaining reference: <code>ExampleApplication.leakedViews</code>.</p>"},{"location":"fundamentals-fixing-a-memory-leak/#4-fix-the-leak","title":"4. Fix the leak","text":"<p>Once you find the reference causing the leak, you need to figure out what that reference is about, when it should have been cleared and why it hasn\u2019t been. Sometimes it\u2019s obvious, like in the previous example. Sometimes you need more information to figure it out. You can add labels, or explore the hprof directly (see How can I dig beyond the leak trace?).</p> <p>Warning</p> <p>Memory leaks cannot be fixed by replacing strong references with weak references. It\u2019s a common solution when attempting to quickly address memory issues, however it never works. The bugs that were causing references to be kept longer than necessary are still there. On top of that, it creates more bugs as some objects will now be garbage collected sooner than they should. It also makes the code much harder to maintain.</p> <p>What\u2019s next? Customize LeakCanary to your needs with code recipes!</p>"},{"location":"fundamentals-how-leakcanary-works/","title":"How LeakCanary works","text":"<p>Once LeakCanary is installed, it automatically detects and report memory leaks, in 4 steps:</p> <ol> <li>Detecting retained objects.</li> <li>Dumping the heap.</li> <li>Analyzing the heap.</li> <li>Categorizing leaks.</li> </ol>"},{"location":"fundamentals-how-leakcanary-works/#1-detecting-retained-objects","title":"1. Detecting retained objects","text":"<p>LeakCanary hooks into the Android lifecycle to automatically detect when activities and fragments are destroyed and should be garbage collected. These destroyed objects are passed to an <code>ObjectWatcher</code>, which holds weak references to them. LeakCanary automatically detects leaks for the following objects:</p> <ul> <li>destroyed <code>Activity</code> instances</li> <li>destroyed <code>Fragment</code> instances</li> <li>destroyed fragment <code>View</code> instances</li> <li>cleared <code>ViewModel</code> instances</li> </ul> <p>You can watch any objects that is no longer needed, for example a detached view or a destroyed presenter:</p> <pre><code>AppWatcher.objectWatcher.watch(myDetachedView, \"View was detached\")\n</code></pre> <p>If the weak reference held by <code>ObjectWatcher</code> isn\u2019t cleared after waiting 5 seconds and running garbage collection, the watched object is considered retained, and potentially leaking. LeakCanary logs this to Logcat:</p> <pre><code>D LeakCanary: Watching instance of com.example.leakcanary.MainActivity\n  (Activity received Activity#onDestroy() callback) \n\n... 5 seconds later ...\n\nD LeakCanary: Scheduling check for retained objects because found new object\n  retained\n</code></pre> <p>LeakCanary waits for the count of retained objects to reach a threshold before dumping the heap, and displays a notification with the latest count.</p> <p> Figure 1. LeakCanary found 4 retained objects.</p> <pre><code>D LeakCanary: Rescheduling check for retained objects in 2000ms because found\n  only 4 retained objects (&lt; 5 while app visible)\n</code></pre> <p>Info</p> <p>The default threshold is 5 retained objects when the app is visible, and 1 retained object when the app is not visible. If you see the retained objects notification and then put the app in background (for example by pressing the Home button), then the threshold changes from 5 to 1 and LeakCanary dumps the heap within 5 seconds. Tapping the notification forces LeakCanary to dump the heap immediately.</p>"},{"location":"fundamentals-how-leakcanary-works/#2-dumping-the-heap","title":"2. Dumping the heap","text":"<p>When the count of retained objects reaches a threshold, LeakCanary dumps the Java heap into a <code>.hprof</code> file (a heap dump) stored onto the Android file system (see Where does LeakCanary store heap dumps?). Dumping the heap freezes the app for a short amount of time, during which LeakCanary displays the following toast:</p> <p> Figure 2. LeakCanary shows a toast while dumping the heap.</p>"},{"location":"fundamentals-how-leakcanary-works/#3-analyzing-the-heap","title":"3. Analyzing the heap","text":"<p>LeakCanary parses the <code>.hprof</code> file using Shark and locates the retained objects in that heap dump.</p> <p> Figure 3. LeakCanary finds retained objects in the heap dump.</p> <p>For each retained object, LeakCanary finds the path of references that prevents that retained object from being garbage collected: its leak trace. You will learn to analyze a leak trace in the next section: Fixing a memory leak.</p> <p> Figure 4. LeakCanary computes the leak trace for each retained object.</p> <p>When the analysis is done, LeakCanary displays a notification with a summary, and also prints the result in Logcat. Notice below how the 4 retained objects are grouped as 2 distinct leaks. LeakCanary creates a signature for each leak trace, and groups together leaks that have the same signature, ie leaks that are caused by the same bug.</p> <p> Figure 5. The 4 leak traces turned into 2 distinct leak signatures.</p> <pre><code>====================================\nHEAP ANALYSIS RESULT\n====================================\n2 APPLICATION LEAKS\n\nDisplaying only 1 leak trace out of 2 with the same signature\nSignature: ce9dee3a1feb859fd3b3a9ff51e3ddfd8efbc6\n\u252c\u2500\u2500\u2500\n\u2502 GC Root: Local variable in native code\n\u2502\n...\n</code></pre> <p>Tapping the notification starts an activity that provides more details. Come back to it again later by tapping the LeakCanary launcher icon:</p> <p> Figure 6. LeakCanary adds a launcher icon for each app it\u2019s installed in.</p> <p>Each row corresponds to a group of leaks with the same signature. LeakCanary  marks a row as New the first time the app triggers a leak with that signature.</p> <p> Figure 7. The 4 leaks grouped into 2 rows, one for each distinct leak signature.</p> <p>Tap on a leak to open up a screen with the leak trace. You can toggle between retained objects and their leak trace via a drop down.</p> <p> Figure 8. A screen showing 3 leaks grouped by their common leak signature.</p> <p>The leak signature is the hash of the concatenation of each reference suspected to cause the leak, ie each reference displayed with a red underline:</p> <p> Figure 9. A leak trace with 3 suspect references.</p> <p>These same suspicious references are underlined with <code>~~~</code> when the leak trace is shared as text:</p> <pre><code>...\n\u2502  \n\u251c\u2500 com.example.leakcanary.LeakingSingleton class\n\u2502    Leaking: NO (a class is never leaking)\n\u2502    \u2193 static LeakingSingleton.leakedViews\n\u2502                              ~~~~~~~~~~~\n\u251c\u2500 java.util.ArrayList instance\n\u2502    Leaking: UNKNOWN\n\u2502    \u2193 ArrayList.elementData\n\u2502                ~~~~~~~~~~~\n\u251c\u2500 java.lang.Object[] array\n\u2502    Leaking: UNKNOWN\n\u2502    \u2193 Object[].[0]\n\u2502               ~~~\n\u251c\u2500 android.widget.TextView instance\n\u2502    Leaking: YES (View.mContext references a destroyed activity)\n...\n</code></pre> <p>In the example above, the signature of the leak would be computed as:</p> <pre><code>val leakSignature = sha1Hash(\n\"com.example.leakcanary.LeakingSingleton.leakedView\" +\n\"java.util.ArrayList.elementData\" +\n\"java.lang.Object[].[x]\"\n)\nprintln(leakSignature)\n// dbfa277d7e5624792e8b60bc950cd164190a11aa\n</code></pre>"},{"location":"fundamentals-how-leakcanary-works/#4-categorizing-leaks","title":"4. Categorizing leaks","text":"<p>LeakCanary separates the leaks it finds in your app into two categories: Application Leaks and Library Leaks. A Library Leak is a leak caused by a known bug in 3rd party code that you do not have control over. This leak is impacting your application, but unfortunately fixing it may not be in your control so LeakCanary separates it out.</p> <p>The two categories are separated in the result printed in Logcat:</p> <pre><code>====================================\nHEAP ANALYSIS RESULT\n====================================\n0 APPLICATION LEAKS\n\n====================================\n1 LIBRARY LEAK\n\n...\n\u252c\u2500\u2500\u2500\n\u2502 GC Root: Local variable in native code\n\u2502\n...\n</code></pre> <p>LeakCanary marks a row as a Library Leak in its list of leaks:</p> <p> Figure 10. LeakCanary found a Library Leak.</p> <p>LeakCanary ships with a database of known leaks, which it recognizes by pattern matching on reference names. For example:</p> <pre><code>Leak pattern: instance field android.app.Activity$1#this$0\nDescription: Android Q added a new IRequestFinishCallback$Stub class [...]\n\u252c\u2500\u2500\u2500\n\u2502 GC Root: Global variable in native code\n\u2502\n\u251c\u2500 android.app.Activity$1 instance\n\u2502    Leaking: UNKNOWN\n\u2502    Anonymous subclass of android.app.IRequestFinishCallback$Stub\n\u2502    \u2193 Activity$1.this$0\n\u2502                 ~~~~~~\n\u2570\u2192 com.example.MainActivity instance\n</code></pre> <p>What did I do to cause this leak?</p> <p>Nothing wrong! You used an API the way it was intended but the implementation has a bug that is causing this leak.</p> <p>Is there anything I can do to prevent it?</p> <p>Maybe! Some Library Leaks can be fixed using reflection, others by exercising a code path that makes the leak go away. This type of fix tends to be hacky, so beware! Your best option might be to find the bug report or file one, and insist that the bug gets fixed.</p> <p>Since I can\u2019t do much about this leak, is there a way I can ask LeakCanary to ignore it?</p> <p>There\u2019s no way for LeakCanary to know whether a leak is a Library Leak prior to dumping the heap and analyzing it. If LeakCanary didn\u2019t show the result notification when a Library Leak is found then you\u2019d start wondering what happened to the LeakCanary analysis after the dumping toast.</p> <p>You can see the full list of known leaks in the AndroidReferenceMatchers class. If you find an Android SDK leak that isn\u2019t recognized, please report it. You can also customize the list of known Library Leaks.</p> <p>What\u2019s next? Learn how to fix a memory leak!</p>"},{"location":"fundamentals/","title":"Introduction","text":"<p>The fundamentals describe how LeakCanary works and how to use it to detect and fix memory leaks. This documentation is designed to help developers of all levels, so please don\u2019t hesitate to report any confusing section.</p>"},{"location":"fundamentals/#what-is-a-memory-leak","title":"What is a memory leak?","text":"<p>In a Java based runtime, a memory leak is a programming error that causes an application to keep a reference to an object that is no longer needed. As a result, the memory allocated for that object cannot be reclaimed.</p> <p>For example, an Android <code>Activity</code> instance is no longer needed after its <code>onDestroy()</code> method is called, and storing a reference to that instance in a static field prevents it from being garbage collected.</p>"},{"location":"fundamentals/#common-causes-for-memory-leaks","title":"Common causes for memory leaks","text":"<p>Most memory leaks are caused by bugs related to the lifecycle of objects. Here are a few common Android mistakes:</p> <ul> <li>Adding a <code>Fragment</code> instance to the backstack without clearing that Fragment\u2019s view fields in <code>Fragment.onDestroyView()</code> (more details in this StackOverflow answer).</li> <li>Storing an <code>Activity</code> instance as a <code>Context</code> field in an object that survives activity recreation due to configuration changes.</li> <li>Registering a listener, broadcast receiver or RxJava subscription which references an object with lifecycle, and forgetting to unregister when the lifecycle reaches its end.</li> </ul>"},{"location":"fundamentals/#why-should-i-use-leakcanary","title":"Why should I use LeakCanary?","text":"<p>Memory leaks are very common in Android apps. As small memory leaks accumulate, memory usage grows, the Garbage Collector (GC) runs more frequently and consumes more CPU, causing jank, UI freezes and Application Not Responding (ANR) reports, eventually leading to an OutOfMemoryError (OOME) crash. LeakCanary will help you find and fix these memory leaks during development. When Square engineers first enabled LeakCanary in the Square Point Of Sale app, they were able to fix several leaks and reduced the OOM crash rate by 94%.</p> <p>Info</p> <p>Your crash reporting tool might not correctly report OOMEs. When memory is low because of memory leak accumulation, an OOM can be thrown from anywhere in the app code, which means that every OOM has a different stacktrace. So instead of one crash entry with a 1000 crashes, OOMs get reported as 1000 distinct crashes and hide in the long tail of low occurring crashes.</p> <p>What\u2019s next? Learn how LeakCanary works!</p>"},{"location":"getting_started/","title":"Getting started","text":"<p>To use LeakCanary, add the <code>leakcanary-android</code> dependency to your app\u2019s <code>build.gradle</code> file:</p> <pre><code>dependencies {\n// debugImplementation because LeakCanary should only run in debug builds.\ndebugImplementation 'com.squareup.leakcanary:leakcanary-android:2.14'\n}\n</code></pre> <p>That\u2019s it, there is no code change needed!</p> <p>Confirm that LeakCanary is running on startup by filtering on the <code>LeakCanary</code> tag in Logcat:</p> <pre><code>D LeakCanary: LeakCanary is running and ready to detect leaks\n</code></pre> <p>Info</p> <p>LeakCanary automatically detects leaks of the following objects:</p> <ul> <li>destroyed <code>Activity</code> instances</li> <li>destroyed <code>Fragment</code> instances</li> <li>destroyed fragment <code>View</code> instances</li> <li>cleared <code>ViewModel</code> instances</li> <li>destroyed <code>Service</code> instance</li> </ul> <p>What\u2019s next? Learn the Fundamentals!</p>"},{"location":"how_to_help/","title":"How to help","text":"<p>\ud83d\ude4f\ud83d\ude4f\ud83d\ude4f</p> <p>LeakCanary is maintained by volunteers. Your help is welcome and will benefit the entire Android community!</p> <p>Here\u2019s how you can help:</p> <ul> <li>Contribute to Help Wanted issues.</li> <li>Answer StackOverflow questions.</li> <li>Provide feedback on pull requests.</li> <li>Contribute code by forking the repository on GitHub and sending a pull request. Please read Dev Environment for LeakCanary contributors. When submitting code, please make every effort to follow existing conventions and style in order to keep the code as readable as possible.</li> </ul>"},{"location":"leakcanary-for-releases/","title":"LeakCanary for releases","text":""},{"location":"leakcanary-for-releases/#leakcanary-for-releases","title":"LeakCanary for releases","text":"<p>Fixing leaks found in debug builds helps reduce <code>Application Not Responding</code> freezes and <code>OutfOfMemoryError</code> error crashes, but only scratches the surface of all the leaks that can happen. For the leaks that are found in debug builds, it\u2019s hard to determine which leaks to fix first.</p> <p>This situation is very similar to debug crashes, where we are often unable to make an accurate assessment of their future impact in a production environment nor find all crashes that will happen in production. For crashes, apps typically monitor a crash rate by having a release crash reporting pipeline, with counts to prioritize fixes.</p> <p>LeakCanary for releases exposes APIs to run a heap analysis in release builds, in production.</p> <p>Danger</p> <p>Everything about this is experimental. Running a heap analysis in production is not a very common thing to do, and we\u2019re still learning and experimenting with this. Also, both the artifact name and the APIs may change.</p>"},{"location":"leakcanary-for-releases/#getting-started","title":"Getting started","text":"<p>LeakCanary provides an artifact dedicated to detecting leaks in release builds:</p> <pre><code>dependencies {\n// LeakCanary for releases\nreleaseImplementation 'com.squareup.leakcanary:leakcanary-android-release:2.14'\n// Optional: detect retained objects. This helps but is not required.\nreleaseImplementation 'com.squareup.leakcanary:leakcanary-object-watcher-android:2.14'\n}\n</code></pre> <p>Here\u2019s a code example that runs a heap analysis when the screen is turned off or the app enters background, checking first if a Firebase Remote Config flag is turned on, and uploading the result to Bugsnag:</p> <pre><code>import android.os.Process.THREAD_PRIORITY_BACKGROUND\nimport java.util.concurrent.Executors\nimport kotlin.concurrent.thread\nimport leakcanary.BackgroundTrigger\nimport leakcanary.HeapAnalysisClient\nimport leakcanary.HeapAnalysisConfig\nimport leakcanary.HeapAnalysisInterceptor\nimport leakcanary.HeapAnalysisInterceptor.Chain\nimport leakcanary.HeapAnalysisJob\nimport leakcanary.HeapAnalysisJob.Result.Done\nimport leakcanary.ScreenOffTrigger\n\nclass ReleaseExampleApplication : ExampleApplication() {\n\noverride fun onCreate() {\nsuper.onCreate()\n\n// Delete any remaining heap dump (if we crashed)\nanalysisExecutor.execute {\nanalysisClient.deleteHeapDumpFiles()\n}\n\n// Starts heap analysis on background importance\nBackgroundTrigger(\napplication = this,\nanalysisClient = analysisClient,\nanalysisExecutor = analysisExecutor,\nanalysisCallback = analysisCallback\n).start()\n\n// Starts heap analysis when screen off\nScreenOffTrigger(\napplication = this,\nanalysisClient = analysisClient,\nanalysisExecutor = analysisExecutor,\nanalysisCallback = analysisCallback\n).start()\n}\n\n/**\n   * Call this to trigger heap analysis manually, e.g. from\n   * a help button.\n   *\n   * This method returns a `HeapAnalysisJob` on which you can\n   * call `HeapAnalysisJob.cancel()` at any time.\n   */\nfun triggerHeapAnalysisNow(): HeapAnalysisJob {\nval job = analysisClient.newJob()\nanalysisExecutor.execute {\nval result = job.execute()\nanalysisCallback(result)\n}\nreturn job\n}\n\nprivate val analysisClient by lazy {\nHeapAnalysisClient(\n// Use private app storage. cacheDir is never backed up which is important.\nheapDumpDirectoryProvider = { cacheDir },\n// stripHeapDump: remove all user data from hprof before analysis.\nconfig = HeapAnalysisConfig(stripHeapDump = true),\n// Default interceptors may cancel analysis for several other reasons.\ninterceptors = listOf(flagInterceptor) + HeapAnalysisClient.defaultInterceptors(this)\n)\n}\n\n// Cancels heap analysis if \"heap_analysis_flag\" is false.\nprivate val flagInterceptor = object : HeapAnalysisInterceptor {\nval remoteConfig by lazy { FirebaseRemoteConfig.getInstance() }\n\noverride fun intercept(chain: Chain): HeapAnalysisJob.Result {\nif (remoteConfig.getBoolean(\"heap_analysis_flag\")) {\nchain.job.cancel(\"heap_analysis_flag false\")\n}\nreturn chain.proceed()\n}\n}\n\nprivate val analysisExecutor = Executors.newSingleThreadExecutor {\nthread(start = false, name = \"Heap analysis executor\") {\nandroid.os.Process.setThreadPriority(THREAD_PRIORITY_BACKGROUND)\nit.run()\n}\n}\n\nprivate val analysisCallback: (HeapAnalysisJob.Result) -&gt; Unit = { result -&gt;\nif (result is Done) {\nuploader.upload(result.analysis)\n}\n}\n\nprivate val uploader by lazy {\nBugsnagLeakUploader(this@ReleaseExampleApplication)\n}\n}\n</code></pre> <p>Here\u2019s the <code>BugsnagLeakUploader</code>:</p> <pre><code>import android.app.Application\nimport com.bugsnag.android.Bugsnag\nimport com.bugsnag.android.Configuration\nimport com.bugsnag.android.ErrorTypes\nimport com.bugsnag.android.Event\nimport com.bugsnag.android.ThreadSendPolicy\nimport shark.HeapAnalysis\nimport shark.HeapAnalysisFailure\nimport shark.HeapAnalysisSuccess\nimport shark.Leak\nimport shark.LeakTrace\nimport shark.LeakTraceReference\nimport shark.LibraryLeak\n\nclass BugsnagLeakUploader(applicationContext: Application) {\n\nprivate val bugsnagClient = Bugsnag.start(\napplicationContext,\nConfiguration(\"YOUR_BUGSNAG_API_KEY\").apply {\nenabledErrorTypes = ErrorTypes(\nanrs = false,\nndkCrashes = false,\nunhandledExceptions = false,\nunhandledRejections = false\n)\nsendThreads = ThreadSendPolicy.NEVER\n}\n)\n\nfun upload(heapAnalysis: HeapAnalysis) {\nwhen (heapAnalysis) {\nis HeapAnalysisSuccess -&gt; {\nval allLeakTraces = heapAnalysis\n.allLeaks\n.toList()\n.flatMap { leak -&gt;\nleak.leakTraces.map { leakTrace -&gt; leak to leakTrace }\n}\nif (allLeakTraces.isEmpty()) {\n// Track how often we perform a heap analysis that yields no result.\nbugsnagClient.notify(NoLeakException()) { event -&gt;\nevent.addHeapAnalysis(heapAnalysis)\ntrue\n}\n} else {\nallLeakTraces.forEach { (leak, leakTrace) -&gt;\nval message = \"Memory leak: ${leak.shortDescription}. See LEAK tab.\"\nval exception = leakTrace.asFakeException(message)\nbugsnagClient.notify(exception) { event -&gt;\nevent.addHeapAnalysis(heapAnalysis)\nevent.addLeak(leak)\nevent.addLeakTrace(leakTrace)\nevent.groupingHash = leak.signature\ntrue\n}\n}\n}\n}\nis HeapAnalysisFailure -&gt; {\n// Please file any reported failure to\n// https://github.com/square/leakcanary/issues\nbugsnagClient.notify(heapAnalysis.exception)\n}\n}\n}\n\nclass NoLeakException : RuntimeException()\n\nprivate fun Event.addHeapAnalysis(heapAnalysis: HeapAnalysisSuccess) {\naddMetadata(\"Leak\", \"heapDumpPath\", heapAnalysis.heapDumpFile.absolutePath)\nheapAnalysis.metadata.forEach { (key, value) -&gt;\naddMetadata(\"Leak\", key, value)\n}\naddMetadata(\"Leak\", \"analysisDurationMs\", heapAnalysis.analysisDurationMillis)\n}\n\nprivate fun Event.addLeak(leak: Leak) {\naddMetadata(\"Leak\", \"libraryLeak\", leak is LibraryLeak)\nif (leak is LibraryLeak) {\naddMetadata(\"Leak\", \"libraryLeakPattern\", leak.pattern.toString())\naddMetadata(\"Leak\", \"libraryLeakDescription\", leak.description)\n}\n}\n\nprivate fun Event.addLeakTrace(leakTrace: LeakTrace) {\naddMetadata(\"Leak\", \"retainedHeapByteSize\", leakTrace.retainedHeapByteSize)\naddMetadata(\"Leak\", \"signature\", leakTrace.signature)\naddMetadata(\"Leak\", \"leakTrace\", leakTrace.toString())\n}\n\nprivate fun LeakTrace.asFakeException(message: String): RuntimeException {\nval exception = RuntimeException(message)\nval stackTrace = mutableListOf&lt;StackTraceElement&gt;()\nstackTrace.add(StackTraceElement(\"GcRoot\", gcRootType.name, \"GcRoot.kt\", 42))\nfor (cause in referencePath) {\nstackTrace.add(buildStackTraceElement(cause))\n}\nexception.stackTrace = stackTrace.toTypedArray()\nreturn exception\n}\n\nprivate fun buildStackTraceElement(reference: LeakTraceReference): StackTraceElement {\nval file = reference.owningClassName.substringAfterLast(\".\") + \".kt\"\nreturn StackTraceElement(reference.owningClassName, reference.referenceDisplayName, file, 42)\n}\n}\n</code></pre>"},{"location":"recipes/","title":"Code Recipes","text":"<p>This page contains code recipes to customize LeakCanary to your needs. Read through the section titles and cook your own meal! Also don\u2019t forget to check out the FAQ.</p> <p>Bug</p> <p>If you think a recipe might be missing or you\u2019re not sure that what you\u2019re trying to achieve is possible with the current APIs, please file an issue. Your feedback helps us make LeakCanary better for the entire community.</p>"},{"location":"recipes/#watching-objects-with-a-lifecycle","title":"Watching objects with a lifecycle","text":"<p>The default configuration of LeakCanary will automatically watch Activity, Fragment, Fragment View and ViewModel instances.</p> <p>In your application, you may have other objects with a lifecycle, such as services, Dagger components, etc. Use AppWatcher.objectWatcher to watch instances that should be garbage collected:</p> <pre><code>class MyService : Service {\n\n// ...\n\noverride fun onDestroy() {\nsuper.onDestroy()\nAppWatcher.objectWatcher.watch(\nwatchedObject = this,\ndescription = \"MyService received Service#onDestroy() callback\"\n)\n}\n}\n</code></pre>"},{"location":"recipes/#configuration","title":"Configuration","text":"<p>LeakCanary has a default configuration that works well for most apps. You can also customize it to your needs. The LeakCanary configuration is held by two singleton objects (<code>AppWatcher</code> and <code>LeakCanary</code>) and can be updated at any time. Most developers configure LeakCanary in their debug Application class:</p> <pre><code>class DebugExampleApplication : ExampleApplication() {\n\noverride fun onCreate() {\nsuper.onCreate()\nAppWatcher.config = AppWatcher.config.copy(watchFragmentViews = false)\n}\n}\n</code></pre> <p>Info</p> <p>Create a debug application class in your <code>src/debug/java</code> folder. Don\u2019t forget to also register it in <code>src/debug/AndroidManifest.xml</code>.</p> <p>To customize the detection of retained objects at runtime, specify the watchers you wish to install via AppWatcher.manualInstall():</p> <pre><code>val watchersToInstall = AppWatcher.appDefaultWatchers(this)\n.filter { it !is FragmentAndViewModelWatcher }\nAppWatcher.manualInstall(\napplication = this,\nwatchersToInstall = watchersToInstall\n)\n</code></pre> <p>To customize the heap dumping &amp; analysis, update LeakCanary.config:</p> <pre><code>LeakCanary.config = LeakCanary.config.copy(retainedVisibleThreshold = 3)\n</code></pre> <p>Java</p> <p>In Java, use LeakCanary.Config.Builder instead:</p> <pre><code>LeakCanary.Config config = LeakCanary.getConfig().newBuilder()\n.retainedVisibleThreshold(3)\n.build();\nLeakCanary.setConfig(config);\n</code></pre> <p>Configure the LeakCanary UI by overriding the following resources:</p> <ul> <li><code>mipmap/leak_canary_icon</code> see Icon and label</li> <li><code>string/leak_canary_display_activity_label</code> see Icon and label</li> <li><code>bool/leak_canary_add_dynamic_shortcut</code> see Disabling LeakCanary</li> <li><code>bool/leak_canary_add_launcher_icon</code> see Disabling LeakCanary</li> <li><code>layout/leak_canary_heap_dump_toast</code> the layout for the toast shown when the heap is dumped</li> </ul>"},{"location":"recipes/#disabling-leakcanary","title":"Disabling LeakCanary","text":"<p>Sometimes it\u2019s necessary to disable LeakCanary temporarily, for example for a product demo or when running performance tests. You have different options, depending on what you\u2019re trying to achieve:</p> <ul> <li>Create a build variant that does not include the LeakCanary dependencies, see Setting up LeakCanary for different product flavors.</li> <li>Disable the heap dumping &amp; analysis: <code>LeakCanary.config = LeakCanary.config.copy(dumpHeap = false)</code>.</li> <li>Hide the leak display activity launcher icon: override <code>R.bool.leak_canary_add_launcher_icon</code> or call <code>LeakCanary.showLeakDisplayActivityLauncherIcon(false)</code></li> </ul> <p>Info</p> <p>When you set <code>LeakCanary.Config.dumpHeap</code> to <code>false</code>, <code>AppWatcher.objectWatcher</code> will still keep track of retained objects, and LeakCanary will look for these objects when you change <code>LeakCanary.Config.dumpHeap</code> back to <code>true</code>.</p>"},{"location":"recipes/#leakcanary-test-environment-detection","title":"LeakCanary test environment detection","text":"<p>By default, LeakCanary will look for the <code>org.junit.Test</code> class in your classpath and if found, will disable itself to avoid running in tests. However, some apps may ship JUnit in their debug classpaths (for example, when using OkHttp\u2019s MockWebServer) so we offer a way to customise the class that is used to determine that the app is running in a test environment.</p> <pre><code>&lt;resources&gt;\n&lt;string name=\"leak_canary_test_class_name\"&gt;assertk.Assert&lt;/string&gt;\n&lt;/resources&gt;\n</code></pre>"},{"location":"recipes/#counting-retained-instances-in-release-builds","title":"Counting retained instances in release builds","text":"<p>The <code>com.squareup.leakcanary:leakcanary-android</code> dependency should only be used in debug builds. It depends on <code>com.squareup.leakcanary:leakcanary-object-watcher-android</code> which you can use in release builds to track and count retained instances.</p> <p>In your <code>build.gradle</code>:</p> <pre><code>dependencies {\n  implementation 'com.squareup.leakcanary:leakcanary-object-watcher-android:2.14'\n}\n</code></pre> <p>In your leak reporting code: <pre><code>val retainedInstanceCount = AppWatcher.objectWatcher.retainedObjectCount\n</code></pre></p>"},{"location":"recipes/#leakcanary-in-release-builds","title":"LeakCanary in release builds","text":"<p>We do not recommend including LeakCanary in release builds, as it could negatively impact the experience of your customers. To avoid accidentally including the <code>com.squareup.leakcanary:leakcanary-android</code> dependency in a release build, LeakCanary crashes during initialization if the APK is not debuggable. You may have a good reason to create a non debuggable build that includes LeakCanary, for example for a QA build. If necessary, the crashing check can be disabled by overriding the <code>bool/leak_canary_allow_in_non_debuggable_build</code> resource, e.g. by creating a file under <code>res/values</code> with the following contents:</p> <pre><code>&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\n&lt;resources&gt;\n&lt;bool name=\"leak_canary_allow_in_non_debuggable_build\"&gt;true&lt;/bool&gt;\n&lt;/resources&gt;\n</code></pre>"},{"location":"recipes/#android-tv","title":"Android TV","text":"<p>LeakCanary works on Android TV devices (FireTV, Nexus player, Nvidia Shield, MiBox, etc.) without any additional setup. However, there are couple things you need to be aware of:</p> <ul> <li>Android TV doesn\u2019t have notifications. LeakCanary will display Toast messages when objects become retained and when leak analysis completes. You can also check Logcat for more details.</li> <li>Due to lack of notifications, the only way to manually trigger a heap dump is to background the app.</li> <li>There\u2019s a bug on API 26+ devices that prevents the activity that displays leaks from appearing in apps list. As a workaround, LeakCanary prints an <code>adb shell</code> command in Logcat after heap dump analysis that launches leak list activity:     <pre><code>adb shell am start -n \"com.your.package.name/leakcanary.internal.activity.LeakLauncherActivity\"\n</code></pre></li> <li>Some Android TV devices have very little memory available per app process and this might impact LeakCanary. Running the LeakCanary analysis in a separate process might help in such cases.</li> </ul>"},{"location":"recipes/#icon-and-label","title":"Icon and label","text":"<p>The activity that displays leaks comes with a default icon and label, which you can change by providing <code>R.mipmap.leak_canary_icon</code> and <code>R.string.leak_canary_display_activity_label</code> in your app:</p> <pre><code>res/\n  mipmap-hdpi/\n    leak_canary_icon.png\n  mipmap-mdpi/\n    leak_canary_icon.png\n  mipmap-xhdpi/\n    leak_canary_icon.png\n  mipmap-xxhdpi/\n    leak_canary_icon.png\n  mipmap-xxxhdpi/\n    leak_canary_icon.png\n   mipmap-anydpi-v26/\n     leak_canary_icon.xml\n</code></pre> <pre><code>&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\n&lt;resources&gt;\n&lt;string name=\"leak_canary_display_activity_label\"&gt;MyLeaks&lt;/string&gt;\n&lt;/resources&gt;\n</code></pre>"},{"location":"recipes/#matching-known-library-leaks","title":"Matching known library leaks","text":"<p>Set LeakCanary.Config.referenceMatchers to a list that builds on top of AndroidReferenceMatchers.appDefaults:</p> <pre><code>class DebugExampleApplication : ExampleApplication() {\n\noverride fun onCreate() {\nsuper.onCreate()\nLeakCanary.config = LeakCanary.config.copy(\nreferenceMatchers = AndroidReferenceMatchers.appDefaults +\nAndroidReferenceMatchers.staticFieldLeak(\nclassName = \"com.samsing.SomeSingleton\",\nfieldName = \"sContext\",\ndescription = \"SomeSingleton has a static field leaking a context.\",\npatternApplies = {\nmanufacturer == \"Samsing\" &amp;&amp; sdkInt == 26\n}\n)\n)\n}\n}\n</code></pre>"},{"location":"recipes/#ignoring-specific-activities-or-fragment-classes","title":"Ignoring specific activities or fragment classes","text":"<p>Sometimes a 3rd party library provides its own activities or fragments which contain a number of bugs leading to leaks of those specific 3rd party activities and fragments. You should push hard on that library to fix their memory leaks as it\u2019s directly impacting your application. That being said, until those are fixed, you have two options:</p> <ol> <li>Add the specific leaks as known library leaks (see Matching known library leaks). LeakCanary will run when those leaks are detected and then report them as known library leaks.</li> <li>Disable LeakCanary automatic activity or fragment watching (e.g. <code>AppWatcher.config = AppWatcher.config.copy(watchActivities = false)</code>) and then manually pass objects to <code>AppWatcher.objectWatcher.watch</code>.</li> </ol>"},{"location":"recipes/#identifying-leaking-objects-and-labeling-objects","title":"Identifying leaking objects and labeling objects","text":"<pre><code>class DebugExampleApplication : ExampleApplication() {\n\noverride fun onCreate() {\nsuper.onCreate()\nval addEntityIdLabel = ObjectInspector { reporter -&gt;\nreporter.whenInstanceOf(\"com.example.DbEntity\") { instance -&gt;\nval databaseIdField = instance[\"com.example.DbEntity\", \"databaseId\"]!!\nval databaseId = databaseIdField.value.asInt!!\nlabels += \"DbEntity.databaseId = $databaseId\"\n}\n}\n\nval singletonsInspector =\nAppSingletonInspector(\"com.example.MySingleton\", \"com.example.OtherSingleton\")\n\nval mmvmInspector = ObjectInspector { reporter -&gt;\nreporter.whenInstanceOf(\"com.mmvm.SomeViewModel\") { instance -&gt;\nval destroyedField = instance[\"com.mmvm.SomeViewModel\", \"destroyed\"]!!\nif (destroyedField.value.asBoolean!!) {\nleakingReasons += \"SomeViewModel.destroyed is true\"\n} else {\nnotLeakingReasons += \"SomeViewModel.destroyed is false\"\n}\n}\n}\n\nLeakCanary.config = LeakCanary.config.copy(\nobjectInspectors = AndroidObjectInspectors.appDefaults +\nlistOf(addObjectIdLabel, singletonsInspector, mmvmInspector)\n)\n}\n}\n</code></pre>"},{"location":"recipes/#running-the-leakcanary-analysis-in-a-separate-process","title":"Running the LeakCanary analysis in a separate process","text":"<p>LeakCanary runs in your main app process. LeakCanary 2 is optimized to keep memory usage low while analysing and runs in a background thread with priority <code>Process.THREAD_PRIORITY_BACKGROUND</code>. If you find that LeakCanary is still using too much memory or impacting the app process performance, you can configure it to run the analysis in a separate process.</p> <p>All you have to do is replace the <code>leakcanary-android</code> dependency with <code>leakcanary-android-process</code>:</p> <pre><code>dependencies {\n// debugImplementation 'com.squareup.leakcanary:leakcanary-android:${version}'\ndebugImplementation 'com.squareup.leakcanary:leakcanary-android-process:${version}'\n}\n</code></pre> <p>You can call LeakCanaryProcess.isInAnalyzerProcess to check if your Application class is being created in the LeakCanary process. This is useful when configuring libraries like Firebase that may crash when running in an unexpected process.</p>"},{"location":"recipes/#setting-up-leakcanary-for-different-product-flavors","title":"Setting up LeakCanary for different product flavors","text":"<p>You can setup LeakCanary to run in a specific product flavors of your app. For example, create:</p> <pre><code>android {\n  flavorDimensions \"default\"\n  productFlavors {\n    prod {\n      // ...\n    }\n    qa {\n      // ...\n    }\n    dev {\n      // ...\n    }\n  }\n}\n</code></pre> <p>Then, define a custom configuration for the flavor for which you want to enable LeakCanary:</p> <pre><code>android {\n  // ...\n}\nconfigurations {\n    devDebugImplementation {}\n}\n</code></pre> <p>You can now add the LeakCanary dependency for that configuration:</p> <pre><code>dependencies {\n  devDebugImplementation \"com.squareup.leakcanary:leakcanary-android:${version}\"\n}\n</code></pre>"},{"location":"recipes/#extracting-metadata-from-the-heap-dump","title":"Extracting metadata from the heap dump","text":"<p>LeakCanary.Config.metadataExtractor extracts metadata from a heap dump. The metadata is then available in <code>HeapAnalysisSuccess.metadata</code>. <code>LeakCanary.Config.metadataExtractor</code> defaults to <code>AndroidMetadataExtractor</code> but you can replace it to extract additional metadata from the hprof.</p> <p>For example, if you want to include the app version name in your heap analysis reports, you need to first store it in memory (e.g. in a static field) and then you can retrieve it in <code>MetadataExtractor</code>.</p> <pre><code>class DebugExampleApplication : ExampleApplication() {\n\ncompanion object {\n@JvmStatic\nlateinit var savedVersionName: String\n}\n\noverride fun onCreate() {\nsuper.onCreate()\n\nval packageInfo = packageManager.getPackageInfo(packageName, 0)\nsavedVersionName = packageInfo.versionName\n\nLeakCanary.config = LeakCanary.config.copy(\nmetadataExtractor = MetadataExtractor { graph -&gt;\nval companionClass =\ngraph.findClassByName(\"com.example.DebugExampleApplication\")!!\n\nval versionNameField = companionClass[\"savedVersionName\"]!!\nval versionName = versionNameField.valueAsInstance!!.readAsJavaString()!!\n\nval defaultMetadata = AndroidMetadataExtractor.extractMetadata(graph)\n\nmapOf(\"App Version Name\" to versionName) + defaultMetadata\n})\n}\n}\n</code></pre>"},{"location":"recipes/#using-leakcanary-with-obfuscated-apps","title":"Using LeakCanary with obfuscated apps","text":"<p>If obfuscation is turned on then leak traces will be obfuscated. It\u2019s possible to automatically deobfuscate leak traces by using a deobfuscation gradle plugin provided by LeakCanary.</p> <p>You have to add a plugin dependency in your root <code>build.gradle</code> file:</p> <pre><code>buildscript {\ndependencies {\nclasspath 'com.squareup.leakcanary:leakcanary-deobfuscation-gradle-plugin:${version}'\n}\n}\n</code></pre> <p>And then you need to apply and configure the plugin in your app (or library) specific <code>build.gradle</code> file:</p> <pre><code>apply plugin: 'com.android.application'\napply plugin: 'com.squareup.leakcanary.deobfuscation'\n\nleakCanary {\n// LeakCanary needs to know which variants have obfuscation turned on\nfilterObfuscatedVariants { variant -&gt;\nvariant.name == \"debug\"\n}\n}\n</code></pre> <p>Now you can run LeakCanary on an obfuscated app and leak traces will be automatically deobfuscated.</p> <p>Important: never use this plugin on a release variant. This plugin copies obfuscation mapping file and puts it inside the .apk, so if you use it on release build then the obfuscation becomes pointless because the code can be easily deobfuscated using mapping file.</p> <p>Warning: R8 (Google Proguard replacement) can now understand Kotlin language constructs but the side effect is that mapping files can get very large (a couple dozen megabytes). It means that the size of .apk containing copied mapping file will increase as well. This is another reason for not using this plugin on a release variant.</p>"},{"location":"recipes/#detecting-leaks-in-jvm-applications","title":"Detecting leaks in JVM applications","text":"<p>While LeakCanary was designed to work out of the box on Android, it can run on any JVM with a bit of configuration.</p> <p>Add the ObjectWatcher and Shark dependencies to your build file:</p> <pre><code>dependencies {\nimplementation 'com.squareup.leakcanary:leakcanary-object-watcher:2.14'\nimplementation 'com.squareup.leakcanary:shark:2.14'\n}\n</code></pre> <p>Define a <code>HotSpotHeapDumper</code> to dump the heap:</p> <pre><code>import com.sun.management.HotSpotDiagnosticMXBean\nimport java.lang.management.ManagementFactory\n\nobject HotSpotHeapDumper {\nprivate val mBean: HotSpotDiagnosticMXBean by lazy {\nval server = ManagementFactory.getPlatformMBeanServer()\nManagementFactory.newPlatformMXBeanProxy(\nserver,\n\"com.sun.management:type=HotSpotDiagnostic\",\nHotSpotDiagnosticMXBean::class.java\n)\n}\n\nfun dumpHeap(fileName: String) {\nmBean.dumpHeap(fileName, LIVE)\n}\n\nprivate const val LIVE = true\n}\n</code></pre> <p>Define a <code>JvmHeapAnalyzer</code> to analyze the heap when objects are retained and print the result to the console:</p> <pre><code>import leakcanary.GcTrigger\nimport leakcanary.ObjectWatcher\nimport leakcanary.OnObjectRetainedListener\nimport java.io.File\nimport java.text.SimpleDateFormat\nimport java.util.Date\nimport java.util.Locale.US\n\nclass JvmHeapAnalyzer(private val objectWatcher: ObjectWatcher) :\nOnObjectRetainedListener {\n\nprivate val fileNameFormat = SimpleDateFormat(DATE_PATTERN, US)\n\noverride fun onObjectRetained() {\nGcTrigger.Default.runGc()\nif (objectWatcher.retainedObjectCount == 0) {\nreturn\n}\nval fileName = fileNameFormat.format(Date())\nval hprofFile = File(fileName)\n\nprintln(\"Dumping the heap to ${hprofFile.absolutePath}\")\nHotSpotHeapDumper.dumpHeap(hprofFile.absolutePath)\n\nval analyzer = HeapAnalyzer(\nOnAnalysisProgressListener { step -&gt;\nprintln(\"Analysis in progress, working on: ${step.name}\")\n})\n\nval heapDumpAnalysis = analyzer.analyze(\nheapDumpFile = hprofFile,\nleakingObjectFinder = KeyedWeakReferenceFinder,\ncomputeRetainedHeapSize = true,\nobjectInspectors = ObjectInspectors.jdkDefaults\n)\nprintln(heapDumpAnalysis)\n}\ncompanion object {\nprivate const val DATE_PATTERN = \"yyyy-MM-dd_HH-mm-ss_SSS'.hprof'\"\n}\n}\n</code></pre> <p>Create an <code>ObjectWatcher</code> instance and configure it to watch objects for 5 seconds before notifying a <code>JvmHeapAnalyzer</code> instance:</p> <pre><code>val scheduledExecutor = Executors.newSingleThreadScheduledExecutor()\nval objectWatcher = ObjectWatcher(\nclock = Clock {\nSystem.currentTimeMillis()\n},\ncheckRetainedExecutor = Executor { command -&gt;\nscheduledExecutor.schedule(command, 5, SECONDS)\n}\n)\n\nval heapAnalyzer = JvmHeapAnalyzer(objectWatcher)\nobjectWatcher.addOnObjectRetainedListener(heapAnalyzer)\n</code></pre> <p>Pass objects that you expect to be garbage collected (e.g. closed resources) to the <code>ObjectWatcher</code> instance:</p> <pre><code>objectWatcher.watch(\nwatchedObject = closedResource,\ndescription = \"$closedResource is closed and should be garbage collected\"\n)\n</code></pre> <p>If you end up using LeakCanary on a JVM, the community will definitely benefit from your experience, so don\u2019t hesitate to let us know!</p>"},{"location":"recipes/#packagemanagergetlaunchintentforpackage-returns-leaklauncheractivity","title":"PackageManager.getLaunchIntentForPackage() returns LeakLauncherActivity","text":"<p>LeakCanary adds a main activity that has a Intent#CATEGORY_LAUNCHER category. PackageManager.getLaunchIntentForPackage() looks for a main activity in the category <code>Intent#CATEGORY_INFO</code>, and next for a main activity in the category <code>Intent#CATEGORY_LAUNCHER</code>. <code>PackageManager.getLaunchIntentForPackage()</code> returns the first activity that matches in the merged manifest of your app. If your app relies on <code>PackageManager.getLaunchIntentForPackage()</code>, you have two options:</p> <ul> <li>Add <code>Intent#CATEGORY_INFO</code> to your main activity intent filter, so that it gets picked up first. This is what the Android documentation recommends.</li> <li>Disable the leakcanary launcher activity by setting the <code>leak_canary_add_launcher_icon</code> resource boolean to false.</li> </ul>"},{"location":"recorded-presentations/","title":"Recorded Presentations","text":"<ul> <li>Live leak investigations, investigating leaks on Stack Overflow and fixes for AOSP leaks</li> <li>Fixing leaks in Firefox</li> <li>Shark: Diving into the guts of LeakCanary\u2019s Hprof parser</li> <li>LeakCanary 2: Leaner, Better, Faster, Kotliner!</li> <li>LeakCanary, then what? Nuking Nasty Memory Leaks</li> <li>Memory Leak Hunt, a live investigation.</li> <li>Installing LeakCanary (LeakCanary 1.5)</li> <li>How to use LeakCanary</li> </ul> <p>Your presentation should be here, please update this list! Any technical level welcome.</p>"},{"location":"releasing/","title":"Releasing LeakCanary","text":""},{"location":"releasing/#preparing-the-release-environment","title":"Preparing the release environment","text":""},{"location":"releasing/#set-up-your-sonatype-ossrh-account","title":"Set up your Sonatype OSSRH account","text":"<ul> <li>Create a Sonatype OSSRH JIRA account.</li> <li>Create a ticket to request access to the <code>com.squareup.leakcanary</code> project. Here\u2019s an example: OSSRH-54959.</li> <li>Then ask someone with deployer role from the LeakCanary team to confirm access.</li> </ul>"},{"location":"releasing/#set-up-your-signing-key","title":"Set up your signing key","text":"<pre><code># Create a new key\ngpg --gen-key\n# List local keys. Key id is last 8 characters\ngpg -K\ncd ~/.gnupg\n# Export key locally\ngpg --export-secret-keys -o secring.gpg\n# Upload key to Ubuntu servers\ngpg --send-keys --keyserver keyserver.ubuntu.com &lt;KEY ID&gt;\n# Confirm the key can now be found\ngpg --recv-keys --keyserver keyserver.ubuntu.com &lt;KEY ID&gt;\n</code></pre>"},{"location":"releasing/#set-up-your-home-gradleproperties","title":"Set up your home gradle.properties","text":"<p>Add this to your <code>~/.gradle/gradle.properties</code>:</p> <pre><code>signing.keyId=&lt;KEY ID&gt;\nsigning.password=&lt;KEY PASSWORD&gt;\nsigning.secretKeyRingFile=/Users/YOUR_USERNAME_/.gnupg/secring.gpg\nSONATYPE_NEXUS_USERNAME=&lt;SONATYPE_USERNAME&gt;\nSONATYPE_NEXUS_PASSWORD=&lt;SONATYPE_PASSWORD&gt;\n</code></pre>"},{"location":"releasing/#set-up-the-google-analytics-docs-key","title":"Set up the Google Analytics docs key","text":"<p>Add this to your <code>~/.bashrc</code>:</p> <pre><code>export LEAKCANARY_GOOGLE_ANALYTICS_KEY=\"UA-142834539-1\"\n</code></pre>"},{"location":"releasing/#set-up-github-cli","title":"Set up GitHub CLI","text":"<p>Install GitHub CLI</p> <pre><code>brew install gh\n</code></pre> <p>Install jq, a CLI Json processor</p> <pre><code>brew install jq\n</code></pre> <p>Set up aliases for milestone management:</p> <pre><code>gh alias set listOpenMilestones \"api graphql -F owner=':owner' -F name=':repo' -f query='\n    query ListOpenMilestones(\\$name: String\\!, \\$owner: String\\!) {\n        repository(owner: \\$owner, name: \\$name) {\n            milestones(first: 100, states: OPEN) {\n                nodes {\n                    title\n                    number\n                    description\n                    dueOn\n                    url\n                    state\n                    closed\n                    closedAt\n                    updatedAt\n                }\n            }\n        }\n    }\n'\"\n\ngh alias set --shell createMilestone \"gh api --method POST repos/:owner/:repo/milestones --input - | jq '{ html_url: .html_url, state: .state, created_at: .created_at }'\"\n\ngh alias set --shell closeMilestone \"echo '{\\\"state\\\": \\\"closed\\\"}' | gh api --method PATCH repos/:owner/:repo/milestones/\\$1 --input - | jq '{ html_url: .html_url, state: .state, closed_at: .closed_at }'\"\n</code></pre>"},{"location":"releasing/#install-or-update-the-doc-generation-dependencies","title":"Install or update the doc generation dependencies","text":"<pre><code>pip3 install --requirement docs/requirements.txt\n</code></pre>"},{"location":"releasing/#releasing","title":"Releasing","text":"<ul> <li> <p>Create a local release branch from <code>main</code> <pre><code>git checkout main &amp;&amp; \\\ngit pull &amp;&amp; \\\ngit checkout -b release_3.0-alpha-2\n</code></pre></p> </li> <li> <p>Update <code>VERSION_NAME</code> in <code>gradle.properties</code> (remove <code>-SNAPSHOT</code>) <pre><code>sed -i '' 's/VERSION_NAME=3.0-alpha-2-SNAPSHOT/VERSION_NAME=3.0-alpha-2/' gradle.properties\n</code></pre></p> </li> <li> <p>Update the current version and next version in <code>mkdocs.yml</code> <pre><code>sed -i '' 's/3.0-alpha-2/NEXT/' mkdocs.yml\nsed -i '' 's/2.14/3.0-alpha-2/' mkdocs.yml\n</code></pre></p> </li> <li> <p>Create the release <pre><code>git commit -am \"Prepare 3.0-alpha-2 release\" &amp;&amp; \\\n./gradlew clean &amp;&amp; \\\n./gradlew build &amp;&amp; \\\ngit tag v3.0-alpha-2 &amp;&amp; \\\ngit push origin v3.0-alpha-2 &amp;&amp; \\\n./gradlew publish --no-daemon --no-parallel &amp;&amp; \\\n./gradlew closeAndReleaseRepository &amp;&amp; \\\n./gradlew shark:shark-cli:distZip\n</code></pre></p> </li> </ul> <p>Note: if anything goes wrong, you can manually drop the release at https://s01.oss.sonatype.org/</p> <ul> <li>Merge back to main <pre><code>git checkout main &amp;&amp; \\\ngit pull &amp;&amp; \\\ngit merge --no-ff release_3.0-alpha-2\n</code></pre></li> <li> <p>Update <code>VERSION_NAME</code> in <code>gradle.properties</code> (increase version and add <code>-SNAPSHOT</code>) <pre><code>sed -i '' 's/VERSION_NAME=3.0-alpha-2/VERSION_NAME=NEXT-SNAPSHOT/' gradle.properties\n</code></pre></p> </li> <li> <p>Generate the Dokka docs <pre><code>rm -rf docs/api &amp;&amp; ./gradlew siteDokka\n</code></pre></p> </li> <li> <p>Update the changelog (commit list) <pre><code>mate docs/changelog.md\n</code></pre></p> </li> <li> <p>Deploy the docs locally then open the changelog and check everything looks good <pre><code>mkdocs serve\n</code></pre></p> </li> <li> <p>Finish up the release</p> </li> </ul> <pre><code>git commit -am \"Prepare for next development iteration\" &amp;&amp; \\\ngit push &amp;&amp; \\\ngh listOpenMilestones | jq '.data.repository.milestones.nodes[0].number' | xargs gh closeMilestone &amp;&amp; \\\necho '{\n  \"title\": \"REPLACE_WITH_NEXT_VERSION_NUMBER\",\n  \"state\": \"open\",\n  \"description\": \"\"\n}' | gh createMilestone &amp;&amp; \\\nmkdocs gh-deploy\ngh release create v3.0-alpha-2 ./shark-cli/build/distributions/shark-cli-3.0-alpha-2.zip --title v3.0-alpha-2 --notes 'See [Change Log](https://square.github.io/leakcanary/changelog)'\n</code></pre> <ul> <li> <p>Open the v3.0-alpha-2 release to confirm everything looks good.</p> </li> <li> <p>Upload shark-cli to brew: <pre><code>brew bump-formula-pr --url https://github.com/square/leakcanary/releases/download/v3.0-alpha-2/shark-cli-3.0-alpha-2.zip leakcanary-shark\n</code></pre></p> </li> <li> <p>Wait for the release to be available on Maven Central.</p> </li> <li>Tell your friends, update all of your apps, and tweet the new release. As a nice extra touch, mention external contributions.</li> </ul>"},{"location":"shark/","title":"Shark \ud83e\udd88","text":"<p>Shark: Smart Heap Analysis Reports for Kotlin</p> <p> </p> <p>Shark is the heap analyzer that powers LeakCanary 2. It\u2019s a Kotlin standalone heap analysis library that runs at high speed with a low memory footprint.</p> <p>Shark is released in layers:</p> <ol> <li>Shark Hprof: Read and write records in hprof files.</li> <li>Shark Graph: Navigate the heap object graph.</li> <li>Shark: Generate heap analysis reports.</li> <li>Shark Android: Android heuristics to generate tailored heap analysis reports.</li> <li>Shark CLI: Analyze the heap of debuggable apps installed on an Android device connected to your desktop. The output is similar to the output of LeakCanary, except you don\u2019t have to add the LeakCanary dependency to your app.</li> <li>LeakCanary: Builds on top. It automatically watches destroyed activities and fragments, triggers a heap dump, runs Shark Android and then displays the result.</li> </ol> <p>A few more things:</p> <ul> <li>Shark is built on top of Okio. Okio makes it easy to parse heap dumps efficiently.</li> <li>Shark is a 100% Kotlin library, and Kotlin is essential to its design, because Shark relies heavily on sealed classes and sequences to save memory.</li> <li>Shark has the unique ability to help narrow down the cause of memory leaks through platform specific heuristics.</li> <li>Shark is heavily tested (80% test coverage).</li> <li>Shark can run in both Java and Android VMs, with no other dependency than Okio and Kotlin.</li> <li>Shark can analyze both Java and Android VM hprof files.</li> <li>Shark can deobfuscate hprof records if it has access to obfuscation mapping file.</li> </ul>"},{"location":"shark/#shark-cli","title":"Shark CLI","text":"<p>The Shark Command Line Interface (CLI) enables you to analyze heaps directly from your computer. It can dump the heap of an app installed on a connected Android device, analyze it, and even strip a heap dump of any sensitive data (e.g. PII, passwords or encryption keys) which is useful when sharing a heap dump.</p> <p>Install it via Homebrew:</p> <pre><code>brew install leakcanary-shark\n</code></pre> <p>You can also download it here.</p> <p>You can then look for leaks in apps on any connected device, for example: </p> <pre><code>$ shark-cli --device emulator-5554 --process com.example.app.debug analyze\n</code></pre> <p>Info</p> <p><code>shark-cli</code> works with all debuggable apps, even if they don\u2019t include the <code>leakcanary-android</code> dependency.</p> <p>Run <code>shark-cli</code> to see usage instructions:</p> <pre><code>$ shark-cli\n\nUsage: shark-cli [OPTIONS] COMMAND [ARGS]...\n\n                   ^`.                 .=\"\"=.\n   ^_              \\  \\               / _  _ \\\n   \\ \\             {   \\             |  d  b  |\n   {  \\           /     `~~~--__     \\   /\\   /\n   {   \\___----~~'              `~~-_/'-=\\/=-'\\,\n    \\                         /// a  `~.      \\ \\\n    / /~~~~-, ,__.    ,      ///  __,,,,)      \\ |\n    \\/      \\/    `~~~;   ,---~~-_`/ \\        / \\/\n                     /   /            '.    .'\n                    '._.'             _|`~~`|_\n                                      /|\\  /|\\\n\nOptions:\n  -p, --process TEXT              Full or partial name of a process, e.g.\n                                  \"example\" would match \"com.example.app\"\n  -d, --device ID                 device/emulator id\n  -m, --obfuscation-mapping PATH  path to obfuscation mapping file\n  --verbose / --no-verbose        provide additional details as to what\n                                  shark-cli is doing\n  -h, --hprof FILE                path to a .hprof file\n  --help                          Show this message and exit\n\nCommands:\n  interactive   Explore a heap dump.\n  analyze       Analyze a heap dump.\n  dump-process  Dump the heap and pull the hprof file.\n  strip-hprof   Replace all primitive arrays from the provided heap dump with\n                arrays of zeroes and generate a new \"-stripped.hprof\" file.\n</code></pre>"},{"location":"shark/#shark-code-examples","title":"Shark code examples","text":""},{"location":"shark/#reading-records-in-a-hprof-file","title":"Reading records in a hprof file","text":"<pre><code>dependencies {\nimplementation 'com.squareup.leakcanary:shark-hprof:$sharkVersion'\n}\n</code></pre> <pre><code>// Prints all class and field names\nHprof.open(heapDumpFile)\n.use { hprof -&gt;\nhprof.reader.readHprofRecords(\nrecordTypes = setOf(StringRecord::class),\nlistener = OnHprofRecordListener { position, record -&gt;\nprintln((record as StringRecord).string)\n})\n}\n</code></pre>"},{"location":"shark/#navigating-the-heap-object-graph","title":"Navigating the heap object graph","text":"<pre><code>dependencies {\nimplementation 'com.squareup.leakcanary:shark-graph:$sharkVersion'\n}\n</code></pre> <pre><code>// Prints all thread names\nHprof.open(heapDumpFile)\n.use { hprof -&gt;\nval heapGraph = HprofHeapGraph.indexHprof(hprof)\nval threadClass = heapGraph.findClassByName(\"java.lang.Thread\")!!\nval threadNames: Sequence&lt;String&gt; = threadClass.instances.map { instance -&gt;\nval nameField = instance[\"java.lang.Thread\", \"name\"]!!\nnameField.value.readAsJavaString()!!\n}\nthreadNames.forEach { println(it) }\n}\n</code></pre>"},{"location":"shark/#generating-a-heap-analysis-report","title":"Generating a heap analysis report","text":"<pre><code>dependencies {\nimplementation 'com.squareup.leakcanary:shark:$sharkVersion'\n}\n</code></pre> <pre><code>// Marks any instance of com.example.ThingWithLifecycle with\n// ThingWithLifecycle.destroyed=true as leaking\nval leakingObjectFilter = object : LeakingObjectFilter {\noverride fun isLeakingObject(heapObject: HeapObject): Boolean {\nreturn if (heapObject instanceOf \"com.example.ThingWithLifecycle\") {\nval instance = heapObject as HeapInstance\nval destroyedField = instance[\"com.example.ThingWithLifecycle\", \"destroyed\"]!!\ndestroyedField.value.asBoolean!!\n} else false\n}\n}\n\nval leakingObjectFinder = FilteringLeakingObjectFinder(listOf(leakingObjectFilter))\n\nval heapAnalysis = Hprof.open(heapDumpFile)\n.use { hprof -&gt;\nval heapGraph = HprofHeapGraph.indexHprof(hprof)\nval heapAnalyzer = HeapAnalyzer(AnalyzerProgressListener.NONE)\nheapAnalyzer.analyze(\nheapDumpFile = heapDumpFile,\ngraph = heapGraph,\nleakingObjectFinder = leakingObjectFinder,\n)\n}\nprintln(analysis)\n</code></pre>"},{"location":"shark/#generating-an-android-heap-analysis-report","title":"Generating an Android heap analysis report","text":"<pre><code>dependencies {\nimplementation 'com.squareup.leakcanary:shark-android:$sharkVersion'\n}\n</code></pre> <pre><code>val heapAnalyzer = HeapAnalyzer(AnalyzerProgressListener.NONE)\nval analysis = heapAnalyzer.checkForLeaks(\nheapDumpFile = heapDumpFile,\nreferenceMatchers = AndroidReferenceMatchers.appDefaults,\nobjectInspectors = AndroidObjectInspectors.appDefaults\n)\nprintln(analysis)\n</code></pre>"},{"location":"support/","title":"LeakCanary Support","text":"<p>If you\u2019re looking for help with LeakCanary:</p> <ul> <li>Learn the Fundamentals</li> <li>Try the code recipes</li> <li>Read the FAQ</li> <li>Watch recorded presentations</li> <li>Read blog articles</li> <li>Ask a question on StackOverflow</li> </ul>"},{"location":"ui-tests/","title":"Leak detection in UI tests","text":"<p>Running leak detection in UI tests means you can detect memory leaks automatically in Continuous Integration prior to new leaks being merged into the codebase.</p> <p>Test environment detection</p> <p>In debug builds, LeakCanary looks for retained instances continuously, freezes the VM to take a heap dump after a watched object has been retained for 5 seconds, then performs the analysis in a background thread and reports the result using notifications. That behavior isn\u2019t well suited for UI tests, so LeakCanary is automatically disabled when JUnit is on the runtime classpath (see test environment detection).</p>"},{"location":"ui-tests/#getting-started","title":"Getting started","text":"<p>LeakCanary provides an artifact dedicated to detecting leaks in UI tests:</p> <pre><code>androidTestImplementation 'com.squareup.leakcanary:leakcanary-android-instrumentation:2.14'\n// You still need to include the LeakCanary artifact in your app:\ndebugImplementation 'com.squareup.leakcanary:leakcanary-android:2.14'\n</code></pre> <p>You can then call <code>LeakAssertions.assertNoLeaks()</code> at any point in your tests to check for leaks:</p> <pre><code>class CartTest {\n\n@Test\nfun addItemToCart() {\n// ...\nLeakAssertions.assertNoLeaks()\n}\n}\n</code></pre> <p>If retained instances are detected, LeakCanary will dump and analyze the heap. If application leaks are found, <code>LeakAssertions.assertNoLeaks()</code> will throw a <code>NoLeakAssertionFailedError</code>.</p> <pre><code>leakcanary.NoLeakAssertionFailedError: Application memory leaks were detected:\n====================================\nHEAP ANALYSIS RESULT\n====================================\n1 APPLICATION LEAKS\n\n\u252c\u2500\u2500\u2500\n\u2502 GC Root: System class\n\u2502\n\u251c\u2500 com.example.MySingleton class\n\u2502    Leaking: NO (a class is never leaking)\n\u2502    \u2193 static MySingleton.leakedView\n\u2502                         ~~~~~~~~~~\n\u251c\u2500 android.widget.TextView instance\n\u2502    Leaking: YES (View.mContext references a destroyed activity)\n\u2502    \u2193 TextView.mContext\n\u2570\u2192 com.example.MainActivity instance\n     Leaking: YES (Activity#mDestroyed is true)\n====================================\n  at leakcanary.AndroidDetectLeaksAssert.assertNoLeaks(AndroidDetectLeaksAssert.kt:34)\n  at leakcanary.LeakAssertions.assertNoLeaks(LeakAssertions.kt:21)\n  at com.example.CartTest.addItemToCart(TuPeuxPasTest.kt:41)\n</code></pre> <p>Obfuscated instrumentation tests</p> <p>When running instrumentation tests against obfuscated release builds, the LeakCanary classes end up spread over the test APK and the main APK. Unfortunately there is a bug in the Android Gradle Plugin that leads to runtime crashes when running tests, because code from the main APK is changed without the using code in the test APK being updated accordingly. If you run into this issue, setting up the Keeper plugin should fix it.</p>"},{"location":"ui-tests/#test-rule","title":"Test rule","text":"<p>You can use the <code>DetectLeaksAfterTestSuccess</code> test rule to automatically call  <code>LeakAssertions.assertNoLeaks()</code> at the end of a test:</p> <pre><code>class CartTest {\n@get:Rule\nval rule = DetectLeaksAfterTestSuccess()\n\n@Test\nfun addItemToCart() {\n// ...\n}\n}\n</code></pre> <p>You can call also <code>LeakAssertions.assertNoLeaks()</code> as many times as you want in a single test:</p> <pre><code>class CartTest {\n@get:Rule\nval rule = DetectLeaksAfterTestSuccess()\n\n// This test has 3 leak assertions (2 in the test + 1 from the rule).\n@Test\nfun addItemToCart() {\n// ...\nLeakAssertions.assertNoLeaks()\n// ...\nLeakAssertions.assertNoLeaks()\n// ...\n}\n}\n</code></pre>"},{"location":"ui-tests/#skipping-leak-detection","title":"Skipping leak detection","text":"<p>Use <code>@SkipLeakDetection</code> to disable <code>LeakAssertions.assertNoLeaks()</code> calls:</p> <pre><code>class CartTest {\n@get:Rule\nval rule = DetectLeaksAfterTestSuccess()\n\n// This test will not perform any leak assertion.\n@SkipLeakDetection(\"See issue #1234\")\n@Test\nfun addItemToCart() {\n// ...\nLeakAssertions.assertNoLeaks()\n// ...\nLeakAssertions.assertNoLeaks()\n// ...\n}\n}\n</code></pre> <p>You can use tags to identify each <code>LeakAssertions.assertNoLeaks()</code> call and disable only a subset of these calls:</p> <pre><code>class CartTest {\n@get:Rule\nval rule = DetectLeaksAfterTestSuccess(tag = \"EndOfTest\")\n\n// This test will only perform the second leak assertion.\n@SkipLeakDetection(\"See issue #1234\", \"First Assertion\", \"EndOfTest\")\n@Test\nfun addItemToCart() {\n// ...\nLeakAssertions.assertNoLeak(tag = \"First Assertion\")\n// ...\nLeakAssertions.assertNoLeak(tag = \"Second Assertion\")\n// ...\n}\n}\n</code></pre> <p>Tags can be retrieved by calling <code>HeapAnalysisSuccess.assertionTag</code> and are also reported in the heap analysis result metadata:</p> <pre><code>====================================\nMETADATA\n\nPlease include this in bug reports and Stack Overflow questions.\n\nBuild.VERSION.SDK_INT: 23\n...\nassertionTag: Second Assertion\n</code></pre>"},{"location":"ui-tests/#test-rule-chains","title":"Test rule chains","text":"<pre><code>// Example test rule chain\n@get:Rule\nval rule = RuleChain.outerRule(LoginRule())\n.around(ActivityScenarioRule(CartActivity::class.java))\n.around(LoadingScreenRule())\n</code></pre> <p>If you use a test rule chain, the position of the <code>DetectLeaksAfterTestSuccess</code> rule in that chain could be significant. For example, if you use an <code>ActivityScenarioRule</code> that automatically finishes the activity at the end of a test, having <code>DetectLeaksAfterTestSuccess</code> around <code>ActivityScenarioRule</code> will detect leaks after the activity is destroyed and therefore detect any activity leak. But then  <code>DetectLeaksAfterTestSuccess</code> will not detect fragment leaks that go away when the activity is destroyed.</p> <pre><code>@get:Rule\nval rule = RuleChain.outerRule(LoginRule())\n// Detect leaks AFTER activity is destroyed\n.around(DetectLeaksAfterTestSuccess(tag = \"AfterActivityDestroyed\"))\n.around(ActivityScenarioRule())\n.around(LoadingScreenRule())\n</code></pre> <p>If instead you set up <code>ActivityScenarioRule</code> around <code>DetectLeaksAfterTestSuccess</code>, destroyed activity leaks will not be detected as the activity will still be created when the leak assertion rule runs, but more fragment leaks might be detected.</p> <pre><code>@get:Rule\nval rule = RuleChain.outerRule(LoginRule())\n.around(ActivityScenarioRule(CartActivity::class.java))\n// Detect leaks BEFORE activity is destroyed\n.around(DetectLeaksAfterTestSuccess(tag = \"BeforeActivityDestroyed\"))\n.around(LoadingScreenRule())\n</code></pre> <p>To detect all leaks, the best option is to set up the <code>DetectLeaksAfterTestSuccess</code> rule twice, before and after the <code>ActivityScenarioRule</code> rule.</p> <pre><code>// Detect leaks BEFORE and AFTER activity is destroyed\n@get:Rule\nval rule = RuleChain.outerRule(LoginRule())\n.around(DetectLeaksAfterTestSuccess(tag = \"AfterActivityDestroyed\"))\n.around(ActivityScenarioRule(CartActivity::class.java))\n.around(DetectLeaksAfterTestSuccess(tag = \"BeforeActivityDestroyed\"))\n.around(LoadingScreenRule())\n</code></pre> <p><code>RuleChain.detectLeaksAfterTestSuccessWrapping()</code> is a helper for doing just that:</p> <pre><code>// Detect leaks BEFORE and AFTER activity is destroyed\n@get:Rule\nval rule = RuleChain.outerRule(LoginRule())\n// The tag will be suffixed with \"Before\" and \"After\".\n.detectLeaksAfterTestSuccessWrapping(tag = \"ActivitiesDestroyed\") {\naround(ActivityScenarioRule(CartActivity::class.java))\n}\n.around(LoadingScreenRule())\n</code></pre>"},{"location":"ui-tests/#customizing-assertnoleaks","title":"Customizing <code>assertNoLeaks()</code>","text":"<p><code>LeakAssertions.assertNoLeaks()</code> delegates calls to a global <code>DetectLeaksAssert</code> implementation, which by default is an instance of <code>AndroidDetectLeaksAssert</code>. You can change the <code>DetectLeaksAssert</code> implementation by calling <code>DetectLeaksAssert.update(customLeaksAssert)</code>.</p> <p>The <code>AndroidDetectLeaksAssert</code> implementation performs a heap dump when retained instances are detected, analyzes the heap, then passes the result to a <code>HeapAnalysisReporter</code>. The default <code>HeapAnalysisReporter</code> is <code>NoLeakAssertionFailedError.throwOnApplicationLeaks()</code> which throws a <code>NoLeakAssertionFailedError</code> if an application leak is detected.</p> <p>You could provide a custom implementation to also upload heap analysis results to a central place before failing the test: <pre><code>val throwingReporter = NoLeakAssertionFailedError.throwOnApplicationLeaks()\n\nDetectLeaksAssert.update(AndroidDetectLeaksAssert(\nheapAnalysisReporter = { heapAnalysis -&gt;\n// Upload the heap analysis result\nheapAnalysisUploader.upload(heapAnalysis)\n// Fail the test if there are application leaks\nthrowingReporter.reportHeapAnalysis(heapAnalysis)\n}\n))\n</code></pre></p>"},{"location":"upgrading-to-leakcanary-2.0/","title":"Upgrading to LeakCanary 2","text":"<p>LeakCanary 2 is a major rewrite. High level changes:</p> <ul> <li>New heap analyzer, reimplemented from scratch to use 10 times less memory (see Shark).</li> <li>APIs updated to simplify configuration and provide access to the new heap analyzer.</li> <li>Internals rewritten to 100% Kotlin.</li> <li>Multiple leaks detected in one analysis, grouped per leak type</li> </ul>"},{"location":"upgrading-to-leakcanary-2.0/#dependencies","title":"Dependencies","text":""},{"location":"upgrading-to-leakcanary-2.0/#before","title":"Before","text":"<pre><code>dependencies {\ndebugImplementation 'com.squareup.leakcanary:leakcanary-android:1.6.3'\nreleaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.6.3'\n// Optional, if you use support library fragments:\ndebugImplementation 'com.squareup.leakcanary:leakcanary-support-fragment:1.6.3'\n}\n</code></pre>"},{"location":"upgrading-to-leakcanary-2.0/#now","title":"Now","text":"<pre><code>dependencies {\ndebugImplementation 'com.squareup.leakcanary:leakcanary-android:2.14'\n}\n</code></pre>"},{"location":"upgrading-to-leakcanary-2.0/#worth-noting","title":"Worth noting","text":"<ul> <li>The <code>leakcanary-android-no-op</code> artifact is gone. If you have compile errors, see below.</li> <li>Question: if there\u2019s no no-op anymore, how do I ensure none of this runs during release builds?</li> <li>Answer: as long as you add <code>leakcanary-android</code> as <code>debugImplementation</code>, there won\u2019t be any code referencing LeakCanary in your release builds.</li> <li>LeakCanary does not depend on the support library anymore, and it doesn\u2019t depend on AndroidX either.</li> <li>Detection of AndroidX fragments is automatic if you have the AndroidX fragments dependency.</li> </ul>"},{"location":"upgrading-to-leakcanary-2.0/#default-setup-code","title":"Default setup code","text":""},{"location":"upgrading-to-leakcanary-2.0/#before_1","title":"Before","text":"<pre><code>public class ExampleApplication extends Application {\n\n@Override public void onCreate() {\nsuper.onCreate();\nif (LeakCanary.isInAnalyzerProcess(this)) {\n// This process is dedicated to LeakCanary for heap analysis.\n// You should not init your app in this process.\nreturn;\n}\nLeakCanary.install(this);\n// Normal app init code...\n}\n}\n</code></pre>"},{"location":"upgrading-to-leakcanary-2.0/#now_1","title":"Now","text":"<p>There is no more code for default setup.</p>"},{"location":"upgrading-to-leakcanary-2.0/#worth-noting_1","title":"Worth noting","text":"<ul> <li>LeakCanary auto installs itself</li> <li>LeakCanary analysis now runs in the main process so there is no need to call <code>LeakCanary.isInAnalyzerProcess()</code>.</li> </ul>"},{"location":"upgrading-to-leakcanary-2.0/#retrieve-the-refwatcher","title":"Retrieve the RefWatcher","text":""},{"location":"upgrading-to-leakcanary-2.0/#before_2","title":"Before","text":"<pre><code>val refWatcher: RefWatcher = LeakCanary.installedRefWatcher()\n</code></pre>"},{"location":"upgrading-to-leakcanary-2.0/#now_2","title":"Now","text":"<pre><code>val objectWatcher: ObjectWatcher = AppWatcher.objectWatcher\n</code></pre>"},{"location":"upgrading-to-leakcanary-2.0/#compile-errors-because-refwatcher-is-used-in-release-code","title":"Compile errors because RefWatcher is used in release code","text":"<p>If you were using <code>RefWatcher</code> in non debug code, you now get a compile error because the no-op artifact is gone. ObjectWatcher now lives in the <code>object-watcher</code> artifact, which is suitable for release builds. You have two options:</p>"},{"location":"upgrading-to-leakcanary-2.0/#option-1-add-object-watcher-android-to-release-builds","title":"Option 1: Add <code>object-watcher-android</code> to release builds.","text":"<pre><code>dependencies {\nimplementation 'com.squareup.leakcanary:leakcanary-object-watcher-android:2.14'\n}\n</code></pre> <ul> <li>It will automatically keep weak references to destroyed activities, fragments, and any instance you pass to AppWatcher.objectWatcher.</li> <li>It will not trigger heap dumps or anything else that LeakCanary does.</li> <li>It\u2019s very little code and should have a no impact on your release app.</li> <li>You can use it to count how many objects are retained, for example to add metadata to OutOfMemoryError crashes:</li> </ul> <pre><code>val retainedObjectCount = AppWatcher.objectWatcher.retainedObjectCount\n</code></pre>"},{"location":"upgrading-to-leakcanary-2.0/#option-2-make-your-own-objectwatcher-interface","title":"Option 2: Make your own <code>ObjectWatcher</code> interface","text":"<pre><code>// In shared code\ninterface MaybeObjectWatcher {\nfun watch(watchedObject: Any, description: String)\n\nobject None : MaybeObjectWatcher {\noverride fun watch(watchedObject: Any, description: String) {\n}\n}\n}\n\n// In debug code\nclass RealObjectWatcher : MaybeObjectWatcher {\noverride fun watch(watchedObject: Any, description: String) {\nAppWatcher.objectWatcher.watch(watchedObject, description)\n}\n}\n</code></pre> <p>Use <code>MaybeObjectWatcher.None</code> in release code and <code>RealObjectWatcher</code> in debug code.</p>"},{"location":"upgrading-to-leakcanary-2.0/#configuring-leakcanary","title":"Configuring LeakCanary","text":""},{"location":"upgrading-to-leakcanary-2.0/#before_3","title":"Before","text":"<pre><code>public class DebugExampleApplication extends ExampleApplication {\n\n@Override protected void installLeakCanary() {\nRefWatcher refWatcher = LeakCanary.refWatcher(this)\n.watchActivities(false)\n.buildAndInstall();\n}\n}\n</code></pre>"},{"location":"upgrading-to-leakcanary-2.0/#now_3","title":"Now","text":"<p>AppWatcher is in charge of detecting retained objects. Its configuration can be updated at any time by replacing AppWatcher.config:</p> <pre><code>class DebugExampleApplication : ExampleApplication() {\n\noverride fun onCreate() {\nsuper.onCreate()\nAppWatcher.config = AppWatcher.config.copy(watchFragmentViews = false)\n}\n}\n</code></pre> <p>LeakCanary is in charge of taking heap dumps and analyzing them. Its configuration can be updated at any time by replacing LeakCanary.config:</p> <pre><code>disableLeakCanaryButton.setOnClickListener {\nLeakCanary.config = LeakCanary.config.copy(dumpHeap = false)\n}\n</code></pre>"},{"location":"upgrading-to-leakcanary-2.0/#running-leakcanary-in-instrumentation-tests","title":"Running LeakCanary in instrumentation tests","text":""},{"location":"upgrading-to-leakcanary-2.0/#before_4","title":"Before","text":"<p>In your <code>build.gradle</code> file:</p> <pre><code>dependencies {\nandroidTestImplementation \"com.squareup.leakcanary:leakcanary-android-instrumentation:${leakCanaryVersion}\"\n}\n\nandroid {\ndefaultConfig {\n// ...\n\ntestInstrumentationRunner \"android.support.test.runner.AndroidJUnitRunner\"\ntestInstrumentationRunnerArgument \"listener\", \"com.squareup.leakcanary.FailTestOnLeakRunListener\"\n}\n}\n</code></pre> <p>In your test <code>Application</code> class:</p> <pre><code>public class InstrumentationTestExampleApplication extends DebugExampleApplication {\n@Override protected void installLeakCanary() {\nInstrumentationLeakDetector.instrumentationRefWatcher(this)\n.buildAndInstall();\n}\n}\n</code></pre>"},{"location":"upgrading-to-leakcanary-2.0/#now_4","title":"Now","text":"<p>Remove all the previous test related leak detection code then follow Leak detection in UI tests.</p>"},{"location":"upgrading-to-leakcanary-2.0/#analysis-listener-uploading-to-a-server","title":"Analysis listener / uploading to a server","text":""},{"location":"upgrading-to-leakcanary-2.0/#before_5","title":"Before","text":"<pre><code>public class LeakUploadService extends DisplayLeakService {\n@Override protected void afterDefaultHandling(HeapDump heapDump, AnalysisResult result, String leakInfo) {\n// TODO Upload result to server\n}\n}\n</code></pre> <pre><code>RefWatcher refWatcher = LeakCanary.refWatcher(this)\n.listenerServiceClass(LeakUploadService.class)\n.buildAndInstall();\n</code></pre> <pre><code>&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\n&lt;manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"&gt;\n&lt;application android:name=\"com.example.DebugExampleApplication\"&gt;\n&lt;service android:name=\"com.example.LeakUploadService\" /&gt;\n&lt;/application&gt;\n&lt;/manifest&gt;\n</code></pre>"},{"location":"upgrading-to-leakcanary-2.0/#now_5","title":"Now","text":"<pre><code>class LeakUploader : OnHeapAnalyzedListener {\n\nval defaultListener = DefaultOnHeapAnalyzedListener.create()\n\noverride fun onHeapAnalyzed(heapAnalysis: HeapAnalysis) {\nTODO(\"Upload heap analysis to server\")\n\n// Delegate to default behavior (notification and saving result)\ndefaultListener.onHeapAnalyzed(heapAnalysis)\n}\n}\n\nclass DebugExampleApplication : ExampleApplication() {\n\noverride fun onCreate() {\nsuper.onCreate()\nLeakCanary.config = LeakCanary.config.copy(\nonHeapAnalyzedListener = LeakUploader()\n)\n}\n}\n</code></pre>"},{"location":"upgrading-to-leakcanary-2.0/#matching-known-library-leaks","title":"Matching known library leaks","text":""},{"location":"upgrading-to-leakcanary-2.0/#before_6","title":"Before","text":"<pre><code>ExcludedRefs excludedRefs = AndroidExcludedRefs.createAppDefaults()\n.staticField(\"com.samsing.SomeSingleton\", \"sContext\")\n.build();\nRefWatcher refWatcher = LeakCanary.refWatcher(this)\n.excludedRefs(excludedRefs)\n.buildAndInstall();\n}\n</code></pre>"},{"location":"upgrading-to-leakcanary-2.0/#now_6","title":"Now","text":"<pre><code>LeakCanary.config = LeakCanary.config.copy(\nreferenceMatchers = AndroidReferenceMatchers.appDefaults +\nAndroidReferenceMatchers.staticFieldLeak(\n\"com.samsing.SomeSingleton\",\n\"sContext\"\n)\n)\n</code></pre> <p>Info</p> <p>There is no equivalent API to <code>ExcludedRefs.Builder.clazz()</code> because it led to abuses. Instead see Ignoring specific activities or fragment classes.</p>"},{"location":"upgrading-to-leakcanary-2.0/#public-api-packages","title":"Public API packages","text":""},{"location":"upgrading-to-leakcanary-2.0/#before_7","title":"Before","text":"<p>All public APIs were in <code>com.squareup.leakcanary.*</code></p>"},{"location":"upgrading-to-leakcanary-2.0/#now_7","title":"Now","text":"<p>All public APIs are in <code>leakcanary.*</code></p>"},{"location":"uploading/","title":"Uploading analysis results","text":"<p>You can add an <code>EventListener</code> to upload the analysis result to a server of your choosing:</p> <pre><code>class DebugExampleApplication : ExampleApplication() {\n\noverride fun onCreate() {\nsuper.onCreate()\nval analysisUploadListener = EventListener { event -&gt;\nif (event is HeapAnalysisSucceeded) {\nval heapAnalysis = event.heapAnalysis\nTODO(\"Upload heap analysis to server\")\n}\n}\n\nLeakCanary.config = LeakCanary.config.run {\ncopy(eventListeners = eventListeners + analysisUploadListener)\n}\n}\n}\n</code></pre>"},{"location":"uploading/#uploading-to-bugsnag","title":"Uploading to Bugsnag","text":"<p>A leak trace has a lot in common with a stack trace, so if you lack the engineering resources to build a backend for LeakCanary, you can instead upload leak traces to a crash reporting backend. The client needs to support grouping via custom client-side hashing as well as custom metadata with support for newlines.</p> <p>Info</p> <p>As of this writing, the only known library suitable for uploading leaks is the Bugsnag client. If you managed to make it work with another library, please file an issue.</p> <p>Create a Bugsnag account, create a new project for leak reporting and grab an API key. Make sure the app has the <code>android.permission.INTERNET</code> permission then add the latest version of the Bugsnag Android client library to <code>build.gradle</code>:</p> <pre><code>dependencies {\n// debugImplementation because LeakCanary should only run in debug builds.\ndebugImplementation 'com.squareup.leakcanary:leakcanary-android:2.14'\ndebugImplementation \"com.bugsnag:bugsnag-android:$bugsnagVersion\"\n}\n</code></pre> <p>Info</p> <p>If you\u2019re only using Bugsnag for uploading leaks, then you do not need to set up the Bugsnag Gradle plugin or to configure the API key in your app manifest.</p> <p>Create a new <code>BugsnagLeakUploader</code>:</p> <pre><code>import android.app.Application\nimport com.bugsnag.android.Bugsnag\nimport com.bugsnag.android.Configuration\nimport com.bugsnag.android.ErrorTypes\nimport com.bugsnag.android.Event\nimport com.bugsnag.android.ThreadSendPolicy\nimport shark.HeapAnalysis\nimport shark.HeapAnalysisFailure\nimport shark.HeapAnalysisSuccess\nimport shark.Leak\nimport shark.LeakTrace\nimport shark.LeakTraceReference\nimport shark.LibraryLeak\n\nclass BugsnagLeakUploader(applicationContext: Application) {\n\nprivate val bugsnagClient = Bugsnag.start(\napplicationContext,\nConfiguration(\"YOUR_BUGSNAG_API_KEY\").apply {\nenabledErrorTypes = ErrorTypes(\nanrs = false,\nndkCrashes = false,\nunhandledExceptions = false,\nunhandledRejections = false\n)\nsendThreads = ThreadSendPolicy.NEVER\n}\n)\n\nfun upload(heapAnalysis: HeapAnalysis) {\nwhen (heapAnalysis) {\nis HeapAnalysisSuccess -&gt; {\nval allLeakTraces = heapAnalysis\n.allLeaks\n.toList()\n.flatMap { leak -&gt;\nleak.leakTraces.map { leakTrace -&gt; leak to leakTrace }\n}\nif (allLeakTraces.isEmpty()) {\n// Track how often we perform a heap analysis that yields no result.\nbugsnagClient.notify(NoLeakException()) { event -&gt;\nevent.addHeapAnalysis(heapAnalysis)\ntrue\n}\n} else {\nallLeakTraces.forEach { (leak, leakTrace) -&gt;\nval message = \"Memory leak: ${leak.shortDescription}. See LEAK tab.\"\nval exception = leakTrace.asFakeException(message)\nbugsnagClient.notify(exception) { event -&gt;\nevent.addHeapAnalysis(heapAnalysis)\nevent.addLeak(leak)\nevent.addLeakTrace(leakTrace)\nevent.groupingHash = leak.signature\ntrue\n}\n}\n}\n}\nis HeapAnalysisFailure -&gt; {\n// Please file any reported failure to\n// https://github.com/square/leakcanary/issues\nbugsnagClient.notify(heapAnalysis.exception)\n}\n}\n}\n\nclass NoLeakException : RuntimeException()\n\nprivate fun Event.addHeapAnalysis(heapAnalysis: HeapAnalysisSuccess) {\naddMetadata(\"Leak\", \"heapDumpPath\", heapAnalysis.heapDumpFile.absolutePath)\nheapAnalysis.metadata.forEach { (key, value) -&gt;\naddMetadata(\"Leak\", key, value)\n}\naddMetadata(\"Leak\", \"analysisDurationMs\", heapAnalysis.analysisDurationMillis)\n}\n\nprivate fun Event.addLeak(leak: Leak) {\naddMetadata(\"Leak\", \"libraryLeak\", leak is LibraryLeak)\nif (leak is LibraryLeak) {\naddMetadata(\"Leak\", \"libraryLeakPattern\", leak.pattern.toString())\naddMetadata(\"Leak\", \"libraryLeakDescription\", leak.description)\n}\n}\n\nprivate fun Event.addLeakTrace(leakTrace: LeakTrace) {\naddMetadata(\"Leak\", \"retainedHeapByteSize\", leakTrace.retainedHeapByteSize)\naddMetadata(\"Leak\", \"signature\", leakTrace.signature)\naddMetadata(\"Leak\", \"leakTrace\", leakTrace.toString())\n}\n\nprivate fun LeakTrace.asFakeException(message: String): RuntimeException {\nval exception = RuntimeException(message)\nval stackTrace = mutableListOf&lt;StackTraceElement&gt;()\nstackTrace.add(StackTraceElement(\"GcRoot\", gcRootType.name, \"GcRoot.kt\", 42))\nfor (cause in referencePath) {\nstackTrace.add(buildStackTraceElement(cause))\n}\nexception.stackTrace = stackTrace.toTypedArray()\nreturn exception\n}\n\nprivate fun buildStackTraceElement(reference: LeakTraceReference): StackTraceElement {\nval file = reference.owningClassName.substringAfterLast(\".\") + \".kt\"\nreturn StackTraceElement(reference.owningClassName, reference.referenceDisplayName, file, 42)\n}\n}\n</code></pre> <p>Then add an <code>EventListener</code> to upload the analysis result to Bugsnag:</p> <pre><code>class DebugExampleApplication : ExampleApplication() {\n\noverride fun onCreate() {\nsuper.onCreate()\nLeakCanary.config = LeakCanary.config.copy(\nonHeapAnalyzedListener = BugsnagLeakUploader(applicationContext = this)\n)\n}\n}\n</code></pre> <p>You should start seeing leaks reported into Bugsnag, grouped by their leak signature:</p> <p></p> <p>The <code>LEAK</code> tab contains the leak trace:</p> <p></p>"},{"location":"api/leakcanary/","title":"LeakCanary API","text":"<p>//leakcanary/leakcanary</p>"},{"location":"api/leakcanary/#package-leakcanary","title":"Package leakcanary","text":""},{"location":"api/leakcanary/#types","title":"Types","text":"Name Summary ActivityWatcher class ActivityWatcher(application: Application, reachabilityWatcher: ReachabilityWatcher) : InstallableWatcherExpects activities to become weakly reachable soon after they receive the Activity.onDestroy callback. AndroidDebugHeapDumper object AndroidDebugHeapDumper : HeapDumperDumps the Android heap using Debug.dumpHprofData. AndroidDetectLeaksAssert class AndroidDetectLeaksAssert(detectLeaksInterceptor: DetectLeaksInterceptor = AndroidDetectLeaksInterceptor(), heapAnalysisReporter: HeapAnalysisReporter = NoLeakAssertionFailedError.throwOnApplicationLeaks()) : DetectLeaksAssertDefault DetectLeaksAssert implementation. Uses public helpers so you should be able to create our own implementation if needed. AndroidDetectLeaksInterceptor class AndroidDetectLeaksInterceptor(instrumentation: Instrumentation = InstrumentationRegistry.getInstrumentation(), objectWatcher: ObjectWatcher = AppWatcher.objectWatcher, retainedDelayMillis: Long = AppWatcher.retainedDelayMillis) : DetectLeaksInterceptor AndroidLeakFixes enum AndroidLeakFixes : Enum&lt;AndroidLeakFixes&gt; A collection of hacks to fix leaks in the Android Framework and other Google Android libraries. AppWatcher object AppWatcherThe entry point API for using ObjectWatcher in an Android app. AppWatcher.objectWatcher is in charge of detecting retained objects, and AppWatcher is auto configured on app start to pass it activity and fragment instances. Call ObjectWatcher.watch on objectWatcher to watch any other object that you expect to be unreachable. AppWatcherStartupInitializer class AppWatcherStartupInitializer : Initializer&lt;AppWatcherStartupInitializer&gt; BackgroundThreadHeapAnalyzer object BackgroundThreadHeapAnalyzer : EventListenerStarts heap analysis on a background HandlerThread when receiving a HeapDump event. BackgroundTrigger class BackgroundTrigger(application: Application, analysisClient: HeapAnalysisClient, analysisExecutor: Executor, processInfo: ProcessInfo = ProcessInfo.Real, analysisCallback: (HeapAnalysisJob.Result) -&gt; Unit = { result -&gt;     SharkLog.d { \"$result\" }   }) Clock fun interface ClockAn interface to abstract the SystemClock.uptimeMillis() Android API in non Android artifacts. ConditionalInterceptor class ConditionalInterceptor(delegate: HeapAnalysisInterceptor, evaluateCondition: (HeapAnalysisJob) -&gt; Boolean) : HeapAnalysisInterceptorAn interceptor that runs only when evaluateCondition returns true. DetectLeaksAfterTestSuccess class DetectLeaksAfterTestSuccess(tag: String = DetectLeaksAfterTestSuccess::class.java.simpleName) : TestRuleTestRule that invokes LeakAssertions.assertNoLeaks after the test successfully evaluates. Pay attention to where you set up this rule in the rule chain as you might detect different leaks (e.g. around vs wrapped by the activity rule). It\u2019s also possible to use this rule several times in a rule chain. DetectLeaksAssert fun interface DetectLeaksAssertThe interface for the implementation that LeakAssertions.assertNoLeaks delegates to. You can call DetectLeaksAssert.update to provide your own implementation. DetectLeaksInterceptor fun interface DetectLeaksInterceptorDecides whether to dump &amp; analyze the heap to look for leaks in instrumentation tests. The implementation might block for a while to allow temporary leaks to be flushed out, as those aren\u2019t that interesting to report and heap analysis increases test duration significantly. EventListener fun interface EventListener FragmentAndViewModelWatcher class FragmentAndViewModelWatcher(application: Application, reachabilityWatcher: ReachabilityWatcher) : InstallableWatcherExpects: GcTrigger fun interface GcTriggerGcTrigger is used to try triggering garbage collection and enqueuing KeyedWeakReference into the associated java.lang.ref.ReferenceQueue. The default implementation Default comes from AOSP. GoodAndroidVersionInterceptor class GoodAndroidVersionInterceptor : HeapAnalysisInterceptor HeapAnalysisClient class HeapAnalysisClient(heapDumpDirectoryProvider: () -&gt; File, config: HeapAnalysisConfig, interceptors: List&lt;HeapAnalysisInterceptor&gt;) HeapAnalysisConfig data class HeapAnalysisConfig(val referenceMatchers: List&lt;ReferenceMatcher&gt; = AndroidReferenceMatchers.appDefaults, val objectInspectors: List&lt;ObjectInspector&gt; = AndroidObjectInspectors.appDefaults, val metadataExtractor: MetadataExtractor = AndroidMetadataExtractor, val computeRetainedHeapSize: Boolean = true, val leakingObjectFinder: LeakingObjectFinder = FilteringLeakingObjectFinder(     AndroidObjectInspectors.appLeakingObjectFilters   ), val stripHeapDump: Boolean = false, val proguardMappingProvider: () -&gt; ProguardMapping? = { null }) HeapAnalysisDecision sealed class HeapAnalysisDecision HeapAnalysisInterceptor fun interface HeapAnalysisInterceptor HeapAnalysisJob interface HeapAnalysisJobA HeapAnalysisJob represents a single prepared request to analyze the heap. It cannot be executed twice. HeapAnalysisReporter fun interface HeapAnalysisReporterReports the results of a heap analysis created by AndroidDetectLeaksAssert. HeapDumper fun interface HeapDumper InstallableWatcher interface InstallableWatcher JobContext class JobContext(val starter: Class&lt;*&gt;? = null)In memory store that can be used to store objects in a given HeapAnalysisJob instance. This is a simple MutableMap of String to Any, but with unsafe generics access. KeyedWeakReference class KeyedWeakReference(referent: Any, val key: String, val description: String, val watchUptimeMillis: Long, referenceQueue: ReferenceQueue&lt;Any&gt;) : WeakReference&lt;Any&gt; A weak reference used by ObjectWatcher to determine which objects become weakly reachable and which don\u2019t. ObjectWatcher uses key to keep track of KeyedWeakReference instances that haven\u2019t made it into the associated ReferenceQueue yet. LazyForwardingEventListener class LazyForwardingEventListener(lazyEventListener: () -&gt; EventListener) : EventListenerForwards events to the EventListener provided by lazyEventListener which is evaluated lazily, when the first comes in. LeakAssertions object LeakAssertions LeakCanary object LeakCanaryThe entry point API for LeakCanary. LeakCanary builds on top of AppWatcher. AppWatcher notifies LeakCanary of retained instances, which in turns dumps the heap, analyses it and publishes the results. LeakCanaryProcess object LeakCanaryProcessUsed to determine whether the current process is the LeakCanary analyzer process. By depending on the leakcanary-android-process artifact instead of the leakcanary-android, LeakCanary will automatically run its analysis in a separate process. LogcatEventListener object LogcatEventListener : EventListener LogcatSharkLog class LogcatSharkLog : SharkLog.Logger MinimumDiskSpaceInterceptor class MinimumDiskSpaceInterceptor(application: Application, minimumDiskSpaceBytes: Long, processInfo: ProcessInfo = ProcessInfo.Real) : HeapAnalysisInterceptor MinimumElapsedSinceStartInterceptor class MinimumElapsedSinceStartInterceptor(minimumElapsedSinceStartMillis: Long = TimeUnit.SECONDS.toMillis(30), processInfo: ProcessInfo = ProcessInfo.Real) : HeapAnalysisInterceptor MinimumMemoryInterceptor class MinimumMemoryInterceptor(application: Application, minimumRequiredAvailableMemoryBytes: Long, processInfo: ProcessInfo = ProcessInfo.Real) : HeapAnalysisInterceptor NoLeakAssertionFailedError class NoLeakAssertionFailedError(val heapAnalysis: HeapAnalysisSuccess) : AssertionErrorThrown when using the NoLeakAssertionFailedError.throwOnApplicationLeaks HeapAnalysisReporter NotificationEventListener object NotificationEventListener : EventListener ObjectWatcher class ObjectWatcher(clock: Clock, checkRetainedExecutor: Executor, isEnabled: () -&gt; Boolean = { true }) : ReachabilityWatcherObjectWatcher can be passed objects to watch. It will create KeyedWeakReference instances that reference watches objects, and check if those references have been cleared as expected on the checkRetainedExecutor executor. If not, these objects are considered retained and ObjectWatcher will then notify registered OnObjectRetainedListeners on that executor thread. OncePerPeriodInterceptor class OncePerPeriodInterceptor(application: Application, periodMillis: Long = TimeUnit.DAYS.toMillis(1)) : HeapAnalysisInterceptorProceeds once per period (of time) and then cancels all follow up jobs until period has passed. OnObjectRetainedListener fun interface OnObjectRetainedListenerListener used by ObjectWatcher to report retained objects. PlumberStartupInitializer class PlumberStartupInitializer : Initializer&lt;PlumberStartupInitializer&gt; ProcessInfo interface ProcessInfo ReachabilityWatcher fun interface ReachabilityWatcher RemoteWorkManagerHeapAnalyzer object RemoteWorkManagerHeapAnalyzer : EventListenerWhen receiving a HeapDump event, starts a WorkManager worker that performs heap analysis in a dedicated :leakcanary process RootViewWatcher class RootViewWatcher(reachabilityWatcher: ReachabilityWatcher) : InstallableWatcherExpects root views to become weakly reachable soon after they are removed from the window manager. SaveResourceIdsInterceptor class SaveResourceIdsInterceptor(resources: Resources) : HeapAnalysisInterceptorInterceptor that saves the names of R.id.* entries and their associated int values to a static field that can then be read from the heap dump. ScreenOffTrigger class ScreenOffTrigger(application: Application, analysisClient: HeapAnalysisClient, analysisExecutor: Executor, analysisCallback: (HeapAnalysisJob.Result) -&gt; Unit = { result -&gt;     SharkLog.d { \"$result\" }   }) ServiceWatcher class ServiceWatcher(reachabilityWatcher: ReachabilityWatcher) : InstallableWatcherExpects services to become weakly reachable soon after they receive the Service.onDestroy callback. SkipLeakDetection @Target(allowedTargets = [AnnotationTarget.CLASS, AnnotationTarget.FUNCTION])annotation class SkipLeakDetection(val message: String, val assertionTags: String)Annotation for skipping leak detection in a UI test that calls LeakAssertions.assertNoLeaks. This annotation is useful to skip a leak detection in a test until the leaks are fixed. TestDescriptionHolder object TestDescriptionHolder : TestRuleA TestRule that holds onto the test Description in a thread local while evaluating, making it possible to retrieve that test Description from the test thread via testDescription. ToastEventListener object ToastEventListener : EventListener TvEventListener object TvEventListener : EventListener ViewLocationHolderLeakFix object ViewLocationHolderLeakFix WorkManagerHeapAnalyzer object WorkManagerHeapAnalyzer : EventListenerWhen receiving a HeapDump event, starts a WorkManager worker that performs heap analysis."},{"location":"api/leakcanary/-activity-watcher/","title":"Index","text":"<p>//leakcanary/leakcanary/ActivityWatcher</p>"},{"location":"api/leakcanary/-activity-watcher/#activitywatcher","title":"ActivityWatcher","text":"<p>class ActivityWatcher(application: Application, reachabilityWatcher: ReachabilityWatcher) : InstallableWatcher</p> <p>Expects activities to become weakly reachable soon after they receive the Activity.onDestroy callback.</p>"},{"location":"api/leakcanary/-activity-watcher/#constructors","title":"Constructors","text":"ActivityWatcher fun ActivityWatcher(application: Application, reachabilityWatcher: ReachabilityWatcher)"},{"location":"api/leakcanary/-activity-watcher/#functions","title":"Functions","text":"Name Summary install open override fun install() uninstall open override fun uninstall()"},{"location":"api/leakcanary/-activity-watcher/-activity-watcher/","title":"activity watcher","text":"<p>//leakcanary/leakcanary/ActivityWatcher/ActivityWatcher</p>"},{"location":"api/leakcanary/-activity-watcher/-activity-watcher/#activitywatcher","title":"ActivityWatcher","text":"<p>fun ActivityWatcher(application: Application, reachabilityWatcher: ReachabilityWatcher)</p>"},{"location":"api/leakcanary/-activity-watcher/install/","title":"Install","text":"<p>//leakcanary/leakcanary/ActivityWatcher/install</p>"},{"location":"api/leakcanary/-activity-watcher/install/#install","title":"install","text":"<p>open override fun install()</p>"},{"location":"api/leakcanary/-activity-watcher/uninstall/","title":"Uninstall","text":"<p>//leakcanary/leakcanary/ActivityWatcher/uninstall</p>"},{"location":"api/leakcanary/-activity-watcher/uninstall/#uninstall","title":"uninstall","text":"<p>open override fun uninstall()</p>"},{"location":"api/leakcanary/-android-debug-heap-dumper/","title":"Index","text":"<p>//leakcanary/leakcanary/AndroidDebugHeapDumper</p>"},{"location":"api/leakcanary/-android-debug-heap-dumper/#androiddebugheapdumper","title":"AndroidDebugHeapDumper","text":"<p>object AndroidDebugHeapDumper : HeapDumper</p> <p>Dumps the Android heap using Debug.dumpHprofData.</p> <p>Note: despite being part of the Debug class, Debug.dumpHprofData can be called from non debuggable non profileable builds.</p>"},{"location":"api/leakcanary/-android-debug-heap-dumper/#functions","title":"Functions","text":"Name Summary dumpHeap open override fun dumpHeap(heapDumpFile: File)Dumps the heap. The implementation is expected to be blocking until the heap is dumped or heap dumping failed."},{"location":"api/leakcanary/-android-debug-heap-dumper/dump-heap/","title":"Dump heap","text":"<p>//leakcanary/leakcanary/AndroidDebugHeapDumper/dumpHeap</p>"},{"location":"api/leakcanary/-android-debug-heap-dumper/dump-heap/#dumpheap","title":"dumpHeap","text":"<p>open override fun dumpHeap(heapDumpFile: File)</p> <p>Dumps the heap. The implementation is expected to be blocking until the heap is dumped or heap dumping failed.</p> <p>Implementations can throw a runtime exception if heap dumping failed.</p>"},{"location":"api/leakcanary/-android-detect-leaks-assert/","title":"Index","text":"<p>//leakcanary/leakcanary/AndroidDetectLeaksAssert</p>"},{"location":"api/leakcanary/-android-detect-leaks-assert/#androiddetectleaksassert","title":"AndroidDetectLeaksAssert","text":"<p>class AndroidDetectLeaksAssert(detectLeaksInterceptor: DetectLeaksInterceptor = AndroidDetectLeaksInterceptor(), heapAnalysisReporter: HeapAnalysisReporter = NoLeakAssertionFailedError.throwOnApplicationLeaks()) : DetectLeaksAssert</p> <p>Default DetectLeaksAssert implementation. Uses public helpers so you should be able to create our own implementation if needed.</p> <p>Leak detection can be skipped by annotating tests with SkipLeakDetection which requires the TestDescriptionHolder test rule be applied and evaluating when assertNoLeaks is called.</p> <p>For improved leak detection, you should consider updating LeakCanary.Config.leakingObjectFinder to FilteringLeakingObjectFinder(AndroidObjectInspectors.appLeakingObjectFilters) when running in instrumentation tests. This changes leak detection from being incremental (based on AppWatcher to also scanning for all objects of known types in the heap).</p>"},{"location":"api/leakcanary/-android-detect-leaks-assert/#constructors","title":"Constructors","text":"AndroidDetectLeaksAssert fun AndroidDetectLeaksAssert(detectLeaksInterceptor: DetectLeaksInterceptor = AndroidDetectLeaksInterceptor(), heapAnalysisReporter: HeapAnalysisReporter = NoLeakAssertionFailedError.throwOnApplicationLeaks())"},{"location":"api/leakcanary/-android-detect-leaks-assert/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/leakcanary/-android-detect-leaks-assert/#functions","title":"Functions","text":"Name Summary assertNoLeaks open override fun assertNoLeaks(tag: String)"},{"location":"api/leakcanary/-android-detect-leaks-assert/-android-detect-leaks-assert/","title":"android detect leaks assert","text":"<p>//leakcanary/leakcanary/AndroidDetectLeaksAssert/AndroidDetectLeaksAssert</p>"},{"location":"api/leakcanary/-android-detect-leaks-assert/-android-detect-leaks-assert/#androiddetectleaksassert","title":"AndroidDetectLeaksAssert","text":"<p>fun AndroidDetectLeaksAssert(detectLeaksInterceptor: DetectLeaksInterceptor = AndroidDetectLeaksInterceptor(), heapAnalysisReporter: HeapAnalysisReporter = NoLeakAssertionFailedError.throwOnApplicationLeaks())</p>"},{"location":"api/leakcanary/-android-detect-leaks-assert/assert-no-leaks/","title":"Assert no leaks","text":"<p>//leakcanary/leakcanary/AndroidDetectLeaksAssert/assertNoLeaks</p>"},{"location":"api/leakcanary/-android-detect-leaks-assert/assert-no-leaks/#assertnoleaks","title":"assertNoLeaks","text":"<p>open override fun assertNoLeaks(tag: String)</p>"},{"location":"api/leakcanary/-android-detect-leaks-assert/-companion/","title":"Index","text":"<p>//leakcanary/leakcanary/AndroidDetectLeaksAssert/Companion</p>"},{"location":"api/leakcanary/-android-detect-leaks-assert/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/leakcanary/-android-detect-leaks-assert/-companion/#properties","title":"Properties","text":"Name Summary assertionTag val HeapAnalysisSuccess.assertionTag: String? totalDurationMillis val HeapAnalysisSuccess.totalDurationMillis: Int? waitForRetainedDurationMillis val HeapAnalysisSuccess.waitForRetainedDurationMillis: Int?"},{"location":"api/leakcanary/-android-detect-leaks-assert/-companion/assertion-tag/","title":"Assertion tag","text":"<p>//leakcanary/leakcanary/AndroidDetectLeaksAssert/Companion/assertionTag</p>"},{"location":"api/leakcanary/-android-detect-leaks-assert/-companion/assertion-tag/#assertiontag","title":"assertionTag","text":"<p>val HeapAnalysisSuccess.assertionTag: String?</p>"},{"location":"api/leakcanary/-android-detect-leaks-assert/-companion/total-duration-millis/","title":"Total duration millis","text":"<p>//leakcanary/leakcanary/AndroidDetectLeaksAssert/Companion/totalDurationMillis</p>"},{"location":"api/leakcanary/-android-detect-leaks-assert/-companion/total-duration-millis/#totaldurationmillis","title":"totalDurationMillis","text":"<p>val HeapAnalysisSuccess.totalDurationMillis: Int?</p>"},{"location":"api/leakcanary/-android-detect-leaks-assert/-companion/wait-for-retained-duration-millis/","title":"Wait for retained duration millis","text":"<p>//leakcanary/leakcanary/AndroidDetectLeaksAssert/Companion/waitForRetainedDurationMillis</p>"},{"location":"api/leakcanary/-android-detect-leaks-assert/-companion/wait-for-retained-duration-millis/#waitforretaineddurationmillis","title":"waitForRetainedDurationMillis","text":"<p>val HeapAnalysisSuccess.waitForRetainedDurationMillis: Int?</p>"},{"location":"api/leakcanary/-android-detect-leaks-interceptor/","title":"Index","text":"<p>//leakcanary/leakcanary/AndroidDetectLeaksInterceptor</p>"},{"location":"api/leakcanary/-android-detect-leaks-interceptor/#androiddetectleaksinterceptor","title":"AndroidDetectLeaksInterceptor","text":"<p>class AndroidDetectLeaksInterceptor(instrumentation: Instrumentation = InstrumentationRegistry.getInstrumentation(), objectWatcher: ObjectWatcher = AppWatcher.objectWatcher, retainedDelayMillis: Long = AppWatcher.retainedDelayMillis) : DetectLeaksInterceptor</p>"},{"location":"api/leakcanary/-android-detect-leaks-interceptor/#constructors","title":"Constructors","text":"AndroidDetectLeaksInterceptor fun AndroidDetectLeaksInterceptor(instrumentation: Instrumentation = InstrumentationRegistry.getInstrumentation(), objectWatcher: ObjectWatcher = AppWatcher.objectWatcher, retainedDelayMillis: Long = AppWatcher.retainedDelayMillis)"},{"location":"api/leakcanary/-android-detect-leaks-interceptor/#functions","title":"Functions","text":"Name Summary waitUntilReadyForHeapAnalysis open override fun waitUntilReadyForHeapAnalysis(): HeapAnalysisDecision"},{"location":"api/leakcanary/-android-detect-leaks-interceptor/-android-detect-leaks-interceptor/","title":"android detect leaks interceptor","text":"<p>//leakcanary/leakcanary/AndroidDetectLeaksInterceptor/AndroidDetectLeaksInterceptor</p>"},{"location":"api/leakcanary/-android-detect-leaks-interceptor/-android-detect-leaks-interceptor/#androiddetectleaksinterceptor","title":"AndroidDetectLeaksInterceptor","text":"<p>fun AndroidDetectLeaksInterceptor(instrumentation: Instrumentation = InstrumentationRegistry.getInstrumentation(), objectWatcher: ObjectWatcher = AppWatcher.objectWatcher, retainedDelayMillis: Long = AppWatcher.retainedDelayMillis)</p>"},{"location":"api/leakcanary/-android-detect-leaks-interceptor/wait-until-ready-for-heap-analysis/","title":"Wait until ready for heap analysis","text":"<p>//leakcanary/leakcanary/AndroidDetectLeaksInterceptor/waitUntilReadyForHeapAnalysis</p>"},{"location":"api/leakcanary/-android-detect-leaks-interceptor/wait-until-ready-for-heap-analysis/#waituntilreadyforheapanalysis","title":"waitUntilReadyForHeapAnalysis","text":"<p>open override fun waitUntilReadyForHeapAnalysis(): HeapAnalysisDecision</p>"},{"location":"api/leakcanary/-android-leak-fixes/","title":"Index","text":"<p>//leakcanary/leakcanary/AndroidLeakFixes</p>"},{"location":"api/leakcanary/-android-leak-fixes/#androidleakfixes","title":"AndroidLeakFixes","text":"<p>enum AndroidLeakFixes : Enum&lt;AndroidLeakFixes&gt; </p> <p>A collection of hacks to fix leaks in the Android Framework and other Google Android libraries.</p>"},{"location":"api/leakcanary/-android-leak-fixes/#entries","title":"Entries","text":"PERMISSION_CONTROLLER_MANAGER PERMISSION_CONTROLLER_MANAGER()PermissionControllerManager stores the first context it\u2019s initialized with forever. Sometimes it\u2019s an Activity context which then leaks after Activity is destroyed. SPELL_CHECKER SPELL_CHECKER()Every editable TextView has an Editor instance which has a SpellChecker instance. SpellChecker is in charge of displaying the little squiggle spans that show typos. SpellChecker starts a SpellCheckerSession as needed and then closes it when the TextView is detached from the window. A SpellCheckerSession is in charge of communicating with the spell checker service (which lives in another process) through TextServicesManager. IMM_CUR_ROOT_VIEW IMM_CUR_ROOT_VIEW()When an activity is destroyed, the corresponding ViewRootImpl instance is released and ready to be garbage collected. Some time after that, ViewRootImpl#W receives a windowfocusChanged() callback, which it normally delegates to ViewRootImpl which in turn calls InputMethodManager#onPreWindowFocus which clears InputMethodManager#mCurRootView. IMM_FOCUSED_VIEW IMM_FOCUSED_VIEW()Fix for https://code.google.com/p/android/issues/detail?id=171190 . VIEW_LOCATION_HOLDER VIEW_LOCATION_HOLDER()In Android P, ViewLocationHolder has an mRoot field that is not cleared in its clear() method. Introduced in https://github.com/aosp-mirror/platform_frameworks_base/commit/86b326012813f09d8f1de7d6d26c986a909d ACTIVITY_MANAGER ACTIVITY_MANAGER()Samsung added a static mContext field to ActivityManager, holding a reference to the activity. LAST_HOVERED_VIEW LAST_HOVERED_VIEW()mLastHoveredView is a static field in TextView that leaks the last hovered view. BUBBLE_POPUP BUBBLE_POPUP()A static helper for EditText bubble popups leaks a reference to the latest focused view. SAMSUNG_CLIPBOARD_MANAGER SAMSUNG_CLIPBOARD_MANAGER()ClipboardUIManager is a static singleton that leaks an activity context. This fix makes sure the manager is called with an application context. CONNECTIVITY_MANAGER CONNECTIVITY_MANAGER()ConnectivityManager has a sInstance field that is set when the first ConnectivityManager instance is created. ConnectivityManager has a mContext field. When calling activity.getSystemService(Context.CONNECTIVITY_SERVICE) , the first ConnectivityManager instance is created with the activity context and stored in sInstance. That activity context then leaks forever. ACCESSIBILITY_NODE_INFO ACCESSIBILITY_NODE_INFO()Until API 28, AccessibilityNodeInfo has a mOriginalText field that was not properly cleared when instance were put back in the pool. Leak introduced here: https://android.googlesource.com/platform/frameworks/base/+/193520e3dff5248ddcf8435203bf99d2ba667219%5E%21/core/java/android/view/accessibility/AccessibilityNodeInfo.java FLUSH_HANDLER_THREADS FLUSH_HANDLER_THREADS()HandlerThread instances keep local reference to their last handled message after recycling it. That message is obtained by a dialog which sets on an OnClickListener on it and then never recycles it, expecting it to be garbage collected but it ends up being held by the HandlerThread. USER_MANAGER USER_MANAGER()Obtaining the UserManager service ends up calling the hidden UserManager.get() method which stores the context in a singleton UserManager instance and then stores that instance in a static field. TEXT_LINE_POOL TEXT_LINE_POOL()This flushes the TextLine pool when an activity is destroyed, to prevent memory leaks. MEDIA_SESSION_LEGACY_HELPER MEDIA_SESSION_LEGACY_HELPER()MediaSessionLegacyHelper is a static singleton and did not use the application context. Introduced in android-5.0.1_r1, fixed in Android 5.1.0_r1. https://github.com/android/platform_frameworks_base/commit/9b5257c9c99c4cb541d8e8e78fb04f008b1a9091"},{"location":"api/leakcanary/-android-leak-fixes/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/leakcanary/-android-leak-fixes/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/leakcanary/-android-leak-fixes/-a-c-c-e-s-s-i-b-i-l-i-t-y_-n-o-d-e_-i-n-f-o/","title":"Index","text":"<p>//leakcanary/leakcanary/AndroidLeakFixes/ACCESSIBILITY_NODE_INFO</p>"},{"location":"api/leakcanary/-android-leak-fixes/-a-c-c-e-s-s-i-b-i-l-i-t-y_-n-o-d-e_-i-n-f-o/#accessibility_node_info","title":"ACCESSIBILITY_NODE_INFO","text":"<p>ACCESSIBILITY_NODE_INFO()</p> <p>Until API 28, AccessibilityNodeInfo has a mOriginalText field that was not properly cleared when instance were put back in the pool. Leak introduced here: https://android.googlesource.com/platform/frameworks/base/+/193520e3dff5248ddcf8435203bf99d2ba667219%5E%21/core/java/android/view/accessibility/AccessibilityNodeInfo.java</p> <p>Fixed here: https://android.googlesource.com/platform/frameworks/base/+/6f8ec1fd8c159b09d617ed6d9132658051443c0c</p>"},{"location":"api/leakcanary/-android-leak-fixes/-a-c-c-e-s-s-i-b-i-l-i-t-y_-n-o-d-e_-i-n-f-o/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/leakcanary/-android-leak-fixes/-a-c-t-i-v-i-t-y_-m-a-n-a-g-e-r/","title":"Index","text":"<p>//leakcanary/leakcanary/AndroidLeakFixes/ACTIVITY_MANAGER</p>"},{"location":"api/leakcanary/-android-leak-fixes/-a-c-t-i-v-i-t-y_-m-a-n-a-g-e-r/#activity_manager","title":"ACTIVITY_MANAGER","text":"<p>ACTIVITY_MANAGER()</p> <p>Samsung added a static mContext field to ActivityManager, holding a reference to the activity.</p> <p>This fix clears the field when an activity is destroyed if it refers to this specific activity.</p> <p>Observed here: https://github.com/square/leakcanary/issues/177</p>"},{"location":"api/leakcanary/-android-leak-fixes/-a-c-t-i-v-i-t-y_-m-a-n-a-g-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/leakcanary/-android-leak-fixes/-b-u-b-b-l-e_-p-o-p-u-p/","title":"Index","text":"<p>//leakcanary/leakcanary/AndroidLeakFixes/BUBBLE_POPUP</p>"},{"location":"api/leakcanary/-android-leak-fixes/-b-u-b-b-l-e_-p-o-p-u-p/#bubble_popup","title":"BUBBLE_POPUP","text":"<p>BUBBLE_POPUP()</p> <p>A static helper for EditText bubble popups leaks a reference to the latest focused view.</p> <p>This fix clears it when the activity is destroyed.</p>"},{"location":"api/leakcanary/-android-leak-fixes/-b-u-b-b-l-e_-p-o-p-u-p/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/leakcanary/-android-leak-fixes/-c-o-n-n-e-c-t-i-v-i-t-y_-m-a-n-a-g-e-r/","title":"Index","text":"<p>//leakcanary/leakcanary/AndroidLeakFixes/CONNECTIVITY_MANAGER</p>"},{"location":"api/leakcanary/-android-leak-fixes/-c-o-n-n-e-c-t-i-v-i-t-y_-m-a-n-a-g-e-r/#connectivity_manager","title":"CONNECTIVITY_MANAGER","text":"<p>CONNECTIVITY_MANAGER()</p> <p>ConnectivityManager has a sInstance field that is set when the first ConnectivityManager instance is created. ConnectivityManager has a mContext field. When calling activity.getSystemService(Context.CONNECTIVITY_SERVICE) , the first ConnectivityManager instance is created with the activity context and stored in sInstance. That activity context then leaks forever.</p> <p>This fix makes sure the connectivity manager is created with the application context.</p> <p>Tracked here: https://code.google.com/p/android/issues/detail?id=198852 Introduced here: https://github.com/android/platform_frameworks_base/commit/e0bef71662d81caaaa0d7214fb0bef5d39996a69</p>"},{"location":"api/leakcanary/-android-leak-fixes/-c-o-n-n-e-c-t-i-v-i-t-y_-m-a-n-a-g-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/leakcanary/-android-leak-fixes/-companion/","title":"Index","text":"<p>//leakcanary/leakcanary/AndroidLeakFixes/Companion</p>"},{"location":"api/leakcanary/-android-leak-fixes/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/leakcanary/-android-leak-fixes/-companion/#functions","title":"Functions","text":"Name Summary applyFixes fun applyFixes(application: Application, fixes: Set&lt;AndroidLeakFixes&gt; = EnumSet.allOf(AndroidLeakFixes::class.java))"},{"location":"api/leakcanary/-android-leak-fixes/-companion/apply-fixes/","title":"Apply fixes","text":"<p>//leakcanary/leakcanary/AndroidLeakFixes/Companion/applyFixes</p>"},{"location":"api/leakcanary/-android-leak-fixes/-companion/apply-fixes/#applyfixes","title":"applyFixes","text":"<p>fun applyFixes(application: Application, fixes: Set&lt;AndroidLeakFixes&gt; = EnumSet.allOf(AndroidLeakFixes::class.java))</p>"},{"location":"api/leakcanary/-android-leak-fixes/-f-l-u-s-h_-h-a-n-d-l-e-r_-t-h-r-e-a-d-s/","title":"Index","text":"<p>//leakcanary/leakcanary/AndroidLeakFixes/FLUSH_HANDLER_THREADS</p>"},{"location":"api/leakcanary/-android-leak-fixes/-f-l-u-s-h_-h-a-n-d-l-e-r_-t-h-r-e-a-d-s/#flush_handler_threads","title":"FLUSH_HANDLER_THREADS","text":"<p>FLUSH_HANDLER_THREADS()</p> <p>HandlerThread instances keep local reference to their last handled message after recycling it. That message is obtained by a dialog which sets on an OnClickListener on it and then never recycles it, expecting it to be garbage collected but it ends up being held by the HandlerThread.</p>"},{"location":"api/leakcanary/-android-leak-fixes/-f-l-u-s-h_-h-a-n-d-l-e-r_-t-h-r-e-a-d-s/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/leakcanary/-android-leak-fixes/-i-m-m_-c-u-r_-r-o-o-t_-v-i-e-w/","title":"Index","text":"<p>//leakcanary/leakcanary/AndroidLeakFixes/IMM_CUR_ROOT_VIEW</p>"},{"location":"api/leakcanary/-android-leak-fixes/-i-m-m_-c-u-r_-r-o-o-t_-v-i-e-w/#imm_cur_root_view","title":"IMM_CUR_ROOT_VIEW","text":"<p>IMM_CUR_ROOT_VIEW()</p> <p>When an activity is destroyed, the corresponding ViewRootImpl instance is released and ready to be garbage collected. Some time after that, ViewRootImpl#W receives a windowfocusChanged() callback, which it normally delegates to ViewRootImpl which in turn calls InputMethodManager#onPreWindowFocus which clears InputMethodManager#mCurRootView.</p> <p>Unfortunately, since the ViewRootImpl instance is garbage collectable it may be garbage collected before that happens. ViewRootImpl#W has a weak reference on ViewRootImpl, so that weak reference will then return null and the windowfocusChanged() callback will be ignored, leading to InputMethodManager#mCurRootView not being cleared.</p> <p>Filed here: https://issuetracker.google.com/u/0/issues/116078227 Fixed here: https://android.googlesource.com/platform/frameworks/base/+/dff365ef4dc61239fac70953b631e92972a9f41f%5E%21/#F0 InputMethodManager.mCurRootView is part of the unrestricted grey list on Android 9: https://android.googlesource.com/platform/frameworks/base/+/pie-release/config/hiddenapi-light-greylist.txt#6057</p>"},{"location":"api/leakcanary/-android-leak-fixes/-i-m-m_-c-u-r_-r-o-o-t_-v-i-e-w/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/leakcanary/-android-leak-fixes/-i-m-m_-f-o-c-u-s-e-d_-v-i-e-w/","title":"Index","text":"<p>//leakcanary/leakcanary/AndroidLeakFixes/IMM_FOCUSED_VIEW</p>"},{"location":"api/leakcanary/-android-leak-fixes/-i-m-m_-f-o-c-u-s-e-d_-v-i-e-w/#imm_focused_view","title":"IMM_FOCUSED_VIEW","text":"<p>IMM_FOCUSED_VIEW()</p> <p>Fix for https://code.google.com/p/android/issues/detail?id=171190 .</p> <p>When a view that has focus gets detached, we wait for the main thread to be idle and then check if the InputMethodManager is leaking a view. If yes, we tell it that the decor view got focus, which is what happens if you press home and come back from recent apps. This replaces the reference to the detached view with a reference to the decor view.</p>"},{"location":"api/leakcanary/-android-leak-fixes/-i-m-m_-f-o-c-u-s-e-d_-v-i-e-w/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/leakcanary/-android-leak-fixes/-l-a-s-t_-h-o-v-e-r-e-d_-v-i-e-w/","title":"Index","text":"<p>//leakcanary/leakcanary/AndroidLeakFixes/LAST_HOVERED_VIEW</p>"},{"location":"api/leakcanary/-android-leak-fixes/-l-a-s-t_-h-o-v-e-r-e-d_-v-i-e-w/#last_hovered_view","title":"LAST_HOVERED_VIEW","text":"<p>LAST_HOVERED_VIEW()</p> <p>mLastHoveredView is a static field in TextView that leaks the last hovered view.</p> <p>This fix clears it when the activity is destroyed.</p>"},{"location":"api/leakcanary/-android-leak-fixes/-l-a-s-t_-h-o-v-e-r-e-d_-v-i-e-w/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/leakcanary/-android-leak-fixes/-m-e-d-i-a_-s-e-s-s-i-o-n_-l-e-g-a-c-y_-h-e-l-p-e-r/","title":"Index","text":"<p>//leakcanary/leakcanary/AndroidLeakFixes/MEDIA_SESSION_LEGACY_HELPER</p>"},{"location":"api/leakcanary/-android-leak-fixes/-m-e-d-i-a_-s-e-s-s-i-o-n_-l-e-g-a-c-y_-h-e-l-p-e-r/#media_session_legacy_helper","title":"MEDIA_SESSION_LEGACY_HELPER","text":"<p>MEDIA_SESSION_LEGACY_HELPER()</p> <p>MediaSessionLegacyHelper is a static singleton and did not use the application context. Introduced in android-5.0.1_r1, fixed in Android 5.1.0_r1. https://github.com/android/platform_frameworks_base/commit/9b5257c9c99c4cb541d8e8e78fb04f008b1a9091</p> <p>We fix this leak by invoking MediaSessionLegacyHelper.getHelper() early in the app lifecycle.</p>"},{"location":"api/leakcanary/-android-leak-fixes/-m-e-d-i-a_-s-e-s-s-i-o-n_-l-e-g-a-c-y_-h-e-l-p-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/leakcanary/-android-leak-fixes/-p-e-r-m-i-s-s-i-o-n_-c-o-n-t-r-o-l-l-e-r_-m-a-n-a-g-e-r/","title":"Index","text":"<p>//leakcanary/leakcanary/AndroidLeakFixes/PERMISSION_CONTROLLER_MANAGER</p>"},{"location":"api/leakcanary/-android-leak-fixes/-p-e-r-m-i-s-s-i-o-n_-c-o-n-t-r-o-l-l-e-r_-m-a-n-a-g-e-r/#permission_controller_manager","title":"PERMISSION_CONTROLLER_MANAGER","text":"<p>PERMISSION_CONTROLLER_MANAGER()</p> <p>PermissionControllerManager stores the first context it\u2019s initialized with forever. Sometimes it\u2019s an Activity context which then leaks after Activity is destroyed.</p> <p>This fix makes sure the PermissionControllerManager is created with the application context.</p> <p>For Pixel devices the issue can be tracked here https://issuetracker.google.com/issues/318415056</p>"},{"location":"api/leakcanary/-android-leak-fixes/-p-e-r-m-i-s-s-i-o-n_-c-o-n-t-r-o-l-l-e-r_-m-a-n-a-g-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/leakcanary/-android-leak-fixes/-s-a-m-s-u-n-g_-c-l-i-p-b-o-a-r-d_-m-a-n-a-g-e-r/","title":"Index","text":"<p>//leakcanary/leakcanary/AndroidLeakFixes/SAMSUNG_CLIPBOARD_MANAGER</p>"},{"location":"api/leakcanary/-android-leak-fixes/-s-a-m-s-u-n-g_-c-l-i-p-b-o-a-r-d_-m-a-n-a-g-e-r/#samsung_clipboard_manager","title":"SAMSUNG_CLIPBOARD_MANAGER","text":"<p>SAMSUNG_CLIPBOARD_MANAGER()</p> <p>ClipboardUIManager is a static singleton that leaks an activity context. This fix makes sure the manager is called with an application context.</p>"},{"location":"api/leakcanary/-android-leak-fixes/-s-a-m-s-u-n-g_-c-l-i-p-b-o-a-r-d_-m-a-n-a-g-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/leakcanary/-android-leak-fixes/-s-p-e-l-l_-c-h-e-c-k-e-r/","title":"Index","text":"<p>//leakcanary/leakcanary/AndroidLeakFixes/SPELL_CHECKER</p>"},{"location":"api/leakcanary/-android-leak-fixes/-s-p-e-l-l_-c-h-e-c-k-e-r/#spell_checker","title":"SPELL_CHECKER","text":"<p>SPELL_CHECKER()</p> <p>Every editable TextView has an Editor instance which has a SpellChecker instance. SpellChecker is in charge of displaying the little squiggle spans that show typos. SpellChecker starts a SpellCheckerSession as needed and then closes it when the TextView is detached from the window. A SpellCheckerSession is in charge of communicating with the spell checker service (which lives in another process) through TextServicesManager.</p> <p>The SpellChecker sends the TextView content to the spell checker service every 400ms, ie every time the service calls back with a result the SpellChecker schedules another check for 400ms later.</p> <p>When the TextView is detached from the window, the spell checker closes the session. In practice, SpellCheckerSessionListenerImpl.mHandler is set to null and when the service calls SpellCheckerSessionListenerImpl.onGetSuggestions or SpellCheckerSessionListenerImpl.onGetSentenceSuggestions back from another process, there\u2019s a null check for SpellCheckerSessionListenerImpl.mHandler and the callback is dropped.</p> <p>Unfortunately, on Android M there\u2019s a race condition in how that\u2019s done. When the service calls back into our app process, the IPC call is received on a binder thread. That\u2019s when the null check happens. If the session is not closed at this point (mHandler not null), the callback is then posted to the main thread. If on the main thread the session is closed after that post but prior to that post being handled, then the post will still be processed, after the session has been closed.</p> <p>When the post is processed, SpellCheckerSession calls back into SpellChecker which in turns schedules a new spell check to be ran in 400ms. The check is an anonymous inner class (SpellChecker$1) stored as SpellChecker.mSpellRunnable and implementing Runnable. It is scheduled by calling View.postDelayed. As we\u2019ve seen, at this point the session may be closed which means that the view has been detached. View.postDelayed behaves differently when a view is detached: instead of posting to the single Handler used by the view hierarchy, it enqueues the Runnable into ViewRootImpl.RunQueue, a static queue that holds on to \"actions\" to be executed. As soon as a view hierarchy is attached, the ViewRootImpl.RunQueue is processed and emptied.</p> <p>Unfortunately, that means that as long as no view hierarchy is attached, ie as long as there are no activities alive, the actions stay in ViewRootImpl.RunQueue. That means SpellChecker$1 ends up being kept in memory. It holds on to SpellChecker which in turns holds on to the detached TextView and corresponding destroyed activity &amp; view hierarchy.</p> <p>We have a fix for this! When the spell check session is closed, we replace SpellCheckerSession.mSpellCheckerSessionListener (which normally is the SpellChecker) with a no-op implementation. So even if callbacks are enqueued to the main thread handler, these callbacks will call the no-op implementation and SpellChecker will not be scheduling a spell check.</p> <p>Sources to corroborate:</p> <p>https://android.googlesource.com/platform/frameworks/base/+/marshmallow-release/core/java/android/view/textservice/SpellCheckerSession.java https://android.googlesource.com/platform/frameworks/base/+/marshmallow-release/core/java/android/view/textservice/TextServicesManager.java https://android.googlesource.com/platform/frameworks/base/+/marshmallow-release/core/java/android/widget/SpellChecker.java https://android.googlesource.com/platform/frameworks/base/+/marshmallow-release/core/java/android/view/ViewRootImpl.java</p>"},{"location":"api/leakcanary/-android-leak-fixes/-s-p-e-l-l_-c-h-e-c-k-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/leakcanary/-android-leak-fixes/-t-e-x-t_-l-i-n-e_-p-o-o-l/","title":"Index","text":"<p>//leakcanary/leakcanary/AndroidLeakFixes/TEXT_LINE_POOL</p>"},{"location":"api/leakcanary/-android-leak-fixes/-t-e-x-t_-l-i-n-e_-p-o-o-l/#text_line_pool","title":"TEXT_LINE_POOL","text":"<p>TEXT_LINE_POOL()</p> <p>This flushes the TextLine pool when an activity is destroyed, to prevent memory leaks.</p> <p>The first memory leak has been fixed in android-5.1.0_r1 https://github.com/android/platform_frameworks_base/commit/893d6fe48d37f71e683f722457bea646994a10bf</p> <p>Second memory leak: https://github.com/android/platform_frameworks_base/commit/b3a9bc038d3a218b1dbdf7b5668e3d6c12be5ee4</p>"},{"location":"api/leakcanary/-android-leak-fixes/-t-e-x-t_-l-i-n-e_-p-o-o-l/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/leakcanary/-android-leak-fixes/-u-s-e-r_-m-a-n-a-g-e-r/","title":"Index","text":"<p>//leakcanary/leakcanary/AndroidLeakFixes/USER_MANAGER</p>"},{"location":"api/leakcanary/-android-leak-fixes/-u-s-e-r_-m-a-n-a-g-e-r/#user_manager","title":"USER_MANAGER","text":"<p>USER_MANAGER()</p> <p>Obtaining the UserManager service ends up calling the hidden UserManager.get() method which stores the context in a singleton UserManager instance and then stores that instance in a static field.</p> <p>We obtain the user manager from an activity context, so if it hasn\u2019t been created yet it will leak that activity forever.</p> <p>This fix makes sure the UserManager is created and holds on to the Application context.</p> <p>Issue: https://code.google.com/p/android/issues/detail?id=173789</p> <p>Fixed in https://android.googlesource.com/platform/frameworks/base/+/5200e1cb07190a1f6874d72a4561064cad3ee3e0%5E%21/#F0 (Android O)</p>"},{"location":"api/leakcanary/-android-leak-fixes/-u-s-e-r_-m-a-n-a-g-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/leakcanary/-android-leak-fixes/-v-i-e-w_-l-o-c-a-t-i-o-n_-h-o-l-d-e-r/","title":"Index","text":"<p>//leakcanary/leakcanary/AndroidLeakFixes/VIEW_LOCATION_HOLDER</p>"},{"location":"api/leakcanary/-android-leak-fixes/-v-i-e-w_-l-o-c-a-t-i-o-n_-h-o-l-d-e-r/#view_location_holder","title":"VIEW_LOCATION_HOLDER","text":"<p>VIEW_LOCATION_HOLDER()</p> <p>In Android P, ViewLocationHolder has an mRoot field that is not cleared in its clear() method. Introduced in https://github.com/aosp-mirror/platform_frameworks_base/commit/86b326012813f09d8f1de7d6d26c986a909d</p> <p>This leaks triggers very often when accessibility is on. To fix this leak we need to clear the ViewGroup.ViewLocationHolder.sPool pool. Unfortunately Android P prevents accessing that field through reflection. So instead, we call ViewGroup#addChildrenForAccessibility with a view group that has 32 children (32 being the pool size), which as result fills in the pool with 32 dumb views that reference a dummy context instead of an activity context.</p> <p>This fix empties the pool on every activity destroy and every AndroidX fragment view destroy. You can support other cases where views get detached by calling directly ViewLocationHolderLeakFix.clearStaticPool.</p>"},{"location":"api/leakcanary/-android-leak-fixes/-v-i-e-w_-l-o-c-a-t-i-o-n_-h-o-l-d-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/leakcanary/-app-watcher/","title":"Index","text":"<p>//leakcanary/leakcanary/AppWatcher</p>"},{"location":"api/leakcanary/-app-watcher/#appwatcher","title":"AppWatcher","text":"<p>object AppWatcher</p> <p>The entry point API for using ObjectWatcher in an Android app. AppWatcher.objectWatcher is in charge of detecting retained objects, and AppWatcher is auto configured on app start to pass it activity and fragment instances. Call ObjectWatcher.watch on objectWatcher to watch any other object that you expect to be unreachable.</p>"},{"location":"api/leakcanary/-app-watcher/#functions","title":"Functions","text":"Name Summary appDefaultWatchers fun appDefaultWatchers(application: Application, reachabilityWatcher: ReachabilityWatcher = objectWatcher): List&lt;InstallableWatcher&gt;Creates a new list of default app InstallableWatcher, created with the passed in reachabilityWatcher (which defaults to objectWatcher). Once installed, these watchers will pass in to reachabilityWatcher objects that they expect to become weakly reachable. manualInstall @JvmOverloadsfun manualInstall(application: Application, retainedDelayMillis: Long = TimeUnit.SECONDS.toMillis(5), watchersToInstall: List&lt;InstallableWatcher&gt; = appDefaultWatchers(application))Enables usage of AppWatcher.objectWatcher which will expect passed in objects to become weakly reachable within retainedDelayMillis ms and if not will trigger LeakCanary (if LeakCanary is in the classpath)."},{"location":"api/leakcanary/-app-watcher/#properties","title":"Properties","text":"Name Summary isInstalled val isInstalled: Boolean objectWatcher val objectWatcher: ObjectWatcherThe ObjectWatcher used by AppWatcher to detect retained objects. Only set when isInstalled is true. retainedDelayMillis @Volatileval retainedDelayMillis: Long"},{"location":"api/leakcanary/-app-watcher/app-default-watchers/","title":"App default watchers","text":"<p>//leakcanary/leakcanary/AppWatcher/appDefaultWatchers</p>"},{"location":"api/leakcanary/-app-watcher/app-default-watchers/#appdefaultwatchers","title":"appDefaultWatchers","text":"<p>fun appDefaultWatchers(application: Application, reachabilityWatcher: ReachabilityWatcher = objectWatcher): List&lt;InstallableWatcher&gt;</p> <p>Creates a new list of default app InstallableWatcher, created with the passed in reachabilityWatcher (which defaults to objectWatcher). Once installed, these watchers will pass in to reachabilityWatcher objects that they expect to become weakly reachable.</p> <p>The passed in reachabilityWatcher should probably delegate to objectWatcher but can be used to filter out specific instances.</p>"},{"location":"api/leakcanary/-app-watcher/is-installed/","title":"Is installed","text":"<p>//leakcanary/leakcanary/AppWatcher/isInstalled</p>"},{"location":"api/leakcanary/-app-watcher/is-installed/#isinstalled","title":"isInstalled","text":"<p>val isInstalled: Boolean</p>"},{"location":"api/leakcanary/-app-watcher/is-installed/#see-also","title":"See also","text":"<p>main</p> leakcanary.AppWatcher"},{"location":"api/leakcanary/-app-watcher/manual-install/","title":"Manual install","text":"<p>//leakcanary/leakcanary/AppWatcher/manualInstall</p>"},{"location":"api/leakcanary/-app-watcher/manual-install/#manualinstall","title":"manualInstall","text":"<p>@JvmOverloads</p> <p>fun manualInstall(application: Application, retainedDelayMillis: Long = TimeUnit.SECONDS.toMillis(5), watchersToInstall: List&lt;InstallableWatcher&gt; = appDefaultWatchers(application))</p> <p>Enables usage of AppWatcher.objectWatcher which will expect passed in objects to become weakly reachable within retainedDelayMillis ms and if not will trigger LeakCanary (if LeakCanary is in the classpath).</p> <p>In the main process, this method is automatically called with default parameter values  on app startup. You can call this method directly to customize the installation, however you must first disable the automatic call by overriding the leak_canary_watcher_auto_install boolean resource:</p> <p>&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\\ &lt;resources&gt;\\   &lt;bool name=\"leak_canary_watcher_auto_install\"&gt;false&lt;/bool&gt;\\ &lt;/resources&gt;</p> <p>watchersToInstall can be customized to a subset of the default app watchers:</p> <p>val watchersToInstall = AppWatcher.appDefaultWatchers(application)\\   .filter { it !is RootViewWatcher }\\ AppWatcher.manualInstall(\\   application = application,\\   watchersToInstall = watchersToInstall\\ )</p> <p>watchersToInstall can also be customized to ignore specific instances (e.g. here ignoring leaks of BadSdkLeakingFragment):</p> <p>val watchersToInstall = AppWatcher.appDefaultWatchers(application, ReachabilityWatcher { watchedObject, description -&gt;\\   if (watchedObject !is BadSdkLeakingFragment) {\\     AppWatcher.objectWatcher.expectWeaklyReachable(watchedObject, description)\\   }\\ })\\ AppWatcher.manualInstall(\\   application = application,\\   watchersToInstall = watchersToInstall\\ )</p>"},{"location":"api/leakcanary/-app-watcher/object-watcher/","title":"Object watcher","text":"<p>//leakcanary/leakcanary/AppWatcher/objectWatcher</p>"},{"location":"api/leakcanary/-app-watcher/object-watcher/#objectwatcher","title":"objectWatcher","text":"<p>val objectWatcher: ObjectWatcher</p> <p>The ObjectWatcher used by AppWatcher to detect retained objects. Only set when isInstalled is true.</p>"},{"location":"api/leakcanary/-app-watcher/retained-delay-millis/","title":"Retained delay millis","text":"<p>//leakcanary/leakcanary/AppWatcher/retainedDelayMillis</p>"},{"location":"api/leakcanary/-app-watcher/retained-delay-millis/#retaineddelaymillis","title":"retainedDelayMillis","text":"<p>@Volatile</p> <p>val retainedDelayMillis: Long</p>"},{"location":"api/leakcanary/-app-watcher-startup-initializer/","title":"Index","text":"<p>//leakcanary/leakcanary/AppWatcherStartupInitializer</p>"},{"location":"api/leakcanary/-app-watcher-startup-initializer/#appwatcherstartupinitializer","title":"AppWatcherStartupInitializer","text":"<p>class AppWatcherStartupInitializer : Initializer&lt;AppWatcherStartupInitializer&gt;</p>"},{"location":"api/leakcanary/-app-watcher-startup-initializer/#constructors","title":"Constructors","text":"AppWatcherStartupInitializer fun AppWatcherStartupInitializer()"},{"location":"api/leakcanary/-app-watcher-startup-initializer/#functions","title":"Functions","text":"Name Summary create open override fun create(context: Context): AppWatcherStartupInitializer dependencies open override fun dependencies(): List&lt;Class&lt;out Initializer&lt;*&gt;&gt;&gt;"},{"location":"api/leakcanary/-app-watcher-startup-initializer/-app-watcher-startup-initializer/","title":"app watcher startup initializer","text":"<p>//leakcanary/leakcanary/AppWatcherStartupInitializer/AppWatcherStartupInitializer</p>"},{"location":"api/leakcanary/-app-watcher-startup-initializer/-app-watcher-startup-initializer/#appwatcherstartupinitializer","title":"AppWatcherStartupInitializer","text":"<p>fun AppWatcherStartupInitializer()</p>"},{"location":"api/leakcanary/-app-watcher-startup-initializer/create/","title":"Create","text":"<p>//leakcanary/leakcanary/AppWatcherStartupInitializer/create</p>"},{"location":"api/leakcanary/-app-watcher-startup-initializer/create/#create","title":"create","text":"<p>open override fun create(context: Context): AppWatcherStartupInitializer</p>"},{"location":"api/leakcanary/-app-watcher-startup-initializer/dependencies/","title":"Dependencies","text":"<p>//leakcanary/leakcanary/AppWatcherStartupInitializer/dependencies</p>"},{"location":"api/leakcanary/-app-watcher-startup-initializer/dependencies/#dependencies","title":"dependencies","text":"<p>open override fun dependencies(): List&lt;Class&lt;out Initializer&lt;*&gt;&gt;&gt;</p>"},{"location":"api/leakcanary/-background-thread-heap-analyzer/","title":"Index","text":"<p>//leakcanary/leakcanary/BackgroundThreadHeapAnalyzer</p>"},{"location":"api/leakcanary/-background-thread-heap-analyzer/#backgroundthreadheapanalyzer","title":"BackgroundThreadHeapAnalyzer","text":"<p>object BackgroundThreadHeapAnalyzer : EventListener</p> <p>Starts heap analysis on a background HandlerThread when receiving a HeapDump event.</p>"},{"location":"api/leakcanary/-background-thread-heap-analyzer/#functions","title":"Functions","text":"Name Summary onEvent open override fun onEvent(event: EventListener.Event)onEvent is always called from the thread the events are emitted from, which is documented for each event. This enables you to potentially block a chain of events, waiting for some pre work to be done."},{"location":"api/leakcanary/-background-thread-heap-analyzer/on-event/","title":"On event","text":"<p>//leakcanary/leakcanary/BackgroundThreadHeapAnalyzer/onEvent</p>"},{"location":"api/leakcanary/-background-thread-heap-analyzer/on-event/#onevent","title":"onEvent","text":"<p>open override fun onEvent(event: EventListener.Event)</p> <p>onEvent is always called from the thread the events are emitted from, which is documented for each event. This enables you to potentially block a chain of events, waiting for some pre work to be done.</p>"},{"location":"api/leakcanary/-background-trigger/","title":"Index","text":"<p>//leakcanary/leakcanary/BackgroundTrigger</p>"},{"location":"api/leakcanary/-background-trigger/#backgroundtrigger","title":"BackgroundTrigger","text":"<p>class BackgroundTrigger(application: Application, analysisClient: HeapAnalysisClient, analysisExecutor: Executor, processInfo: ProcessInfo = ProcessInfo.Real, analysisCallback: (HeapAnalysisJob.Result) -&gt; Unit = { result -&gt;     SharkLog.d { \"$result\" }   })</p>"},{"location":"api/leakcanary/-background-trigger/#constructors","title":"Constructors","text":"BackgroundTrigger fun BackgroundTrigger(application: Application, analysisClient: HeapAnalysisClient, analysisExecutor: Executor, processInfo: ProcessInfo = ProcessInfo.Real, analysisCallback: (HeapAnalysisJob.Result) -&gt; Unit = { result -&gt;     SharkLog.d { \"$result\" }   })"},{"location":"api/leakcanary/-background-trigger/#functions","title":"Functions","text":"Name Summary start fun start() stop fun stop()"},{"location":"api/leakcanary/-background-trigger/-background-trigger/","title":"background trigger","text":"<p>//leakcanary/leakcanary/BackgroundTrigger/BackgroundTrigger</p>"},{"location":"api/leakcanary/-background-trigger/-background-trigger/#backgroundtrigger","title":"BackgroundTrigger","text":"<p>fun BackgroundTrigger(application: Application, analysisClient: HeapAnalysisClient, analysisExecutor: Executor, processInfo: ProcessInfo = ProcessInfo.Real, analysisCallback: (HeapAnalysisJob.Result) -&gt; Unit = { result -&gt;     SharkLog.d { \"$result\" }   })</p>"},{"location":"api/leakcanary/-background-trigger/start/","title":"Start","text":"<p>//leakcanary/leakcanary/BackgroundTrigger/start</p>"},{"location":"api/leakcanary/-background-trigger/start/#start","title":"start","text":"<p>fun start()</p>"},{"location":"api/leakcanary/-background-trigger/stop/","title":"Stop","text":"<p>//leakcanary/leakcanary/BackgroundTrigger/stop</p>"},{"location":"api/leakcanary/-background-trigger/stop/#stop","title":"stop","text":"<p>fun stop()</p>"},{"location":"api/leakcanary/-clock/","title":"Index","text":"<p>//leakcanary/leakcanary/Clock</p>"},{"location":"api/leakcanary/-clock/#clock","title":"Clock","text":"<p>fun interface Clock</p> <p>An interface to abstract the SystemClock.uptimeMillis() Android API in non Android artifacts.</p> <p>This is a functional interface with which you can create a Clock from a lambda.</p>"},{"location":"api/leakcanary/-clock/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/leakcanary/-clock/#functions","title":"Functions","text":"Name Summary uptimeMillis abstract fun uptimeMillis(): LongOn Android VMs, this should return android.os.SystemClock.uptimeMillis()."},{"location":"api/leakcanary/-clock/uptime-millis/","title":"Uptime millis","text":"<p>//leakcanary/leakcanary/Clock/uptimeMillis</p>"},{"location":"api/leakcanary/-clock/uptime-millis/#uptimemillis","title":"uptimeMillis","text":"<p>abstract fun uptimeMillis(): Long</p> <p>On Android VMs, this should return android.os.SystemClock.uptimeMillis().</p>"},{"location":"api/leakcanary/-clock/-companion/","title":"Index","text":"<p>//leakcanary/leakcanary/Clock/Companion</p>"},{"location":"api/leakcanary/-clock/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/leakcanary/-clock/-companion/#functions","title":"Functions","text":"Name Summary invoke inline operator fun invoke(crossinline block: () -&gt; Long): ClockUtility function to create a Clock from the passed in block lambda instead of using the anonymous object : Clock syntax."},{"location":"api/leakcanary/-clock/-companion/invoke/","title":"Invoke","text":"<p>//leakcanary/leakcanary/Clock/Companion/invoke</p>"},{"location":"api/leakcanary/-clock/-companion/invoke/#invoke","title":"invoke","text":"<p>inline operator fun invoke(crossinline block: () -&gt; Long): Clock</p> <p>Utility function to create a Clock from the passed in block lambda instead of using the anonymous object : Clock syntax.</p> <p>Usage:</p> <p>val clock = Clock {\\ \\ }</p>"},{"location":"api/leakcanary/-conditional-interceptor/","title":"Index","text":"<p>//leakcanary/leakcanary/ConditionalInterceptor</p>"},{"location":"api/leakcanary/-conditional-interceptor/#conditionalinterceptor","title":"ConditionalInterceptor","text":"<p>class ConditionalInterceptor(delegate: HeapAnalysisInterceptor, evaluateCondition: (HeapAnalysisJob) -&gt; Boolean) : HeapAnalysisInterceptor</p> <p>An interceptor that runs only when evaluateCondition returns true.</p>"},{"location":"api/leakcanary/-conditional-interceptor/#constructors","title":"Constructors","text":"ConditionalInterceptor fun ConditionalInterceptor(delegate: HeapAnalysisInterceptor, evaluateCondition: (HeapAnalysisJob) -&gt; Boolean)"},{"location":"api/leakcanary/-conditional-interceptor/#functions","title":"Functions","text":"Name Summary intercept open override fun intercept(chain: HeapAnalysisInterceptor.Chain): HeapAnalysisJob.Result"},{"location":"api/leakcanary/-conditional-interceptor/-conditional-interceptor/","title":"conditional interceptor","text":"<p>//leakcanary/leakcanary/ConditionalInterceptor/ConditionalInterceptor</p>"},{"location":"api/leakcanary/-conditional-interceptor/-conditional-interceptor/#conditionalinterceptor","title":"ConditionalInterceptor","text":"<p>fun ConditionalInterceptor(delegate: HeapAnalysisInterceptor, evaluateCondition: (HeapAnalysisJob) -&gt; Boolean)</p>"},{"location":"api/leakcanary/-conditional-interceptor/intercept/","title":"Intercept","text":"<p>//leakcanary/leakcanary/ConditionalInterceptor/intercept</p>"},{"location":"api/leakcanary/-conditional-interceptor/intercept/#intercept","title":"intercept","text":"<p>open override fun intercept(chain: HeapAnalysisInterceptor.Chain): HeapAnalysisJob.Result</p>"},{"location":"api/leakcanary/-detect-leaks-after-test-success/","title":"Index","text":"<p>//leakcanary/leakcanary/DetectLeaksAfterTestSuccess</p>"},{"location":"api/leakcanary/-detect-leaks-after-test-success/#detectleaksaftertestsuccess","title":"DetectLeaksAfterTestSuccess","text":"<p>class DetectLeaksAfterTestSuccess(tag: String = DetectLeaksAfterTestSuccess::class.java.simpleName) : TestRule</p> <p>TestRule that invokes LeakAssertions.assertNoLeaks after the test successfully evaluates. Pay attention to where you set up this rule in the rule chain as you might detect different leaks (e.g. around vs wrapped by the activity rule). It\u2019s also possible to use this rule several times in a rule chain.</p> <p>This rule automatically applies the TestDescriptionHolder rule.</p>"},{"location":"api/leakcanary/-detect-leaks-after-test-success/#constructors","title":"Constructors","text":"DetectLeaksAfterTestSuccess fun DetectLeaksAfterTestSuccess(tag: String = DetectLeaksAfterTestSuccess::class.java.simpleName)"},{"location":"api/leakcanary/-detect-leaks-after-test-success/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/leakcanary/-detect-leaks-after-test-success/#functions","title":"Functions","text":"Name Summary apply open override fun apply(base: Statement, description: Description): Statement"},{"location":"api/leakcanary/-detect-leaks-after-test-success/-detect-leaks-after-test-success/","title":"detect leaks after test success","text":"<p>//leakcanary/leakcanary/DetectLeaksAfterTestSuccess/DetectLeaksAfterTestSuccess</p>"},{"location":"api/leakcanary/-detect-leaks-after-test-success/-detect-leaks-after-test-success/#detectleaksaftertestsuccess","title":"DetectLeaksAfterTestSuccess","text":"<p>fun DetectLeaksAfterTestSuccess(tag: String = DetectLeaksAfterTestSuccess::class.java.simpleName)</p>"},{"location":"api/leakcanary/-detect-leaks-after-test-success/apply/","title":"Apply","text":"<p>//leakcanary/leakcanary/DetectLeaksAfterTestSuccess/apply</p>"},{"location":"api/leakcanary/-detect-leaks-after-test-success/apply/#apply","title":"apply","text":"<p>open override fun apply(base: Statement, description: Description): Statement</p>"},{"location":"api/leakcanary/-detect-leaks-after-test-success/-companion/","title":"Index","text":"<p>//leakcanary/leakcanary/DetectLeaksAfterTestSuccess/Companion</p>"},{"location":"api/leakcanary/-detect-leaks-after-test-success/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/leakcanary/-detect-leaks-after-test-success/-companion/#functions","title":"Functions","text":"Name Summary detectLeaksAfterTestSuccessWrapping fun RuleChain.detectLeaksAfterTestSuccessWrapping(tag: String, wrapped: RuleChain.() -&gt; RuleChain): RuleChainA helper function to trigger leak detection twice during test tear down, before and after the tear down of a set of wrapped rule chains. For example, this can be useful to detect leaks both right before and right after the activity under test is destroyed. Before means we can detect detached fragment leaks that go away when the activity is destroyed. After means we can detect activity leaks."},{"location":"api/leakcanary/-detect-leaks-after-test-success/-companion/detect-leaks-after-test-success-wrapping/","title":"Detect leaks after test success wrapping","text":"<p>//leakcanary/leakcanary/DetectLeaksAfterTestSuccess/Companion/detectLeaksAfterTestSuccessWrapping</p>"},{"location":"api/leakcanary/-detect-leaks-after-test-success/-companion/detect-leaks-after-test-success-wrapping/#detectleaksaftertestsuccesswrapping","title":"detectLeaksAfterTestSuccessWrapping","text":"<p>fun RuleChain.detectLeaksAfterTestSuccessWrapping(tag: String, wrapped: RuleChain.() -&gt; RuleChain): RuleChain</p> <p>A helper function to trigger leak detection twice during test tear down, before and after the tear down of a set of wrapped rule chains. For example, this can be useful to detect leaks both right before and right after the activity under test is destroyed. Before means we can detect detached fragment leaks that go away when the activity is destroyed. After means we can detect activity leaks.</p> <p>RuleChain.outerRule(LoginRule())\\   .detectLeaksAfterTestSuccessWrapping(\"ActivitiesDestroyed\") {\\     around(ActivityScenarioRule(MyActivity::class.java))\\   }\\   .around(LoadingScreenRule())</p>"},{"location":"api/leakcanary/-detect-leaks-assert/","title":"Index","text":"<p>//leakcanary/leakcanary/DetectLeaksAssert</p>"},{"location":"api/leakcanary/-detect-leaks-assert/#detectleaksassert","title":"DetectLeaksAssert","text":"<p>fun interface DetectLeaksAssert</p> <p>The interface for the implementation that LeakAssertions.assertNoLeaks delegates to. You can call DetectLeaksAssert.update to provide your own implementation.</p> <p>The default implementation is AndroidDetectLeaksAssert.</p>"},{"location":"api/leakcanary/-detect-leaks-assert/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/leakcanary/-detect-leaks-assert/#functions","title":"Functions","text":"Name Summary assertNoLeaks abstract fun assertNoLeaks(tag: String)"},{"location":"api/leakcanary/-detect-leaks-assert/#inheritors","title":"Inheritors","text":"Name AndroidDetectLeaksAssert"},{"location":"api/leakcanary/-detect-leaks-assert/assert-no-leaks/","title":"Assert no leaks","text":"<p>//leakcanary/leakcanary/DetectLeaksAssert/assertNoLeaks</p>"},{"location":"api/leakcanary/-detect-leaks-assert/assert-no-leaks/#assertnoleaks","title":"assertNoLeaks","text":"<p>abstract fun assertNoLeaks(tag: String)</p>"},{"location":"api/leakcanary/-detect-leaks-assert/-companion/","title":"Index","text":"<p>//leakcanary/leakcanary/DetectLeaksAssert/Companion</p>"},{"location":"api/leakcanary/-detect-leaks-assert/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/leakcanary/-detect-leaks-assert/-companion/#functions","title":"Functions","text":"Name Summary update fun update(delegate: DetectLeaksAssert)"},{"location":"api/leakcanary/-detect-leaks-assert/-companion/update/","title":"Update","text":"<p>//leakcanary/leakcanary/DetectLeaksAssert/Companion/update</p>"},{"location":"api/leakcanary/-detect-leaks-assert/-companion/update/#update","title":"update","text":"<p>fun update(delegate: DetectLeaksAssert)</p>"},{"location":"api/leakcanary/-detect-leaks-interceptor/","title":"Index","text":"<p>//leakcanary/leakcanary/DetectLeaksInterceptor</p>"},{"location":"api/leakcanary/-detect-leaks-interceptor/#detectleaksinterceptor","title":"DetectLeaksInterceptor","text":"<p>fun interface DetectLeaksInterceptor</p> <p>Decides whether to dump &amp; analyze the heap to look for leaks in instrumentation tests. The implementation might block for a while to allow temporary leaks to be flushed out, as those aren\u2019t that interesting to report and heap analysis increases test duration significantly.</p>"},{"location":"api/leakcanary/-detect-leaks-interceptor/#functions","title":"Functions","text":"Name Summary waitUntilReadyForHeapAnalysis abstract fun waitUntilReadyForHeapAnalysis(): HeapAnalysisDecision"},{"location":"api/leakcanary/-detect-leaks-interceptor/#inheritors","title":"Inheritors","text":"Name AndroidDetectLeaksInterceptor"},{"location":"api/leakcanary/-detect-leaks-interceptor/wait-until-ready-for-heap-analysis/","title":"Wait until ready for heap analysis","text":"<p>//leakcanary/leakcanary/DetectLeaksInterceptor/waitUntilReadyForHeapAnalysis</p>"},{"location":"api/leakcanary/-detect-leaks-interceptor/wait-until-ready-for-heap-analysis/#waituntilreadyforheapanalysis","title":"waitUntilReadyForHeapAnalysis","text":"<p>abstract fun waitUntilReadyForHeapAnalysis(): HeapAnalysisDecision</p>"},{"location":"api/leakcanary/-event-listener/","title":"Index","text":"<p>//leakcanary/leakcanary/EventListener</p>"},{"location":"api/leakcanary/-event-listener/#eventlistener","title":"EventListener","text":"<p>fun interface EventListener</p>"},{"location":"api/leakcanary/-event-listener/#types","title":"Types","text":"Name Summary Event sealed class Event : SerializableNote: Event is Serializable for convenience but we currently make no guarantee that the Serialization is backward / forward compatible across LeakCanary versions, so plan accordingly. This is convenient for passing events around processes, and shouldn\u2019t be used to store them."},{"location":"api/leakcanary/-event-listener/#functions","title":"Functions","text":"Name Summary onEvent abstract fun onEvent(event: EventListener.Event)onEvent is always called from the thread the events are emitted from, which is documented for each event. This enables you to potentially block a chain of events, waiting for some pre work to be done."},{"location":"api/leakcanary/-event-listener/#inheritors","title":"Inheritors","text":"Name BackgroundThreadHeapAnalyzer LazyForwardingEventListener LogcatEventListener NotificationEventListener RemoteWorkManagerHeapAnalyzer ToastEventListener TvEventListener WorkManagerHeapAnalyzer"},{"location":"api/leakcanary/-event-listener/on-event/","title":"On event","text":"<p>//leakcanary/leakcanary/EventListener/onEvent</p>"},{"location":"api/leakcanary/-event-listener/on-event/#onevent","title":"onEvent","text":"<p>abstract fun onEvent(event: EventListener.Event)</p> <p>onEvent is always called from the thread the events are emitted from, which is documented for each event. This enables you to potentially block a chain of events, waiting for some pre work to be done.</p>"},{"location":"api/leakcanary/-event-listener/-event/","title":"Index","text":"<p>//leakcanary/leakcanary/EventListener/Event</p>"},{"location":"api/leakcanary/-event-listener/-event/#event","title":"Event","text":"<p>sealed class Event : Serializable</p> <p>Note: Event is Serializable for convenience but we currently make no guarantee that the Serialization is backward / forward compatible across LeakCanary versions, so plan accordingly. This is convenient for passing events around processes, and shouldn\u2019t be used to store them.</p>"},{"location":"api/leakcanary/-event-listener/-event/#types","title":"Types","text":"Name Summary DumpingHeap class DumpingHeap(val uniqueId: String) : EventListener.EventSent from the \"LeakCanary-Heap-Dump\" HandlerThread. HeapAnalysisDone sealed class HeapAnalysisDone&lt;T : HeapAnalysis&gt; : EventListener.EventSent from the thread performing the analysis. HeapAnalysisProgress class HeapAnalysisProgress(val uniqueId: String, val step: OnAnalysisProgressListener.Step, val progressPercent: Double) : EventListener.EventprogressPercent is a value between 0..1 HeapDump class HeapDump(val uniqueId: String, val file: File, val durationMillis: Long, val reason: String) : EventListener.EventSent from the \"LeakCanary-Heap-Dump\" HandlerThread. HeapDumpFailed class HeapDumpFailed(val uniqueId: String, val exception: Throwable, val willRetryLater: Boolean) : EventListener.EventSent from the \"LeakCanary-Heap-Dump\" HandlerThread."},{"location":"api/leakcanary/-event-listener/-event/#properties","title":"Properties","text":"Name Summary uniqueId val uniqueId: StringUnique identifier for a related chain of event. The identifier for the events that run before HeapDump gets reset right before HeapDump is sent."},{"location":"api/leakcanary/-event-listener/-event/#inheritors","title":"Inheritors","text":"Name DumpingHeap HeapDump HeapDumpFailed HeapAnalysisProgress HeapAnalysisDone"},{"location":"api/leakcanary/-event-listener/-event/unique-id/","title":"Unique id","text":"<p>//leakcanary/leakcanary/EventListener/Event/uniqueId</p>"},{"location":"api/leakcanary/-event-listener/-event/unique-id/#uniqueid","title":"uniqueId","text":"<p>val uniqueId: String</p> <p>Unique identifier for a related chain of event. The identifier for the events that run before HeapDump gets reset right before HeapDump is sent.</p>"},{"location":"api/leakcanary/-event-listener/-event/-dumping-heap/","title":"Index","text":"<p>//leakcanary/leakcanary/EventListener/Event/DumpingHeap</p>"},{"location":"api/leakcanary/-event-listener/-event/-dumping-heap/#dumpingheap","title":"DumpingHeap","text":"<p>class DumpingHeap(val uniqueId: String) : EventListener.Event</p> <p>Sent from the \"LeakCanary-Heap-Dump\" HandlerThread.</p>"},{"location":"api/leakcanary/-event-listener/-event/-dumping-heap/#constructors","title":"Constructors","text":"DumpingHeap fun DumpingHeap(uniqueId: String)"},{"location":"api/leakcanary/-event-listener/-event/-dumping-heap/#properties","title":"Properties","text":"Name Summary uniqueId val uniqueId: StringUnique identifier for a related chain of event. The identifier for the events that run before HeapDump gets reset right before HeapDump is sent."},{"location":"api/leakcanary/-event-listener/-event/-dumping-heap/-dumping-heap/","title":"dumping heap","text":"<p>//leakcanary/leakcanary/EventListener/Event/DumpingHeap/DumpingHeap</p>"},{"location":"api/leakcanary/-event-listener/-event/-dumping-heap/-dumping-heap/#dumpingheap","title":"DumpingHeap","text":"<p>fun DumpingHeap(uniqueId: String)</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/","title":"Index","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapAnalysisDone</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/#heapanalysisdone","title":"HeapAnalysisDone","text":"<p>sealed class HeapAnalysisDone&lt;T : HeapAnalysis&gt; : EventListener.Event</p> <p>Sent from the thread performing the analysis.</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/#types","title":"Types","text":"Name Summary HeapAnalysisFailed class HeapAnalysisFailed(uniqueId: String, heapAnalysis: HeapAnalysisFailure, showIntent: Intent) : EventListener.Event.HeapAnalysisDone&lt;HeapAnalysisFailure&gt; HeapAnalysisSucceeded class HeapAnalysisSucceeded(uniqueId: String, heapAnalysis: HeapAnalysisSuccess, val unreadLeakSignatures: Set&lt;String&gt;, showIntent: Intent) : EventListener.Event.HeapAnalysisDone&lt;HeapAnalysisSuccess&gt;"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/#properties","title":"Properties","text":"Name Summary heapAnalysis val heapAnalysis: T showIntent val showIntent: Intent uniqueId val uniqueId: StringUnique identifier for a related chain of event. The identifier for the events that run before HeapDump gets reset right before HeapDump is sent."},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/#inheritors","title":"Inheritors","text":"Name HeapAnalysisSucceeded HeapAnalysisFailed"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/heap-analysis/","title":"Heap analysis","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapAnalysisDone/heapAnalysis</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/heap-analysis/#heapanalysis","title":"heapAnalysis","text":"<p>val heapAnalysis: T</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/show-intent/","title":"Show intent","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapAnalysisDone/showIntent</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/show-intent/#showintent","title":"showIntent","text":"<p>val showIntent: Intent</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-failed/","title":"Index","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapAnalysisDone/HeapAnalysisFailed</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-failed/#heapanalysisfailed","title":"HeapAnalysisFailed","text":"<p>class HeapAnalysisFailed(uniqueId: String, heapAnalysis: HeapAnalysisFailure, showIntent: Intent) : EventListener.Event.HeapAnalysisDone&lt;HeapAnalysisFailure&gt;</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-failed/#constructors","title":"Constructors","text":"HeapAnalysisFailed fun HeapAnalysisFailed(uniqueId: String, heapAnalysis: HeapAnalysisFailure, showIntent: Intent)"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-failed/#properties","title":"Properties","text":"Name Summary heapAnalysis val heapAnalysis: HeapAnalysisFailure showIntent val showIntent: Intent uniqueId val uniqueId: StringUnique identifier for a related chain of event. The identifier for the events that run before HeapDump gets reset right before HeapDump is sent."},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-failed/-heap-analysis-failed/","title":"heap analysis failed","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapAnalysisDone/HeapAnalysisFailed/HeapAnalysisFailed</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-failed/-heap-analysis-failed/#heapanalysisfailed","title":"HeapAnalysisFailed","text":"<p>fun HeapAnalysisFailed(uniqueId: String, heapAnalysis: HeapAnalysisFailure, showIntent: Intent)</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-succeeded/","title":"Index","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapAnalysisDone/HeapAnalysisSucceeded</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-succeeded/#heapanalysissucceeded","title":"HeapAnalysisSucceeded","text":"<p>class HeapAnalysisSucceeded(uniqueId: String, heapAnalysis: HeapAnalysisSuccess, val unreadLeakSignatures: Set&lt;String&gt;, showIntent: Intent) : EventListener.Event.HeapAnalysisDone&lt;HeapAnalysisSuccess&gt;</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-succeeded/#constructors","title":"Constructors","text":"HeapAnalysisSucceeded fun HeapAnalysisSucceeded(uniqueId: String, heapAnalysis: HeapAnalysisSuccess, unreadLeakSignatures: Set&lt;String&gt;, showIntent: Intent)"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-succeeded/#properties","title":"Properties","text":"Name Summary heapAnalysis val heapAnalysis: HeapAnalysisSuccess showIntent val showIntent: Intent uniqueId val uniqueId: StringUnique identifier for a related chain of event. The identifier for the events that run before HeapDump gets reset right before HeapDump is sent. unreadLeakSignatures val unreadLeakSignatures: Set&lt;String&gt;"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-succeeded/-heap-analysis-succeeded/","title":"heap analysis succeeded","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapAnalysisDone/HeapAnalysisSucceeded/HeapAnalysisSucceeded</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-succeeded/-heap-analysis-succeeded/#heapanalysissucceeded","title":"HeapAnalysisSucceeded","text":"<p>fun HeapAnalysisSucceeded(uniqueId: String, heapAnalysis: HeapAnalysisSuccess, unreadLeakSignatures: Set&lt;String&gt;, showIntent: Intent)</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-succeeded/unread-leak-signatures/","title":"Unread leak signatures","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapAnalysisDone/HeapAnalysisSucceeded/unreadLeakSignatures</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-succeeded/unread-leak-signatures/#unreadleaksignatures","title":"unreadLeakSignatures","text":"<p>val unreadLeakSignatures: Set&lt;String&gt;</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-progress/","title":"Index","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapAnalysisProgress</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-progress/#heapanalysisprogress","title":"HeapAnalysisProgress","text":"<p>class HeapAnalysisProgress(val uniqueId: String, val step: OnAnalysisProgressListener.Step, val progressPercent: Double) : EventListener.Event</p> <p>progressPercent is a value between 0..1</p> <p>Sent from the thread performing the analysis.</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-progress/#constructors","title":"Constructors","text":"HeapAnalysisProgress fun HeapAnalysisProgress(uniqueId: String, step: OnAnalysisProgressListener.Step, progressPercent: Double)"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-progress/#properties","title":"Properties","text":"Name Summary progressPercent val progressPercent: Double step val step: OnAnalysisProgressListener.Step uniqueId val uniqueId: StringUnique identifier for a related chain of event. The identifier for the events that run before HeapDump gets reset right before HeapDump is sent."},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-progress/-heap-analysis-progress/","title":"heap analysis progress","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapAnalysisProgress/HeapAnalysisProgress</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-progress/-heap-analysis-progress/#heapanalysisprogress","title":"HeapAnalysisProgress","text":"<p>fun HeapAnalysisProgress(uniqueId: String, step: OnAnalysisProgressListener.Step, progressPercent: Double)</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-progress/progress-percent/","title":"Progress percent","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapAnalysisProgress/progressPercent</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-progress/progress-percent/#progresspercent","title":"progressPercent","text":"<p>val progressPercent: Double</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-progress/step/","title":"Step","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapAnalysisProgress/step</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-analysis-progress/step/#step","title":"step","text":"<p>val step: OnAnalysisProgressListener.Step</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump/","title":"Index","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapDump</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump/#heapdump","title":"HeapDump","text":"<p>class HeapDump(val uniqueId: String, val file: File, val durationMillis: Long, val reason: String) : EventListener.Event</p> <p>Sent from the \"LeakCanary-Heap-Dump\" HandlerThread.</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump/#constructors","title":"Constructors","text":"HeapDump fun HeapDump(uniqueId: String, file: File, durationMillis: Long, reason: String)"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump/#properties","title":"Properties","text":"Name Summary durationMillis val durationMillis: Long file val file: File reason val reason: String uniqueId val uniqueId: StringUnique identifier for a related chain of event. The identifier for the events that run before HeapDump gets reset right before HeapDump is sent."},{"location":"api/leakcanary/-event-listener/-event/-heap-dump/-heap-dump/","title":"heap dump","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapDump/HeapDump</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump/-heap-dump/#heapdump","title":"HeapDump","text":"<p>fun HeapDump(uniqueId: String, file: File, durationMillis: Long, reason: String)</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump/duration-millis/","title":"Duration millis","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapDump/durationMillis</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump/duration-millis/#durationmillis","title":"durationMillis","text":"<p>val durationMillis: Long</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump/file/","title":"File","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapDump/file</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump/file/#file","title":"file","text":"<p>val file: File</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump/reason/","title":"Reason","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapDump/reason</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump/reason/#reason","title":"reason","text":"<p>val reason: String</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump-failed/","title":"Index","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapDumpFailed</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump-failed/#heapdumpfailed","title":"HeapDumpFailed","text":"<p>class HeapDumpFailed(val uniqueId: String, val exception: Throwable, val willRetryLater: Boolean) : EventListener.Event</p> <p>Sent from the \"LeakCanary-Heap-Dump\" HandlerThread.</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump-failed/#constructors","title":"Constructors","text":"HeapDumpFailed fun HeapDumpFailed(uniqueId: String, exception: Throwable, willRetryLater: Boolean)"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump-failed/#properties","title":"Properties","text":"Name Summary exception val exception: Throwable uniqueId val uniqueId: StringUnique identifier for a related chain of event. The identifier for the events that run before HeapDump gets reset right before HeapDump is sent. willRetryLater val willRetryLater: Boolean"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump-failed/-heap-dump-failed/","title":"heap dump failed","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapDumpFailed/HeapDumpFailed</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump-failed/-heap-dump-failed/#heapdumpfailed","title":"HeapDumpFailed","text":"<p>fun HeapDumpFailed(uniqueId: String, exception: Throwable, willRetryLater: Boolean)</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump-failed/exception/","title":"Exception","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapDumpFailed/exception</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump-failed/exception/#exception","title":"exception","text":"<p>val exception: Throwable</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump-failed/will-retry-later/","title":"Will retry later","text":"<p>//leakcanary/leakcanary/EventListener/Event/HeapDumpFailed/willRetryLater</p>"},{"location":"api/leakcanary/-event-listener/-event/-heap-dump-failed/will-retry-later/#willretrylater","title":"willRetryLater","text":"<p>val willRetryLater: Boolean</p>"},{"location":"api/leakcanary/-fragment-and-view-model-watcher/","title":"Index","text":"<p>//leakcanary/leakcanary/FragmentAndViewModelWatcher</p>"},{"location":"api/leakcanary/-fragment-and-view-model-watcher/#fragmentandviewmodelwatcher","title":"FragmentAndViewModelWatcher","text":"<p>class FragmentAndViewModelWatcher(application: Application, reachabilityWatcher: ReachabilityWatcher) : InstallableWatcher</p> <p>Expects:</p> <ul> <li>Fragments (Support Library, Android X and AOSP) to become weakly reachable soon after they receive the Fragment#onDestroy() callback.</li> <li>Fragment views (Support Library, Android X and AOSP) to become weakly reachable soon after fragments receive the Fragment#onDestroyView() callback.</li> <li>Android X view models (both activity and fragment view models) to become weakly reachable soon after they received the ViewModel#onCleared() callback.</li> </ul>"},{"location":"api/leakcanary/-fragment-and-view-model-watcher/#constructors","title":"Constructors","text":"FragmentAndViewModelWatcher fun FragmentAndViewModelWatcher(application: Application, reachabilityWatcher: ReachabilityWatcher)"},{"location":"api/leakcanary/-fragment-and-view-model-watcher/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/leakcanary/-fragment-and-view-model-watcher/#functions","title":"Functions","text":"Name Summary install open override fun install() uninstall open override fun uninstall()"},{"location":"api/leakcanary/-fragment-and-view-model-watcher/-fragment-and-view-model-watcher/","title":"fragment and view model watcher","text":"<p>//leakcanary/leakcanary/FragmentAndViewModelWatcher/FragmentAndViewModelWatcher</p>"},{"location":"api/leakcanary/-fragment-and-view-model-watcher/-fragment-and-view-model-watcher/#fragmentandviewmodelwatcher","title":"FragmentAndViewModelWatcher","text":"<p>fun FragmentAndViewModelWatcher(application: Application, reachabilityWatcher: ReachabilityWatcher)</p>"},{"location":"api/leakcanary/-fragment-and-view-model-watcher/install/","title":"Install","text":"<p>//leakcanary/leakcanary/FragmentAndViewModelWatcher/install</p>"},{"location":"api/leakcanary/-fragment-and-view-model-watcher/install/#install","title":"install","text":"<p>open override fun install()</p>"},{"location":"api/leakcanary/-fragment-and-view-model-watcher/uninstall/","title":"Uninstall","text":"<p>//leakcanary/leakcanary/FragmentAndViewModelWatcher/uninstall</p>"},{"location":"api/leakcanary/-fragment-and-view-model-watcher/uninstall/#uninstall","title":"uninstall","text":"<p>open override fun uninstall()</p>"},{"location":"api/leakcanary/-fragment-and-view-model-watcher/-companion/","title":"Index","text":"<p>//leakcanary/leakcanary/FragmentAndViewModelWatcher/Companion</p>"},{"location":"api/leakcanary/-fragment-and-view-model-watcher/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/leakcanary/-gc-trigger/","title":"Index","text":"<p>//leakcanary/leakcanary/GcTrigger</p>"},{"location":"api/leakcanary/-gc-trigger/#gctrigger","title":"GcTrigger","text":"<p>fun interface GcTrigger</p> <p>GcTrigger is used to try triggering garbage collection and enqueuing KeyedWeakReference into the associated java.lang.ref.ReferenceQueue. The default implementation Default comes from AOSP.</p>"},{"location":"api/leakcanary/-gc-trigger/#types","title":"Types","text":"Name Summary Default object Default : GcTriggerDefault implementation of GcTrigger."},{"location":"api/leakcanary/-gc-trigger/#functions","title":"Functions","text":"Name Summary runGc abstract fun runGc()Attempts to run garbage collection."},{"location":"api/leakcanary/-gc-trigger/#inheritors","title":"Inheritors","text":"Name Default"},{"location":"api/leakcanary/-gc-trigger/run-gc/","title":"Run gc","text":"<p>//leakcanary/leakcanary/GcTrigger/runGc</p>"},{"location":"api/leakcanary/-gc-trigger/run-gc/#rungc","title":"runGc","text":"<p>abstract fun runGc()</p> <p>Attempts to run garbage collection.</p>"},{"location":"api/leakcanary/-gc-trigger/-default/","title":"Index","text":"<p>//leakcanary/leakcanary/GcTrigger/Default</p>"},{"location":"api/leakcanary/-gc-trigger/-default/#default","title":"Default","text":"<p>object Default : GcTrigger</p> <p>Default implementation of GcTrigger.</p>"},{"location":"api/leakcanary/-gc-trigger/-default/#functions","title":"Functions","text":"Name Summary runGc open override fun runGc()Attempts to run garbage collection."},{"location":"api/leakcanary/-gc-trigger/-default/run-gc/","title":"Run gc","text":"<p>//leakcanary/leakcanary/GcTrigger/Default/runGc</p>"},{"location":"api/leakcanary/-gc-trigger/-default/run-gc/#rungc","title":"runGc","text":"<p>open override fun runGc()</p> <p>Attempts to run garbage collection.</p>"},{"location":"api/leakcanary/-good-android-version-interceptor/","title":"Index","text":"<p>//leakcanary/leakcanary/GoodAndroidVersionInterceptor</p>"},{"location":"api/leakcanary/-good-android-version-interceptor/#goodandroidversioninterceptor","title":"GoodAndroidVersionInterceptor","text":"<p>class GoodAndroidVersionInterceptor : HeapAnalysisInterceptor</p>"},{"location":"api/leakcanary/-good-android-version-interceptor/#constructors","title":"Constructors","text":"GoodAndroidVersionInterceptor fun GoodAndroidVersionInterceptor()"},{"location":"api/leakcanary/-good-android-version-interceptor/#functions","title":"Functions","text":"Name Summary intercept open override fun intercept(chain: HeapAnalysisInterceptor.Chain): HeapAnalysisJob.Result"},{"location":"api/leakcanary/-good-android-version-interceptor/-good-android-version-interceptor/","title":"good android version interceptor","text":"<p>//leakcanary/leakcanary/GoodAndroidVersionInterceptor/GoodAndroidVersionInterceptor</p>"},{"location":"api/leakcanary/-good-android-version-interceptor/-good-android-version-interceptor/#goodandroidversioninterceptor","title":"GoodAndroidVersionInterceptor","text":"<p>fun GoodAndroidVersionInterceptor()</p>"},{"location":"api/leakcanary/-good-android-version-interceptor/intercept/","title":"Intercept","text":"<p>//leakcanary/leakcanary/GoodAndroidVersionInterceptor/intercept</p>"},{"location":"api/leakcanary/-good-android-version-interceptor/intercept/#intercept","title":"intercept","text":"<p>open override fun intercept(chain: HeapAnalysisInterceptor.Chain): HeapAnalysisJob.Result</p>"},{"location":"api/leakcanary/-heap-analysis-client/","title":"Index","text":"<p>//leakcanary/leakcanary/HeapAnalysisClient</p>"},{"location":"api/leakcanary/-heap-analysis-client/#heapanalysisclient","title":"HeapAnalysisClient","text":"<p>class HeapAnalysisClient(heapDumpDirectoryProvider: () -&gt; File, config: HeapAnalysisConfig, interceptors: List&lt;HeapAnalysisInterceptor&gt;)</p>"},{"location":"api/leakcanary/-heap-analysis-client/#constructors","title":"Constructors","text":"HeapAnalysisClient fun HeapAnalysisClient(heapDumpDirectoryProvider: () -&gt; File, config: HeapAnalysisConfig, interceptors: List&lt;HeapAnalysisInterceptor&gt;)"},{"location":"api/leakcanary/-heap-analysis-client/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/leakcanary/-heap-analysis-client/#functions","title":"Functions","text":"Name Summary deleteHeapDumpFiles fun deleteHeapDumpFiles() newJob fun newJob(context: JobContext = JobContext()): HeapAnalysisJob"},{"location":"api/leakcanary/-heap-analysis-client/-heap-analysis-client/","title":"heap analysis client","text":"<p>//leakcanary/leakcanary/HeapAnalysisClient/HeapAnalysisClient</p>"},{"location":"api/leakcanary/-heap-analysis-client/-heap-analysis-client/#heapanalysisclient","title":"HeapAnalysisClient","text":"<p>fun HeapAnalysisClient(heapDumpDirectoryProvider: () -&gt; File, config: HeapAnalysisConfig, interceptors: List&lt;HeapAnalysisInterceptor&gt;)</p>"},{"location":"api/leakcanary/-heap-analysis-client/delete-heap-dump-files/","title":"Delete heap dump files","text":"<p>//leakcanary/leakcanary/HeapAnalysisClient/deleteHeapDumpFiles</p>"},{"location":"api/leakcanary/-heap-analysis-client/delete-heap-dump-files/#deleteheapdumpfiles","title":"deleteHeapDumpFiles","text":"<p>fun deleteHeapDumpFiles()</p>"},{"location":"api/leakcanary/-heap-analysis-client/new-job/","title":"New job","text":"<p>//leakcanary/leakcanary/HeapAnalysisClient/newJob</p>"},{"location":"api/leakcanary/-heap-analysis-client/new-job/#newjob","title":"newJob","text":"<p>fun newJob(context: JobContext = JobContext()): HeapAnalysisJob</p>"},{"location":"api/leakcanary/-heap-analysis-client/-companion/","title":"Index","text":"<p>//leakcanary/leakcanary/HeapAnalysisClient/Companion</p>"},{"location":"api/leakcanary/-heap-analysis-client/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/leakcanary/-heap-analysis-client/-companion/#functions","title":"Functions","text":"Name Summary defaultInterceptors fun defaultInterceptors(application: Application): List&lt;HeapAnalysisInterceptor&gt;"},{"location":"api/leakcanary/-heap-analysis-client/-companion/default-interceptors/","title":"Default interceptors","text":"<p>//leakcanary/leakcanary/HeapAnalysisClient/Companion/defaultInterceptors</p>"},{"location":"api/leakcanary/-heap-analysis-client/-companion/default-interceptors/#defaultinterceptors","title":"defaultInterceptors","text":"<p>fun defaultInterceptors(application: Application): List&lt;HeapAnalysisInterceptor&gt;</p>"},{"location":"api/leakcanary/-heap-analysis-config/","title":"Index","text":"<p>//leakcanary/leakcanary/HeapAnalysisConfig</p>"},{"location":"api/leakcanary/-heap-analysis-config/#heapanalysisconfig","title":"HeapAnalysisConfig","text":"<p>data class HeapAnalysisConfig(val referenceMatchers: List&lt;ReferenceMatcher&gt; = AndroidReferenceMatchers.appDefaults, val objectInspectors: List&lt;ObjectInspector&gt; = AndroidObjectInspectors.appDefaults, val metadataExtractor: MetadataExtractor = AndroidMetadataExtractor, val computeRetainedHeapSize: Boolean = true, val leakingObjectFinder: LeakingObjectFinder = FilteringLeakingObjectFinder(     AndroidObjectInspectors.appLeakingObjectFilters   ), val stripHeapDump: Boolean = false, val proguardMappingProvider: () -&gt; ProguardMapping? = { null })</p>"},{"location":"api/leakcanary/-heap-analysis-config/#constructors","title":"Constructors","text":"HeapAnalysisConfig fun HeapAnalysisConfig(referenceMatchers: List&lt;ReferenceMatcher&gt; = AndroidReferenceMatchers.appDefaults, objectInspectors: List&lt;ObjectInspector&gt; = AndroidObjectInspectors.appDefaults, metadataExtractor: MetadataExtractor = AndroidMetadataExtractor, computeRetainedHeapSize: Boolean = true, leakingObjectFinder: LeakingObjectFinder = FilteringLeakingObjectFinder(     AndroidObjectInspectors.appLeakingObjectFilters   ), stripHeapDump: Boolean = false, proguardMappingProvider: () -&gt; ProguardMapping? = { null })"},{"location":"api/leakcanary/-heap-analysis-config/#properties","title":"Properties","text":"Name Summary computeRetainedHeapSize val computeRetainedHeapSize: Boolean = trueWhether to compute the retained heap size, which is the total number of bytes in memory that would be reclaimed if the detected leaks didn\u2019t happen. This includes native memory associated to Java objects (e.g. Android bitmaps). leakingObjectFinder val leakingObjectFinder: LeakingObjectFinderFinds the objects that are leaking, for which LeakCanary will compute leak traces. metadataExtractor val metadataExtractor: MetadataExtractorExtracts metadata from a hprof to be reported in shark.HeapAnalysisSuccess.metadata. Called on a background thread during heap analysis. objectInspectors val objectInspectors: List&lt;ObjectInspector&gt;List of ObjectInspector that provide LeakCanary with insights about objects found in the heap. You can create your own ObjectInspector implementations, and also add a shark.AppSingletonInspector instance created with the list of internal singletons. proguardMappingProvider val proguardMappingProvider: () -&gt; ProguardMapping? referenceMatchers val referenceMatchers: List&lt;ReferenceMatcher&gt;Known patterns of references in the heap, added here either to ignore them (IgnoredReferenceMatcher) or to mark them as library leaks (LibraryLeakReferenceMatcher). stripHeapDump val stripHeapDump: Boolean = falseWhether the first step after a heap dump should be to replace the content of all arrays with zeroes. This increases the overall processing time but limits the amount of time the heap dump exists on disk with potential PII."},{"location":"api/leakcanary/-heap-analysis-config/-heap-analysis-config/","title":"heap analysis config","text":"<p>//leakcanary/leakcanary/HeapAnalysisConfig/HeapAnalysisConfig</p>"},{"location":"api/leakcanary/-heap-analysis-config/-heap-analysis-config/#heapanalysisconfig","title":"HeapAnalysisConfig","text":"<p>fun HeapAnalysisConfig(referenceMatchers: List&lt;ReferenceMatcher&gt; = AndroidReferenceMatchers.appDefaults, objectInspectors: List&lt;ObjectInspector&gt; = AndroidObjectInspectors.appDefaults, metadataExtractor: MetadataExtractor = AndroidMetadataExtractor, computeRetainedHeapSize: Boolean = true, leakingObjectFinder: LeakingObjectFinder = FilteringLeakingObjectFinder(     AndroidObjectInspectors.appLeakingObjectFilters   ), stripHeapDump: Boolean = false, proguardMappingProvider: () -&gt; ProguardMapping? = { null })</p>"},{"location":"api/leakcanary/-heap-analysis-config/compute-retained-heap-size/","title":"Compute retained heap size","text":"<p>//leakcanary/leakcanary/HeapAnalysisConfig/computeRetainedHeapSize</p>"},{"location":"api/leakcanary/-heap-analysis-config/compute-retained-heap-size/#computeretainedheapsize","title":"computeRetainedHeapSize","text":"<p>val computeRetainedHeapSize: Boolean = true</p> <p>Whether to compute the retained heap size, which is the total number of bytes in memory that would be reclaimed if the detected leaks didn\u2019t happen. This includes native memory associated to Java objects (e.g. Android bitmaps).</p> <p>Computing the retained heap size can slow down the analysis because it requires navigating from GC roots through the entire object graph, whereas shark.HeapAnalyzer would otherwise stop as soon as all leaking instances are found.</p> <p>Defaults to true.</p>"},{"location":"api/leakcanary/-heap-analysis-config/leaking-object-finder/","title":"Leaking object finder","text":"<p>//leakcanary/leakcanary/HeapAnalysisConfig/leakingObjectFinder</p>"},{"location":"api/leakcanary/-heap-analysis-config/leaking-object-finder/#leakingobjectfinder","title":"leakingObjectFinder","text":"<p>val leakingObjectFinder: LeakingObjectFinder</p> <p>Finds the objects that are leaking, for which LeakCanary will compute leak traces.</p> <p>Defaults to a FilteringLeakingObjectFinder that scans all objects in the heap dump and delegates the decision to AndroidObjectInspectors.appLeakingObjectFilters.</p>"},{"location":"api/leakcanary/-heap-analysis-config/metadata-extractor/","title":"Metadata extractor","text":"<p>//leakcanary/leakcanary/HeapAnalysisConfig/metadataExtractor</p>"},{"location":"api/leakcanary/-heap-analysis-config/metadata-extractor/#metadataextractor","title":"metadataExtractor","text":"<p>val metadataExtractor: MetadataExtractor</p> <p>Extracts metadata from a hprof to be reported in shark.HeapAnalysisSuccess.metadata. Called on a background thread during heap analysis.</p> <p>Defaults to AndroidMetadataExtractor</p>"},{"location":"api/leakcanary/-heap-analysis-config/object-inspectors/","title":"Object inspectors","text":"<p>//leakcanary/leakcanary/HeapAnalysisConfig/objectInspectors</p>"},{"location":"api/leakcanary/-heap-analysis-config/object-inspectors/#objectinspectors","title":"objectInspectors","text":"<p>val objectInspectors: List&lt;ObjectInspector&gt;</p> <p>List of ObjectInspector that provide LeakCanary with insights about objects found in the heap. You can create your own ObjectInspector implementations, and also add a shark.AppSingletonInspector instance created with the list of internal singletons.</p> <p>Defaults to AndroidObjectInspectors.appDefaults</p>"},{"location":"api/leakcanary/-heap-analysis-config/proguard-mapping-provider/","title":"Proguard mapping provider","text":"<p>//leakcanary/leakcanary/HeapAnalysisConfig/proguardMappingProvider</p>"},{"location":"api/leakcanary/-heap-analysis-config/proguard-mapping-provider/#proguardmappingprovider","title":"proguardMappingProvider","text":"<p>val proguardMappingProvider: () -&gt; ProguardMapping?</p>"},{"location":"api/leakcanary/-heap-analysis-config/reference-matchers/","title":"Reference matchers","text":"<p>//leakcanary/leakcanary/HeapAnalysisConfig/referenceMatchers</p>"},{"location":"api/leakcanary/-heap-analysis-config/reference-matchers/#referencematchers","title":"referenceMatchers","text":"<p>val referenceMatchers: List&lt;ReferenceMatcher&gt;</p> <p>Known patterns of references in the heap, added here either to ignore them (IgnoredReferenceMatcher) or to mark them as library leaks (LibraryLeakReferenceMatcher).</p> <p>When adding your own custom LibraryLeakReferenceMatcher instances, you\u2019ll most likely want to set LibraryLeakReferenceMatcher.patternApplies with a filter that checks for the Android OS version and manufacturer. The build information can be obtained by calling shark.AndroidBuildMirror.fromHeapGraph.</p> <p>Defaults to AndroidReferenceMatchers.appDefaults</p>"},{"location":"api/leakcanary/-heap-analysis-config/strip-heap-dump/","title":"Strip heap dump","text":"<p>//leakcanary/leakcanary/HeapAnalysisConfig/stripHeapDump</p>"},{"location":"api/leakcanary/-heap-analysis-config/strip-heap-dump/#stripheapdump","title":"stripHeapDump","text":"<p>val stripHeapDump: Boolean = false</p> <p>Whether the first step after a heap dump should be to replace the content of all arrays with zeroes. This increases the overall processing time but limits the amount of time the heap dump exists on disk with potential PII.</p>"},{"location":"api/leakcanary/-heap-analysis-decision/","title":"Index","text":"<p>//leakcanary/leakcanary/HeapAnalysisDecision</p>"},{"location":"api/leakcanary/-heap-analysis-decision/#heapanalysisdecision","title":"HeapAnalysisDecision","text":"<p>sealed class HeapAnalysisDecision</p>"},{"location":"api/leakcanary/-heap-analysis-decision/#types","title":"Types","text":"Name Summary AnalyzeHeap object AnalyzeHeap : HeapAnalysisDecision NoHeapAnalysis class NoHeapAnalysis(val reason: String) : HeapAnalysisDecision"},{"location":"api/leakcanary/-heap-analysis-decision/#inheritors","title":"Inheritors","text":"Name AnalyzeHeap NoHeapAnalysis"},{"location":"api/leakcanary/-heap-analysis-decision/-analyze-heap/","title":"Index","text":"<p>//leakcanary/leakcanary/HeapAnalysisDecision/AnalyzeHeap</p>"},{"location":"api/leakcanary/-heap-analysis-decision/-analyze-heap/#analyzeheap","title":"AnalyzeHeap","text":"<p>object AnalyzeHeap : HeapAnalysisDecision</p>"},{"location":"api/leakcanary/-heap-analysis-decision/-no-heap-analysis/","title":"Index","text":"<p>//leakcanary/leakcanary/HeapAnalysisDecision/NoHeapAnalysis</p>"},{"location":"api/leakcanary/-heap-analysis-decision/-no-heap-analysis/#noheapanalysis","title":"NoHeapAnalysis","text":"<p>class NoHeapAnalysis(val reason: String) : HeapAnalysisDecision</p>"},{"location":"api/leakcanary/-heap-analysis-decision/-no-heap-analysis/#constructors","title":"Constructors","text":"NoHeapAnalysis fun NoHeapAnalysis(reason: String)"},{"location":"api/leakcanary/-heap-analysis-decision/-no-heap-analysis/#properties","title":"Properties","text":"Name Summary reason val reason: String"},{"location":"api/leakcanary/-heap-analysis-decision/-no-heap-analysis/-no-heap-analysis/","title":"no heap analysis","text":"<p>//leakcanary/leakcanary/HeapAnalysisDecision/NoHeapAnalysis/NoHeapAnalysis</p>"},{"location":"api/leakcanary/-heap-analysis-decision/-no-heap-analysis/-no-heap-analysis/#noheapanalysis","title":"NoHeapAnalysis","text":"<p>fun NoHeapAnalysis(reason: String)</p>"},{"location":"api/leakcanary/-heap-analysis-decision/-no-heap-analysis/reason/","title":"Reason","text":"<p>//leakcanary/leakcanary/HeapAnalysisDecision/NoHeapAnalysis/reason</p>"},{"location":"api/leakcanary/-heap-analysis-decision/-no-heap-analysis/reason/#reason","title":"reason","text":"<p>val reason: String</p>"},{"location":"api/leakcanary/-heap-analysis-interceptor/","title":"Index","text":"<p>//leakcanary/leakcanary/HeapAnalysisInterceptor</p>"},{"location":"api/leakcanary/-heap-analysis-interceptor/#heapanalysisinterceptor","title":"HeapAnalysisInterceptor","text":"<p>fun interface HeapAnalysisInterceptor</p>"},{"location":"api/leakcanary/-heap-analysis-interceptor/#types","title":"Types","text":"Name Summary Chain interface Chain"},{"location":"api/leakcanary/-heap-analysis-interceptor/#functions","title":"Functions","text":"Name Summary intercept abstract fun intercept(chain: HeapAnalysisInterceptor.Chain): HeapAnalysisJob.Result"},{"location":"api/leakcanary/-heap-analysis-interceptor/#inheritors","title":"Inheritors","text":"Name ConditionalInterceptor GoodAndroidVersionInterceptor MinimumDiskSpaceInterceptor MinimumElapsedSinceStartInterceptor MinimumMemoryInterceptor OncePerPeriodInterceptor SaveResourceIdsInterceptor"},{"location":"api/leakcanary/-heap-analysis-interceptor/intercept/","title":"Intercept","text":"<p>//leakcanary/leakcanary/HeapAnalysisInterceptor/intercept</p>"},{"location":"api/leakcanary/-heap-analysis-interceptor/intercept/#intercept","title":"intercept","text":"<p>abstract fun intercept(chain: HeapAnalysisInterceptor.Chain): HeapAnalysisJob.Result</p>"},{"location":"api/leakcanary/-heap-analysis-interceptor/-chain/","title":"Index","text":"<p>//leakcanary/leakcanary/HeapAnalysisInterceptor/Chain</p>"},{"location":"api/leakcanary/-heap-analysis-interceptor/-chain/#chain","title":"Chain","text":"<p>interface Chain</p>"},{"location":"api/leakcanary/-heap-analysis-interceptor/-chain/#functions","title":"Functions","text":"Name Summary proceed abstract fun proceed(): HeapAnalysisJob.Result"},{"location":"api/leakcanary/-heap-analysis-interceptor/-chain/#properties","title":"Properties","text":"Name Summary job abstract val job: HeapAnalysisJob"},{"location":"api/leakcanary/-heap-analysis-interceptor/-chain/job/","title":"Job","text":"<p>//leakcanary/leakcanary/HeapAnalysisInterceptor/Chain/job</p>"},{"location":"api/leakcanary/-heap-analysis-interceptor/-chain/job/#job","title":"job","text":"<p>abstract val job: HeapAnalysisJob</p>"},{"location":"api/leakcanary/-heap-analysis-interceptor/-chain/proceed/","title":"Proceed","text":"<p>//leakcanary/leakcanary/HeapAnalysisInterceptor/Chain/proceed</p>"},{"location":"api/leakcanary/-heap-analysis-interceptor/-chain/proceed/#proceed","title":"proceed","text":"<p>abstract fun proceed(): HeapAnalysisJob.Result</p>"},{"location":"api/leakcanary/-heap-analysis-job/","title":"Index","text":"<p>//leakcanary/leakcanary/HeapAnalysisJob</p>"},{"location":"api/leakcanary/-heap-analysis-job/#heapanalysisjob","title":"HeapAnalysisJob","text":"<p>interface HeapAnalysisJob</p> <p>A HeapAnalysisJob represents a single prepared request to analyze the heap. It cannot be executed twice.</p>"},{"location":"api/leakcanary/-heap-analysis-job/#types","title":"Types","text":"Name Summary Result sealed class Result"},{"location":"api/leakcanary/-heap-analysis-job/#functions","title":"Functions","text":"Name Summary cancel abstract fun cancel(cancelReason: String)Cancels the job, if possible. Jobs that are already complete cannot be canceled. execute abstract fun execute(): HeapAnalysisJob.ResultStarts the analysis job immediately, and blocks until a result is available."},{"location":"api/leakcanary/-heap-analysis-job/#properties","title":"Properties","text":"Name Summary canceled abstract val canceled: Booleantrue of cancel has been called or if an HeapAnalysisInterceptor has returned Result.Canceled from HeapAnalysisInterceptor.intercept. context abstract val context: JobContextIn memory store, mutable and thread safe. This allows passing data to interceptors. executed abstract val executed: Booleantrue if execute has been called. It is an error to call execute more than once."},{"location":"api/leakcanary/-heap-analysis-job/cancel/","title":"Cancel","text":"<p>//leakcanary/leakcanary/HeapAnalysisJob/cancel</p>"},{"location":"api/leakcanary/-heap-analysis-job/cancel/#cancel","title":"cancel","text":"<p>abstract fun cancel(cancelReason: String)</p> <p>Cancels the job, if possible. Jobs that are already complete cannot be canceled.</p>"},{"location":"api/leakcanary/-heap-analysis-job/canceled/","title":"Canceled","text":"<p>//leakcanary/leakcanary/HeapAnalysisJob/canceled</p>"},{"location":"api/leakcanary/-heap-analysis-job/canceled/#canceled","title":"canceled","text":"<p>abstract val canceled: Boolean</p> <p>true of cancel has been called or if an HeapAnalysisInterceptor has returned Result.Canceled from HeapAnalysisInterceptor.intercept.</p>"},{"location":"api/leakcanary/-heap-analysis-job/context/","title":"Context","text":"<p>//leakcanary/leakcanary/HeapAnalysisJob/context</p>"},{"location":"api/leakcanary/-heap-analysis-job/context/#context","title":"context","text":"<p>abstract val context: JobContext</p> <p>In memory store, mutable and thread safe. This allows passing data to interceptors.</p>"},{"location":"api/leakcanary/-heap-analysis-job/execute/","title":"Execute","text":"<p>//leakcanary/leakcanary/HeapAnalysisJob/execute</p>"},{"location":"api/leakcanary/-heap-analysis-job/execute/#execute","title":"execute","text":"<p>abstract fun execute(): HeapAnalysisJob.Result</p> <p>Starts the analysis job immediately, and blocks until a result is available.</p>"},{"location":"api/leakcanary/-heap-analysis-job/execute/#return","title":"Return","text":"<p>Either Result.Done if the analysis was attempted or Result.Canceled</p>"},{"location":"api/leakcanary/-heap-analysis-job/executed/","title":"Executed","text":"<p>//leakcanary/leakcanary/HeapAnalysisJob/executed</p>"},{"location":"api/leakcanary/-heap-analysis-job/executed/#executed","title":"executed","text":"<p>abstract val executed: Boolean</p> <p>true if execute has been called. It is an error to call execute more than once.</p>"},{"location":"api/leakcanary/-heap-analysis-job/-result/","title":"Index","text":"<p>//leakcanary/leakcanary/HeapAnalysisJob/Result</p>"},{"location":"api/leakcanary/-heap-analysis-job/-result/#result","title":"Result","text":"<p>sealed class Result</p>"},{"location":"api/leakcanary/-heap-analysis-job/-result/#types","title":"Types","text":"Name Summary Canceled data class Canceled(val cancelReason: String) : HeapAnalysisJob.Result Done data class Done(val analysis: HeapAnalysis, val stripHeapDumpDurationMillis: Long? = null) : HeapAnalysisJob.Result"},{"location":"api/leakcanary/-heap-analysis-job/-result/#inheritors","title":"Inheritors","text":"Name Done Canceled"},{"location":"api/leakcanary/-heap-analysis-job/-result/-canceled/","title":"Index","text":"<p>//leakcanary/leakcanary/HeapAnalysisJob/Result/Canceled</p>"},{"location":"api/leakcanary/-heap-analysis-job/-result/-canceled/#canceled","title":"Canceled","text":"<p>data class Canceled(val cancelReason: String) : HeapAnalysisJob.Result</p>"},{"location":"api/leakcanary/-heap-analysis-job/-result/-canceled/#constructors","title":"Constructors","text":"Canceled fun Canceled(cancelReason: String)"},{"location":"api/leakcanary/-heap-analysis-job/-result/-canceled/#properties","title":"Properties","text":"Name Summary cancelReason val cancelReason: String"},{"location":"api/leakcanary/-heap-analysis-job/-result/-canceled/-canceled/","title":"canceled","text":"<p>//leakcanary/leakcanary/HeapAnalysisJob/Result/Canceled/Canceled</p>"},{"location":"api/leakcanary/-heap-analysis-job/-result/-canceled/-canceled/#canceled","title":"Canceled","text":"<p>fun Canceled(cancelReason: String)</p>"},{"location":"api/leakcanary/-heap-analysis-job/-result/-canceled/cancel-reason/","title":"Cancel reason","text":"<p>//leakcanary/leakcanary/HeapAnalysisJob/Result/Canceled/cancelReason</p>"},{"location":"api/leakcanary/-heap-analysis-job/-result/-canceled/cancel-reason/#cancelreason","title":"cancelReason","text":"<p>val cancelReason: String</p>"},{"location":"api/leakcanary/-heap-analysis-job/-result/-done/","title":"Index","text":"<p>//leakcanary/leakcanary/HeapAnalysisJob/Result/Done</p>"},{"location":"api/leakcanary/-heap-analysis-job/-result/-done/#done","title":"Done","text":"<p>data class Done(val analysis: HeapAnalysis, val stripHeapDumpDurationMillis: Long? = null) : HeapAnalysisJob.Result</p>"},{"location":"api/leakcanary/-heap-analysis-job/-result/-done/#constructors","title":"Constructors","text":"Done fun Done(analysis: HeapAnalysis, stripHeapDumpDurationMillis: Long? = null)"},{"location":"api/leakcanary/-heap-analysis-job/-result/-done/#properties","title":"Properties","text":"Name Summary analysis val analysis: HeapAnalysis stripHeapDumpDurationMillis val stripHeapDumpDurationMillis: Long? = nullThe time spent stripping the hprof of any data if HeapAnalysisConfig.stripHeapDump is true, null otherwise."},{"location":"api/leakcanary/-heap-analysis-job/-result/-done/-done/","title":"done","text":"<p>//leakcanary/leakcanary/HeapAnalysisJob/Result/Done/Done</p>"},{"location":"api/leakcanary/-heap-analysis-job/-result/-done/-done/#done","title":"Done","text":"<p>fun Done(analysis: HeapAnalysis, stripHeapDumpDurationMillis: Long? = null)</p>"},{"location":"api/leakcanary/-heap-analysis-job/-result/-done/analysis/","title":"Analysis","text":"<p>//leakcanary/leakcanary/HeapAnalysisJob/Result/Done/analysis</p>"},{"location":"api/leakcanary/-heap-analysis-job/-result/-done/analysis/#analysis","title":"analysis","text":"<p>val analysis: HeapAnalysis</p>"},{"location":"api/leakcanary/-heap-analysis-job/-result/-done/strip-heap-dump-duration-millis/","title":"Strip heap dump duration millis","text":"<p>//leakcanary/leakcanary/HeapAnalysisJob/Result/Done/stripHeapDumpDurationMillis</p>"},{"location":"api/leakcanary/-heap-analysis-job/-result/-done/strip-heap-dump-duration-millis/#stripheapdumpdurationmillis","title":"stripHeapDumpDurationMillis","text":"<p>val stripHeapDumpDurationMillis: Long? = null</p> <p>The time spent stripping the hprof of any data if HeapAnalysisConfig.stripHeapDump is true, null otherwise.</p>"},{"location":"api/leakcanary/-heap-analysis-reporter/","title":"Index","text":"<p>//leakcanary/leakcanary/HeapAnalysisReporter</p>"},{"location":"api/leakcanary/-heap-analysis-reporter/#heapanalysisreporter","title":"HeapAnalysisReporter","text":"<p>fun interface HeapAnalysisReporter</p> <p>Reports the results of a heap analysis created by AndroidDetectLeaksAssert.</p>"},{"location":"api/leakcanary/-heap-analysis-reporter/#functions","title":"Functions","text":"Name Summary reportHeapAnalysis abstract fun reportHeapAnalysis(heapAnalysis: HeapAnalysis)"},{"location":"api/leakcanary/-heap-analysis-reporter/report-heap-analysis/","title":"Report heap analysis","text":"<p>//leakcanary/leakcanary/HeapAnalysisReporter/reportHeapAnalysis</p>"},{"location":"api/leakcanary/-heap-analysis-reporter/report-heap-analysis/#reportheapanalysis","title":"reportHeapAnalysis","text":"<p>abstract fun reportHeapAnalysis(heapAnalysis: HeapAnalysis)</p>"},{"location":"api/leakcanary/-heap-dumper/","title":"Index","text":"<p>//leakcanary/leakcanary/HeapDumper</p>"},{"location":"api/leakcanary/-heap-dumper/#heapdumper","title":"HeapDumper","text":"<p>fun interface HeapDumper</p>"},{"location":"api/leakcanary/-heap-dumper/#functions","title":"Functions","text":"Name Summary dumpHeap abstract fun dumpHeap(heapDumpFile: File)Dumps the heap. The implementation is expected to be blocking until the heap is dumped or heap dumping failed."},{"location":"api/leakcanary/-heap-dumper/#inheritors","title":"Inheritors","text":"Name AndroidDebugHeapDumper"},{"location":"api/leakcanary/-heap-dumper/dump-heap/","title":"Dump heap","text":"<p>//leakcanary/leakcanary/HeapDumper/dumpHeap</p>"},{"location":"api/leakcanary/-heap-dumper/dump-heap/#dumpheap","title":"dumpHeap","text":"<p>abstract fun dumpHeap(heapDumpFile: File)</p> <p>Dumps the heap. The implementation is expected to be blocking until the heap is dumped or heap dumping failed.</p> <p>Implementations can throw a runtime exception if heap dumping failed.</p>"},{"location":"api/leakcanary/-installable-watcher/","title":"Index","text":"<p>//leakcanary/leakcanary/InstallableWatcher</p>"},{"location":"api/leakcanary/-installable-watcher/#installablewatcher","title":"InstallableWatcher","text":"<p>interface InstallableWatcher</p>"},{"location":"api/leakcanary/-installable-watcher/#functions","title":"Functions","text":"Name Summary install abstract fun install() uninstall abstract fun uninstall()"},{"location":"api/leakcanary/-installable-watcher/#inheritors","title":"Inheritors","text":"Name ActivityWatcher FragmentAndViewModelWatcher RootViewWatcher ServiceWatcher"},{"location":"api/leakcanary/-installable-watcher/install/","title":"Install","text":"<p>//leakcanary/leakcanary/InstallableWatcher/install</p>"},{"location":"api/leakcanary/-installable-watcher/install/#install","title":"install","text":"<p>abstract fun install()</p>"},{"location":"api/leakcanary/-installable-watcher/uninstall/","title":"Uninstall","text":"<p>//leakcanary/leakcanary/InstallableWatcher/uninstall</p>"},{"location":"api/leakcanary/-installable-watcher/uninstall/#uninstall","title":"uninstall","text":"<p>abstract fun uninstall()</p>"},{"location":"api/leakcanary/-job-context/","title":"Index","text":"<p>//leakcanary/leakcanary/JobContext</p>"},{"location":"api/leakcanary/-job-context/#jobcontext","title":"JobContext","text":"<p>class JobContext(val starter: Class&lt;*&gt;? = null)</p> <p>In memory store that can be used to store objects in a given HeapAnalysisJob instance. This is a simple MutableMap of String to Any, but with unsafe generics access.</p> <p>By convention, starter should be the class that triggered the start of the job.</p>"},{"location":"api/leakcanary/-job-context/#constructors","title":"Constructors","text":"JobContext fun JobContext(starter: KClass&lt;*&gt;) JobContext fun JobContext(starter: Class&lt;*&gt;? = null)"},{"location":"api/leakcanary/-job-context/#functions","title":"Functions","text":"Name Summary contains operator fun contains(key: String): Boolean get operator fun &lt;T&gt; get(key: String): T? getOrPut fun &lt;T&gt; getOrPut(key: String, defaultValue: () -&gt; T): T minusAssign operator fun minusAssign(key: String) set operator fun &lt;T&gt; set(key: String, value: T)"},{"location":"api/leakcanary/-job-context/#properties","title":"Properties","text":"Name Summary starter val starter: Class&lt;*&gt;? = null"},{"location":"api/leakcanary/-job-context/-job-context/","title":"job context","text":"<p>//leakcanary/leakcanary/JobContext/JobContext</p>"},{"location":"api/leakcanary/-job-context/-job-context/#jobcontext","title":"JobContext","text":"<p>fun JobContext(starter: KClass&lt;*&gt;)</p> <p>fun JobContext(starter: Class&lt;*&gt;? = null)</p>"},{"location":"api/leakcanary/-job-context/contains/","title":"Contains","text":"<p>//leakcanary/leakcanary/JobContext/contains</p>"},{"location":"api/leakcanary/-job-context/contains/#contains","title":"contains","text":"<p>operator fun contains(key: String): Boolean</p>"},{"location":"api/leakcanary/-job-context/contains/#see-also","title":"See also","text":"<p>main</p> kotlin.collections.MutableMap"},{"location":"api/leakcanary/-job-context/get-or-put/","title":"Get or put","text":"<p>//leakcanary/leakcanary/JobContext/getOrPut</p>"},{"location":"api/leakcanary/-job-context/get-or-put/#getorput","title":"getOrPut","text":"<p>fun &lt;T&gt; getOrPut(key: String, defaultValue: () -&gt; T): T</p>"},{"location":"api/leakcanary/-job-context/get-or-put/#see-also","title":"See also","text":"<p>main</p> MutableMap.getOrPut"},{"location":"api/leakcanary/-job-context/get/","title":"Get","text":"<p>//leakcanary/leakcanary/JobContext/get</p>"},{"location":"api/leakcanary/-job-context/get/#get","title":"get","text":"<p>operator fun &lt;T&gt; get(key: String): T?</p>"},{"location":"api/leakcanary/-job-context/minus-assign/","title":"Minus assign","text":"<p>//leakcanary/leakcanary/JobContext/minusAssign</p>"},{"location":"api/leakcanary/-job-context/minus-assign/#minusassign","title":"minusAssign","text":"<p>operator fun minusAssign(key: String)</p>"},{"location":"api/leakcanary/-job-context/minus-assign/#see-also","title":"See also","text":"<p>main</p> kotlin.collections.MutableMap"},{"location":"api/leakcanary/-job-context/set/","title":"Set","text":"<p>//leakcanary/leakcanary/JobContext/set</p>"},{"location":"api/leakcanary/-job-context/set/#set","title":"set","text":"<p>operator fun &lt;T&gt; set(key: String, value: T)</p>"},{"location":"api/leakcanary/-job-context/set/#see-also","title":"See also","text":"<p>main</p> MutableMap.set"},{"location":"api/leakcanary/-job-context/starter/","title":"Starter","text":"<p>//leakcanary/leakcanary/JobContext/starter</p>"},{"location":"api/leakcanary/-job-context/starter/#starter","title":"starter","text":"<p>val starter: Class&lt;*&gt;? = null</p>"},{"location":"api/leakcanary/-keyed-weak-reference/","title":"Index","text":"<p>//leakcanary/leakcanary/KeyedWeakReference</p>"},{"location":"api/leakcanary/-keyed-weak-reference/#keyedweakreference","title":"KeyedWeakReference","text":"<p>class KeyedWeakReference(referent: Any, val key: String, val description: String, val watchUptimeMillis: Long, referenceQueue: ReferenceQueue&lt;Any&gt;) : WeakReference&lt;Any&gt; </p> <p>A weak reference used by ObjectWatcher to determine which objects become weakly reachable and which don\u2019t. ObjectWatcher uses key to keep track of KeyedWeakReference instances that haven\u2019t made it into the associated ReferenceQueue yet.</p> <p>heapDumpUptimeMillis should be set with the current time from Clock.uptimeMillis right before dumping the heap, so that we can later determine how long an object was retained.</p>"},{"location":"api/leakcanary/-keyed-weak-reference/#constructors","title":"Constructors","text":"KeyedWeakReference fun KeyedWeakReference(referent: Any, key: String, description: String, watchUptimeMillis: Long, referenceQueue: ReferenceQueue&lt;Any&gt;)"},{"location":"api/leakcanary/-keyed-weak-reference/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/leakcanary/-keyed-weak-reference/#functions","title":"Functions","text":"Name Summary clear open override fun clear() enqueue open fun enqueue(): Boolean get open fun get(): Any? isEnqueued open fun isEnqueued(): Boolean"},{"location":"api/leakcanary/-keyed-weak-reference/#properties","title":"Properties","text":"Name Summary description val description: String key val key: String next val next: Reference&lt;Any&gt; queue val queue: ReferenceQueue&lt;in Any&gt; retainedUptimeMillis @Volatilevar retainedUptimeMillis: LongTime at which the associated object (referent) was considered retained, or -1 if it hasn\u2019t been yet. watchUptimeMillis val watchUptimeMillis: Long"},{"location":"api/leakcanary/-keyed-weak-reference/-keyed-weak-reference/","title":"keyed weak reference","text":"<p>//leakcanary/leakcanary/KeyedWeakReference/KeyedWeakReference</p>"},{"location":"api/leakcanary/-keyed-weak-reference/-keyed-weak-reference/#keyedweakreference","title":"KeyedWeakReference","text":"<p>fun KeyedWeakReference(referent: Any, key: String, description: String, watchUptimeMillis: Long, referenceQueue: ReferenceQueue&lt;Any&gt;)</p>"},{"location":"api/leakcanary/-keyed-weak-reference/clear/","title":"Clear","text":"<p>//leakcanary/leakcanary/KeyedWeakReference/clear</p>"},{"location":"api/leakcanary/-keyed-weak-reference/clear/#clear","title":"clear","text":"<p>open override fun clear()</p>"},{"location":"api/leakcanary/-keyed-weak-reference/description/","title":"Description","text":"<p>//leakcanary/leakcanary/KeyedWeakReference/description</p>"},{"location":"api/leakcanary/-keyed-weak-reference/description/#description","title":"description","text":"<p>val description: String</p>"},{"location":"api/leakcanary/-keyed-weak-reference/key/","title":"Key","text":"<p>//leakcanary/leakcanary/KeyedWeakReference/key</p>"},{"location":"api/leakcanary/-keyed-weak-reference/key/#key","title":"key","text":"<p>val key: String</p>"},{"location":"api/leakcanary/-keyed-weak-reference/retained-uptime-millis/","title":"Retained uptime millis","text":"<p>//leakcanary/leakcanary/KeyedWeakReference/retainedUptimeMillis</p>"},{"location":"api/leakcanary/-keyed-weak-reference/retained-uptime-millis/#retaineduptimemillis","title":"retainedUptimeMillis","text":"<p>@Volatile</p> <p>var retainedUptimeMillis: Long</p> <p>Time at which the associated object (referent) was considered retained, or -1 if it hasn\u2019t been yet.</p>"},{"location":"api/leakcanary/-keyed-weak-reference/watch-uptime-millis/","title":"Watch uptime millis","text":"<p>//leakcanary/leakcanary/KeyedWeakReference/watchUptimeMillis</p>"},{"location":"api/leakcanary/-keyed-weak-reference/watch-uptime-millis/#watchuptimemillis","title":"watchUptimeMillis","text":"<p>val watchUptimeMillis: Long</p>"},{"location":"api/leakcanary/-keyed-weak-reference/-companion/","title":"Index","text":"<p>//leakcanary/leakcanary/KeyedWeakReference/Companion</p>"},{"location":"api/leakcanary/-keyed-weak-reference/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/leakcanary/-keyed-weak-reference/-companion/#properties","title":"Properties","text":"Name Summary heapDumpUptimeMillis @JvmStatic@Volatilevar heapDumpUptimeMillis: Long = 0"},{"location":"api/leakcanary/-keyed-weak-reference/-companion/heap-dump-uptime-millis/","title":"Heap dump uptime millis","text":"<p>//leakcanary/leakcanary/KeyedWeakReference/Companion/heapDumpUptimeMillis</p>"},{"location":"api/leakcanary/-keyed-weak-reference/-companion/heap-dump-uptime-millis/#heapdumpuptimemillis","title":"heapDumpUptimeMillis","text":"<p>@JvmStatic</p> <p>@Volatile</p> <p>var heapDumpUptimeMillis: Long = 0</p>"},{"location":"api/leakcanary/-lazy-forwarding-event-listener/","title":"Index","text":"<p>//leakcanary/leakcanary/LazyForwardingEventListener</p>"},{"location":"api/leakcanary/-lazy-forwarding-event-listener/#lazyforwardingeventlistener","title":"LazyForwardingEventListener","text":"<p>class LazyForwardingEventListener(lazyEventListener: () -&gt; EventListener) : EventListener</p> <p>Forwards events to the EventListener provided by lazyEventListener which is evaluated lazily, when the first comes in.</p>"},{"location":"api/leakcanary/-lazy-forwarding-event-listener/#constructors","title":"Constructors","text":"LazyForwardingEventListener fun LazyForwardingEventListener(lazyEventListener: () -&gt; EventListener)"},{"location":"api/leakcanary/-lazy-forwarding-event-listener/#functions","title":"Functions","text":"Name Summary onEvent open override fun onEvent(event: EventListener.Event)onEvent is always called from the thread the events are emitted from, which is documented for each event. This enables you to potentially block a chain of events, waiting for some pre work to be done."},{"location":"api/leakcanary/-lazy-forwarding-event-listener/-lazy-forwarding-event-listener/","title":"lazy forwarding event listener","text":"<p>//leakcanary/leakcanary/LazyForwardingEventListener/LazyForwardingEventListener</p>"},{"location":"api/leakcanary/-lazy-forwarding-event-listener/-lazy-forwarding-event-listener/#lazyforwardingeventlistener","title":"LazyForwardingEventListener","text":"<p>fun LazyForwardingEventListener(lazyEventListener: () -&gt; EventListener)</p>"},{"location":"api/leakcanary/-lazy-forwarding-event-listener/on-event/","title":"On event","text":"<p>//leakcanary/leakcanary/LazyForwardingEventListener/onEvent</p>"},{"location":"api/leakcanary/-lazy-forwarding-event-listener/on-event/#onevent","title":"onEvent","text":"<p>open override fun onEvent(event: EventListener.Event)</p> <p>onEvent is always called from the thread the events are emitted from, which is documented for each event. This enables you to potentially block a chain of events, waiting for some pre work to be done.</p>"},{"location":"api/leakcanary/-leak-assertions/","title":"Index","text":"<p>//leakcanary/leakcanary/LeakAssertions</p>"},{"location":"api/leakcanary/-leak-assertions/#leakassertions","title":"LeakAssertions","text":"<p>object LeakAssertions</p>"},{"location":"api/leakcanary/-leak-assertions/#functions","title":"Functions","text":"Name Summary assertNoLeaks fun assertNoLeaks(tag: String = NO_TAG)Asserts that there are no leak in the heap at this point in time."},{"location":"api/leakcanary/-leak-assertions/#properties","title":"Properties","text":"Name Summary NO_TAG const val NO_TAG: String"},{"location":"api/leakcanary/-leak-assertions/-n-o_-t-a-g/","title":"n o  t a g","text":"<p>//leakcanary/leakcanary/LeakAssertions/NO_TAG</p>"},{"location":"api/leakcanary/-leak-assertions/-n-o_-t-a-g/#no_tag","title":"NO_TAG","text":"<p>const val NO_TAG: String</p>"},{"location":"api/leakcanary/-leak-assertions/assert-no-leaks/","title":"Assert no leaks","text":"<p>//leakcanary/leakcanary/LeakAssertions/assertNoLeaks</p>"},{"location":"api/leakcanary/-leak-assertions/assert-no-leaks/#assertnoleaks","title":"assertNoLeaks","text":"<p>fun assertNoLeaks(tag: String = NO_TAG)</p> <p>Asserts that there are no leak in the heap at this point in time.</p> <p>This method should be called on the instrumentation thread.</p> <p>This method is may block the current thread for a significant amount of time, as it might need to dump the heap and analyze it.</p> <p>If leaks are found, this method is expected to throw an exception, which will fail the test.</p> <p>The specific details depend on what you configured in DetectLeaksAssert.update.</p> <p>tag identifies the calling code, which can then be used for reporting purposes or to skip leak detection for specific tags in a subset of tests (see SkipLeakDetection).</p>"},{"location":"api/leakcanary/-leak-canary/","title":"Index","text":"<p>//leakcanary/leakcanary/LeakCanary</p>"},{"location":"api/leakcanary/-leak-canary/#leakcanary","title":"LeakCanary","text":"<p>object LeakCanary</p> <p>The entry point API for LeakCanary. LeakCanary builds on top of AppWatcher. AppWatcher notifies LeakCanary of retained instances, which in turns dumps the heap, analyses it and publishes the results.</p> <p>LeakCanary can be configured by updating config.</p>"},{"location":"api/leakcanary/-leak-canary/#types","title":"Types","text":"Name Summary Config data class Config(val dumpHeap: Boolean = true, val dumpHeapWhenDebugging: Boolean = false, val retainedVisibleThreshold: Int = 5, val referenceMatchers: List&lt;ReferenceMatcher&gt; = AndroidReferenceMatchers.appDefaults, val objectInspectors: List&lt;ObjectInspector&gt; = AndroidObjectInspectors.appDefaults, onHeapAnalyzedListener: OnHeapAnalyzedListener = DefaultOnHeapAnalyzedListener.create(), val metadataExtractor: MetadataExtractor = AndroidMetadataExtractor, val computeRetainedHeapSize: Boolean = true, val maxStoredHeapDumps: Int = 7, val requestWriteExternalStoragePermission: Boolean = false, val leakingObjectFinder: LeakingObjectFinder = KeyedWeakReferenceFinder, val heapDumper: HeapDumper = AndroidDebugHeapDumper, val eventListeners: List&lt;EventListener&gt; = listOf(       LogcatEventListener,       ToastEventListener,       LazyForwardingEventListener {         if (InternalLeakCanary.formFactor == TV) TvEventListener else NotificationEventListener       },       when {           RemoteWorkManagerHeapAnalyzer.remoteLeakCanaryServiceInClasspath -&gt;             RemoteWorkManagerHeapAnalyzer           WorkManagerHeapAnalyzer.validWorkManagerInClasspath -&gt; WorkManagerHeapAnalyzer           else -&gt; BackgroundThreadHeapAnalyzer       }     ), val showNotifications: Boolean = true, useExperimentalLeakFinders: Boolean = false)LeakCanary configuration data class. Properties can be updated via copy."},{"location":"api/leakcanary/-leak-canary/#functions","title":"Functions","text":"Name Summary dumpHeap fun dumpHeap()Immediately triggers a heap dump and analysis, if there is at least one retained instance tracked by AppWatcher.objectWatcher. If there are no retained instances then the heap will not be dumped and a notification will be shown instead. newLeakDisplayActivityIntent fun newLeakDisplayActivityIntent(): IntentReturns a new Intent that can be used to programmatically launch the leak display activity. showLeakDisplayActivityLauncherIcon fun showLeakDisplayActivityLauncherIcon(showLauncherIcon: Boolean)Dynamically shows / hides the launcher icon for the leak display activity. Note: you can change the default value by overriding the leak_canary_add_launcher_icon boolean resource:"},{"location":"api/leakcanary/-leak-canary/#properties","title":"Properties","text":"Name Summary config @JvmStatic@Volatilevar config: LeakCanary.ConfigThe current LeakCanary configuration. Can be updated at any time, usually by replacing it with a mutated copy, e.g.:"},{"location":"api/leakcanary/-leak-canary/config/","title":"Config","text":"<p>//leakcanary/leakcanary/LeakCanary/config</p>"},{"location":"api/leakcanary/-leak-canary/config/#config","title":"config","text":"<p>@JvmStatic</p> <p>@Volatile</p> <p>var config: LeakCanary.Config</p> <p>The current LeakCanary configuration. Can be updated at any time, usually by replacing it with a mutated copy, e.g.:</p> <p>LeakCanary.config = LeakCanary.config.copy(retainedVisibleThreshold = 3)</p> <p>In Java, use LeakCanary.Config.Builder instead:</p> <p>LeakCanary.Config config = LeakCanary.getConfig().newBuilder()\\    .retainedVisibleThreshold(3)\\    .build();\\ LeakCanary.setConfig(config);</p>"},{"location":"api/leakcanary/-leak-canary/dump-heap/","title":"Dump heap","text":"<p>//leakcanary/leakcanary/LeakCanary/dumpHeap</p>"},{"location":"api/leakcanary/-leak-canary/dump-heap/#dumpheap","title":"dumpHeap","text":"<p>fun dumpHeap()</p> <p>Immediately triggers a heap dump and analysis, if there is at least one retained instance tracked by AppWatcher.objectWatcher. If there are no retained instances then the heap will not be dumped and a notification will be shown instead.</p>"},{"location":"api/leakcanary/-leak-canary/new-leak-display-activity-intent/","title":"New leak display activity intent","text":"<p>//leakcanary/leakcanary/LeakCanary/newLeakDisplayActivityIntent</p>"},{"location":"api/leakcanary/-leak-canary/new-leak-display-activity-intent/#newleakdisplayactivityintent","title":"newLeakDisplayActivityIntent","text":"<p>fun newLeakDisplayActivityIntent(): Intent</p> <p>Returns a new Intent that can be used to programmatically launch the leak display activity.</p>"},{"location":"api/leakcanary/-leak-canary/show-leak-display-activity-launcher-icon/","title":"Show leak display activity launcher icon","text":"<p>//leakcanary/leakcanary/LeakCanary/showLeakDisplayActivityLauncherIcon</p>"},{"location":"api/leakcanary/-leak-canary/show-leak-display-activity-launcher-icon/#showleakdisplayactivitylaunchericon","title":"showLeakDisplayActivityLauncherIcon","text":"<p>fun showLeakDisplayActivityLauncherIcon(showLauncherIcon: Boolean)</p> <p>Dynamically shows / hides the launcher icon for the leak display activity. Note: you can change the default value by overriding the leak_canary_add_launcher_icon boolean resource:</p> <p>&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\\ &lt;resources&gt;\\   &lt;bool name=\"leak_canary_add_launcher_icon\"&gt;false&lt;/bool&gt;\\ &lt;/resources&gt;</p>"},{"location":"api/leakcanary/-leak-canary/-config/","title":"Index","text":"<p>//leakcanary/leakcanary/LeakCanary/Config</p>"},{"location":"api/leakcanary/-leak-canary/-config/#config","title":"Config","text":"<p>data class Config(val dumpHeap: Boolean = true, val dumpHeapWhenDebugging: Boolean = false, val retainedVisibleThreshold: Int = 5, val referenceMatchers: List&lt;ReferenceMatcher&gt; = AndroidReferenceMatchers.appDefaults, val objectInspectors: List&lt;ObjectInspector&gt; = AndroidObjectInspectors.appDefaults, onHeapAnalyzedListener: OnHeapAnalyzedListener = DefaultOnHeapAnalyzedListener.create(), val metadataExtractor: MetadataExtractor = AndroidMetadataExtractor, val computeRetainedHeapSize: Boolean = true, val maxStoredHeapDumps: Int = 7, val requestWriteExternalStoragePermission: Boolean = false, val leakingObjectFinder: LeakingObjectFinder = KeyedWeakReferenceFinder, val heapDumper: HeapDumper = AndroidDebugHeapDumper, val eventListeners: List&lt;EventListener&gt; = listOf(       LogcatEventListener,       ToastEventListener,       LazyForwardingEventListener {         if (InternalLeakCanary.formFactor == TV) TvEventListener else NotificationEventListener       },       when {           RemoteWorkManagerHeapAnalyzer.remoteLeakCanaryServiceInClasspath -&gt;             RemoteWorkManagerHeapAnalyzer           WorkManagerHeapAnalyzer.validWorkManagerInClasspath -&gt; WorkManagerHeapAnalyzer           else -&gt; BackgroundThreadHeapAnalyzer       }     ), val showNotifications: Boolean = true, useExperimentalLeakFinders: Boolean = false)</p> <p>LeakCanary configuration data class. Properties can be updated via copy.</p>"},{"location":"api/leakcanary/-leak-canary/-config/#see-also","title":"See also","text":"<p>main</p> leakcanary.LeakCanary"},{"location":"api/leakcanary/-leak-canary/-config/#constructors","title":"Constructors","text":"Config fun Config(dumpHeap: Boolean = true, dumpHeapWhenDebugging: Boolean = false, retainedVisibleThreshold: Int = 5, referenceMatchers: List&lt;ReferenceMatcher&gt; = AndroidReferenceMatchers.appDefaults, objectInspectors: List&lt;ObjectInspector&gt; = AndroidObjectInspectors.appDefaults, onHeapAnalyzedListener: OnHeapAnalyzedListener = DefaultOnHeapAnalyzedListener.create(), metadataExtractor: MetadataExtractor = AndroidMetadataExtractor, computeRetainedHeapSize: Boolean = true, maxStoredHeapDumps: Int = 7, requestWriteExternalStoragePermission: Boolean = false, leakingObjectFinder: LeakingObjectFinder = KeyedWeakReferenceFinder, heapDumper: HeapDumper = AndroidDebugHeapDumper, eventListeners: List&lt;EventListener&gt; = listOf(       LogcatEventListener,       ToastEventListener,       LazyForwardingEventListener {         if (InternalLeakCanary.formFactor == TV) TvEventListener else NotificationEventListener       },       when {           RemoteWorkManagerHeapAnalyzer.remoteLeakCanaryServiceInClasspath -&gt;             RemoteWorkManagerHeapAnalyzer           WorkManagerHeapAnalyzer.validWorkManagerInClasspath -&gt; WorkManagerHeapAnalyzer           else -&gt; BackgroundThreadHeapAnalyzer       }     ), showNotifications: Boolean = true, useExperimentalLeakFinders: Boolean = false)"},{"location":"api/leakcanary/-leak-canary/-config/#types","title":"Types","text":"Name Summary Builder class BuilderBuilder for LeakCanary.Config intended to be used only from Java code."},{"location":"api/leakcanary/-leak-canary/-config/#functions","title":"Functions","text":"Name Summary newBuilder fun newBuilder(): LeakCanary.Config.BuilderConstruct a new Config via LeakCanary.Config.Builder. Note: this method is intended to be used from Java code only. For idiomatic Kotlin use copy() to modify LeakCanary.config.Since Kotlin 999.9"},{"location":"api/leakcanary/-leak-canary/-config/#properties","title":"Properties","text":"Name Summary computeRetainedHeapSize val computeRetainedHeapSize: Boolean = trueWhether to compute the retained heap size, which is the total number of bytes in memory that would be reclaimed if the detected leaks didn\u2019t happen. This includes native memory associated to Java objects (e.g. Android bitmaps). dumpHeap val dumpHeap: Boolean = trueWhether LeakCanary should dump the heap when enough retained instances are found. This needs to be true for LeakCanary to work, but sometimes you may want to temporarily disable LeakCanary (e.g. for a product demo). dumpHeapWhenDebugging val dumpHeapWhenDebugging: Boolean = falseIf dumpHeapWhenDebugging is false then LeakCanary will not dump the heap when the debugger is attached. The debugger can create temporary memory leaks (for instance if a thread is blocked on a breakpoint). eventListeners val eventListeners: List&lt;EventListener&gt;Listeners for LeakCanary events. See EventListener.Event for the list of events and which thread they\u2019re sent from. You most likely want to keep this list and add to it, or remove a few entries but not all entries. Each listener is independent and provides additional behavior which you can disable by not excluding it: heapDumper val heapDumper: HeapDumperDumps the Java heap. You may replace this with your own implementation if you wish to change the core heap dumping implementation. leakingObjectFinder val leakingObjectFinder: LeakingObjectFinderFinds the objects that are leaking, for which LeakCanary will compute leak traces. maxStoredHeapDumps val maxStoredHeapDumps: Int = 7How many heap dumps are kept on the Android device for this app package. When this threshold is reached LeakCanary deletes the older heap dumps. As several heap dumps may be enqueued you should avoid going down to 1 or 2. metadataExtractor val metadataExtractor: MetadataExtractorExtracts metadata from a hprof to be reported in HeapAnalysisSuccess.metadata. Called on a background thread during heap analysis. objectInspectors val objectInspectors: List&lt;ObjectInspector&gt;List of ObjectInspector that provide LeakCanary with insights about objects found in the heap. You can create your own ObjectInspector implementations, and also add a shark.AppSingletonInspector instance created with the list of internal singletons. referenceMatchers val referenceMatchers: List&lt;ReferenceMatcher&gt;Known patterns of references in the heap, added here either to ignore them (IgnoredReferenceMatcher) or to mark them as library leaks (LibraryLeakReferenceMatcher). requestWriteExternalStoragePermission val requestWriteExternalStoragePermission: Boolean = falseLeakCanary always attempts to store heap dumps on the external storage if the WRITE_EXTERNAL_STORAGE is already granted, and otherwise uses the app storage. If the WRITE_EXTERNAL_STORAGE permission is not granted and requestWriteExternalStoragePermission is true, then LeakCanary will display a notification to ask for that permission. retainedVisibleThreshold val retainedVisibleThreshold: Int = 5When the app is visible, LeakCanary will wait for at least retainedVisibleThreshold retained instances before dumping the heap. Dumping the heap freezes the UI and can be frustrating for developers who are trying to work. This is especially frustrating as the Android Framework has a number of leaks that cannot easily be fixed. showNotifications val showNotifications: Boolean = trueWhether to show LeakCanary notifications. When showNotifications is true, LeakCanary will only display notifications if the app is in foreground and is not an instant, TV or Wear app."},{"location":"api/leakcanary/-leak-canary/-config/-config/","title":"config","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/Config</p>"},{"location":"api/leakcanary/-leak-canary/-config/-config/#config","title":"Config","text":"<p>fun Config(dumpHeap: Boolean = true, dumpHeapWhenDebugging: Boolean = false, retainedVisibleThreshold: Int = 5, referenceMatchers: List&lt;ReferenceMatcher&gt; = AndroidReferenceMatchers.appDefaults, objectInspectors: List&lt;ObjectInspector&gt; = AndroidObjectInspectors.appDefaults, onHeapAnalyzedListener: OnHeapAnalyzedListener = DefaultOnHeapAnalyzedListener.create(), metadataExtractor: MetadataExtractor = AndroidMetadataExtractor, computeRetainedHeapSize: Boolean = true, maxStoredHeapDumps: Int = 7, requestWriteExternalStoragePermission: Boolean = false, leakingObjectFinder: LeakingObjectFinder = KeyedWeakReferenceFinder, heapDumper: HeapDumper = AndroidDebugHeapDumper, eventListeners: List&lt;EventListener&gt; = listOf(       LogcatEventListener,       ToastEventListener,       LazyForwardingEventListener {         if (InternalLeakCanary.formFactor == TV) TvEventListener else NotificationEventListener       },       when {           RemoteWorkManagerHeapAnalyzer.remoteLeakCanaryServiceInClasspath -&gt;             RemoteWorkManagerHeapAnalyzer           WorkManagerHeapAnalyzer.validWorkManagerInClasspath -&gt; WorkManagerHeapAnalyzer           else -&gt; BackgroundThreadHeapAnalyzer       }     ), showNotifications: Boolean = true, useExperimentalLeakFinders: Boolean = false)</p>"},{"location":"api/leakcanary/-leak-canary/-config/compute-retained-heap-size/","title":"Compute retained heap size","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/computeRetainedHeapSize</p>"},{"location":"api/leakcanary/-leak-canary/-config/compute-retained-heap-size/#computeretainedheapsize","title":"computeRetainedHeapSize","text":"<p>val computeRetainedHeapSize: Boolean = true</p> <p>Whether to compute the retained heap size, which is the total number of bytes in memory that would be reclaimed if the detected leaks didn\u2019t happen. This includes native memory associated to Java objects (e.g. Android bitmaps).</p> <p>Computing the retained heap size can slow down the analysis because it requires navigating from GC roots through the entire object graph, whereas shark.HeapAnalyzer would otherwise stop as soon as all leaking instances are found.</p> <p>Defaults to true.</p>"},{"location":"api/leakcanary/-leak-canary/-config/dump-heap-when-debugging/","title":"Dump heap when debugging","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/dumpHeapWhenDebugging</p>"},{"location":"api/leakcanary/-leak-canary/-config/dump-heap-when-debugging/#dumpheapwhendebugging","title":"dumpHeapWhenDebugging","text":"<p>val dumpHeapWhenDebugging: Boolean = false</p> <p>If dumpHeapWhenDebugging is false then LeakCanary will not dump the heap when the debugger is attached. The debugger can create temporary memory leaks (for instance if a thread is blocked on a breakpoint).</p> <p>Defaults to false.</p>"},{"location":"api/leakcanary/-leak-canary/-config/dump-heap/","title":"Dump heap","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/dumpHeap</p>"},{"location":"api/leakcanary/-leak-canary/-config/dump-heap/#dumpheap","title":"dumpHeap","text":"<p>val dumpHeap: Boolean = true</p> <p>Whether LeakCanary should dump the heap when enough retained instances are found. This needs to be true for LeakCanary to work, but sometimes you may want to temporarily disable LeakCanary (e.g. for a product demo).</p> <p>Defaults to true.</p>"},{"location":"api/leakcanary/-leak-canary/-config/event-listeners/","title":"Event listeners","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/eventListeners</p>"},{"location":"api/leakcanary/-leak-canary/-config/event-listeners/#eventlisteners","title":"eventListeners","text":"<p>val eventListeners: List&lt;EventListener&gt;</p> <p>Listeners for LeakCanary events. See EventListener.Event for the list of events and which thread they\u2019re sent from. You most likely want to keep this list and add to it, or remove a few entries but not all entries. Each listener is independent and provides additional behavior which you can disable by not excluding it:</p> <p>// No cute canary toast (very sad!)\\ LeakCanary.config = LeakCanary.config.run {\\   copy(\\     eventListeners = eventListeners.filter {\\       it !is ToastEventListener\\     }\\   )\\ }</p>"},{"location":"api/leakcanary/-leak-canary/-config/heap-dumper/","title":"Heap dumper","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/heapDumper</p>"},{"location":"api/leakcanary/-leak-canary/-config/heap-dumper/#heapdumper","title":"heapDumper","text":"<p>val heapDumper: HeapDumper</p> <p>Dumps the Java heap. You may replace this with your own implementation if you wish to change the core heap dumping implementation.</p>"},{"location":"api/leakcanary/-leak-canary/-config/leaking-object-finder/","title":"Leaking object finder","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/leakingObjectFinder</p>"},{"location":"api/leakcanary/-leak-canary/-config/leaking-object-finder/#leakingobjectfinder","title":"leakingObjectFinder","text":"<p>val leakingObjectFinder: LeakingObjectFinder</p> <p>Finds the objects that are leaking, for which LeakCanary will compute leak traces.</p> <p>Defaults to KeyedWeakReferenceFinder which finds all objects tracked by a KeyedWeakReference, ie all objects that were passed to ObjectWatcher.expectWeaklyReachable.</p> <p>You could instead replace it with a FilteringLeakingObjectFinder, which scans all objects in the heap dump and delegates the decision to a list of FilteringLeakingObjectFinder.LeakingObjectFilter. This can lead to finding more leaks than the default and shorter leak traces. This also means that every analysis during a given process life will bring up the same leaking objects over and over again, unlike when using KeyedWeakReferenceFinder (because KeyedWeakReference instances are cleared after each heap dump).</p> <p>The list of filters can be built from AndroidObjectInspectors:</p> <p>LeakCanary.config = LeakCanary.config.copy(\\     leakingObjectFinder = FilteringLeakingObjectFinder(\\         AndroidObjectInspectors.appLeakingObjectFilters\\     )\\ )</p>"},{"location":"api/leakcanary/-leak-canary/-config/max-stored-heap-dumps/","title":"Max stored heap dumps","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/maxStoredHeapDumps</p>"},{"location":"api/leakcanary/-leak-canary/-config/max-stored-heap-dumps/#maxstoredheapdumps","title":"maxStoredHeapDumps","text":"<p>val maxStoredHeapDumps: Int = 7</p> <p>How many heap dumps are kept on the Android device for this app package. When this threshold is reached LeakCanary deletes the older heap dumps. As several heap dumps may be enqueued you should avoid going down to 1 or 2.</p> <p>Defaults to 7.</p>"},{"location":"api/leakcanary/-leak-canary/-config/metadata-extractor/","title":"Metadata extractor","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/metadataExtractor</p>"},{"location":"api/leakcanary/-leak-canary/-config/metadata-extractor/#metadataextractor","title":"metadataExtractor","text":"<p>val metadataExtractor: MetadataExtractor</p> <p>Extracts metadata from a hprof to be reported in HeapAnalysisSuccess.metadata. Called on a background thread during heap analysis.</p> <p>Defaults to AndroidMetadataExtractor</p>"},{"location":"api/leakcanary/-leak-canary/-config/new-builder/","title":"New builder","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/newBuilder</p>"},{"location":"api/leakcanary/-leak-canary/-config/new-builder/#newbuilder","title":"newBuilder","text":"<p>fun newBuilder(): LeakCanary.Config.Builder</p> <p>Construct a new Config via LeakCanary.Config.Builder. Note: this method is intended to be used from Java code only. For idiomatic Kotlin use copy() to modify LeakCanary.config.</p>"},{"location":"api/leakcanary/-leak-canary/-config/new-builder/#since-kotlin","title":"Since Kotlin","text":"<p>999.9</p>"},{"location":"api/leakcanary/-leak-canary/-config/object-inspectors/","title":"Object inspectors","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/objectInspectors</p>"},{"location":"api/leakcanary/-leak-canary/-config/object-inspectors/#objectinspectors","title":"objectInspectors","text":"<p>val objectInspectors: List&lt;ObjectInspector&gt;</p> <p>List of ObjectInspector that provide LeakCanary with insights about objects found in the heap. You can create your own ObjectInspector implementations, and also add a shark.AppSingletonInspector instance created with the list of internal singletons.</p> <p>Defaults to AndroidObjectInspectors.appDefaults</p>"},{"location":"api/leakcanary/-leak-canary/-config/reference-matchers/","title":"Reference matchers","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/referenceMatchers</p>"},{"location":"api/leakcanary/-leak-canary/-config/reference-matchers/#referencematchers","title":"referenceMatchers","text":"<p>val referenceMatchers: List&lt;ReferenceMatcher&gt;</p> <p>Known patterns of references in the heap, added here either to ignore them (IgnoredReferenceMatcher) or to mark them as library leaks (LibraryLeakReferenceMatcher).</p> <p>When adding your own custom LibraryLeakReferenceMatcher instances, you\u2019ll most likely want to set LibraryLeakReferenceMatcher.patternApplies with a filter that checks for the Android OS version and manufacturer. The build information can be obtained by calling shark.AndroidBuildMirror.fromHeapGraph.</p> <p>Defaults to AndroidReferenceMatchers.appDefaults</p>"},{"location":"api/leakcanary/-leak-canary/-config/request-write-external-storage-permission/","title":"Request write external storage permission","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/requestWriteExternalStoragePermission</p>"},{"location":"api/leakcanary/-leak-canary/-config/request-write-external-storage-permission/#requestwriteexternalstoragepermission","title":"requestWriteExternalStoragePermission","text":"<p>val requestWriteExternalStoragePermission: Boolean = false</p> <p>LeakCanary always attempts to store heap dumps on the external storage if the WRITE_EXTERNAL_STORAGE is already granted, and otherwise uses the app storage. If the WRITE_EXTERNAL_STORAGE permission is not granted and requestWriteExternalStoragePermission is true, then LeakCanary will display a notification to ask for that permission.</p> <p>Defaults to false because that permission notification can be annoying.</p>"},{"location":"api/leakcanary/-leak-canary/-config/retained-visible-threshold/","title":"Retained visible threshold","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/retainedVisibleThreshold</p>"},{"location":"api/leakcanary/-leak-canary/-config/retained-visible-threshold/#retainedvisiblethreshold","title":"retainedVisibleThreshold","text":"<p>val retainedVisibleThreshold: Int = 5</p> <p>When the app is visible, LeakCanary will wait for at least retainedVisibleThreshold retained instances before dumping the heap. Dumping the heap freezes the UI and can be frustrating for developers who are trying to work. This is especially frustrating as the Android Framework has a number of leaks that cannot easily be fixed.</p> <p>When the app becomes invisible, LeakCanary dumps the heap after AppWatcher.retainedDelayMillis ms.</p> <p>The app is considered visible if it has at least one activity in started state.</p> <p>A higher threshold means LeakCanary will dump the heap less often, therefore it won\u2019t be bothering developers as much but it could miss some leaks.</p> <p>Defaults to 5.</p>"},{"location":"api/leakcanary/-leak-canary/-config/show-notifications/","title":"Show notifications","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/showNotifications</p>"},{"location":"api/leakcanary/-leak-canary/-config/show-notifications/#shownotifications","title":"showNotifications","text":"<p>val showNotifications: Boolean = true</p> <p>Whether to show LeakCanary notifications. When showNotifications is true, LeakCanary will only display notifications if the app is in foreground and is not an instant, TV or Wear app.</p> <p>Defaults to true.</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/","title":"Index","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/Builder</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/#builder","title":"Builder","text":"<p>class Builder</p> <p>Builder for LeakCanary.Config intended to be used only from Java code.</p> <p>Usage:</p> <p>LeakCanary.Config config = LeakCanary.getConfig().newBuilder()\\    .retainedVisibleThreshold(3)\\    .build();\\ LeakCanary.setConfig(config);</p> <p>For idiomatic Kotlin use copy() method instead:</p> <p>LeakCanary.config = LeakCanary.config.copy(retainedVisibleThreshold = 3)</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/#functions","title":"Functions","text":"Name Summary build fun build(): LeakCanary.Config computeRetainedHeapSize fun computeRetainedHeapSize(computeRetainedHeapSize: Boolean): LeakCanary.Config.Builder dumpHeap fun dumpHeap(dumpHeap: Boolean): LeakCanary.Config.Builder dumpHeapWhenDebugging fun dumpHeapWhenDebugging(dumpHeapWhenDebugging: Boolean): LeakCanary.Config.Builder eventListeners fun eventListeners(eventListeners: List&lt;EventListener&gt;): LeakCanary.Config.Builder heapDumper fun heapDumper(heapDumper: HeapDumper): LeakCanary.Config.Builder leakingObjectFinder fun leakingObjectFinder(leakingObjectFinder: LeakingObjectFinder): LeakCanary.Config.Builder maxStoredHeapDumps fun maxStoredHeapDumps(maxStoredHeapDumps: Int): LeakCanary.Config.Builder metadataExtractor fun metadataExtractor(metadataExtractor: MetadataExtractor): LeakCanary.Config.Builder objectInspectors fun objectInspectors(objectInspectors: List&lt;ObjectInspector&gt;): LeakCanary.Config.Builder referenceMatchers fun referenceMatchers(referenceMatchers: List&lt;ReferenceMatcher&gt;): LeakCanary.Config.Builder requestWriteExternalStoragePermission fun requestWriteExternalStoragePermission(requestWriteExternalStoragePermission: Boolean): LeakCanary.Config.Builder retainedVisibleThreshold fun retainedVisibleThreshold(retainedVisibleThreshold: Int): LeakCanary.Config.Builder showNotifications fun showNotifications(showNotifications: Boolean): LeakCanary.Config.Builder"},{"location":"api/leakcanary/-leak-canary/-config/-builder/build/","title":"Build","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/Builder/build</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/build/#build","title":"build","text":"<p>fun build(): LeakCanary.Config</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/compute-retained-heap-size/","title":"Compute retained heap size","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/Builder/computeRetainedHeapSize</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/compute-retained-heap-size/#computeretainedheapsize","title":"computeRetainedHeapSize","text":"<p>fun computeRetainedHeapSize(computeRetainedHeapSize: Boolean): LeakCanary.Config.Builder</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/compute-retained-heap-size/#see-also","title":"See also","text":"<p>main</p> leakcanary.LeakCanary.Config"},{"location":"api/leakcanary/-leak-canary/-config/-builder/dump-heap-when-debugging/","title":"Dump heap when debugging","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/Builder/dumpHeapWhenDebugging</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/dump-heap-when-debugging/#dumpheapwhendebugging","title":"dumpHeapWhenDebugging","text":"<p>fun dumpHeapWhenDebugging(dumpHeapWhenDebugging: Boolean): LeakCanary.Config.Builder</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/dump-heap-when-debugging/#see-also","title":"See also","text":"<p>main</p> leakcanary.LeakCanary.Config"},{"location":"api/leakcanary/-leak-canary/-config/-builder/dump-heap/","title":"Dump heap","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/Builder/dumpHeap</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/dump-heap/#dumpheap","title":"dumpHeap","text":"<p>fun dumpHeap(dumpHeap: Boolean): LeakCanary.Config.Builder</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/dump-heap/#see-also","title":"See also","text":"<p>main</p> leakcanary.LeakCanary.Config"},{"location":"api/leakcanary/-leak-canary/-config/-builder/event-listeners/","title":"Event listeners","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/Builder/eventListeners</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/event-listeners/#eventlisteners","title":"eventListeners","text":"<p>fun eventListeners(eventListeners: List&lt;EventListener&gt;): LeakCanary.Config.Builder</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/event-listeners/#see-also","title":"See also","text":"<p>main</p> leakcanary.LeakCanary.Config"},{"location":"api/leakcanary/-leak-canary/-config/-builder/heap-dumper/","title":"Heap dumper","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/Builder/heapDumper</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/heap-dumper/#heapdumper","title":"heapDumper","text":"<p>fun heapDumper(heapDumper: HeapDumper): LeakCanary.Config.Builder</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/heap-dumper/#see-also","title":"See also","text":"<p>main</p> leakcanary.LeakCanary.Config"},{"location":"api/leakcanary/-leak-canary/-config/-builder/leaking-object-finder/","title":"Leaking object finder","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/Builder/leakingObjectFinder</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/leaking-object-finder/#leakingobjectfinder","title":"leakingObjectFinder","text":"<p>fun leakingObjectFinder(leakingObjectFinder: LeakingObjectFinder): LeakCanary.Config.Builder</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/leaking-object-finder/#see-also","title":"See also","text":"<p>main</p> leakcanary.LeakCanary.Config"},{"location":"api/leakcanary/-leak-canary/-config/-builder/max-stored-heap-dumps/","title":"Max stored heap dumps","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/Builder/maxStoredHeapDumps</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/max-stored-heap-dumps/#maxstoredheapdumps","title":"maxStoredHeapDumps","text":"<p>fun maxStoredHeapDumps(maxStoredHeapDumps: Int): LeakCanary.Config.Builder</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/max-stored-heap-dumps/#see-also","title":"See also","text":"<p>main</p> leakcanary.LeakCanary.Config"},{"location":"api/leakcanary/-leak-canary/-config/-builder/metadata-extractor/","title":"Metadata extractor","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/Builder/metadataExtractor</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/metadata-extractor/#metadataextractor","title":"metadataExtractor","text":"<p>fun metadataExtractor(metadataExtractor: MetadataExtractor): LeakCanary.Config.Builder</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/metadata-extractor/#see-also","title":"See also","text":"<p>main</p> leakcanary.LeakCanary.Config"},{"location":"api/leakcanary/-leak-canary/-config/-builder/object-inspectors/","title":"Object inspectors","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/Builder/objectInspectors</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/object-inspectors/#objectinspectors","title":"objectInspectors","text":"<p>fun objectInspectors(objectInspectors: List&lt;ObjectInspector&gt;): LeakCanary.Config.Builder</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/object-inspectors/#see-also","title":"See also","text":"<p>main</p> leakcanary.LeakCanary.Config"},{"location":"api/leakcanary/-leak-canary/-config/-builder/reference-matchers/","title":"Reference matchers","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/Builder/referenceMatchers</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/reference-matchers/#referencematchers","title":"referenceMatchers","text":"<p>fun referenceMatchers(referenceMatchers: List&lt;ReferenceMatcher&gt;): LeakCanary.Config.Builder</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/reference-matchers/#see-also","title":"See also","text":"<p>main</p> leakcanary.LeakCanary.Config"},{"location":"api/leakcanary/-leak-canary/-config/-builder/request-write-external-storage-permission/","title":"Request write external storage permission","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/Builder/requestWriteExternalStoragePermission</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/request-write-external-storage-permission/#requestwriteexternalstoragepermission","title":"requestWriteExternalStoragePermission","text":"<p>fun requestWriteExternalStoragePermission(requestWriteExternalStoragePermission: Boolean): LeakCanary.Config.Builder</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/request-write-external-storage-permission/#see-also","title":"See also","text":"<p>main</p> leakcanary.LeakCanary.Config"},{"location":"api/leakcanary/-leak-canary/-config/-builder/retained-visible-threshold/","title":"Retained visible threshold","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/Builder/retainedVisibleThreshold</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/retained-visible-threshold/#retainedvisiblethreshold","title":"retainedVisibleThreshold","text":"<p>fun retainedVisibleThreshold(retainedVisibleThreshold: Int): LeakCanary.Config.Builder</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/retained-visible-threshold/#see-also","title":"See also","text":"<p>main</p> leakcanary.LeakCanary.Config"},{"location":"api/leakcanary/-leak-canary/-config/-builder/show-notifications/","title":"Show notifications","text":"<p>//leakcanary/leakcanary/LeakCanary/Config/Builder/showNotifications</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/show-notifications/#shownotifications","title":"showNotifications","text":"<p>fun showNotifications(showNotifications: Boolean): LeakCanary.Config.Builder</p>"},{"location":"api/leakcanary/-leak-canary/-config/-builder/show-notifications/#see-also","title":"See also","text":"<p>main</p> leakcanary.LeakCanary.Config"},{"location":"api/leakcanary/-leak-canary-process/","title":"Index","text":"<p>//leakcanary/leakcanary/LeakCanaryProcess</p>"},{"location":"api/leakcanary/-leak-canary-process/#leakcanaryprocess","title":"LeakCanaryProcess","text":"<p>object LeakCanaryProcess</p> <p>Used to determine whether the current process is the LeakCanary analyzer process. By depending on the leakcanary-android-process artifact instead of the leakcanary-android, LeakCanary will automatically run its analysis in a separate process.</p> <p>As such, you\u2019ll need to be careful to do any custom configuration of LeakCanary in both the main process and the analyzer process.</p>"},{"location":"api/leakcanary/-leak-canary-process/#functions","title":"Functions","text":"Name Summary isInAnalyzerProcess fun isInAnalyzerProcess(context: Context): BooleanWhether the current process is the process running the heap analyzer, which is a different process than the normal app process."},{"location":"api/leakcanary/-leak-canary-process/is-in-analyzer-process/","title":"Is in analyzer process","text":"<p>//leakcanary/leakcanary/LeakCanaryProcess/isInAnalyzerProcess</p>"},{"location":"api/leakcanary/-leak-canary-process/is-in-analyzer-process/#isinanalyzerprocess","title":"isInAnalyzerProcess","text":"<p>fun isInAnalyzerProcess(context: Context): Boolean</p> <p>Whether the current process is the process running the heap analyzer, which is a different process than the normal app process.</p>"},{"location":"api/leakcanary/-logcat-event-listener/","title":"Index","text":"<p>//leakcanary/leakcanary/LogcatEventListener</p>"},{"location":"api/leakcanary/-logcat-event-listener/#logcateventlistener","title":"LogcatEventListener","text":"<p>object LogcatEventListener : EventListener</p>"},{"location":"api/leakcanary/-logcat-event-listener/#functions","title":"Functions","text":"Name Summary onEvent open override fun onEvent(event: EventListener.Event)onEvent is always called from the thread the events are emitted from, which is documented for each event. This enables you to potentially block a chain of events, waiting for some pre work to be done."},{"location":"api/leakcanary/-logcat-event-listener/on-event/","title":"On event","text":"<p>//leakcanary/leakcanary/LogcatEventListener/onEvent</p>"},{"location":"api/leakcanary/-logcat-event-listener/on-event/#onevent","title":"onEvent","text":"<p>open override fun onEvent(event: EventListener.Event)</p> <p>onEvent is always called from the thread the events are emitted from, which is documented for each event. This enables you to potentially block a chain of events, waiting for some pre work to be done.</p>"},{"location":"api/leakcanary/-logcat-shark-log/","title":"Index","text":"<p>//leakcanary/leakcanary/LogcatSharkLog</p>"},{"location":"api/leakcanary/-logcat-shark-log/#logcatsharklog","title":"LogcatSharkLog","text":"<p>class LogcatSharkLog : SharkLog.Logger</p>"},{"location":"api/leakcanary/-logcat-shark-log/#constructors","title":"Constructors","text":"LogcatSharkLog fun LogcatSharkLog()"},{"location":"api/leakcanary/-logcat-shark-log/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/leakcanary/-logcat-shark-log/#functions","title":"Functions","text":"Name Summary d open override fun d(message: String)open override fun d(throwable: Throwable, message: String)"},{"location":"api/leakcanary/-logcat-shark-log/-logcat-shark-log/","title":"logcat shark log","text":"<p>//leakcanary/leakcanary/LogcatSharkLog/LogcatSharkLog</p>"},{"location":"api/leakcanary/-logcat-shark-log/-logcat-shark-log/#logcatsharklog","title":"LogcatSharkLog","text":"<p>fun LogcatSharkLog()</p>"},{"location":"api/leakcanary/-logcat-shark-log/d/","title":"D","text":"<p>//leakcanary/leakcanary/LogcatSharkLog/d</p>"},{"location":"api/leakcanary/-logcat-shark-log/d/#d","title":"d","text":"<p>open override fun d(message: String)</p> <p>open override fun d(throwable: Throwable, message: String)</p>"},{"location":"api/leakcanary/-logcat-shark-log/-companion/","title":"Index","text":"<p>//leakcanary/leakcanary/LogcatSharkLog/Companion</p>"},{"location":"api/leakcanary/-logcat-shark-log/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/leakcanary/-logcat-shark-log/-companion/#functions","title":"Functions","text":"Name Summary install fun install()"},{"location":"api/leakcanary/-logcat-shark-log/-companion/install/","title":"Install","text":"<p>//leakcanary/leakcanary/LogcatSharkLog/Companion/install</p>"},{"location":"api/leakcanary/-logcat-shark-log/-companion/install/#install","title":"install","text":"<p>fun install()</p>"},{"location":"api/leakcanary/-minimum-disk-space-interceptor/","title":"Index","text":"<p>//leakcanary/leakcanary/MinimumDiskSpaceInterceptor</p>"},{"location":"api/leakcanary/-minimum-disk-space-interceptor/#minimumdiskspaceinterceptor","title":"MinimumDiskSpaceInterceptor","text":"<p>class MinimumDiskSpaceInterceptor(application: Application, minimumDiskSpaceBytes: Long, processInfo: ProcessInfo = ProcessInfo.Real) : HeapAnalysisInterceptor</p>"},{"location":"api/leakcanary/-minimum-disk-space-interceptor/#constructors","title":"Constructors","text":"MinimumDiskSpaceInterceptor fun MinimumDiskSpaceInterceptor(application: Application, minimumDiskSpaceBytes: Long, processInfo: ProcessInfo = ProcessInfo.Real)"},{"location":"api/leakcanary/-minimum-disk-space-interceptor/#functions","title":"Functions","text":"Name Summary intercept open override fun intercept(chain: HeapAnalysisInterceptor.Chain): HeapAnalysisJob.Result"},{"location":"api/leakcanary/-minimum-disk-space-interceptor/-minimum-disk-space-interceptor/","title":"minimum disk space interceptor","text":"<p>//leakcanary/leakcanary/MinimumDiskSpaceInterceptor/MinimumDiskSpaceInterceptor</p>"},{"location":"api/leakcanary/-minimum-disk-space-interceptor/-minimum-disk-space-interceptor/#minimumdiskspaceinterceptor","title":"MinimumDiskSpaceInterceptor","text":"<p>fun MinimumDiskSpaceInterceptor(application: Application, minimumDiskSpaceBytes: Long, processInfo: ProcessInfo = ProcessInfo.Real)</p>"},{"location":"api/leakcanary/-minimum-disk-space-interceptor/intercept/","title":"Intercept","text":"<p>//leakcanary/leakcanary/MinimumDiskSpaceInterceptor/intercept</p>"},{"location":"api/leakcanary/-minimum-disk-space-interceptor/intercept/#intercept","title":"intercept","text":"<p>open override fun intercept(chain: HeapAnalysisInterceptor.Chain): HeapAnalysisJob.Result</p>"},{"location":"api/leakcanary/-minimum-elapsed-since-start-interceptor/","title":"Index","text":"<p>//leakcanary/leakcanary/MinimumElapsedSinceStartInterceptor</p>"},{"location":"api/leakcanary/-minimum-elapsed-since-start-interceptor/#minimumelapsedsincestartinterceptor","title":"MinimumElapsedSinceStartInterceptor","text":"<p>class MinimumElapsedSinceStartInterceptor(minimumElapsedSinceStartMillis: Long = TimeUnit.SECONDS.toMillis(30), processInfo: ProcessInfo = ProcessInfo.Real) : HeapAnalysisInterceptor</p>"},{"location":"api/leakcanary/-minimum-elapsed-since-start-interceptor/#constructors","title":"Constructors","text":"MinimumElapsedSinceStartInterceptor fun MinimumElapsedSinceStartInterceptor(minimumElapsedSinceStartMillis: Long = TimeUnit.SECONDS.toMillis(30), processInfo: ProcessInfo = ProcessInfo.Real)"},{"location":"api/leakcanary/-minimum-elapsed-since-start-interceptor/#functions","title":"Functions","text":"Name Summary intercept open override fun intercept(chain: HeapAnalysisInterceptor.Chain): HeapAnalysisJob.Result"},{"location":"api/leakcanary/-minimum-elapsed-since-start-interceptor/-minimum-elapsed-since-start-interceptor/","title":"minimum elapsed since start interceptor","text":"<p>//leakcanary/leakcanary/MinimumElapsedSinceStartInterceptor/MinimumElapsedSinceStartInterceptor</p>"},{"location":"api/leakcanary/-minimum-elapsed-since-start-interceptor/-minimum-elapsed-since-start-interceptor/#minimumelapsedsincestartinterceptor","title":"MinimumElapsedSinceStartInterceptor","text":"<p>fun MinimumElapsedSinceStartInterceptor(minimumElapsedSinceStartMillis: Long = TimeUnit.SECONDS.toMillis(30), processInfo: ProcessInfo = ProcessInfo.Real)</p>"},{"location":"api/leakcanary/-minimum-elapsed-since-start-interceptor/intercept/","title":"Intercept","text":"<p>//leakcanary/leakcanary/MinimumElapsedSinceStartInterceptor/intercept</p>"},{"location":"api/leakcanary/-minimum-elapsed-since-start-interceptor/intercept/#intercept","title":"intercept","text":"<p>open override fun intercept(chain: HeapAnalysisInterceptor.Chain): HeapAnalysisJob.Result</p>"},{"location":"api/leakcanary/-minimum-memory-interceptor/","title":"Index","text":"<p>//leakcanary/leakcanary/MinimumMemoryInterceptor</p>"},{"location":"api/leakcanary/-minimum-memory-interceptor/#minimummemoryinterceptor","title":"MinimumMemoryInterceptor","text":"<p>class MinimumMemoryInterceptor(application: Application, minimumRequiredAvailableMemoryBytes: Long, processInfo: ProcessInfo = ProcessInfo.Real) : HeapAnalysisInterceptor</p>"},{"location":"api/leakcanary/-minimum-memory-interceptor/#constructors","title":"Constructors","text":"MinimumMemoryInterceptor fun MinimumMemoryInterceptor(application: Application, minimumRequiredAvailableMemoryBytes: Long, processInfo: ProcessInfo = ProcessInfo.Real)"},{"location":"api/leakcanary/-minimum-memory-interceptor/#functions","title":"Functions","text":"Name Summary intercept open override fun intercept(chain: HeapAnalysisInterceptor.Chain): HeapAnalysisJob.Result"},{"location":"api/leakcanary/-minimum-memory-interceptor/-minimum-memory-interceptor/","title":"minimum memory interceptor","text":"<p>//leakcanary/leakcanary/MinimumMemoryInterceptor/MinimumMemoryInterceptor</p>"},{"location":"api/leakcanary/-minimum-memory-interceptor/-minimum-memory-interceptor/#minimummemoryinterceptor","title":"MinimumMemoryInterceptor","text":"<p>fun MinimumMemoryInterceptor(application: Application, minimumRequiredAvailableMemoryBytes: Long, processInfo: ProcessInfo = ProcessInfo.Real)</p>"},{"location":"api/leakcanary/-minimum-memory-interceptor/intercept/","title":"Intercept","text":"<p>//leakcanary/leakcanary/MinimumMemoryInterceptor/intercept</p>"},{"location":"api/leakcanary/-minimum-memory-interceptor/intercept/#intercept","title":"intercept","text":"<p>open override fun intercept(chain: HeapAnalysisInterceptor.Chain): HeapAnalysisJob.Result</p>"},{"location":"api/leakcanary/-no-leak-assertion-failed-error/","title":"Index","text":"<p>//leakcanary/leakcanary/NoLeakAssertionFailedError</p>"},{"location":"api/leakcanary/-no-leak-assertion-failed-error/#noleakassertionfailederror","title":"NoLeakAssertionFailedError","text":"<p>class NoLeakAssertionFailedError(val heapAnalysis: HeapAnalysisSuccess) : AssertionError</p> <p>Thrown when using the NoLeakAssertionFailedError.throwOnApplicationLeaks HeapAnalysisReporter</p>"},{"location":"api/leakcanary/-no-leak-assertion-failed-error/#constructors","title":"Constructors","text":"NoLeakAssertionFailedError fun NoLeakAssertionFailedError(heapAnalysis: HeapAnalysisSuccess)"},{"location":"api/leakcanary/-no-leak-assertion-failed-error/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/leakcanary/-no-leak-assertion-failed-error/#functions","title":"Functions","text":"Name Summary addSuppressed fun addSuppressed(p0: Throwable) fillInStackTrace open fun fillInStackTrace(): Throwable getLocalizedMessage open fun getLocalizedMessage(): String getStackTrace open fun getStackTrace(): Array&lt;StackTraceElement&gt; getSuppressed fun getSuppressed(): Array&lt;Throwable&gt; initCause open fun initCause(p0: Throwable): Throwable printStackTrace open fun printStackTrace()open fun printStackTrace(p0: PrintStream)open fun printStackTrace(p0: PrintWriter) setStackTrace open fun setStackTrace(p0: Array&lt;StackTraceElement&gt;)"},{"location":"api/leakcanary/-no-leak-assertion-failed-error/#properties","title":"Properties","text":"Name Summary cause open val cause: Throwable? heapAnalysis val heapAnalysis: HeapAnalysisSuccess message open val message: String?"},{"location":"api/leakcanary/-no-leak-assertion-failed-error/-no-leak-assertion-failed-error/","title":"no leak assertion failed error","text":"<p>//leakcanary/leakcanary/NoLeakAssertionFailedError/NoLeakAssertionFailedError</p>"},{"location":"api/leakcanary/-no-leak-assertion-failed-error/-no-leak-assertion-failed-error/#noleakassertionfailederror","title":"NoLeakAssertionFailedError","text":"<p>fun NoLeakAssertionFailedError(heapAnalysis: HeapAnalysisSuccess)</p>"},{"location":"api/leakcanary/-no-leak-assertion-failed-error/heap-analysis/","title":"Heap analysis","text":"<p>//leakcanary/leakcanary/NoLeakAssertionFailedError/heapAnalysis</p>"},{"location":"api/leakcanary/-no-leak-assertion-failed-error/heap-analysis/#heapanalysis","title":"heapAnalysis","text":"<p>val heapAnalysis: HeapAnalysisSuccess</p>"},{"location":"api/leakcanary/-no-leak-assertion-failed-error/-companion/","title":"Index","text":"<p>//leakcanary/leakcanary/NoLeakAssertionFailedError/Companion</p>"},{"location":"api/leakcanary/-no-leak-assertion-failed-error/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/leakcanary/-no-leak-assertion-failed-error/-companion/#functions","title":"Functions","text":"Name Summary throwOnApplicationLeaks fun throwOnApplicationLeaks(): HeapAnalysisReporterA HeapAnalysisReporter that throws a NoLeakAssertionFailedError when the heap analysis has application leaks."},{"location":"api/leakcanary/-no-leak-assertion-failed-error/-companion/throw-on-application-leaks/","title":"Throw on application leaks","text":"<p>//leakcanary/leakcanary/NoLeakAssertionFailedError/Companion/throwOnApplicationLeaks</p>"},{"location":"api/leakcanary/-no-leak-assertion-failed-error/-companion/throw-on-application-leaks/#throwonapplicationleaks","title":"throwOnApplicationLeaks","text":"<p>fun throwOnApplicationLeaks(): HeapAnalysisReporter</p> <p>A HeapAnalysisReporter that throws a NoLeakAssertionFailedError when the heap analysis has application leaks.</p>"},{"location":"api/leakcanary/-notification-event-listener/","title":"Index","text":"<p>//leakcanary/leakcanary/NotificationEventListener</p>"},{"location":"api/leakcanary/-notification-event-listener/#notificationeventlistener","title":"NotificationEventListener","text":"<p>object NotificationEventListener : EventListener</p>"},{"location":"api/leakcanary/-notification-event-listener/#functions","title":"Functions","text":"Name Summary onEvent open override fun onEvent(event: EventListener.Event)onEvent is always called from the thread the events are emitted from, which is documented for each event. This enables you to potentially block a chain of events, waiting for some pre work to be done."},{"location":"api/leakcanary/-notification-event-listener/on-event/","title":"On event","text":"<p>//leakcanary/leakcanary/NotificationEventListener/onEvent</p>"},{"location":"api/leakcanary/-notification-event-listener/on-event/#onevent","title":"onEvent","text":"<p>open override fun onEvent(event: EventListener.Event)</p> <p>onEvent is always called from the thread the events are emitted from, which is documented for each event. This enables you to potentially block a chain of events, waiting for some pre work to be done.</p>"},{"location":"api/leakcanary/-object-watcher/","title":"Index","text":"<p>//leakcanary/leakcanary/ObjectWatcher</p>"},{"location":"api/leakcanary/-object-watcher/#objectwatcher","title":"ObjectWatcher","text":"<p>class ObjectWatcher(clock: Clock, checkRetainedExecutor: Executor, isEnabled: () -&gt; Boolean = { true }) : ReachabilityWatcher</p> <p>ObjectWatcher can be passed objects to watch. It will create KeyedWeakReference instances that reference watches objects, and check if those references have been cleared as expected on the checkRetainedExecutor executor. If not, these objects are considered retained and ObjectWatcher will then notify registered OnObjectRetainedListeners on that executor thread.</p> <p>checkRetainedExecutor is expected to run its tasks on a background thread, with a significant delay to give the GC the opportunity to identify weakly reachable objects.</p> <p>ObjectWatcher is thread safe.</p>"},{"location":"api/leakcanary/-object-watcher/#constructors","title":"Constructors","text":"ObjectWatcher fun ObjectWatcher(clock: Clock, checkRetainedExecutor: Executor, isEnabled: () -&gt; Boolean = { true })"},{"location":"api/leakcanary/-object-watcher/#functions","title":"Functions","text":"Name Summary addOnObjectRetainedListener @Synchronizedfun addOnObjectRetainedListener(listener: OnObjectRetainedListener) clearObjectsWatchedBefore @Synchronizedfun clearObjectsWatchedBefore(heapDumpUptimeMillis: Long)Clears all KeyedWeakReference that were created before heapDumpUptimeMillis (based on clock) clearWatchedObjects @Synchronizedfun clearWatchedObjects()Clears all KeyedWeakReference expectWeaklyReachable @Synchronizedopen override fun expectWeaklyReachable(watchedObject: Any, description: String)Expects the provided watchedObject to become weakly reachable soon. If not, watchedObject will be considered retained. removeOnObjectRetainedListener @Synchronizedfun removeOnObjectRetainedListener(listener: OnObjectRetainedListener)"},{"location":"api/leakcanary/-object-watcher/#properties","title":"Properties","text":"Name Summary hasRetainedObjects @get:Synchronizedval hasRetainedObjects: BooleanReturns true if there are watched objects that aren\u2019t weakly reachable, and have been watched for long enough to be considered retained. hasWatchedObjects @get:Synchronizedval hasWatchedObjects: BooleanReturns true if there are watched objects that aren\u2019t weakly reachable, even if they haven\u2019t been watched for long enough to be considered retained. retainedObjectCount @get:Synchronizedval retainedObjectCount: IntReturns the number of retained objects, ie the number of watched objects that aren\u2019t weakly reachable, and have been watched for long enough to be considered retained. retainedObjects @get:Synchronizedval retainedObjects: List&lt;Any&gt;Returns the objects that are currently considered retained. Useful for logging purposes. Be careful with those objects and release them ASAP as you may creating longer lived leaks then the one that are already there."},{"location":"api/leakcanary/-object-watcher/-object-watcher/","title":"object watcher","text":"<p>//leakcanary/leakcanary/ObjectWatcher/ObjectWatcher</p>"},{"location":"api/leakcanary/-object-watcher/-object-watcher/#objectwatcher","title":"ObjectWatcher","text":"<p>fun ObjectWatcher(clock: Clock, checkRetainedExecutor: Executor, isEnabled: () -&gt; Boolean = { true })</p>"},{"location":"api/leakcanary/-object-watcher/add-on-object-retained-listener/","title":"Add on object retained listener","text":"<p>//leakcanary/leakcanary/ObjectWatcher/addOnObjectRetainedListener</p>"},{"location":"api/leakcanary/-object-watcher/add-on-object-retained-listener/#addonobjectretainedlistener","title":"addOnObjectRetainedListener","text":"<p>@Synchronized</p> <p>fun addOnObjectRetainedListener(listener: OnObjectRetainedListener)</p>"},{"location":"api/leakcanary/-object-watcher/clear-objects-watched-before/","title":"Clear objects watched before","text":"<p>//leakcanary/leakcanary/ObjectWatcher/clearObjectsWatchedBefore</p>"},{"location":"api/leakcanary/-object-watcher/clear-objects-watched-before/#clearobjectswatchedbefore","title":"clearObjectsWatchedBefore","text":"<p>@Synchronized</p> <p>fun clearObjectsWatchedBefore(heapDumpUptimeMillis: Long)</p> <p>Clears all KeyedWeakReference that were created before heapDumpUptimeMillis (based on clock)</p>"},{"location":"api/leakcanary/-object-watcher/clear-watched-objects/","title":"Clear watched objects","text":"<p>//leakcanary/leakcanary/ObjectWatcher/clearWatchedObjects</p>"},{"location":"api/leakcanary/-object-watcher/clear-watched-objects/#clearwatchedobjects","title":"clearWatchedObjects","text":"<p>@Synchronized</p> <p>fun clearWatchedObjects()</p> <p>Clears all KeyedWeakReference</p>"},{"location":"api/leakcanary/-object-watcher/expect-weakly-reachable/","title":"Expect weakly reachable","text":"<p>//leakcanary/leakcanary/ObjectWatcher/expectWeaklyReachable</p>"},{"location":"api/leakcanary/-object-watcher/expect-weakly-reachable/#expectweaklyreachable","title":"expectWeaklyReachable","text":"<p>@Synchronized</p> <p>open override fun expectWeaklyReachable(watchedObject: Any, description: String)</p> <p>Expects the provided watchedObject to become weakly reachable soon. If not, watchedObject will be considered retained.</p>"},{"location":"api/leakcanary/-object-watcher/has-retained-objects/","title":"Has retained objects","text":"<p>//leakcanary/leakcanary/ObjectWatcher/hasRetainedObjects</p>"},{"location":"api/leakcanary/-object-watcher/has-retained-objects/#hasretainedobjects","title":"hasRetainedObjects","text":"<p>@get:Synchronized</p> <p>val hasRetainedObjects: Boolean</p> <p>Returns true if there are watched objects that aren\u2019t weakly reachable, and have been watched for long enough to be considered retained.</p>"},{"location":"api/leakcanary/-object-watcher/has-watched-objects/","title":"Has watched objects","text":"<p>//leakcanary/leakcanary/ObjectWatcher/hasWatchedObjects</p>"},{"location":"api/leakcanary/-object-watcher/has-watched-objects/#haswatchedobjects","title":"hasWatchedObjects","text":"<p>@get:Synchronized</p> <p>val hasWatchedObjects: Boolean</p> <p>Returns true if there are watched objects that aren\u2019t weakly reachable, even if they haven\u2019t been watched for long enough to be considered retained.</p>"},{"location":"api/leakcanary/-object-watcher/remove-on-object-retained-listener/","title":"Remove on object retained listener","text":"<p>//leakcanary/leakcanary/ObjectWatcher/removeOnObjectRetainedListener</p>"},{"location":"api/leakcanary/-object-watcher/remove-on-object-retained-listener/#removeonobjectretainedlistener","title":"removeOnObjectRetainedListener","text":"<p>@Synchronized</p> <p>fun removeOnObjectRetainedListener(listener: OnObjectRetainedListener)</p>"},{"location":"api/leakcanary/-object-watcher/retained-object-count/","title":"Retained object count","text":"<p>//leakcanary/leakcanary/ObjectWatcher/retainedObjectCount</p>"},{"location":"api/leakcanary/-object-watcher/retained-object-count/#retainedobjectcount","title":"retainedObjectCount","text":"<p>@get:Synchronized</p> <p>val retainedObjectCount: Int</p> <p>Returns the number of retained objects, ie the number of watched objects that aren\u2019t weakly reachable, and have been watched for long enough to be considered retained.</p>"},{"location":"api/leakcanary/-object-watcher/retained-objects/","title":"Retained objects","text":"<p>//leakcanary/leakcanary/ObjectWatcher/retainedObjects</p>"},{"location":"api/leakcanary/-object-watcher/retained-objects/#retainedobjects","title":"retainedObjects","text":"<p>@get:Synchronized</p> <p>val retainedObjects: List&lt;Any&gt;</p> <p>Returns the objects that are currently considered retained. Useful for logging purposes. Be careful with those objects and release them ASAP as you may creating longer lived leaks then the one that are already there.</p>"},{"location":"api/leakcanary/-on-object-retained-listener/","title":"Index","text":"<p>//leakcanary/leakcanary/OnObjectRetainedListener</p>"},{"location":"api/leakcanary/-on-object-retained-listener/#onobjectretainedlistener","title":"OnObjectRetainedListener","text":"<p>fun interface OnObjectRetainedListener</p> <p>Listener used by ObjectWatcher to report retained objects.</p> <p>This is a functional interface with which you can create a OnObjectRetainedListener from a lambda.</p>"},{"location":"api/leakcanary/-on-object-retained-listener/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/leakcanary/-on-object-retained-listener/#functions","title":"Functions","text":"Name Summary onObjectRetained abstract fun onObjectRetained()A watched object became retained."},{"location":"api/leakcanary/-on-object-retained-listener/on-object-retained/","title":"On object retained","text":"<p>//leakcanary/leakcanary/OnObjectRetainedListener/onObjectRetained</p>"},{"location":"api/leakcanary/-on-object-retained-listener/on-object-retained/#onobjectretained","title":"onObjectRetained","text":"<p>abstract fun onObjectRetained()</p> <p>A watched object became retained.</p>"},{"location":"api/leakcanary/-on-object-retained-listener/-companion/","title":"Index","text":"<p>//leakcanary/leakcanary/OnObjectRetainedListener/Companion</p>"},{"location":"api/leakcanary/-on-object-retained-listener/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/leakcanary/-on-object-retained-listener/-companion/#functions","title":"Functions","text":"Name Summary invoke inline operator fun invoke(crossinline block: () -&gt; Unit): OnObjectRetainedListenerUtility function to create a OnObjectRetainedListener from the passed in block lambda instead of using the anonymous object : OnObjectRetainedListener syntax."},{"location":"api/leakcanary/-on-object-retained-listener/-companion/invoke/","title":"Invoke","text":"<p>//leakcanary/leakcanary/OnObjectRetainedListener/Companion/invoke</p>"},{"location":"api/leakcanary/-on-object-retained-listener/-companion/invoke/#invoke","title":"invoke","text":"<p>inline operator fun invoke(crossinline block: () -&gt; Unit): OnObjectRetainedListener</p> <p>Utility function to create a OnObjectRetainedListener from the passed in block lambda instead of using the anonymous object : OnObjectRetainedListener syntax.</p> <p>Usage:</p> <p>val listener = OnObjectRetainedListener {\\ \\ }</p>"},{"location":"api/leakcanary/-once-per-period-interceptor/","title":"Index","text":"<p>//leakcanary/leakcanary/OncePerPeriodInterceptor</p>"},{"location":"api/leakcanary/-once-per-period-interceptor/#onceperperiodinterceptor","title":"OncePerPeriodInterceptor","text":"<p>class OncePerPeriodInterceptor(application: Application, periodMillis: Long = TimeUnit.DAYS.toMillis(1)) : HeapAnalysisInterceptor</p> <p>Proceeds once per period (of time) and then cancels all follow up jobs until period has passed.</p>"},{"location":"api/leakcanary/-once-per-period-interceptor/#constructors","title":"Constructors","text":"OncePerPeriodInterceptor fun OncePerPeriodInterceptor(application: Application, periodMillis: Long = TimeUnit.DAYS.toMillis(1))"},{"location":"api/leakcanary/-once-per-period-interceptor/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/leakcanary/-once-per-period-interceptor/#functions","title":"Functions","text":"Name Summary forget fun forget() intercept open override fun intercept(chain: HeapAnalysisInterceptor.Chain): HeapAnalysisJob.Result"},{"location":"api/leakcanary/-once-per-period-interceptor/-once-per-period-interceptor/","title":"once per period interceptor","text":"<p>//leakcanary/leakcanary/OncePerPeriodInterceptor/OncePerPeriodInterceptor</p>"},{"location":"api/leakcanary/-once-per-period-interceptor/-once-per-period-interceptor/#onceperperiodinterceptor","title":"OncePerPeriodInterceptor","text":"<p>fun OncePerPeriodInterceptor(application: Application, periodMillis: Long = TimeUnit.DAYS.toMillis(1))</p>"},{"location":"api/leakcanary/-once-per-period-interceptor/forget/","title":"Forget","text":"<p>//leakcanary/leakcanary/OncePerPeriodInterceptor/forget</p>"},{"location":"api/leakcanary/-once-per-period-interceptor/forget/#forget","title":"forget","text":"<p>fun forget()</p>"},{"location":"api/leakcanary/-once-per-period-interceptor/intercept/","title":"Intercept","text":"<p>//leakcanary/leakcanary/OncePerPeriodInterceptor/intercept</p>"},{"location":"api/leakcanary/-once-per-period-interceptor/intercept/#intercept","title":"intercept","text":"<p>open override fun intercept(chain: HeapAnalysisInterceptor.Chain): HeapAnalysisJob.Result</p>"},{"location":"api/leakcanary/-once-per-period-interceptor/-companion/","title":"Index","text":"<p>//leakcanary/leakcanary/OncePerPeriodInterceptor/Companion</p>"},{"location":"api/leakcanary/-once-per-period-interceptor/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/leakcanary/-plumber-startup-initializer/","title":"Index","text":"<p>//leakcanary/leakcanary/PlumberStartupInitializer</p>"},{"location":"api/leakcanary/-plumber-startup-initializer/#plumberstartupinitializer","title":"PlumberStartupInitializer","text":"<p>class PlumberStartupInitializer : Initializer&lt;PlumberStartupInitializer&gt;</p>"},{"location":"api/leakcanary/-plumber-startup-initializer/#constructors","title":"Constructors","text":"PlumberStartupInitializer fun PlumberStartupInitializer()"},{"location":"api/leakcanary/-plumber-startup-initializer/#functions","title":"Functions","text":"Name Summary create open override fun create(context: Context): PlumberStartupInitializer dependencies open override fun dependencies(): List&lt;Class&lt;out Initializer&lt;*&gt;&gt;&gt;"},{"location":"api/leakcanary/-plumber-startup-initializer/-plumber-startup-initializer/","title":"plumber startup initializer","text":"<p>//leakcanary/leakcanary/PlumberStartupInitializer/PlumberStartupInitializer</p>"},{"location":"api/leakcanary/-plumber-startup-initializer/-plumber-startup-initializer/#plumberstartupinitializer","title":"PlumberStartupInitializer","text":"<p>fun PlumberStartupInitializer()</p>"},{"location":"api/leakcanary/-plumber-startup-initializer/create/","title":"Create","text":"<p>//leakcanary/leakcanary/PlumberStartupInitializer/create</p>"},{"location":"api/leakcanary/-plumber-startup-initializer/create/#create","title":"create","text":"<p>open override fun create(context: Context): PlumberStartupInitializer</p>"},{"location":"api/leakcanary/-plumber-startup-initializer/dependencies/","title":"Dependencies","text":"<p>//leakcanary/leakcanary/PlumberStartupInitializer/dependencies</p>"},{"location":"api/leakcanary/-plumber-startup-initializer/dependencies/#dependencies","title":"dependencies","text":"<p>open override fun dependencies(): List&lt;Class&lt;out Initializer&lt;*&gt;&gt;&gt;</p>"},{"location":"api/leakcanary/-process-info/","title":"Index","text":"<p>//leakcanary/leakcanary/ProcessInfo</p>"},{"location":"api/leakcanary/-process-info/#processinfo","title":"ProcessInfo","text":"<p>interface ProcessInfo</p>"},{"location":"api/leakcanary/-process-info/#types","title":"Types","text":"Name Summary AvailableRam sealed class AvailableRam Real object Real : ProcessInfo"},{"location":"api/leakcanary/-process-info/#functions","title":"Functions","text":"Name Summary availableDiskSpaceBytes abstract fun availableDiskSpaceBytes(path: File): Long availableRam abstract fun availableRam(context: Context): ProcessInfo.AvailableRam"},{"location":"api/leakcanary/-process-info/#properties","title":"Properties","text":"Name Summary elapsedMillisSinceStart abstract val elapsedMillisSinceStart: Long isImportanceBackground abstract val isImportanceBackground: Boolean"},{"location":"api/leakcanary/-process-info/#inheritors","title":"Inheritors","text":"Name Real"},{"location":"api/leakcanary/-process-info/available-disk-space-bytes/","title":"Available disk space bytes","text":"<p>//leakcanary/leakcanary/ProcessInfo/availableDiskSpaceBytes</p>"},{"location":"api/leakcanary/-process-info/available-disk-space-bytes/#availablediskspacebytes","title":"availableDiskSpaceBytes","text":"<p>abstract fun availableDiskSpaceBytes(path: File): Long</p>"},{"location":"api/leakcanary/-process-info/available-ram/","title":"Available ram","text":"<p>//leakcanary/leakcanary/ProcessInfo/availableRam</p>"},{"location":"api/leakcanary/-process-info/available-ram/#availableram","title":"availableRam","text":"<p>abstract fun availableRam(context: Context): ProcessInfo.AvailableRam</p>"},{"location":"api/leakcanary/-process-info/elapsed-millis-since-start/","title":"Elapsed millis since start","text":"<p>//leakcanary/leakcanary/ProcessInfo/elapsedMillisSinceStart</p>"},{"location":"api/leakcanary/-process-info/elapsed-millis-since-start/#elapsedmillissincestart","title":"elapsedMillisSinceStart","text":"<p>abstract val elapsedMillisSinceStart: Long</p>"},{"location":"api/leakcanary/-process-info/is-importance-background/","title":"Is importance background","text":"<p>//leakcanary/leakcanary/ProcessInfo/isImportanceBackground</p>"},{"location":"api/leakcanary/-process-info/is-importance-background/#isimportancebackground","title":"isImportanceBackground","text":"<p>abstract val isImportanceBackground: Boolean</p>"},{"location":"api/leakcanary/-process-info/-available-ram/","title":"Index","text":"<p>//leakcanary/leakcanary/ProcessInfo/AvailableRam</p>"},{"location":"api/leakcanary/-process-info/-available-ram/#availableram","title":"AvailableRam","text":"<p>sealed class AvailableRam</p>"},{"location":"api/leakcanary/-process-info/-available-ram/#types","title":"Types","text":"Name Summary BelowThreshold object BelowThreshold : ProcessInfo.AvailableRam LowRamDevice object LowRamDevice : ProcessInfo.AvailableRam Memory class Memory(val bytes: Long) : ProcessInfo.AvailableRam"},{"location":"api/leakcanary/-process-info/-available-ram/#inheritors","title":"Inheritors","text":"Name LowRamDevice BelowThreshold Memory"},{"location":"api/leakcanary/-process-info/-available-ram/-below-threshold/","title":"Index","text":"<p>//leakcanary/leakcanary/ProcessInfo/AvailableRam/BelowThreshold</p>"},{"location":"api/leakcanary/-process-info/-available-ram/-below-threshold/#belowthreshold","title":"BelowThreshold","text":"<p>object BelowThreshold : ProcessInfo.AvailableRam</p>"},{"location":"api/leakcanary/-process-info/-available-ram/-low-ram-device/","title":"Index","text":"<p>//leakcanary/leakcanary/ProcessInfo/AvailableRam/LowRamDevice</p>"},{"location":"api/leakcanary/-process-info/-available-ram/-low-ram-device/#lowramdevice","title":"LowRamDevice","text":"<p>object LowRamDevice : ProcessInfo.AvailableRam</p>"},{"location":"api/leakcanary/-process-info/-available-ram/-memory/","title":"Index","text":"<p>//leakcanary/leakcanary/ProcessInfo/AvailableRam/Memory</p>"},{"location":"api/leakcanary/-process-info/-available-ram/-memory/#memory","title":"Memory","text":"<p>class Memory(val bytes: Long) : ProcessInfo.AvailableRam</p>"},{"location":"api/leakcanary/-process-info/-available-ram/-memory/#constructors","title":"Constructors","text":"Memory fun Memory(bytes: Long)"},{"location":"api/leakcanary/-process-info/-available-ram/-memory/#properties","title":"Properties","text":"Name Summary bytes val bytes: Long"},{"location":"api/leakcanary/-process-info/-available-ram/-memory/-memory/","title":"memory","text":"<p>//leakcanary/leakcanary/ProcessInfo/AvailableRam/Memory/Memory</p>"},{"location":"api/leakcanary/-process-info/-available-ram/-memory/-memory/#memory","title":"Memory","text":"<p>fun Memory(bytes: Long)</p>"},{"location":"api/leakcanary/-process-info/-available-ram/-memory/bytes/","title":"Bytes","text":"<p>//leakcanary/leakcanary/ProcessInfo/AvailableRam/Memory/bytes</p>"},{"location":"api/leakcanary/-process-info/-available-ram/-memory/bytes/#bytes","title":"bytes","text":"<p>val bytes: Long</p>"},{"location":"api/leakcanary/-process-info/-real/","title":"Index","text":"<p>//leakcanary/leakcanary/ProcessInfo/Real</p>"},{"location":"api/leakcanary/-process-info/-real/#real","title":"Real","text":"<p>object Real : ProcessInfo</p>"},{"location":"api/leakcanary/-process-info/-real/#functions","title":"Functions","text":"Name Summary availableDiskSpaceBytes open override fun availableDiskSpaceBytes(path: File): Long availableRam open override fun availableRam(context: Context): ProcessInfo.AvailableRam"},{"location":"api/leakcanary/-process-info/-real/#properties","title":"Properties","text":"Name Summary elapsedMillisSinceStart open override val elapsedMillisSinceStart: Long isImportanceBackground open override val isImportanceBackground: Boolean"},{"location":"api/leakcanary/-process-info/-real/available-disk-space-bytes/","title":"Available disk space bytes","text":"<p>//leakcanary/leakcanary/ProcessInfo/Real/availableDiskSpaceBytes</p>"},{"location":"api/leakcanary/-process-info/-real/available-disk-space-bytes/#availablediskspacebytes","title":"availableDiskSpaceBytes","text":"<p>open override fun availableDiskSpaceBytes(path: File): Long</p>"},{"location":"api/leakcanary/-process-info/-real/available-ram/","title":"Available ram","text":"<p>//leakcanary/leakcanary/ProcessInfo/Real/availableRam</p>"},{"location":"api/leakcanary/-process-info/-real/available-ram/#availableram","title":"availableRam","text":"<p>open override fun availableRam(context: Context): ProcessInfo.AvailableRam</p>"},{"location":"api/leakcanary/-process-info/-real/elapsed-millis-since-start/","title":"Elapsed millis since start","text":"<p>//leakcanary/leakcanary/ProcessInfo/Real/elapsedMillisSinceStart</p>"},{"location":"api/leakcanary/-process-info/-real/elapsed-millis-since-start/#elapsedmillissincestart","title":"elapsedMillisSinceStart","text":"<p>open override val elapsedMillisSinceStart: Long</p>"},{"location":"api/leakcanary/-process-info/-real/is-importance-background/","title":"Is importance background","text":"<p>//leakcanary/leakcanary/ProcessInfo/Real/isImportanceBackground</p>"},{"location":"api/leakcanary/-process-info/-real/is-importance-background/#isimportancebackground","title":"isImportanceBackground","text":"<p>open override val isImportanceBackground: Boolean</p>"},{"location":"api/leakcanary/-reachability-watcher/","title":"Index","text":"<p>//leakcanary/leakcanary/ReachabilityWatcher</p>"},{"location":"api/leakcanary/-reachability-watcher/#reachabilitywatcher","title":"ReachabilityWatcher","text":"<p>fun interface ReachabilityWatcher</p>"},{"location":"api/leakcanary/-reachability-watcher/#functions","title":"Functions","text":"Name Summary expectWeaklyReachable abstract fun expectWeaklyReachable(watchedObject: Any, description: String)Expects the provided watchedObject to become weakly reachable soon. If not, watchedObject will be considered retained."},{"location":"api/leakcanary/-reachability-watcher/#inheritors","title":"Inheritors","text":"Name ObjectWatcher"},{"location":"api/leakcanary/-reachability-watcher/expect-weakly-reachable/","title":"Expect weakly reachable","text":"<p>//leakcanary/leakcanary/ReachabilityWatcher/expectWeaklyReachable</p>"},{"location":"api/leakcanary/-reachability-watcher/expect-weakly-reachable/#expectweaklyreachable","title":"expectWeaklyReachable","text":"<p>abstract fun expectWeaklyReachable(watchedObject: Any, description: String)</p> <p>Expects the provided watchedObject to become weakly reachable soon. If not, watchedObject will be considered retained.</p>"},{"location":"api/leakcanary/-remote-work-manager-heap-analyzer/","title":"Index","text":"<p>//leakcanary/leakcanary/RemoteWorkManagerHeapAnalyzer</p>"},{"location":"api/leakcanary/-remote-work-manager-heap-analyzer/#remoteworkmanagerheapanalyzer","title":"RemoteWorkManagerHeapAnalyzer","text":"<p>object RemoteWorkManagerHeapAnalyzer : EventListener</p> <p>When receiving a HeapDump event, starts a WorkManager worker that performs heap analysis in a dedicated :leakcanary process</p>"},{"location":"api/leakcanary/-remote-work-manager-heap-analyzer/#functions","title":"Functions","text":"Name Summary onEvent open override fun onEvent(event: EventListener.Event)onEvent is always called from the thread the events are emitted from, which is documented for each event. This enables you to potentially block a chain of events, waiting for some pre work to be done."},{"location":"api/leakcanary/-remote-work-manager-heap-analyzer/on-event/","title":"On event","text":"<p>//leakcanary/leakcanary/RemoteWorkManagerHeapAnalyzer/onEvent</p>"},{"location":"api/leakcanary/-remote-work-manager-heap-analyzer/on-event/#onevent","title":"onEvent","text":"<p>open override fun onEvent(event: EventListener.Event)</p> <p>onEvent is always called from the thread the events are emitted from, which is documented for each event. This enables you to potentially block a chain of events, waiting for some pre work to be done.</p>"},{"location":"api/leakcanary/-root-view-watcher/","title":"Index","text":"<p>//leakcanary/leakcanary/RootViewWatcher</p>"},{"location":"api/leakcanary/-root-view-watcher/#rootviewwatcher","title":"RootViewWatcher","text":"<p>class RootViewWatcher(reachabilityWatcher: ReachabilityWatcher) : InstallableWatcher</p> <p>Expects root views to become weakly reachable soon after they are removed from the window manager.</p>"},{"location":"api/leakcanary/-root-view-watcher/#constructors","title":"Constructors","text":"RootViewWatcher fun RootViewWatcher(reachabilityWatcher: ReachabilityWatcher)"},{"location":"api/leakcanary/-root-view-watcher/#functions","title":"Functions","text":"Name Summary install open override fun install() uninstall open override fun uninstall()"},{"location":"api/leakcanary/-root-view-watcher/-root-view-watcher/","title":"root view watcher","text":"<p>//leakcanary/leakcanary/RootViewWatcher/RootViewWatcher</p>"},{"location":"api/leakcanary/-root-view-watcher/-root-view-watcher/#rootviewwatcher","title":"RootViewWatcher","text":"<p>fun RootViewWatcher(reachabilityWatcher: ReachabilityWatcher)</p>"},{"location":"api/leakcanary/-root-view-watcher/install/","title":"Install","text":"<p>//leakcanary/leakcanary/RootViewWatcher/install</p>"},{"location":"api/leakcanary/-root-view-watcher/install/#install","title":"install","text":"<p>open override fun install()</p>"},{"location":"api/leakcanary/-root-view-watcher/uninstall/","title":"Uninstall","text":"<p>//leakcanary/leakcanary/RootViewWatcher/uninstall</p>"},{"location":"api/leakcanary/-root-view-watcher/uninstall/#uninstall","title":"uninstall","text":"<p>open override fun uninstall()</p>"},{"location":"api/leakcanary/-save-resource-ids-interceptor/","title":"Index","text":"<p>//leakcanary/leakcanary/SaveResourceIdsInterceptor</p>"},{"location":"api/leakcanary/-save-resource-ids-interceptor/#saveresourceidsinterceptor","title":"SaveResourceIdsInterceptor","text":"<p>class SaveResourceIdsInterceptor(resources: Resources) : HeapAnalysisInterceptor</p> <p>Interceptor that saves the names of R.id.* entries and their associated int values to a static field that can then be read from the heap dump.</p>"},{"location":"api/leakcanary/-save-resource-ids-interceptor/#constructors","title":"Constructors","text":"SaveResourceIdsInterceptor fun SaveResourceIdsInterceptor(resources: Resources)"},{"location":"api/leakcanary/-save-resource-ids-interceptor/#functions","title":"Functions","text":"Name Summary intercept open override fun intercept(chain: HeapAnalysisInterceptor.Chain): HeapAnalysisJob.Result"},{"location":"api/leakcanary/-save-resource-ids-interceptor/-save-resource-ids-interceptor/","title":"save resource ids interceptor","text":"<p>//leakcanary/leakcanary/SaveResourceIdsInterceptor/SaveResourceIdsInterceptor</p>"},{"location":"api/leakcanary/-save-resource-ids-interceptor/-save-resource-ids-interceptor/#saveresourceidsinterceptor","title":"SaveResourceIdsInterceptor","text":"<p>fun SaveResourceIdsInterceptor(resources: Resources)</p>"},{"location":"api/leakcanary/-save-resource-ids-interceptor/intercept/","title":"Intercept","text":"<p>//leakcanary/leakcanary/SaveResourceIdsInterceptor/intercept</p>"},{"location":"api/leakcanary/-save-resource-ids-interceptor/intercept/#intercept","title":"intercept","text":"<p>open override fun intercept(chain: HeapAnalysisInterceptor.Chain): HeapAnalysisJob.Result</p>"},{"location":"api/leakcanary/-screen-off-trigger/","title":"Index","text":"<p>//leakcanary/leakcanary/ScreenOffTrigger</p>"},{"location":"api/leakcanary/-screen-off-trigger/#screenofftrigger","title":"ScreenOffTrigger","text":"<p>class ScreenOffTrigger(application: Application, analysisClient: HeapAnalysisClient, analysisExecutor: Executor, analysisCallback: (HeapAnalysisJob.Result) -&gt; Unit = { result -&gt;     SharkLog.d { \"$result\" }   })</p>"},{"location":"api/leakcanary/-screen-off-trigger/#constructors","title":"Constructors","text":"ScreenOffTrigger fun ScreenOffTrigger(application: Application, analysisClient: HeapAnalysisClient, analysisExecutor: Executor, analysisCallback: (HeapAnalysisJob.Result) -&gt; Unit = { result -&gt;     SharkLog.d { \"$result\" }   })"},{"location":"api/leakcanary/-screen-off-trigger/#functions","title":"Functions","text":"Name Summary start fun start() stop fun stop()"},{"location":"api/leakcanary/-screen-off-trigger/-screen-off-trigger/","title":"screen off trigger","text":"<p>//leakcanary/leakcanary/ScreenOffTrigger/ScreenOffTrigger</p>"},{"location":"api/leakcanary/-screen-off-trigger/-screen-off-trigger/#screenofftrigger","title":"ScreenOffTrigger","text":"<p>fun ScreenOffTrigger(application: Application, analysisClient: HeapAnalysisClient, analysisExecutor: Executor, analysisCallback: (HeapAnalysisJob.Result) -&gt; Unit = { result -&gt;     SharkLog.d { \"$result\" }   })</p>"},{"location":"api/leakcanary/-screen-off-trigger/start/","title":"Start","text":"<p>//leakcanary/leakcanary/ScreenOffTrigger/start</p>"},{"location":"api/leakcanary/-screen-off-trigger/start/#start","title":"start","text":"<p>fun start()</p>"},{"location":"api/leakcanary/-screen-off-trigger/stop/","title":"Stop","text":"<p>//leakcanary/leakcanary/ScreenOffTrigger/stop</p>"},{"location":"api/leakcanary/-screen-off-trigger/stop/#stop","title":"stop","text":"<p>fun stop()</p>"},{"location":"api/leakcanary/-service-watcher/","title":"Index","text":"<p>//leakcanary/leakcanary/ServiceWatcher</p>"},{"location":"api/leakcanary/-service-watcher/#servicewatcher","title":"ServiceWatcher","text":"<p>class ServiceWatcher(reachabilityWatcher: ReachabilityWatcher) : InstallableWatcher</p> <p>Expects services to become weakly reachable soon after they receive the Service.onDestroy callback.</p>"},{"location":"api/leakcanary/-service-watcher/#constructors","title":"Constructors","text":"ServiceWatcher fun ServiceWatcher(reachabilityWatcher: ReachabilityWatcher)"},{"location":"api/leakcanary/-service-watcher/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/leakcanary/-service-watcher/#functions","title":"Functions","text":"Name Summary install open override fun install() uninstall open override fun uninstall()"},{"location":"api/leakcanary/-service-watcher/-service-watcher/","title":"service watcher","text":"<p>//leakcanary/leakcanary/ServiceWatcher/ServiceWatcher</p>"},{"location":"api/leakcanary/-service-watcher/-service-watcher/#servicewatcher","title":"ServiceWatcher","text":"<p>fun ServiceWatcher(reachabilityWatcher: ReachabilityWatcher)</p>"},{"location":"api/leakcanary/-service-watcher/install/","title":"Install","text":"<p>//leakcanary/leakcanary/ServiceWatcher/install</p>"},{"location":"api/leakcanary/-service-watcher/install/#install","title":"install","text":"<p>open override fun install()</p>"},{"location":"api/leakcanary/-service-watcher/uninstall/","title":"Uninstall","text":"<p>//leakcanary/leakcanary/ServiceWatcher/uninstall</p>"},{"location":"api/leakcanary/-service-watcher/uninstall/#uninstall","title":"uninstall","text":"<p>open override fun uninstall()</p>"},{"location":"api/leakcanary/-service-watcher/-companion/","title":"Index","text":"<p>//leakcanary/leakcanary/ServiceWatcher/Companion</p>"},{"location":"api/leakcanary/-service-watcher/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/leakcanary/-skip-leak-detection/","title":"Index","text":"<p>//leakcanary/leakcanary/SkipLeakDetection</p>"},{"location":"api/leakcanary/-skip-leak-detection/#skipleakdetection","title":"SkipLeakDetection","text":"<p>@Target(allowedTargets = [AnnotationTarget.CLASS, AnnotationTarget.FUNCTION])</p> <p>annotation class SkipLeakDetection(val message: String, val assertionTags: String)</p> <p>Annotation for skipping leak detection in a UI test that calls LeakAssertions.assertNoLeaks. This annotation is useful to skip a leak detection in a test until the leaks are fixed.</p> <p>The check is performed by shouldSkipTest which is called by AndroidDetectLeaksAssert, which requires that the TestDescriptionHolder rule be applied and evaluating when LeakAssertions.assertNoLeaks is called.</p> <p>message should contain an explanation of why leak detection is skipped, e.g. a reference to a filed issue.</p> <p>The optional assertionTags allows finer grained filtering based on the tag value passed to LeakAssertions.assertNoLeaks. If assertionTags is empty, then the test will skip leak detection entirely. If assertionTags is not empty, then the test will skip leak detection for any call to LeakAssertions.assertNoLeaks with a tag value contained in assertionTags.</p>"},{"location":"api/leakcanary/-skip-leak-detection/#constructors","title":"Constructors","text":"SkipLeakDetection fun SkipLeakDetection(message: String, vararg assertionTags: String)"},{"location":"api/leakcanary/-skip-leak-detection/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/leakcanary/-skip-leak-detection/#properties","title":"Properties","text":"Name Summary assertionTags val assertionTags: Array&lt;out String&gt; message val message: String"},{"location":"api/leakcanary/-skip-leak-detection/-skip-leak-detection/","title":"skip leak detection","text":"<p>//leakcanary/leakcanary/SkipLeakDetection/SkipLeakDetection</p>"},{"location":"api/leakcanary/-skip-leak-detection/-skip-leak-detection/#skipleakdetection","title":"SkipLeakDetection","text":"<p>fun SkipLeakDetection(message: String, vararg assertionTags: String)</p>"},{"location":"api/leakcanary/-skip-leak-detection/assertion-tags/","title":"Assertion tags","text":"<p>//leakcanary/leakcanary/SkipLeakDetection/assertionTags</p>"},{"location":"api/leakcanary/-skip-leak-detection/assertion-tags/#assertiontags","title":"assertionTags","text":"<p>val assertionTags: Array&lt;out String&gt;</p>"},{"location":"api/leakcanary/-skip-leak-detection/message/","title":"Message","text":"<p>//leakcanary/leakcanary/SkipLeakDetection/message</p>"},{"location":"api/leakcanary/-skip-leak-detection/message/#message","title":"message","text":"<p>val message: String</p>"},{"location":"api/leakcanary/-skip-leak-detection/-companion/","title":"Index","text":"<p>//leakcanary/leakcanary/SkipLeakDetection/Companion</p>"},{"location":"api/leakcanary/-skip-leak-detection/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/leakcanary/-skip-leak-detection/-companion/#functions","title":"Functions","text":"Name Summary shouldSkipTest fun shouldSkipTest(testDescription: Description, assertionTag: String): Booleanfun shouldSkipTest(testName: String, skipAnnotation: SkipLeakDetection?, assertionTag: String): Boolean"},{"location":"api/leakcanary/-skip-leak-detection/-companion/should-skip-test/","title":"Should skip test","text":"<p>//leakcanary/leakcanary/SkipLeakDetection/Companion/shouldSkipTest</p>"},{"location":"api/leakcanary/-skip-leak-detection/-companion/should-skip-test/#shouldskiptest","title":"shouldSkipTest","text":"<p>fun shouldSkipTest(testDescription: Description, assertionTag: String): Boolean</p> <p>fun shouldSkipTest(testName: String, skipAnnotation: SkipLeakDetection?, assertionTag: String): Boolean</p>"},{"location":"api/leakcanary/-test-description-holder/","title":"Index","text":"<p>//leakcanary/leakcanary/TestDescriptionHolder</p>"},{"location":"api/leakcanary/-test-description-holder/#testdescriptionholder","title":"TestDescriptionHolder","text":"<p>object TestDescriptionHolder : TestRule</p> <p>A TestRule that holds onto the test Description in a thread local while evaluating, making it possible to retrieve that test Description from the test thread via testDescription.</p> <p>This rule is automatically applied by DetectLeaksAfterTestSuccess.</p>"},{"location":"api/leakcanary/-test-description-holder/#functions","title":"Functions","text":"Name Summary apply open override fun apply(base: Statement, description: Description): Statement isEvaluating fun isEvaluating(): Boolean wrap fun wrap(base: Statement, description: Description): Statement"},{"location":"api/leakcanary/-test-description-holder/#properties","title":"Properties","text":"Name Summary testDescription val testDescription: Description"},{"location":"api/leakcanary/-test-description-holder/apply/","title":"Apply","text":"<p>//leakcanary/leakcanary/TestDescriptionHolder/apply</p>"},{"location":"api/leakcanary/-test-description-holder/apply/#apply","title":"apply","text":"<p>open override fun apply(base: Statement, description: Description): Statement</p>"},{"location":"api/leakcanary/-test-description-holder/is-evaluating/","title":"Is evaluating","text":"<p>//leakcanary/leakcanary/TestDescriptionHolder/isEvaluating</p>"},{"location":"api/leakcanary/-test-description-holder/is-evaluating/#isevaluating","title":"isEvaluating","text":"<p>fun isEvaluating(): Boolean</p>"},{"location":"api/leakcanary/-test-description-holder/test-description/","title":"Test description","text":"<p>//leakcanary/leakcanary/TestDescriptionHolder/testDescription</p>"},{"location":"api/leakcanary/-test-description-holder/test-description/#testdescription","title":"testDescription","text":"<p>val testDescription: Description</p>"},{"location":"api/leakcanary/-test-description-holder/wrap/","title":"Wrap","text":"<p>//leakcanary/leakcanary/TestDescriptionHolder/wrap</p>"},{"location":"api/leakcanary/-test-description-holder/wrap/#wrap","title":"wrap","text":"<p>fun wrap(base: Statement, description: Description): Statement</p>"},{"location":"api/leakcanary/-toast-event-listener/","title":"Index","text":"<p>//leakcanary/leakcanary/ToastEventListener</p>"},{"location":"api/leakcanary/-toast-event-listener/#toasteventlistener","title":"ToastEventListener","text":"<p>object ToastEventListener : EventListener</p>"},{"location":"api/leakcanary/-toast-event-listener/#functions","title":"Functions","text":"Name Summary onEvent open override fun onEvent(event: EventListener.Event)onEvent is always called from the thread the events are emitted from, which is documented for each event. This enables you to potentially block a chain of events, waiting for some pre work to be done."},{"location":"api/leakcanary/-toast-event-listener/on-event/","title":"On event","text":"<p>//leakcanary/leakcanary/ToastEventListener/onEvent</p>"},{"location":"api/leakcanary/-toast-event-listener/on-event/#onevent","title":"onEvent","text":"<p>open override fun onEvent(event: EventListener.Event)</p> <p>onEvent is always called from the thread the events are emitted from, which is documented for each event. This enables you to potentially block a chain of events, waiting for some pre work to be done.</p>"},{"location":"api/leakcanary/-tv-event-listener/","title":"Index","text":"<p>//leakcanary/leakcanary/TvEventListener</p>"},{"location":"api/leakcanary/-tv-event-listener/#tveventlistener","title":"TvEventListener","text":"<p>object TvEventListener : EventListener</p>"},{"location":"api/leakcanary/-tv-event-listener/#functions","title":"Functions","text":"Name Summary onEvent open override fun onEvent(event: EventListener.Event)onEvent is always called from the thread the events are emitted from, which is documented for each event. This enables you to potentially block a chain of events, waiting for some pre work to be done."},{"location":"api/leakcanary/-tv-event-listener/on-event/","title":"On event","text":"<p>//leakcanary/leakcanary/TvEventListener/onEvent</p>"},{"location":"api/leakcanary/-tv-event-listener/on-event/#onevent","title":"onEvent","text":"<p>open override fun onEvent(event: EventListener.Event)</p> <p>onEvent is always called from the thread the events are emitted from, which is documented for each event. This enables you to potentially block a chain of events, waiting for some pre work to be done.</p>"},{"location":"api/leakcanary/-view-location-holder-leak-fix/","title":"Index","text":"<p>//leakcanary/leakcanary/ViewLocationHolderLeakFix</p>"},{"location":"api/leakcanary/-view-location-holder-leak-fix/#viewlocationholderleakfix","title":"ViewLocationHolderLeakFix","text":"<p>object ViewLocationHolderLeakFix</p>"},{"location":"api/leakcanary/-view-location-holder-leak-fix/#see-also","title":"See also","text":"<p>main</p> leakcanary.AndroidLeakFixes.VIEW_LOCATION_HOLDER ."},{"location":"api/leakcanary/-view-location-holder-leak-fix/#functions","title":"Functions","text":"Name Summary clearStaticPool fun clearStaticPool(application: Application)Clears the ViewGroup.ViewLocationHolder.sPool static pool."},{"location":"api/leakcanary/-view-location-holder-leak-fix/clear-static-pool/","title":"Clear static pool","text":"<p>//leakcanary/leakcanary/ViewLocationHolderLeakFix/clearStaticPool</p>"},{"location":"api/leakcanary/-view-location-holder-leak-fix/clear-static-pool/#clearstaticpool","title":"clearStaticPool","text":"<p>fun clearStaticPool(application: Application)</p> <p>Clears the ViewGroup.ViewLocationHolder.sPool static pool.</p>"},{"location":"api/leakcanary/-work-manager-heap-analyzer/","title":"Index","text":"<p>//leakcanary/leakcanary/WorkManagerHeapAnalyzer</p>"},{"location":"api/leakcanary/-work-manager-heap-analyzer/#workmanagerheapanalyzer","title":"WorkManagerHeapAnalyzer","text":"<p>object WorkManagerHeapAnalyzer : EventListener</p> <p>When receiving a HeapDump event, starts a WorkManager worker that performs heap analysis.</p>"},{"location":"api/leakcanary/-work-manager-heap-analyzer/#functions","title":"Functions","text":"Name Summary onEvent open override fun onEvent(event: EventListener.Event)onEvent is always called from the thread the events are emitted from, which is documented for each event. This enables you to potentially block a chain of events, waiting for some pre work to be done."},{"location":"api/leakcanary/-work-manager-heap-analyzer/on-event/","title":"On event","text":"<p>//leakcanary/leakcanary/WorkManagerHeapAnalyzer/onEvent</p>"},{"location":"api/leakcanary/-work-manager-heap-analyzer/on-event/#onevent","title":"onEvent","text":"<p>open override fun onEvent(event: EventListener.Event)</p> <p>onEvent is always called from the thread the events are emitted from, which is documented for each event. This enables you to potentially block a chain of events, waiting for some pre work to be done.</p>"},{"location":"api/shark/","title":"Shark API","text":"<p>//leakcanary/shark</p>"},{"location":"api/shark/#package-shark","title":"Package shark","text":""},{"location":"api/shark/#types","title":"Types","text":"Name Summary AnalyzeCommand class AnalyzeCommand : CliktCommand AndroidBuildMirror class AndroidBuildMirror(val manufacturer: String, val sdkInt: Int, val id: String)Caches values from the android.os.Build class in the heap dump. Retrieve a cached instances via fromHeapGraph. AndroidMetadataExtractor object AndroidMetadataExtractor : MetadataExtractor AndroidObjectInspectors enum AndroidObjectInspectors : Enum&lt;AndroidObjectInspectors&gt; , ObjectInspectorA set of default ObjectInspectors that knows about common AOSP and library classes. AndroidReferenceMatchers enum AndroidReferenceMatchers : Enum&lt;AndroidReferenceMatchers&gt; AndroidReferenceMatchers values add ReferenceMatcher instances to a global list via their add method. A ReferenceMatcher is either a IgnoredReferenceMatcher or a LibraryLeakReferenceMatcher. AndroidResourceIdNames class AndroidResourceIdNames AndroidServices object AndroidServices ApplicationLeak data class ApplicationLeak(val leakTraces: List&lt;LeakTrace&gt;) : LeakA leak found by HeapAnalyzer in your application. AppSingletonInspector class AppSingletonInspector(singletonClasses: String) : ObjectInspectorInspector that automatically marks instances of the provided class names as not leaking because they\u2019re app wide singletons. ByteArraySourceProvider class ByteArraySourceProvider(byteArray: ByteArray) : DualSourceProvider CloseableHeapGraph interface CloseableHeapGraph : HeapGraph, CloseableA HeapGraph that should be closed after being used. ConstantMemoryMetricsDualSourceProvider class ConstantMemoryMetricsDualSourceProvider(realSourceProvider: DualSourceProvider) : DualSourceProviderCaptures IO read metrics without using much memory. DecoratedPath class DecoratedPath(delegate: Path) : Path DeobfuscateHprofCommand class DeobfuscateHprofCommand : CliktCommand DualSourceProvider interface DualSourceProvider : StreamingSourceProvider, RandomAccessSourceProviderBoth a StreamingSourceProvider and a RandomAccessSourceProvider DumpProcessCommand class DumpProcessCommand : CliktCommand FileSourceProvider class FileSourceProvider(file: File) : DualSourceProvider FilteringLeakingObjectFinder class FilteringLeakingObjectFinder(filters: List&lt;FilteringLeakingObjectFinder.LeakingObjectFilter&gt;) : LeakingObjectFinderFinds the objects that are leaking by scanning all objects in the heap dump and delegating the decision to a list of FilteringLeakingObjectFinder.LeakingObjectFilter FindLeakPaths class FindLeakPaths GcRoot sealed class GcRootA GcRoot as identified by HprofRecord.HeapDumpRecord.GcRootRecord in the heap dump. GraphContext class GraphContextIn memory store that can be used to store objects in a given HeapGraph instance. This is a simple MutableMap of String to Any, but with unsafe generics access. HeapAnalysis sealed class HeapAnalysis : SerializableThe result of an analysis performed by HeapAnalyzer, either a HeapAnalysisSuccess or a HeapAnalysisFailure. This class is serializable however there are no guarantees of forward compatibility. HeapAnalysisException class HeapAnalysisException(cause: Throwable) : RuntimeException HeapAnalysisFailure data class HeapAnalysisFailure(val heapDumpFile: File, val createdAtTimeMillis: Long, val dumpDurationMillis: Long = DUMP_DURATION_UNKNOWN, val analysisDurationMillis: Long, val exception: HeapAnalysisException) : HeapAnalysisThe analysis performed by HeapAnalyzer did not complete successfully. HeapAnalysisSuccess data class HeapAnalysisSuccess(val heapDumpFile: File, val createdAtTimeMillis: Long, val dumpDurationMillis: Long = DUMP_DURATION_UNKNOWN, val analysisDurationMillis: Long, val metadata: Map&lt;String, String&gt;, val applicationLeaks: List&lt;ApplicationLeak&gt;, val libraryLeaks: List&lt;LibraryLeak&gt;, val unreachableObjects: List&lt;LeakTraceObject&gt;) : HeapAnalysisThe result of a successful heap analysis performed by HeapAnalyzer. HeapAnalyzer class HeapAnalyzer(listener: OnAnalysisProgressListener)Analyzes heap dumps to look for leaks. HeapDumpRule class HeapDumpRule : ExternalResource HeapField class HeapField(val declaringClass: HeapObject.HeapClass, val name: String, val value: HeapValue)Represents a static field or an instance field. HeapGraph interface HeapGraphEnables navigation through the heap graph of objects. HeapObject sealed class HeapObjectAn object in the heap dump. HeapValue class HeapValue(val graph: HeapGraph, val holder: ValueHolder)Represents a value in the heap dump, which can be an object reference or a primitive type. HprofDeobfuscator class HprofDeobfuscatorConverts a Hprof file to another file with deobfuscated class and field names. HprofHeader data class HprofHeader(val heapDumpTimestamp: Long = System.currentTimeMillis(), val version: HprofVersion = HprofVersion.ANDROID, val identifierByteSize: Int = 4)Represents the header metadata of a Hprof file. HprofHeapGraph class HprofHeapGraph : CloseableHeapGraphA HeapGraph that reads from an Hprof file indexed by HprofIndex. HprofIndex class HprofIndexAn index on a Hprof file. See openHeapGraph. HprofPrimitiveArrayStripper class HprofPrimitiveArrayStripperConverts a Hprof file to another file with all primitive arrays replaced with arrays of zeroes, which can be useful to remove PII. Char arrays are handled slightly differently because 0 would be the null character so instead these become arrays of \u2018?\u2019. HprofRecord sealed class HprofRecordA Hprof record. These data structure map 1:1 with how records are written in hprof files. HprofRecordReader class HprofRecordReaderReads hprof content from an Okio BufferedSource. HprofRecordTag enum HprofRecordTag : Enum&lt;HprofRecordTag&gt; HprofVersion enum HprofVersion : Enum&lt;HprofVersion&gt; Supported hprof versions HprofWriter class HprofWriter : CloseableGenerates Hprof files. HprofWriterHelper class HprofWriterHelper(writer: HprofWriter) : Closeable IgnoredReferenceMatcher class IgnoredReferenceMatcher(val pattern: ReferencePattern) : ReferenceMatcherIgnoredReferenceMatcher should be used to match references that cannot ever create leaks. The shortest path finder will never go through matching references. InteractiveCommand class InteractiveCommand : CliktCommand JvmTestHeapDumper object JvmTestHeapDumper KeyedWeakReferenceFinder object KeyedWeakReferenceFinder : LeakingObjectFinderFinds all objects tracked by a KeyedWeakReference, ie all objects that were passed to ObjectWatcher.watch. Leak sealed class Leak : SerializableA leak found by HeapAnalyzer, either an ApplicationLeak or a LibraryLeak. LeakingObjectFinder fun interface LeakingObjectFinderFinds the objects that are leaking, for which Shark will compute leak traces. LeakTrace data class LeakTrace(val gcRootType: LeakTrace.GcRootType, val referencePath: List&lt;LeakTraceReference&gt;, val leakingObject: LeakTraceObject) : SerializableThe best strong reference path from a GC root to the leaking object. \"Best\" here means the shortest prioritized path. A large number of distinct paths can generally be found leading to a leaking object. Shark prioritizes paths that don\u2019t go through known LibraryLeakReferenceMatcher (because those are known to create leaks so it\u2019s more interesting to find other paths causing leaks), then it prioritize paths that don\u2019t go through java local gc roots (because those are harder to reason about). Taking those priorities into account, finding the shortest path means there are less LeakTraceReference that can be suspected to cause the leak. LeakTraceObject data class LeakTraceObject(val type: LeakTraceObject.ObjectType, val className: String, val labels: Set&lt;String&gt;, val leakingStatus: LeakTraceObject.LeakingStatus, val leakingStatusReason: String, val retainedHeapByteSize: Int?, val retainedObjectCount: Int?) : Serializable LeakTraceReference data class LeakTraceReference(val originObject: LeakTraceObject, val referenceType: LeakTraceReference.ReferenceType, val owningClassName: String, val referenceName: String) : SerializableA LeakTraceReference represents an origin LeakTraceObject and either a reference from that object to the LeakTraceObject in the next LeakTraceReference in LeakTrace.referencePath, or to LeakTrace.leakingObject if this is the last LeakTraceReference in LeakTrace.referencePath. LibraryLeak data class LibraryLeak(val leakTraces: List&lt;LeakTrace&gt;, val pattern: ReferencePattern, val description: String) : LeakA leak found by HeapAnalyzer, where the only path to the leaking object required going through a reference matched by pattern, as provided to a LibraryLeakReferenceMatcher instance. This is a known leak in library code that is beyond your control. LibraryLeakReferenceMatcher data class LibraryLeakReferenceMatcher(val pattern: ReferencePattern, val description: String = \"\", val patternApplies: (HeapGraph) -&gt; Boolean = { true }) : ReferenceMatcherLibraryLeakReferenceMatcher should be used to match references in library code that are known to create leaks and are beyond your control. The shortest path finder will only go through matching references after it has exhausted references that don\u2019t match, prioritizing finding an application leak over a known library leak. Library leaks will be reported as LibraryLeak instead of ApplicationLeak. MetadataExtractor fun interface MetadataExtractorExtracts metadata from a hprof to be reported in HeapAnalysisSuccess.metadata. Neo4JCommand class Neo4JCommand : CliktCommandExample commands: ObjectInspector fun interface ObjectInspectorProvides LeakCanary with insights about objects (classes, instances and arrays) found in the heap. inspect will be called for each object that LeakCanary wants to know more about. The implementation can then use the provided ObjectReporter to provide insights for that object. ObjectInspectors enum ObjectInspectors : Enum&lt;ObjectInspectors&gt; , ObjectInspectorA set of default ObjectInspectors that knows about common JDK objects. ObjectReporter class ObjectReporter(val heapObject: HeapObject)Enables ObjectInspector implementations to provide insights on heapObject, which is an object (class, instance or array) found in the heap. OnAnalysisProgressListener fun interface OnAnalysisProgressListenerReports progress from the HeapAnalyzer as they occur, as Step values. OnHprofRecordListener fun interface OnHprofRecordListenerListener passed in to StreamingHprofReader.readRecords, gets notified for each HprofRecord found in the heap dump which types is in the set of the recordTypes parameter passed to StreamingHprofReader.readRecords. OnHprofRecordTagListener fun interface OnHprofRecordTagListenerListener passed in to StreamingHprofReader.readRecords, gets notified for each HprofRecordTag found in the heap dump. PrimitiveType enum PrimitiveType : Enum&lt;PrimitiveType&gt; A primitive type in the prof. ProguardMapping class ProguardMapping ProguardMappingHelper class ProguardMappingHelper(proguardMapping: ProguardMapping) ProguardMappingReader class ProguardMappingReader(proguardMappingInputStream: InputStream) RandomAccessHprofReader class RandomAccessHprofReader : CloseableReads records in a Hprof source, one at a time with a specific position and size. Call openReaderFor to obtain a new instance. RandomAccessSource interface RandomAccessSource : Closeable RandomAccessSourceProvider fun interface RandomAccessSourceProviderCan open RandomAccessSource instances. ReferenceMatcher sealed class ReferenceMatcherUsed to pattern match known patterns of references in the heap, either to ignore them (IgnoredReferenceMatcher) or to mark them as library leaks (LibraryLeakReferenceMatcher). ReferencePattern sealed class ReferencePattern : SerializableA pattern that will match references for a given ReferenceMatcher. SharkCliCommand class SharkCliCommand : CliktCommand SharkLog object SharkLogCentral Logger for all Shark artifacts. Set logger to change where these logs go. StreamingHprofReader class StreamingHprofReaderReads the entire content of a Hprof source in one fell swoop. Call readerFor to obtain a new instance. StreamingRecordReaderAdapter class StreamingRecordReaderAdapter(streamingHprofReader: StreamingHprofReader)Wraps a StreamingHprofReader to provide a higher level API that streams HprofRecord instances. StreamingSourceProvider fun interface StreamingSourceProviderCan open Source instances. StripHprofCommand class StripHprofCommand : CliktCommand ThrowingCancelableFileSourceProvider class ThrowingCancelableFileSourceProvider(file: File, throwIfCanceled: Runnable) : DualSourceProviderA DualSourceProvider that invokes throwIfCanceled before every read, allowing cancellation of IO based work built on top by throwing an exception. ValueHolder sealed class ValueHolderA value in the heap dump, which can be a ReferenceHolder or a primitive type."},{"location":"api/shark/#functions","title":"Functions","text":"Name Summary asHprofBytes fun List&lt;HprofRecord&gt;.asHprofBytes(): DualSourceProvider create fun ProguardMapping.create(block: ProguardMappingHelper.() -&gt; Unit): ProguardMapping dump fun File.dump(block: HprofWriterHelper.() -&gt; Unit)fun dump(hprofHeader: HprofHeader = HprofHeader(), block: HprofWriterHelper.() -&gt; Unit): DualSourceProvider dumpToBytes fun dumpToBytes(hprofHeader: HprofHeader = HprofHeader(), block: HprofWriterHelper.() -&gt; Unit): ByteArray main fun main(args: Array&lt;String&gt;)"},{"location":"api/shark/#properties","title":"Properties","text":"Name Summary hexIdentityHashCode val HeapObject.HeapInstance.hexIdentityHashCode: String?The system identity hashCode represented as hex, or null if it couldn\u2019t be found. This is the string identifier you see when calling Object.toString() at runtime on a class that does not override its hashCode() method, e.g. com.example.MyThing@6bd57cf identityHashCode val HeapObject.HeapInstance.identityHashCode: Int?The system identity hash code, or null if it couldn\u2019t be found."},{"location":"api/shark/as-hprof-bytes/","title":"As hprof bytes","text":"<p>//leakcanary/shark/asHprofBytes</p>"},{"location":"api/shark/as-hprof-bytes/#ashprofbytes","title":"asHprofBytes","text":"<p>fun List&lt;HprofRecord&gt;.asHprofBytes(): DualSourceProvider</p>"},{"location":"api/shark/create/","title":"Create","text":"<p>//leakcanary/shark/create</p>"},{"location":"api/shark/create/#create","title":"create","text":"<p>fun ProguardMapping.create(block: ProguardMappingHelper.() -&gt; Unit): ProguardMapping</p>"},{"location":"api/shark/dump-to-bytes/","title":"Dump to bytes","text":"<p>//leakcanary/shark/dumpToBytes</p>"},{"location":"api/shark/dump-to-bytes/#dumptobytes","title":"dumpToBytes","text":"<p>fun dumpToBytes(hprofHeader: HprofHeader = HprofHeader(), block: HprofWriterHelper.() -&gt; Unit): ByteArray</p>"},{"location":"api/shark/dump/","title":"Dump","text":"<p>//leakcanary/shark/dump</p>"},{"location":"api/shark/dump/#dump","title":"dump","text":"<p>fun File.dump(block: HprofWriterHelper.() -&gt; Unit)</p> <p>fun dump(hprofHeader: HprofHeader = HprofHeader(), block: HprofWriterHelper.() -&gt; Unit): DualSourceProvider</p>"},{"location":"api/shark/hex-identity-hash-code/","title":"Hex identity hash code","text":"<p>//leakcanary/shark/hexIdentityHashCode</p>"},{"location":"api/shark/hex-identity-hash-code/#hexidentityhashcode","title":"hexIdentityHashCode","text":"<p>val HeapObject.HeapInstance.hexIdentityHashCode: String?</p> <p>The system identity hashCode represented as hex, or null if it couldn\u2019t be found. This is the string identifier you see when calling Object.toString() at runtime on a class that does not override its hashCode() method, e.g. com.example.MyThing@6bd57cf</p>"},{"location":"api/shark/identity-hash-code/","title":"Identity hash code","text":"<p>//leakcanary/shark/identityHashCode</p>"},{"location":"api/shark/identity-hash-code/#identityhashcode","title":"identityHashCode","text":"<p>val HeapObject.HeapInstance.identityHashCode: Int?</p> <p>The system identity hash code, or null if it couldn\u2019t be found.</p> <p>Based on the Object.identityHashCode implementation in AOSP.</p> <p>Backing field shadow$monitor was added in API 24. https://cs.android.com/android/_/android/platform/libcore/+ /de626ec8a109ea18283d96c720cc57e2f32f67fa:ojluni/src/main/java/java/lang/Object.java; dlc=ba7cc9f5357c323a1006119a20ce025fd4c57fd2</p>"},{"location":"api/shark/main/","title":"Main","text":"<p>//leakcanary/shark/main</p>"},{"location":"api/shark/main/#main","title":"main","text":"<p>fun main(args: Array&lt;String&gt;)</p>"},{"location":"api/shark/-analyze-command/","title":"Index","text":"<p>//leakcanary/shark/AnalyzeCommand</p>"},{"location":"api/shark/-analyze-command/#analyzecommand","title":"AnalyzeCommand","text":"<p>class AnalyzeCommand : CliktCommand</p>"},{"location":"api/shark/-analyze-command/#constructors","title":"Constructors","text":"AnalyzeCommand fun AnalyzeCommand()"},{"location":"api/shark/-analyze-command/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-analyze-command/#functions","title":"Functions","text":"Name Summary aliases open fun aliases(): Map&lt;String, List&lt;String&gt;&gt; getFormattedHelp open fun getFormattedHelp(): String getFormattedUsage open fun getFormattedUsage(): String issueMessage fun issueMessage(message: String) main fun main(argv: Array&lt;String&gt;)fun main(argv: List&lt;String&gt;) parse fun parse(argv: Array&lt;String&gt;, parentContext: Context?)fun parse(argv: List&lt;String&gt;, parentContext: Context?) registerArgument fun registerArgument(argument: Argument) registeredSubcommandNames fun registeredSubcommandNames(): List&lt;String&gt; registerOption open override fun registerOption(option: GroupableOption)fun registerOption(option: Option) registerOptionGroup fun registerOptionGroup(group: ParameterGroup) run open override fun run() toString open override fun toString(): String"},{"location":"api/shark/-analyze-command/#properties","title":"Properties","text":"Name Summary commandHelp val commandHelp: String commandHelpEpilog val commandHelpEpilog: String commandName val commandName: String context val context: Context helpTags val helpTags: Map&lt;String, String&gt; invokeWithoutSubcommand val invokeWithoutSubcommand: Boolean messages val messages: List&lt;String&gt; printHelpOnEmptyArgs val printHelpOnEmptyArgs: Boolean"},{"location":"api/shark/-analyze-command/-analyze-command/","title":"analyze command","text":"<p>//leakcanary/shark/AnalyzeCommand/AnalyzeCommand</p>"},{"location":"api/shark/-analyze-command/-analyze-command/#analyzecommand","title":"AnalyzeCommand","text":"<p>fun AnalyzeCommand()</p>"},{"location":"api/shark/-analyze-command/run/","title":"Run","text":"<p>//leakcanary/shark/AnalyzeCommand/run</p>"},{"location":"api/shark/-analyze-command/run/#run","title":"run","text":"<p>open override fun run()</p>"},{"location":"api/shark/-analyze-command/-companion/","title":"Index","text":"<p>//leakcanary/shark/AnalyzeCommand/Companion</p>"},{"location":"api/shark/-analyze-command/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-analyze-command/-companion/#functions","title":"Functions","text":"Name Summary analyze fun CliktCommand.analyze(heapDumpFile: File, proguardMappingFile: File?)"},{"location":"api/shark/-analyze-command/-companion/analyze/","title":"Analyze","text":"<p>//leakcanary/shark/AnalyzeCommand/Companion/analyze</p>"},{"location":"api/shark/-analyze-command/-companion/analyze/#analyze","title":"analyze","text":"<p>fun CliktCommand.analyze(heapDumpFile: File, proguardMappingFile: File?)</p>"},{"location":"api/shark/-android-build-mirror/","title":"Index","text":"<p>//leakcanary/shark/AndroidBuildMirror</p>"},{"location":"api/shark/-android-build-mirror/#androidbuildmirror","title":"AndroidBuildMirror","text":"<p>class AndroidBuildMirror(val manufacturer: String, val sdkInt: Int, val id: String)</p> <p>Caches values from the android.os.Build class in the heap dump. Retrieve a cached instances via fromHeapGraph.</p>"},{"location":"api/shark/-android-build-mirror/#constructors","title":"Constructors","text":"AndroidBuildMirror fun AndroidBuildMirror(manufacturer: String, sdkInt: Int, id: String)"},{"location":"api/shark/-android-build-mirror/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-android-build-mirror/#properties","title":"Properties","text":"Name Summary id val id: StringValue of android.os.Build.ID manufacturer val manufacturer: StringValue of android.os.Build.MANUFACTURER sdkInt val sdkInt: IntValue of android.os.Build.VERSION.SDK_INT"},{"location":"api/shark/-android-build-mirror/-android-build-mirror/","title":"android build mirror","text":"<p>//leakcanary/shark/AndroidBuildMirror/AndroidBuildMirror</p>"},{"location":"api/shark/-android-build-mirror/-android-build-mirror/#androidbuildmirror","title":"AndroidBuildMirror","text":"<p>fun AndroidBuildMirror(manufacturer: String, sdkInt: Int, id: String)</p>"},{"location":"api/shark/-android-build-mirror/id/","title":"Id","text":"<p>//leakcanary/shark/AndroidBuildMirror/id</p>"},{"location":"api/shark/-android-build-mirror/id/#id","title":"id","text":"<p>val id: String</p> <p>Value of android.os.Build.ID</p>"},{"location":"api/shark/-android-build-mirror/manufacturer/","title":"Manufacturer","text":"<p>//leakcanary/shark/AndroidBuildMirror/manufacturer</p>"},{"location":"api/shark/-android-build-mirror/manufacturer/#manufacturer","title":"manufacturer","text":"<p>val manufacturer: String</p> <p>Value of android.os.Build.MANUFACTURER</p>"},{"location":"api/shark/-android-build-mirror/sdk-int/","title":"Sdk int","text":"<p>//leakcanary/shark/AndroidBuildMirror/sdkInt</p>"},{"location":"api/shark/-android-build-mirror/sdk-int/#sdkint","title":"sdkInt","text":"<p>val sdkInt: Int</p> <p>Value of android.os.Build.VERSION.SDK_INT</p>"},{"location":"api/shark/-android-build-mirror/-companion/","title":"Index","text":"<p>//leakcanary/shark/AndroidBuildMirror/Companion</p>"},{"location":"api/shark/-android-build-mirror/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-android-build-mirror/-companion/#functions","title":"Functions","text":"Name Summary fromHeapGraph fun fromHeapGraph(graph: HeapGraph): AndroidBuildMirror"},{"location":"api/shark/-android-build-mirror/-companion/from-heap-graph/","title":"From heap graph","text":"<p>//leakcanary/shark/AndroidBuildMirror/Companion/fromHeapGraph</p>"},{"location":"api/shark/-android-build-mirror/-companion/from-heap-graph/#fromheapgraph","title":"fromHeapGraph","text":"<p>fun fromHeapGraph(graph: HeapGraph): AndroidBuildMirror</p>"},{"location":"api/shark/-android-build-mirror/-companion/from-heap-graph/#see-also","title":"See also","text":"<p>main</p> shark.AndroidBuildMirror"},{"location":"api/shark/-android-metadata-extractor/","title":"Index","text":"<p>//leakcanary/shark/AndroidMetadataExtractor</p>"},{"location":"api/shark/-android-metadata-extractor/#androidmetadataextractor","title":"AndroidMetadataExtractor","text":"<p>object AndroidMetadataExtractor : MetadataExtractor</p>"},{"location":"api/shark/-android-metadata-extractor/#functions","title":"Functions","text":"Name Summary extractMetadata open override fun extractMetadata(graph: HeapGraph): Map&lt;String, String&gt;"},{"location":"api/shark/-android-metadata-extractor/extract-metadata/","title":"Extract metadata","text":"<p>//leakcanary/shark/AndroidMetadataExtractor/extractMetadata</p>"},{"location":"api/shark/-android-metadata-extractor/extract-metadata/#extractmetadata","title":"extractMetadata","text":"<p>open override fun extractMetadata(graph: HeapGraph): Map&lt;String, String&gt;</p>"},{"location":"api/shark/-android-object-inspectors/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors</p>"},{"location":"api/shark/-android-object-inspectors/#androidobjectinspectors","title":"AndroidObjectInspectors","text":"<p>enum AndroidObjectInspectors : Enum&lt;AndroidObjectInspectors&gt; , ObjectInspector</p> <p>A set of default ObjectInspectors that knows about common AOSP and library classes.</p> <p>These are heuristics based on our experience and knowledge of AOSP and various library internals. We only make a decision if we\u2019re reasonably sure the state of an object is unlikely to be the result of a programmer mistake.</p> <p>For example, no matter how many mistakes we make in our code, the value of Activity.mDestroy will not be influenced by those mistakes.</p> <p>Most developers should use the entire set of default ObjectInspector by calling appDefaults, unless there\u2019s a bug and you temporarily want to remove an inspector.</p>"},{"location":"api/shark/-android-object-inspectors/#entries","title":"Entries","text":"STUB STUB() LIFECYCLE_REGISTRY LIFECYCLE_REGISTRY() OBJECT_ANIMATOR OBJECT_ANIMATOR() ANIMATOR ANIMATOR() COMPOSITION_IMPL COMPOSITION_IMPL() RECOMPOSER RECOMPOSER() TOAST TOAST() MESSAGE MESSAGE() WINDOW WINDOW() VIEW_ROOT_IMPL VIEW_ROOT_IMPL() MAIN_THREAD MAIN_THREAD() COORDINATOR COORDINATOR() MORTAR_SCOPE MORTAR_SCOPE() MORTAR_PRESENTER MORTAR_PRESENTER() LOADED_APK LOADED_APK() MESSAGE_QUEUE MESSAGE_QUEUE() ANDROIDX_FRAGMENT ANDROIDX_FRAGMENT() SUPPORT_FRAGMENT SUPPORT_FRAGMENT() FRAGMENT FRAGMENT() INPUT_METHOD_MANAGER INPUT_METHOD_MANAGER() APPLICATION APPLICATION() ACTIVITY_THREAD ACTIVITY_THREAD() DIALOG DIALOG() CONTEXT_IMPL CONTEXT_IMPL() APPLICATION_PACKAGE_MANAGER APPLICATION_PACKAGE_MANAGER() CONTEXT_WRAPPER CONTEXT_WRAPPER() CONTEXT_FIELD CONTEXT_FIELD() SERVICE SERVICE() ACTIVITY ACTIVITY() EDITOR EDITOR() VIEW VIEW()"},{"location":"api/shark/-android-object-inspectors/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-android-object-inspectors/#functions","title":"Functions","text":"Name Summary inspect abstract fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/ACTIVITY</p>"},{"location":"api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y/#activity","title":"ACTIVITY","text":"<p>ACTIVITY()</p>"},{"location":"api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/ACTIVITY/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y_-t-h-r-e-a-d/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/ACTIVITY_THREAD</p>"},{"location":"api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y_-t-h-r-e-a-d/#activity_thread","title":"ACTIVITY_THREAD","text":"<p>ACTIVITY_THREAD()</p>"},{"location":"api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y_-t-h-r-e-a-d/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y_-t-h-r-e-a-d/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y_-t-h-r-e-a-d/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/ACTIVITY_THREAD/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y_-t-h-r-e-a-d/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-a-n-d-r-o-i-d-x_-f-r-a-g-m-e-n-t/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/ANDROIDX_FRAGMENT</p>"},{"location":"api/shark/-android-object-inspectors/-a-n-d-r-o-i-d-x_-f-r-a-g-m-e-n-t/#androidx_fragment","title":"ANDROIDX_FRAGMENT","text":"<p>ANDROIDX_FRAGMENT()</p>"},{"location":"api/shark/-android-object-inspectors/-a-n-d-r-o-i-d-x_-f-r-a-g-m-e-n-t/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-a-n-d-r-o-i-d-x_-f-r-a-g-m-e-n-t/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-a-n-d-r-o-i-d-x_-f-r-a-g-m-e-n-t/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/ANDROIDX_FRAGMENT/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-a-n-d-r-o-i-d-x_-f-r-a-g-m-e-n-t/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-a-n-i-m-a-t-o-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/ANIMATOR</p>"},{"location":"api/shark/-android-object-inspectors/-a-n-i-m-a-t-o-r/#animator","title":"ANIMATOR","text":"<p>ANIMATOR()</p>"},{"location":"api/shark/-android-object-inspectors/-a-n-i-m-a-t-o-r/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-a-n-i-m-a-t-o-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-a-n-i-m-a-t-o-r/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/ANIMATOR/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-a-n-i-m-a-t-o-r/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/APPLICATION</p>"},{"location":"api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n/#application","title":"APPLICATION","text":"<p>APPLICATION()</p>"},{"location":"api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/APPLICATION/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n_-p-a-c-k-a-g-e_-m-a-n-a-g-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/APPLICATION_PACKAGE_MANAGER</p>"},{"location":"api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n_-p-a-c-k-a-g-e_-m-a-n-a-g-e-r/#application_package_manager","title":"APPLICATION_PACKAGE_MANAGER","text":"<p>APPLICATION_PACKAGE_MANAGER()</p>"},{"location":"api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n_-p-a-c-k-a-g-e_-m-a-n-a-g-e-r/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n_-p-a-c-k-a-g-e_-m-a-n-a-g-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n_-p-a-c-k-a-g-e_-m-a-n-a-g-e-r/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/APPLICATION_PACKAGE_MANAGER/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n_-p-a-c-k-a-g-e_-m-a-n-a-g-e-r/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-c-o-m-p-o-s-i-t-i-o-n_-i-m-p-l/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/COMPOSITION_IMPL</p>"},{"location":"api/shark/-android-object-inspectors/-c-o-m-p-o-s-i-t-i-o-n_-i-m-p-l/#composition_impl","title":"COMPOSITION_IMPL","text":"<p>COMPOSITION_IMPL()</p>"},{"location":"api/shark/-android-object-inspectors/-c-o-m-p-o-s-i-t-i-o-n_-i-m-p-l/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-c-o-m-p-o-s-i-t-i-o-n_-i-m-p-l/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-c-o-m-p-o-s-i-t-i-o-n_-i-m-p-l/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/COMPOSITION_IMPL/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-c-o-m-p-o-s-i-t-i-o-n_-i-m-p-l/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-f-i-e-l-d/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/CONTEXT_FIELD</p>"},{"location":"api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-f-i-e-l-d/#context_field","title":"CONTEXT_FIELD","text":"<p>CONTEXT_FIELD()</p>"},{"location":"api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-f-i-e-l-d/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-f-i-e-l-d/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-f-i-e-l-d/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/CONTEXT_FIELD/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-f-i-e-l-d/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-i-m-p-l/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/CONTEXT_IMPL</p>"},{"location":"api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-i-m-p-l/#context_impl","title":"CONTEXT_IMPL","text":"<p>CONTEXT_IMPL()</p>"},{"location":"api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-i-m-p-l/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-i-m-p-l/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-i-m-p-l/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/CONTEXT_IMPL/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-i-m-p-l/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-w-r-a-p-p-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/CONTEXT_WRAPPER</p>"},{"location":"api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-w-r-a-p-p-e-r/#context_wrapper","title":"CONTEXT_WRAPPER","text":"<p>CONTEXT_WRAPPER()</p>"},{"location":"api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-w-r-a-p-p-e-r/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-w-r-a-p-p-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-w-r-a-p-p-e-r/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/CONTEXT_WRAPPER/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-w-r-a-p-p-e-r/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-c-o-o-r-d-i-n-a-t-o-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/COORDINATOR</p>"},{"location":"api/shark/-android-object-inspectors/-c-o-o-r-d-i-n-a-t-o-r/#coordinator","title":"COORDINATOR","text":"<p>COORDINATOR()</p>"},{"location":"api/shark/-android-object-inspectors/-c-o-o-r-d-i-n-a-t-o-r/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-c-o-o-r-d-i-n-a-t-o-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-c-o-o-r-d-i-n-a-t-o-r/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/COORDINATOR/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-c-o-o-r-d-i-n-a-t-o-r/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-companion/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/Companion</p>"},{"location":"api/shark/-android-object-inspectors/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-android-object-inspectors/-companion/#functions","title":"Functions","text":"Name Summary createLeakingObjectFilters fun createLeakingObjectFilters(inspectors: Set&lt;AndroidObjectInspectors&gt;): List&lt;FilteringLeakingObjectFinder.LeakingObjectFilter&gt;Creates a list of LeakingObjectFilter based on the passed in AndroidObjectInspectors."},{"location":"api/shark/-android-object-inspectors/-companion/#properties","title":"Properties","text":"Name Summary appDefaults val appDefaults: List&lt;ObjectInspector&gt; appLeakingObjectFilters val appLeakingObjectFilters: List&lt;FilteringLeakingObjectFinder.LeakingObjectFilter&gt;Returns a list of LeakingObjectFilter suitable for apps."},{"location":"api/shark/-android-object-inspectors/-companion/app-defaults/","title":"App defaults","text":"<p>//leakcanary/shark/AndroidObjectInspectors/Companion/appDefaults</p>"},{"location":"api/shark/-android-object-inspectors/-companion/app-defaults/#appdefaults","title":"appDefaults","text":"<p>val appDefaults: List&lt;ObjectInspector&gt;</p>"},{"location":"api/shark/-android-object-inspectors/-companion/app-defaults/#see-also","title":"See also","text":"<p>main</p> shark.AndroidObjectInspectors"},{"location":"api/shark/-android-object-inspectors/-companion/app-leaking-object-filters/","title":"App leaking object filters","text":"<p>//leakcanary/shark/AndroidObjectInspectors/Companion/appLeakingObjectFilters</p>"},{"location":"api/shark/-android-object-inspectors/-companion/app-leaking-object-filters/#appleakingobjectfilters","title":"appLeakingObjectFilters","text":"<p>val appLeakingObjectFilters: List&lt;FilteringLeakingObjectFinder.LeakingObjectFilter&gt;</p> <p>Returns a list of LeakingObjectFilter suitable for apps.</p>"},{"location":"api/shark/-android-object-inspectors/-companion/create-leaking-object-filters/","title":"Create leaking object filters","text":"<p>//leakcanary/shark/AndroidObjectInspectors/Companion/createLeakingObjectFilters</p>"},{"location":"api/shark/-android-object-inspectors/-companion/create-leaking-object-filters/#createleakingobjectfilters","title":"createLeakingObjectFilters","text":"<p>fun createLeakingObjectFilters(inspectors: Set&lt;AndroidObjectInspectors&gt;): List&lt;FilteringLeakingObjectFinder.LeakingObjectFilter&gt;</p> <p>Creates a list of LeakingObjectFilter based on the passed in AndroidObjectInspectors.</p>"},{"location":"api/shark/-android-object-inspectors/-d-i-a-l-o-g/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/DIALOG</p>"},{"location":"api/shark/-android-object-inspectors/-d-i-a-l-o-g/#dialog","title":"DIALOG","text":"<p>DIALOG()</p>"},{"location":"api/shark/-android-object-inspectors/-d-i-a-l-o-g/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-d-i-a-l-o-g/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-d-i-a-l-o-g/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/DIALOG/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-d-i-a-l-o-g/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-e-d-i-t-o-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/EDITOR</p>"},{"location":"api/shark/-android-object-inspectors/-e-d-i-t-o-r/#editor","title":"EDITOR","text":"<p>EDITOR()</p>"},{"location":"api/shark/-android-object-inspectors/-e-d-i-t-o-r/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-e-d-i-t-o-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-e-d-i-t-o-r/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/EDITOR/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-e-d-i-t-o-r/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-f-r-a-g-m-e-n-t/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/FRAGMENT</p>"},{"location":"api/shark/-android-object-inspectors/-f-r-a-g-m-e-n-t/#fragment","title":"FRAGMENT","text":"<p>FRAGMENT()</p>"},{"location":"api/shark/-android-object-inspectors/-f-r-a-g-m-e-n-t/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-f-r-a-g-m-e-n-t/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-f-r-a-g-m-e-n-t/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/FRAGMENT/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-f-r-a-g-m-e-n-t/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-i-n-p-u-t_-m-e-t-h-o-d_-m-a-n-a-g-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/INPUT_METHOD_MANAGER</p>"},{"location":"api/shark/-android-object-inspectors/-i-n-p-u-t_-m-e-t-h-o-d_-m-a-n-a-g-e-r/#input_method_manager","title":"INPUT_METHOD_MANAGER","text":"<p>INPUT_METHOD_MANAGER()</p>"},{"location":"api/shark/-android-object-inspectors/-i-n-p-u-t_-m-e-t-h-o-d_-m-a-n-a-g-e-r/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-i-n-p-u-t_-m-e-t-h-o-d_-m-a-n-a-g-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-i-n-p-u-t_-m-e-t-h-o-d_-m-a-n-a-g-e-r/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/INPUT_METHOD_MANAGER/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-i-n-p-u-t_-m-e-t-h-o-d_-m-a-n-a-g-e-r/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-l-i-f-e-c-y-c-l-e_-r-e-g-i-s-t-r-y/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/LIFECYCLE_REGISTRY</p>"},{"location":"api/shark/-android-object-inspectors/-l-i-f-e-c-y-c-l-e_-r-e-g-i-s-t-r-y/#lifecycle_registry","title":"LIFECYCLE_REGISTRY","text":"<p>LIFECYCLE_REGISTRY()</p>"},{"location":"api/shark/-android-object-inspectors/-l-i-f-e-c-y-c-l-e_-r-e-g-i-s-t-r-y/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-l-i-f-e-c-y-c-l-e_-r-e-g-i-s-t-r-y/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-l-i-f-e-c-y-c-l-e_-r-e-g-i-s-t-r-y/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/LIFECYCLE_REGISTRY/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-l-i-f-e-c-y-c-l-e_-r-e-g-i-s-t-r-y/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-l-o-a-d-e-d_-a-p-k/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/LOADED_APK</p>"},{"location":"api/shark/-android-object-inspectors/-l-o-a-d-e-d_-a-p-k/#loaded_apk","title":"LOADED_APK","text":"<p>LOADED_APK()</p>"},{"location":"api/shark/-android-object-inspectors/-l-o-a-d-e-d_-a-p-k/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-l-o-a-d-e-d_-a-p-k/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-l-o-a-d-e-d_-a-p-k/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/LOADED_APK/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-l-o-a-d-e-d_-a-p-k/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-m-a-i-n_-t-h-r-e-a-d/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/MAIN_THREAD</p>"},{"location":"api/shark/-android-object-inspectors/-m-a-i-n_-t-h-r-e-a-d/#main_thread","title":"MAIN_THREAD","text":"<p>MAIN_THREAD()</p>"},{"location":"api/shark/-android-object-inspectors/-m-a-i-n_-t-h-r-e-a-d/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-m-a-i-n_-t-h-r-e-a-d/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-m-a-i-n_-t-h-r-e-a-d/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/MAIN_THREAD/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-m-a-i-n_-t-h-r-e-a-d/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-m-e-s-s-a-g-e/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/MESSAGE</p>"},{"location":"api/shark/-android-object-inspectors/-m-e-s-s-a-g-e/#message","title":"MESSAGE","text":"<p>MESSAGE()</p>"},{"location":"api/shark/-android-object-inspectors/-m-e-s-s-a-g-e/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-m-e-s-s-a-g-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-m-e-s-s-a-g-e/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/MESSAGE/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-m-e-s-s-a-g-e/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-m-e-s-s-a-g-e_-q-u-e-u-e/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/MESSAGE_QUEUE</p>"},{"location":"api/shark/-android-object-inspectors/-m-e-s-s-a-g-e_-q-u-e-u-e/#message_queue","title":"MESSAGE_QUEUE","text":"<p>MESSAGE_QUEUE()</p>"},{"location":"api/shark/-android-object-inspectors/-m-e-s-s-a-g-e_-q-u-e-u-e/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-m-e-s-s-a-g-e_-q-u-e-u-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-m-e-s-s-a-g-e_-q-u-e-u-e/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/MESSAGE_QUEUE/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-m-e-s-s-a-g-e_-q-u-e-u-e/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-m-o-r-t-a-r_-p-r-e-s-e-n-t-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/MORTAR_PRESENTER</p>"},{"location":"api/shark/-android-object-inspectors/-m-o-r-t-a-r_-p-r-e-s-e-n-t-e-r/#mortar_presenter","title":"MORTAR_PRESENTER","text":"<p>MORTAR_PRESENTER()</p>"},{"location":"api/shark/-android-object-inspectors/-m-o-r-t-a-r_-p-r-e-s-e-n-t-e-r/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-m-o-r-t-a-r_-p-r-e-s-e-n-t-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-m-o-r-t-a-r_-p-r-e-s-e-n-t-e-r/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/MORTAR_PRESENTER/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-m-o-r-t-a-r_-p-r-e-s-e-n-t-e-r/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-m-o-r-t-a-r_-s-c-o-p-e/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/MORTAR_SCOPE</p>"},{"location":"api/shark/-android-object-inspectors/-m-o-r-t-a-r_-s-c-o-p-e/#mortar_scope","title":"MORTAR_SCOPE","text":"<p>MORTAR_SCOPE()</p>"},{"location":"api/shark/-android-object-inspectors/-m-o-r-t-a-r_-s-c-o-p-e/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-m-o-r-t-a-r_-s-c-o-p-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-m-o-r-t-a-r_-s-c-o-p-e/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/MORTAR_SCOPE/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-m-o-r-t-a-r_-s-c-o-p-e/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-o-b-j-e-c-t_-a-n-i-m-a-t-o-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/OBJECT_ANIMATOR</p>"},{"location":"api/shark/-android-object-inspectors/-o-b-j-e-c-t_-a-n-i-m-a-t-o-r/#object_animator","title":"OBJECT_ANIMATOR","text":"<p>OBJECT_ANIMATOR()</p>"},{"location":"api/shark/-android-object-inspectors/-o-b-j-e-c-t_-a-n-i-m-a-t-o-r/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-o-b-j-e-c-t_-a-n-i-m-a-t-o-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-o-b-j-e-c-t_-a-n-i-m-a-t-o-r/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/OBJECT_ANIMATOR/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-o-b-j-e-c-t_-a-n-i-m-a-t-o-r/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-r-e-c-o-m-p-o-s-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/RECOMPOSER</p>"},{"location":"api/shark/-android-object-inspectors/-r-e-c-o-m-p-o-s-e-r/#recomposer","title":"RECOMPOSER","text":"<p>RECOMPOSER()</p>"},{"location":"api/shark/-android-object-inspectors/-r-e-c-o-m-p-o-s-e-r/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-r-e-c-o-m-p-o-s-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-r-e-c-o-m-p-o-s-e-r/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/RECOMPOSER/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-r-e-c-o-m-p-o-s-e-r/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-s-e-r-v-i-c-e/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/SERVICE</p>"},{"location":"api/shark/-android-object-inspectors/-s-e-r-v-i-c-e/#service","title":"SERVICE","text":"<p>SERVICE()</p>"},{"location":"api/shark/-android-object-inspectors/-s-e-r-v-i-c-e/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-s-e-r-v-i-c-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-s-e-r-v-i-c-e/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/SERVICE/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-s-e-r-v-i-c-e/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-s-t-u-b/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/STUB</p>"},{"location":"api/shark/-android-object-inspectors/-s-t-u-b/#stub","title":"STUB","text":"<p>STUB()</p>"},{"location":"api/shark/-android-object-inspectors/-s-t-u-b/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-s-t-u-b/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-s-t-u-b/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/STUB/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-s-t-u-b/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-s-u-p-p-o-r-t_-f-r-a-g-m-e-n-t/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/SUPPORT_FRAGMENT</p>"},{"location":"api/shark/-android-object-inspectors/-s-u-p-p-o-r-t_-f-r-a-g-m-e-n-t/#support_fragment","title":"SUPPORT_FRAGMENT","text":"<p>SUPPORT_FRAGMENT()</p>"},{"location":"api/shark/-android-object-inspectors/-s-u-p-p-o-r-t_-f-r-a-g-m-e-n-t/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-s-u-p-p-o-r-t_-f-r-a-g-m-e-n-t/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-s-u-p-p-o-r-t_-f-r-a-g-m-e-n-t/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/SUPPORT_FRAGMENT/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-s-u-p-p-o-r-t_-f-r-a-g-m-e-n-t/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-t-o-a-s-t/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/TOAST</p>"},{"location":"api/shark/-android-object-inspectors/-t-o-a-s-t/#toast","title":"TOAST","text":"<p>TOAST()</p>"},{"location":"api/shark/-android-object-inspectors/-t-o-a-s-t/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-t-o-a-s-t/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-t-o-a-s-t/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/TOAST/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-t-o-a-s-t/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-v-i-e-w/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/VIEW</p>"},{"location":"api/shark/-android-object-inspectors/-v-i-e-w/#view","title":"VIEW","text":"<p>VIEW()</p>"},{"location":"api/shark/-android-object-inspectors/-v-i-e-w/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-v-i-e-w/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-v-i-e-w/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/VIEW/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-v-i-e-w/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-v-i-e-w_-r-o-o-t_-i-m-p-l/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/VIEW_ROOT_IMPL</p>"},{"location":"api/shark/-android-object-inspectors/-v-i-e-w_-r-o-o-t_-i-m-p-l/#view_root_impl","title":"VIEW_ROOT_IMPL","text":"<p>VIEW_ROOT_IMPL()</p>"},{"location":"api/shark/-android-object-inspectors/-v-i-e-w_-r-o-o-t_-i-m-p-l/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-v-i-e-w_-r-o-o-t_-i-m-p-l/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-v-i-e-w_-r-o-o-t_-i-m-p-l/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/VIEW_ROOT_IMPL/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-v-i-e-w_-r-o-o-t_-i-m-p-l/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-object-inspectors/-w-i-n-d-o-w/","title":"Index","text":"<p>//leakcanary/shark/AndroidObjectInspectors/WINDOW</p>"},{"location":"api/shark/-android-object-inspectors/-w-i-n-d-o-w/#window","title":"WINDOW","text":"<p>WINDOW()</p>"},{"location":"api/shark/-android-object-inspectors/-w-i-n-d-o-w/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-android-object-inspectors/-w-i-n-d-o-w/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-object-inspectors/-w-i-n-d-o-w/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AndroidObjectInspectors/WINDOW/inspect</p>"},{"location":"api/shark/-android-object-inspectors/-w-i-n-d-o-w/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-android-reference-matchers/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers</p>"},{"location":"api/shark/-android-reference-matchers/#androidreferencematchers","title":"AndroidReferenceMatchers","text":"<p>enum AndroidReferenceMatchers : Enum&lt;AndroidReferenceMatchers&gt; </p> <p>AndroidReferenceMatchers values add ReferenceMatcher instances to a global list via their add method. A ReferenceMatcher is either a IgnoredReferenceMatcher or a LibraryLeakReferenceMatcher.</p> <p>AndroidReferenceMatchers is used to build the list of known references that cannot ever create leaks (via IgnoredReferenceMatcher) as well as the list of known leaks in the Android Framework and\u00a0in manufacturer specific Android implementations.</p> <p>This class is a work in progress. You can help by reporting leak traces that seem to be caused by the Android SDK, here: https://github.com/square/leakcanary/issues/new</p> <p>We filter on SDK versions and Manufacturers because many of those leaks are specific to a given manufacturer implementation, they usually share their builds across multiple models, and the leaks eventually get fixed in newer versions.</p> <p>Most app developers should use appDefaults. However, you can also use a subset of AndroidReferenceMatchers by creating an EnumSet that matches your needs and calling buildKnownReferences.</p>"},{"location":"api/shark/-android-reference-matchers/#entries","title":"Entries","text":"EVENT_RECEIVER__MMESSAGE_QUEUE EVENT_RECEIVER__MMESSAGE_QUEUE() LEAK_CANARY_INTERNAL LEAK_CANARY_INTERNAL() LEAK_CANARY_HEAP_DUMPER LEAK_CANARY_HEAP_DUMPER() LEAK_CANARY_THREAD LEAK_CANARY_THREAD() MAIN MAIN() FINALIZER_WATCHDOG_DAEMON FINALIZER_WATCHDOG_DAEMON() REFERENCES REFERENCES() XIAMI__RESOURCES_IMPL XIAMI__RESOURCES_IMPL() RAZER_TEXT_KEY_LISTENER__MCONTEXT RAZER_TEXT_KEY_LISTENER__MCONTEXT() PERF_MONITOR_LAST_CALLBACK PERF_MONITOR_LAST_CALLBACK() OEM_SCENE_CALL_BLOCKER OEM_SCENE_CALL_BLOCKER() EXTENDED_STATUS_BAR_MANAGER EXTENDED_STATUS_BAR_MANAGER() DEVICE_POLICY_MANAGER__SETTINGS_OBSERVER DEVICE_POLICY_MANAGER__SETTINGS_OBSERVER() INSTRUMENTATION_RECOMMEND_ACTIVITY INSTRUMENTATION_RECOMMEND_ACTIVITY() SYSTEM_SENSOR_MANAGER__MAPPCONTEXTIMPL SYSTEM_SENSOR_MANAGER__MAPPCONTEXTIMPL() MAPPER_CLIENT MAPPER_CLIENT() IMM_LAST_FOCUS_VIEW IMM_LAST_FOCUS_VIEW() SMART_COVER_MANAGER SMART_COVER_MANAGER() LGCONTEXT__MCONTEXT LGCONTEXT__MCONTEXT() BUBBLE_POPUP_HELPER__SHELPER BUBBLE_POPUP_HELPER__SHELPER() GESTURE_BOOST_MANAGER GESTURE_BOOST_MANAGER() IMM_CURRENT_INPUT_CONNECTION IMM_CURRENT_INPUT_CONNECTION() MULTI_WINDOW_DECOR_SUPPORT__MWINDOW MULTI_WINDOW_DECOR_SUPPORT__MWINDOW() STATIC_MTARGET_VIEW STATIC_MTARGET_VIEW() ACTIVITY_MANAGER_MCONTEXT ACTIVITY_MANAGER_MCONTEXT() AUDIO_MANAGER__MCONTEXT_STATIC AUDIO_MANAGER__MCONTEXT_STATIC() VIEW_CONFIGURATION__MCONTEXT VIEW_CONFIGURATION__MCONTEXT() RESOURCES__MCONTEXT RESOURCES__MCONTEXT() PERSONA_MANAGER PERSONA_MANAGER() TEXT_VIEW__MLAST_HOVERED_VIEW TEXT_VIEW__MLAST_HOVERED_VIEW() AW_RESOURCE__SRESOURCES AW_RESOURCE__SRESOURCES() SEM_APP_ICON_SOLUTION SEM_APP_ICON_SOLUTION() SEM_PERSONA_MANAGER SEM_PERSONA_MANAGER() SEM_EMERGENCY_MANAGER__MCONTEXT SEM_EMERGENCY_MANAGER__MCONTEXT() CLIPBOARD_EX_MANAGER CLIPBOARD_EX_MANAGER() SEM_CLIPBOARD_MANAGER__MCONTEXT SEM_CLIPBOARD_MANAGER__MCONTEXT() CLIPBOARD_UI_MANAGER__SINSTANCE CLIPBOARD_UI_MANAGER__SINSTANCE() SPEN_GESTURE_MANAGER SPEN_GESTURE_MANAGER() UI_MODE_MANAGER UI_MODE_MANAGER() DREAM_SERVICE DREAM_SERVICE() JOB_SERVICE JOB_SERVICE() AW_CONTENTS_POSTED_CALLBACK AW_CONTENTS_POSTED_CALLBACK() AW_CONTENTS__A0 AW_CONTENTS__A0() FLIPPER__APPLICATION_DESCRIPTOR FLIPPER__APPLICATION_DESCRIPTOR() ANIMATION_HANDLER__ANIMATOR_REQUESTORS ANIMATION_HANDLER__ANIMATOR_REQUESTORS() ACTIVITY_TRANSITION_STATE__M_EXITING_TO_VIEW ACTIVITY_TRANSITION_STATE__M_EXITING_TO_VIEW() VIEW_TOOLTIP_CALLBACK VIEW_TOOLTIP_CALLBACK() VIEW_GROUP__M_CURRENT_DRAG_CHILD VIEW_GROUP__M_CURRENT_DRAG_CHILD() VIEW_GROUP__M_PRE_SORTED_CHILDREN VIEW_GROUP__M_PRE_SORTED_CHILDREN() APP_OPS_MANAGER__CALLBACK_STUB APP_OPS_MANAGER__CALLBACK_STUB() HOST_ADPU_SERVICE_MSG_HANDLER HOST_ADPU_SERVICE_MSG_HANDLER() CONNECTIVITY_MANAGER_CALLBACK_HANDLER CONNECTIVITY_MANAGER_CALLBACK_HANDLER() WINDOW_ON_BACK_INVOKED_DISPATCHER__STUB WINDOW_ON_BACK_INVOKED_DISPATCHER__STUB() PLAYER_BASE PLAYER_BASE() RENDER_NODE_ANIMATOR RENDER_NODE_ANIMATOR() COMPANION_DEVICE_SERVICE__STUB COMPANION_DEVICE_SERVICE__STUB() APPLICATION_PACKAGE_MANAGER__HAS_SYSTEM_FEATURE_QUERY APPLICATION_PACKAGE_MANAGER__HAS_SYSTEM_FEATURE_QUERY() TOAST_TN TOAST_TN() CONTROLLED_INPUT_CONNECTION_WRAPPER CONTROLLED_INPUT_CONNECTION_WRAPPER() TEXT_TO_SPEECH TEXT_TO_SPEECH() ACCESSIBILITY_NODE_ID_MANAGER ACCESSIBILITY_NODE_ID_MANAGER() VIEWLOCATIONHOLDER_ROOT VIEWLOCATIONHOLDER_ROOT() BACKDROP_FRAME_RENDERER__MDECORVIEW BACKDROP_FRAME_RENDERER__MDECORVIEW() MAGNIFIER MAGNIFIER() BIOMETRIC_PROMPT BIOMETRIC_PROMPT() ACCESSIBILITY_ITERATORS ACCESSIBILITY_ITERATORS() ASSIST_STRUCTURE ASSIST_STRUCTURE() ACCESSIBILITY_NODE_INFO__MORIGINALTEXT ACCESSIBILITY_NODE_INFO__MORIGINALTEXT() CONNECTIVITY_MANAGER__SINSTANCE CONNECTIVITY_MANAGER__SINSTANCE() EDITTEXT_BLINK_MESSAGEQUEUE EDITTEXT_BLINK_MESSAGEQUEUE() AUDIO_MANAGER AUDIO_MANAGER() APP_WIDGET_HOST_CALLBACKS APP_WIDGET_HOST_CALLBACKS() USER_MANAGER__SINSTANCE USER_MANAGER__SINSTANCE() MEDIA_SCANNER_CONNECTION MEDIA_SCANNER_CONNECTION() ACCOUNT_MANAGER__AMS_TASK__RESPONSE ACCOUNT_MANAGER__AMS_TASK__RESPONSE() SPEECH_RECOGNIZER SPEECH_RECOGNIZER() MEDIA_PROJECTION_CALLBACK MEDIA_PROJECTION_CALLBACK() ACTIVITY_CHOOSE_MODEL ACTIVITY_CHOOSE_MODEL() SPELL_CHECKER SPELL_CHECKER() SPELL_CHECKER_SESSION SPELL_CHECKER_SESSION() LAYOUT_TRANSITION LAYOUT_TRANSITION() INPUT_MANAGER__M_LATE_INIT_CONTEXT INPUT_MANAGER__M_LATE_INIT_CONTEXT() INPUT_METHOD_MANAGER_IS_TERRIBLE INPUT_METHOD_MANAGER_IS_TERRIBLE() BLOCKING_QUEUE BLOCKING_QUEUE() TEXT_LINE__SCACHED TEXT_LINE__SCACHED() MEDIA_SESSION_LEGACY_HELPER__SINSTANCE MEDIA_SESSION_LEGACY_HELPER__SINSTANCE() SPAN_CONTROLLER SPAN_CONTROLLER() ACTIVITY_THREAD__M_NEW_ACTIVITIES ACTIVITY_THREAD__M_NEW_ACTIVITIES()See AndroidReferenceReaders.ACTIVITY_THREAD__NEW_ACTIVITIES for more context IREQUEST_FINISH_CALLBACK IREQUEST_FINISH_CALLBACK() PERMISSION_CONTROLLER_MANAGER PERMISSION_CONTROLLER_MANAGER()"},{"location":"api/shark/-android-reference-matchers/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-android-reference-matchers/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-a-c-c-e-s-s-i-b-i-l-i-t-y_-i-t-e-r-a-t-o-r-s/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/ACCESSIBILITY_ITERATORS</p>"},{"location":"api/shark/-android-reference-matchers/-a-c-c-e-s-s-i-b-i-l-i-t-y_-i-t-e-r-a-t-o-r-s/#accessibility_iterators","title":"ACCESSIBILITY_ITERATORS","text":"<p>ACCESSIBILITY_ITERATORS()</p>"},{"location":"api/shark/-android-reference-matchers/-a-c-c-e-s-s-i-b-i-l-i-t-y_-i-t-e-r-a-t-o-r-s/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-a-c-c-e-s-s-i-b-i-l-i-t-y_-n-o-d-e_-i-d_-m-a-n-a-g-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/ACCESSIBILITY_NODE_ID_MANAGER</p>"},{"location":"api/shark/-android-reference-matchers/-a-c-c-e-s-s-i-b-i-l-i-t-y_-n-o-d-e_-i-d_-m-a-n-a-g-e-r/#accessibility_node_id_manager","title":"ACCESSIBILITY_NODE_ID_MANAGER","text":"<p>ACCESSIBILITY_NODE_ID_MANAGER()</p>"},{"location":"api/shark/-android-reference-matchers/-a-c-c-e-s-s-i-b-i-l-i-t-y_-n-o-d-e_-i-d_-m-a-n-a-g-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-a-c-c-e-s-s-i-b-i-l-i-t-y_-n-o-d-e_-i-n-f-o__-m-o-r-i-g-i-n-a-l-t-e-x-t/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/ACCESSIBILITY_NODE_INFO__MORIGINALTEXT</p>"},{"location":"api/shark/-android-reference-matchers/-a-c-c-e-s-s-i-b-i-l-i-t-y_-n-o-d-e_-i-n-f-o__-m-o-r-i-g-i-n-a-l-t-e-x-t/#accessibility_node_info__moriginaltext","title":"ACCESSIBILITY_NODE_INFO__MORIGINALTEXT","text":"<p>ACCESSIBILITY_NODE_INFO__MORIGINALTEXT()</p>"},{"location":"api/shark/-android-reference-matchers/-a-c-c-e-s-s-i-b-i-l-i-t-y_-n-o-d-e_-i-n-f-o__-m-o-r-i-g-i-n-a-l-t-e-x-t/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-a-c-c-o-u-n-t_-m-a-n-a-g-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/ACCOUNT_MANAGER</p>"},{"location":"api/shark/-android-reference-matchers/-a-c-c-o-u-n-t_-m-a-n-a-g-e-r/#account_manager","title":"ACCOUNT_MANAGER","text":"<p>ACCOUNT_MANAGER()</p>"},{"location":"api/shark/-android-reference-matchers/-a-c-c-o-u-n-t_-m-a-n-a-g-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-a-c-c-o-u-n-t_-m-a-n-a-g-e-r__-a-m-s_-t-a-s-k__-r-e-s-p-o-n-s-e/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/ACCOUNT_MANAGER__AMS_TASK__RESPONSE</p>"},{"location":"api/shark/-android-reference-matchers/-a-c-c-o-u-n-t_-m-a-n-a-g-e-r__-a-m-s_-t-a-s-k__-r-e-s-p-o-n-s-e/#account_manager__ams_task__response","title":"ACCOUNT_MANAGER__AMS_TASK__RESPONSE","text":"<p>ACCOUNT_MANAGER__AMS_TASK__RESPONSE()</p>"},{"location":"api/shark/-android-reference-matchers/-a-c-c-o-u-n-t_-m-a-n-a-g-e-r__-a-m-s_-t-a-s-k__-r-e-s-p-o-n-s-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-c-h-o-o-s-e_-m-o-d-e-l/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/ACTIVITY_CHOOSE_MODEL</p>"},{"location":"api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-c-h-o-o-s-e_-m-o-d-e-l/#activity_choose_model","title":"ACTIVITY_CHOOSE_MODEL","text":"<p>ACTIVITY_CHOOSE_MODEL()</p>"},{"location":"api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-c-h-o-o-s-e_-m-o-d-e-l/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-m-a-n-a-g-e-r_-m-c-o-n-t-e-x-t/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/ACTIVITY_MANAGER_MCONTEXT</p>"},{"location":"api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-m-a-n-a-g-e-r_-m-c-o-n-t-e-x-t/#activity_manager_mcontext","title":"ACTIVITY_MANAGER_MCONTEXT","text":"<p>ACTIVITY_MANAGER_MCONTEXT()</p>"},{"location":"api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-m-a-n-a-g-e-r_-m-c-o-n-t-e-x-t/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-t-h-r-e-a-d__-m_-n-e-w_-a-c-t-i-v-i-t-i-e-s/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/ACTIVITY_THREAD__M_NEW_ACTIVITIES</p>"},{"location":"api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-t-h-r-e-a-d__-m_-n-e-w_-a-c-t-i-v-i-t-i-e-s/#activity_thread__m_new_activities","title":"ACTIVITY_THREAD__M_NEW_ACTIVITIES","text":"<p>ACTIVITY_THREAD__M_NEW_ACTIVITIES()</p> <p>See AndroidReferenceReaders.ACTIVITY_THREAD__NEW_ACTIVITIES for more context</p>"},{"location":"api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-t-h-r-e-a-d__-m_-n-e-w_-a-c-t-i-v-i-t-i-e-s/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-t-r-a-n-s-i-t-i-o-n_-s-t-a-t-e__-m_-e-x-i-t-i-n-g_-t-o_-v-i-e-w/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/ACTIVITY_TRANSITION_STATE__M_EXITING_TO_VIEW</p>"},{"location":"api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-t-r-a-n-s-i-t-i-o-n_-s-t-a-t-e__-m_-e-x-i-t-i-n-g_-t-o_-v-i-e-w/#activity_transition_state__m_exiting_to_view","title":"ACTIVITY_TRANSITION_STATE__M_EXITING_TO_VIEW","text":"<p>ACTIVITY_TRANSITION_STATE__M_EXITING_TO_VIEW()</p>"},{"location":"api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-t-r-a-n-s-i-t-i-o-n_-s-t-a-t-e__-m_-e-x-i-t-i-n-g_-t-o_-v-i-e-w/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-a-n-i-m-a-t-i-o-n_-h-a-n-d-l-e-r__-a-n-i-m-a-t-o-r_-r-e-q-u-e-s-t-o-r-s/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/ANIMATION_HANDLER__ANIMATOR_REQUESTORS</p>"},{"location":"api/shark/-android-reference-matchers/-a-n-i-m-a-t-i-o-n_-h-a-n-d-l-e-r__-a-n-i-m-a-t-o-r_-r-e-q-u-e-s-t-o-r-s/#animation_handler__animator_requestors","title":"ANIMATION_HANDLER__ANIMATOR_REQUESTORS","text":"<p>ANIMATION_HANDLER__ANIMATOR_REQUESTORS()</p>"},{"location":"api/shark/-android-reference-matchers/-a-n-i-m-a-t-i-o-n_-h-a-n-d-l-e-r__-a-n-i-m-a-t-o-r_-r-e-q-u-e-s-t-o-r-s/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-a-p-p-l-i-c-a-t-i-o-n_-p-a-c-k-a-g-e_-m-a-n-a-g-e-r__-h-a-s_-s-y-s-t-e-m_-f-e-a-t-u-r-e_-q-u-e-r-y/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/APPLICATION_PACKAGE_MANAGER__HAS_SYSTEM_FEATURE_QUERY</p>"},{"location":"api/shark/-android-reference-matchers/-a-p-p-l-i-c-a-t-i-o-n_-p-a-c-k-a-g-e_-m-a-n-a-g-e-r__-h-a-s_-s-y-s-t-e-m_-f-e-a-t-u-r-e_-q-u-e-r-y/#application_package_manager__has_system_feature_query","title":"APPLICATION_PACKAGE_MANAGER__HAS_SYSTEM_FEATURE_QUERY","text":"<p>APPLICATION_PACKAGE_MANAGER__HAS_SYSTEM_FEATURE_QUERY()</p>"},{"location":"api/shark/-android-reference-matchers/-a-p-p-l-i-c-a-t-i-o-n_-p-a-c-k-a-g-e_-m-a-n-a-g-e-r__-h-a-s_-s-y-s-t-e-m_-f-e-a-t-u-r-e_-q-u-e-r-y/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-a-p-p_-o-p-s_-m-a-n-a-g-e-r__-c-a-l-l-b-a-c-k_-s-t-u-b/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/APP_OPS_MANAGER__CALLBACK_STUB</p>"},{"location":"api/shark/-android-reference-matchers/-a-p-p_-o-p-s_-m-a-n-a-g-e-r__-c-a-l-l-b-a-c-k_-s-t-u-b/#app_ops_manager__callback_stub","title":"APP_OPS_MANAGER__CALLBACK_STUB","text":"<p>APP_OPS_MANAGER__CALLBACK_STUB()</p>"},{"location":"api/shark/-android-reference-matchers/-a-p-p_-o-p-s_-m-a-n-a-g-e-r__-c-a-l-l-b-a-c-k_-s-t-u-b/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-a-p-p_-w-i-d-g-e-t_-h-o-s-t_-c-a-l-l-b-a-c-k-s/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/APP_WIDGET_HOST_CALLBACKS</p>"},{"location":"api/shark/-android-reference-matchers/-a-p-p_-w-i-d-g-e-t_-h-o-s-t_-c-a-l-l-b-a-c-k-s/#app_widget_host_callbacks","title":"APP_WIDGET_HOST_CALLBACKS","text":"<p>APP_WIDGET_HOST_CALLBACKS()</p>"},{"location":"api/shark/-android-reference-matchers/-a-p-p_-w-i-d-g-e-t_-h-o-s-t_-c-a-l-l-b-a-c-k-s/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-a-s-s-i-s-t_-s-t-r-u-c-t-u-r-e/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/ASSIST_STRUCTURE</p>"},{"location":"api/shark/-android-reference-matchers/-a-s-s-i-s-t_-s-t-r-u-c-t-u-r-e/#assist_structure","title":"ASSIST_STRUCTURE","text":"<p>ASSIST_STRUCTURE()</p>"},{"location":"api/shark/-android-reference-matchers/-a-s-s-i-s-t_-s-t-r-u-c-t-u-r-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-a-u-d-i-o_-m-a-n-a-g-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/AUDIO_MANAGER</p>"},{"location":"api/shark/-android-reference-matchers/-a-u-d-i-o_-m-a-n-a-g-e-r/#audio_manager","title":"AUDIO_MANAGER","text":"<p>AUDIO_MANAGER()</p>"},{"location":"api/shark/-android-reference-matchers/-a-u-d-i-o_-m-a-n-a-g-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-a-u-d-i-o_-m-a-n-a-g-e-r__-m-c-o-n-t-e-x-t_-s-t-a-t-i-c/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/AUDIO_MANAGER__MCONTEXT_STATIC</p>"},{"location":"api/shark/-android-reference-matchers/-a-u-d-i-o_-m-a-n-a-g-e-r__-m-c-o-n-t-e-x-t_-s-t-a-t-i-c/#audio_manager__mcontext_static","title":"AUDIO_MANAGER__MCONTEXT_STATIC","text":"<p>AUDIO_MANAGER__MCONTEXT_STATIC()</p>"},{"location":"api/shark/-android-reference-matchers/-a-u-d-i-o_-m-a-n-a-g-e-r__-m-c-o-n-t-e-x-t_-s-t-a-t-i-c/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-a-w_-c-o-n-t-e-n-t-s_-p-o-s-t-e-d_-c-a-l-l-b-a-c-k/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/AW_CONTENTS_POSTED_CALLBACK</p>"},{"location":"api/shark/-android-reference-matchers/-a-w_-c-o-n-t-e-n-t-s_-p-o-s-t-e-d_-c-a-l-l-b-a-c-k/#aw_contents_posted_callback","title":"AW_CONTENTS_POSTED_CALLBACK","text":"<p>AW_CONTENTS_POSTED_CALLBACK()</p>"},{"location":"api/shark/-android-reference-matchers/-a-w_-c-o-n-t-e-n-t-s_-p-o-s-t-e-d_-c-a-l-l-b-a-c-k/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-a-w_-c-o-n-t-e-n-t-s__-a0/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/AW_CONTENTS__A0</p>"},{"location":"api/shark/-android-reference-matchers/-a-w_-c-o-n-t-e-n-t-s__-a0/#aw_contents__a0","title":"AW_CONTENTS__A0","text":"<p>AW_CONTENTS__A0()</p>"},{"location":"api/shark/-android-reference-matchers/-a-w_-c-o-n-t-e-n-t-s__-a0/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-a-w_-r-e-s-o-u-r-c-e__-s-r-e-s-o-u-r-c-e-s/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/AW_RESOURCE__SRESOURCES</p>"},{"location":"api/shark/-android-reference-matchers/-a-w_-r-e-s-o-u-r-c-e__-s-r-e-s-o-u-r-c-e-s/#aw_resource__sresources","title":"AW_RESOURCE__SRESOURCES","text":"<p>AW_RESOURCE__SRESOURCES()</p>"},{"location":"api/shark/-android-reference-matchers/-a-w_-r-e-s-o-u-r-c-e__-s-r-e-s-o-u-r-c-e-s/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-b-a-c-k-d-r-o-p_-f-r-a-m-e_-r-e-n-d-e-r-e-r__-m-d-e-c-o-r-v-i-e-w/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/BACKDROP_FRAME_RENDERER__MDECORVIEW</p>"},{"location":"api/shark/-android-reference-matchers/-b-a-c-k-d-r-o-p_-f-r-a-m-e_-r-e-n-d-e-r-e-r__-m-d-e-c-o-r-v-i-e-w/#backdrop_frame_renderer__mdecorview","title":"BACKDROP_FRAME_RENDERER__MDECORVIEW","text":"<p>BACKDROP_FRAME_RENDERER__MDECORVIEW()</p>"},{"location":"api/shark/-android-reference-matchers/-b-a-c-k-d-r-o-p_-f-r-a-m-e_-r-e-n-d-e-r-e-r__-m-d-e-c-o-r-v-i-e-w/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-b-i-o-m-e-t-r-i-c_-p-r-o-m-p-t/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/BIOMETRIC_PROMPT</p>"},{"location":"api/shark/-android-reference-matchers/-b-i-o-m-e-t-r-i-c_-p-r-o-m-p-t/#biometric_prompt","title":"BIOMETRIC_PROMPT","text":"<p>BIOMETRIC_PROMPT()</p>"},{"location":"api/shark/-android-reference-matchers/-b-i-o-m-e-t-r-i-c_-p-r-o-m-p-t/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-b-l-o-c-k-i-n-g_-q-u-e-u-e/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/BLOCKING_QUEUE</p>"},{"location":"api/shark/-android-reference-matchers/-b-l-o-c-k-i-n-g_-q-u-e-u-e/#blocking_queue","title":"BLOCKING_QUEUE","text":"<p>BLOCKING_QUEUE()</p>"},{"location":"api/shark/-android-reference-matchers/-b-l-o-c-k-i-n-g_-q-u-e-u-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-b-u-b-b-l-e_-p-o-p-u-p_-h-e-l-p-e-r__-s-h-e-l-p-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/BUBBLE_POPUP_HELPER__SHELPER</p>"},{"location":"api/shark/-android-reference-matchers/-b-u-b-b-l-e_-p-o-p-u-p_-h-e-l-p-e-r__-s-h-e-l-p-e-r/#bubble_popup_helper__shelper","title":"BUBBLE_POPUP_HELPER__SHELPER","text":"<p>BUBBLE_POPUP_HELPER__SHELPER()</p>"},{"location":"api/shark/-android-reference-matchers/-b-u-b-b-l-e_-p-o-p-u-p_-h-e-l-p-e-r__-s-h-e-l-p-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-c-l-i-p-b-o-a-r-d_-e-x_-m-a-n-a-g-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/CLIPBOARD_EX_MANAGER</p>"},{"location":"api/shark/-android-reference-matchers/-c-l-i-p-b-o-a-r-d_-e-x_-m-a-n-a-g-e-r/#clipboard_ex_manager","title":"CLIPBOARD_EX_MANAGER","text":"<p>CLIPBOARD_EX_MANAGER()</p>"},{"location":"api/shark/-android-reference-matchers/-c-l-i-p-b-o-a-r-d_-e-x_-m-a-n-a-g-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-c-l-i-p-b-o-a-r-d_-u-i_-m-a-n-a-g-e-r__-s-i-n-s-t-a-n-c-e/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/CLIPBOARD_UI_MANAGER__SINSTANCE</p>"},{"location":"api/shark/-android-reference-matchers/-c-l-i-p-b-o-a-r-d_-u-i_-m-a-n-a-g-e-r__-s-i-n-s-t-a-n-c-e/#clipboard_ui_manager__sinstance","title":"CLIPBOARD_UI_MANAGER__SINSTANCE","text":"<p>CLIPBOARD_UI_MANAGER__SINSTANCE()</p>"},{"location":"api/shark/-android-reference-matchers/-c-l-i-p-b-o-a-r-d_-u-i_-m-a-n-a-g-e-r__-s-i-n-s-t-a-n-c-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-c-o-m-p-a-n-i-o-n_-d-e-v-i-c-e_-s-e-r-v-i-c-e__-s-t-u-b/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/COMPANION_DEVICE_SERVICE__STUB</p>"},{"location":"api/shark/-android-reference-matchers/-c-o-m-p-a-n-i-o-n_-d-e-v-i-c-e_-s-e-r-v-i-c-e__-s-t-u-b/#companion_device_service__stub","title":"COMPANION_DEVICE_SERVICE__STUB","text":"<p>COMPANION_DEVICE_SERVICE__STUB()</p>"},{"location":"api/shark/-android-reference-matchers/-c-o-m-p-a-n-i-o-n_-d-e-v-i-c-e_-s-e-r-v-i-c-e__-s-t-u-b/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-c-o-n-n-e-c-t-i-v-i-t-y_-m-a-n-a-g-e-r_-c-a-l-l-b-a-c-k_-h-a-n-d-l-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/CONNECTIVITY_MANAGER_CALLBACK_HANDLER</p>"},{"location":"api/shark/-android-reference-matchers/-c-o-n-n-e-c-t-i-v-i-t-y_-m-a-n-a-g-e-r_-c-a-l-l-b-a-c-k_-h-a-n-d-l-e-r/#connectivity_manager_callback_handler","title":"CONNECTIVITY_MANAGER_CALLBACK_HANDLER","text":"<p>CONNECTIVITY_MANAGER_CALLBACK_HANDLER()</p>"},{"location":"api/shark/-android-reference-matchers/-c-o-n-n-e-c-t-i-v-i-t-y_-m-a-n-a-g-e-r_-c-a-l-l-b-a-c-k_-h-a-n-d-l-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-c-o-n-n-e-c-t-i-v-i-t-y_-m-a-n-a-g-e-r__-s-i-n-s-t-a-n-c-e/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/CONNECTIVITY_MANAGER__SINSTANCE</p>"},{"location":"api/shark/-android-reference-matchers/-c-o-n-n-e-c-t-i-v-i-t-y_-m-a-n-a-g-e-r__-s-i-n-s-t-a-n-c-e/#connectivity_manager__sinstance","title":"CONNECTIVITY_MANAGER__SINSTANCE","text":"<p>CONNECTIVITY_MANAGER__SINSTANCE()</p>"},{"location":"api/shark/-android-reference-matchers/-c-o-n-n-e-c-t-i-v-i-t-y_-m-a-n-a-g-e-r__-s-i-n-s-t-a-n-c-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-c-o-n-t-r-o-l-l-e-d_-i-n-p-u-t_-c-o-n-n-e-c-t-i-o-n_-w-r-a-p-p-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/CONTROLLED_INPUT_CONNECTION_WRAPPER</p>"},{"location":"api/shark/-android-reference-matchers/-c-o-n-t-r-o-l-l-e-d_-i-n-p-u-t_-c-o-n-n-e-c-t-i-o-n_-w-r-a-p-p-e-r/#controlled_input_connection_wrapper","title":"CONTROLLED_INPUT_CONNECTION_WRAPPER","text":"<p>CONTROLLED_INPUT_CONNECTION_WRAPPER()</p>"},{"location":"api/shark/-android-reference-matchers/-c-o-n-t-r-o-l-l-e-d_-i-n-p-u-t_-c-o-n-n-e-c-t-i-o-n_-w-r-a-p-p-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-companion/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion</p>"},{"location":"api/shark/-android-reference-matchers/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-android-reference-matchers/-companion/#functions","title":"Functions","text":"Name Summary buildKnownReferences @JvmStaticfun buildKnownReferences(referenceMatchers: Set&lt;AndroidReferenceMatchers&gt;): List&lt;ReferenceMatcher&gt;Builds a list of ReferenceMatcher from the referenceMatchers set of AndroidReferenceMatchers. ignoredInstanceField @JvmStaticfun ignoredInstanceField(className: String, fieldName: String): IgnoredReferenceMatcherCreates a IgnoredReferenceMatcher that matches a InstanceFieldPattern. ignoredJavaLocal @JvmStaticfun ignoredJavaLocal(threadName: String): IgnoredReferenceMatcherCreates a IgnoredReferenceMatcher that matches a JavaLocalPattern. instanceFieldLeak @JvmStaticfun instanceFieldLeak(className: String, fieldName: String, description: String = \"\", patternApplies: AndroidBuildMirror.() -&gt; Boolean = ALWAYS): LibraryLeakReferenceMatcherCreates a LibraryLeakReferenceMatcher that matches a InstanceFieldPattern. description should convey what we know about this library leak. nativeGlobalVariableLeak @JvmStaticfun nativeGlobalVariableLeak(className: String, description: String = \"\", patternApplies: AndroidBuildMirror.() -&gt; Boolean = ALWAYS): LibraryLeakReferenceMatcher staticFieldLeak @JvmStaticfun staticFieldLeak(className: String, fieldName: String, description: String = \"\", patternApplies: AndroidBuildMirror.() -&gt; Boolean = ALWAYS): LibraryLeakReferenceMatcherCreates a LibraryLeakReferenceMatcher that matches a StaticFieldPattern. description should convey what we know about this library leak."},{"location":"api/shark/-android-reference-matchers/-companion/#properties","title":"Properties","text":"Name Summary appDefaults @JvmStaticval appDefaults: List&lt;ReferenceMatcher&gt; HMD_GLOBAL const val HMD_GLOBAL: String HUAWEI const val HUAWEI: String ignoredReferencesOnly @JvmStaticval ignoredReferencesOnly: List&lt;ReferenceMatcher&gt;Returns a list of ReferenceMatcher that only contains IgnoredReferenceMatcher and no LibraryLeakReferenceMatcher. INFINIX const val INFINIX: String LENOVO const val LENOVO: String LG const val LG: String MEIZU const val MEIZU: String MOTOROLA const val MOTOROLA: String NVIDIA const val NVIDIA: String ONE_PLUS const val ONE_PLUS: String RAZER const val RAZER: String REALME const val REALME: String SAMSUNG const val SAMSUNG: String SHARP const val SHARP: String TES const val TES: String VIVO const val VIVO: String XIAOMI const val XIAOMI: String"},{"location":"api/shark/-android-reference-matchers/-companion/-h-m-d_-g-l-o-b-a-l/","title":"h m d  g l o b a l","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/HMD_GLOBAL</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-h-m-d_-g-l-o-b-a-l/#hmd_global","title":"HMD_GLOBAL","text":"<p>const val HMD_GLOBAL: String</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-h-u-a-w-e-i/","title":"h u a w e i","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/HUAWEI</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-h-u-a-w-e-i/#huawei","title":"HUAWEI","text":"<p>const val HUAWEI: String</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-i-n-f-i-n-i-x/","title":"i n f i n i x","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/INFINIX</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-i-n-f-i-n-i-x/#infinix","title":"INFINIX","text":"<p>const val INFINIX: String</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-l-e-n-o-v-o/","title":"l e n o v o","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/LENOVO</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-l-e-n-o-v-o/#lenovo","title":"LENOVO","text":"<p>const val LENOVO: String</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-l-g/","title":"l g","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/LG</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-l-g/#lg","title":"LG","text":"<p>const val LG: String</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-m-e-i-z-u/","title":"m e i z u","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/MEIZU</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-m-e-i-z-u/#meizu","title":"MEIZU","text":"<p>const val MEIZU: String</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-m-o-t-o-r-o-l-a/","title":"m o t o r o l a","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/MOTOROLA</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-m-o-t-o-r-o-l-a/#motorola","title":"MOTOROLA","text":"<p>const val MOTOROLA: String</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-n-v-i-d-i-a/","title":"n v i d i a","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/NVIDIA</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-n-v-i-d-i-a/#nvidia","title":"NVIDIA","text":"<p>const val NVIDIA: String</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-o-n-e_-p-l-u-s/","title":"o n e  p l u s","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/ONE_PLUS</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-o-n-e_-p-l-u-s/#one_plus","title":"ONE_PLUS","text":"<p>const val ONE_PLUS: String</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-r-a-z-e-r/","title":"r a z e r","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/RAZER</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-r-a-z-e-r/#razer","title":"RAZER","text":"<p>const val RAZER: String</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-r-e-a-l-m-e/","title":"r e a l m e","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/REALME</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-r-e-a-l-m-e/#realme","title":"REALME","text":"<p>const val REALME: String</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-s-a-m-s-u-n-g/","title":"s a m s u n g","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/SAMSUNG</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-s-a-m-s-u-n-g/#samsung","title":"SAMSUNG","text":"<p>const val SAMSUNG: String</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-s-h-a-r-p/","title":"s h a r p","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/SHARP</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-s-h-a-r-p/#sharp","title":"SHARP","text":"<p>const val SHARP: String</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-t-e-s/","title":"t e s","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/TES</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-t-e-s/#tes","title":"TES","text":"<p>const val TES: String</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-v-i-v-o/","title":"v i v o","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/VIVO</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-v-i-v-o/#vivo","title":"VIVO","text":"<p>const val VIVO: String</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-x-i-a-o-m-i/","title":"x i a o m i","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/XIAOMI</p>"},{"location":"api/shark/-android-reference-matchers/-companion/-x-i-a-o-m-i/#xiaomi","title":"XIAOMI","text":"<p>const val XIAOMI: String</p>"},{"location":"api/shark/-android-reference-matchers/-companion/app-defaults/","title":"App defaults","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/appDefaults</p>"},{"location":"api/shark/-android-reference-matchers/-companion/app-defaults/#appdefaults","title":"appDefaults","text":"<p>@JvmStatic</p> <p>val appDefaults: List&lt;ReferenceMatcher&gt;</p>"},{"location":"api/shark/-android-reference-matchers/-companion/app-defaults/#see-also","title":"See also","text":"<p>main</p> shark.AndroidReferenceMatchers"},{"location":"api/shark/-android-reference-matchers/-companion/build-known-references/","title":"Build known references","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/buildKnownReferences</p>"},{"location":"api/shark/-android-reference-matchers/-companion/build-known-references/#buildknownreferences","title":"buildKnownReferences","text":"<p>@JvmStatic</p> <p>fun buildKnownReferences(referenceMatchers: Set&lt;AndroidReferenceMatchers&gt;): List&lt;ReferenceMatcher&gt;</p> <p>Builds a list of ReferenceMatcher from the referenceMatchers set of AndroidReferenceMatchers.</p>"},{"location":"api/shark/-android-reference-matchers/-companion/ignored-instance-field/","title":"Ignored instance field","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/ignoredInstanceField</p>"},{"location":"api/shark/-android-reference-matchers/-companion/ignored-instance-field/#ignoredinstancefield","title":"ignoredInstanceField","text":"<p>@JvmStatic</p> <p>fun ignoredInstanceField(className: String, fieldName: String): IgnoredReferenceMatcher</p> <p>Creates a IgnoredReferenceMatcher that matches a InstanceFieldPattern.</p>"},{"location":"api/shark/-android-reference-matchers/-companion/ignored-java-local/","title":"Ignored java local","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/ignoredJavaLocal</p>"},{"location":"api/shark/-android-reference-matchers/-companion/ignored-java-local/#ignoredjavalocal","title":"ignoredJavaLocal","text":"<p>@JvmStatic</p> <p>fun ignoredJavaLocal(threadName: String): IgnoredReferenceMatcher</p> <p>Creates a IgnoredReferenceMatcher that matches a JavaLocalPattern.</p>"},{"location":"api/shark/-android-reference-matchers/-companion/ignored-references-only/","title":"Ignored references only","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/ignoredReferencesOnly</p>"},{"location":"api/shark/-android-reference-matchers/-companion/ignored-references-only/#ignoredreferencesonly","title":"ignoredReferencesOnly","text":"<p>@JvmStatic</p> <p>val ignoredReferencesOnly: List&lt;ReferenceMatcher&gt;</p> <p>Returns a list of ReferenceMatcher that only contains IgnoredReferenceMatcher and no LibraryLeakReferenceMatcher.</p>"},{"location":"api/shark/-android-reference-matchers/-companion/instance-field-leak/","title":"Instance field leak","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/instanceFieldLeak</p>"},{"location":"api/shark/-android-reference-matchers/-companion/instance-field-leak/#instancefieldleak","title":"instanceFieldLeak","text":"<p>@JvmStatic</p> <p>fun instanceFieldLeak(className: String, fieldName: String, description: String = \"\", patternApplies: AndroidBuildMirror.() -&gt; Boolean = ALWAYS): LibraryLeakReferenceMatcher</p> <p>Creates a LibraryLeakReferenceMatcher that matches a InstanceFieldPattern. description should convey what we know about this library leak.</p>"},{"location":"api/shark/-android-reference-matchers/-companion/native-global-variable-leak/","title":"Native global variable leak","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/nativeGlobalVariableLeak</p>"},{"location":"api/shark/-android-reference-matchers/-companion/native-global-variable-leak/#nativeglobalvariableleak","title":"nativeGlobalVariableLeak","text":"<p>@JvmStatic</p> <p>fun nativeGlobalVariableLeak(className: String, description: String = \"\", patternApplies: AndroidBuildMirror.() -&gt; Boolean = ALWAYS): LibraryLeakReferenceMatcher</p>"},{"location":"api/shark/-android-reference-matchers/-companion/static-field-leak/","title":"Static field leak","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/Companion/staticFieldLeak</p>"},{"location":"api/shark/-android-reference-matchers/-companion/static-field-leak/#staticfieldleak","title":"staticFieldLeak","text":"<p>@JvmStatic</p> <p>fun staticFieldLeak(className: String, fieldName: String, description: String = \"\", patternApplies: AndroidBuildMirror.() -&gt; Boolean = ALWAYS): LibraryLeakReferenceMatcher</p> <p>Creates a LibraryLeakReferenceMatcher that matches a StaticFieldPattern. description should convey what we know about this library leak.</p>"},{"location":"api/shark/-android-reference-matchers/-d-e-v-i-c-e_-p-o-l-i-c-y_-m-a-n-a-g-e-r__-s-e-t-t-i-n-g-s_-o-b-s-e-r-v-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/DEVICE_POLICY_MANAGER__SETTINGS_OBSERVER</p>"},{"location":"api/shark/-android-reference-matchers/-d-e-v-i-c-e_-p-o-l-i-c-y_-m-a-n-a-g-e-r__-s-e-t-t-i-n-g-s_-o-b-s-e-r-v-e-r/#device_policy_manager__settings_observer","title":"DEVICE_POLICY_MANAGER__SETTINGS_OBSERVER","text":"<p>DEVICE_POLICY_MANAGER__SETTINGS_OBSERVER()</p>"},{"location":"api/shark/-android-reference-matchers/-d-e-v-i-c-e_-p-o-l-i-c-y_-m-a-n-a-g-e-r__-s-e-t-t-i-n-g-s_-o-b-s-e-r-v-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-d-r-e-a-m_-s-e-r-v-i-c-e/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/DREAM_SERVICE</p>"},{"location":"api/shark/-android-reference-matchers/-d-r-e-a-m_-s-e-r-v-i-c-e/#dream_service","title":"DREAM_SERVICE","text":"<p>DREAM_SERVICE()</p>"},{"location":"api/shark/-android-reference-matchers/-d-r-e-a-m_-s-e-r-v-i-c-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-e-d-i-t-t-e-x-t_-b-l-i-n-k_-m-e-s-s-a-g-e-q-u-e-u-e/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/EDITTEXT_BLINK_MESSAGEQUEUE</p>"},{"location":"api/shark/-android-reference-matchers/-e-d-i-t-t-e-x-t_-b-l-i-n-k_-m-e-s-s-a-g-e-q-u-e-u-e/#edittext_blink_messagequeue","title":"EDITTEXT_BLINK_MESSAGEQUEUE","text":"<p>EDITTEXT_BLINK_MESSAGEQUEUE()</p>"},{"location":"api/shark/-android-reference-matchers/-e-d-i-t-t-e-x-t_-b-l-i-n-k_-m-e-s-s-a-g-e-q-u-e-u-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-e-v-e-n-t_-r-e-c-e-i-v-e-r__-m-m-e-s-s-a-g-e_-q-u-e-u-e/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/EVENT_RECEIVER__MMESSAGE_QUEUE</p>"},{"location":"api/shark/-android-reference-matchers/-e-v-e-n-t_-r-e-c-e-i-v-e-r__-m-m-e-s-s-a-g-e_-q-u-e-u-e/#event_receiver__mmessage_queue","title":"EVENT_RECEIVER__MMESSAGE_QUEUE","text":"<p>EVENT_RECEIVER__MMESSAGE_QUEUE()</p>"},{"location":"api/shark/-android-reference-matchers/-e-v-e-n-t_-r-e-c-e-i-v-e-r__-m-m-e-s-s-a-g-e_-q-u-e-u-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-e-x-t-e-n-d-e-d_-s-t-a-t-u-s_-b-a-r_-m-a-n-a-g-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/EXTENDED_STATUS_BAR_MANAGER</p>"},{"location":"api/shark/-android-reference-matchers/-e-x-t-e-n-d-e-d_-s-t-a-t-u-s_-b-a-r_-m-a-n-a-g-e-r/#extended_status_bar_manager","title":"EXTENDED_STATUS_BAR_MANAGER","text":"<p>EXTENDED_STATUS_BAR_MANAGER()</p>"},{"location":"api/shark/-android-reference-matchers/-e-x-t-e-n-d-e-d_-s-t-a-t-u-s_-b-a-r_-m-a-n-a-g-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-f-i-n-a-l-i-z-e-r_-w-a-t-c-h-d-o-g_-d-a-e-m-o-n/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/FINALIZER_WATCHDOG_DAEMON</p>"},{"location":"api/shark/-android-reference-matchers/-f-i-n-a-l-i-z-e-r_-w-a-t-c-h-d-o-g_-d-a-e-m-o-n/#finalizer_watchdog_daemon","title":"FINALIZER_WATCHDOG_DAEMON","text":"<p>FINALIZER_WATCHDOG_DAEMON()</p>"},{"location":"api/shark/-android-reference-matchers/-f-i-n-a-l-i-z-e-r_-w-a-t-c-h-d-o-g_-d-a-e-m-o-n/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-f-l-i-p-p-e-r__-a-p-p-l-i-c-a-t-i-o-n_-d-e-s-c-r-i-p-t-o-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/FLIPPER__APPLICATION_DESCRIPTOR</p>"},{"location":"api/shark/-android-reference-matchers/-f-l-i-p-p-e-r__-a-p-p-l-i-c-a-t-i-o-n_-d-e-s-c-r-i-p-t-o-r/#flipper__application_descriptor","title":"FLIPPER__APPLICATION_DESCRIPTOR","text":"<p>FLIPPER__APPLICATION_DESCRIPTOR()</p>"},{"location":"api/shark/-android-reference-matchers/-f-l-i-p-p-e-r__-a-p-p-l-i-c-a-t-i-o-n_-d-e-s-c-r-i-p-t-o-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-g-e-s-t-u-r-e_-b-o-o-s-t_-m-a-n-a-g-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/GESTURE_BOOST_MANAGER</p>"},{"location":"api/shark/-android-reference-matchers/-g-e-s-t-u-r-e_-b-o-o-s-t_-m-a-n-a-g-e-r/#gesture_boost_manager","title":"GESTURE_BOOST_MANAGER","text":"<p>GESTURE_BOOST_MANAGER()</p>"},{"location":"api/shark/-android-reference-matchers/-g-e-s-t-u-r-e_-b-o-o-s-t_-m-a-n-a-g-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-h-o-s-t_-a-d-p-u_-s-e-r-v-i-c-e_-m-s-g_-h-a-n-d-l-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/HOST_ADPU_SERVICE_MSG_HANDLER</p>"},{"location":"api/shark/-android-reference-matchers/-h-o-s-t_-a-d-p-u_-s-e-r-v-i-c-e_-m-s-g_-h-a-n-d-l-e-r/#host_adpu_service_msg_handler","title":"HOST_ADPU_SERVICE_MSG_HANDLER","text":"<p>HOST_ADPU_SERVICE_MSG_HANDLER()</p>"},{"location":"api/shark/-android-reference-matchers/-h-o-s-t_-a-d-p-u_-s-e-r-v-i-c-e_-m-s-g_-h-a-n-d-l-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-i-m-m_-c-u-r-r-e-n-t_-i-n-p-u-t_-c-o-n-n-e-c-t-i-o-n/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/IMM_CURRENT_INPUT_CONNECTION</p>"},{"location":"api/shark/-android-reference-matchers/-i-m-m_-c-u-r-r-e-n-t_-i-n-p-u-t_-c-o-n-n-e-c-t-i-o-n/#imm_current_input_connection","title":"IMM_CURRENT_INPUT_CONNECTION","text":"<p>IMM_CURRENT_INPUT_CONNECTION()</p>"},{"location":"api/shark/-android-reference-matchers/-i-m-m_-c-u-r-r-e-n-t_-i-n-p-u-t_-c-o-n-n-e-c-t-i-o-n/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-i-m-m_-l-a-s-t_-f-o-c-u-s_-v-i-e-w/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/IMM_LAST_FOCUS_VIEW</p>"},{"location":"api/shark/-android-reference-matchers/-i-m-m_-l-a-s-t_-f-o-c-u-s_-v-i-e-w/#imm_last_focus_view","title":"IMM_LAST_FOCUS_VIEW","text":"<p>IMM_LAST_FOCUS_VIEW()</p>"},{"location":"api/shark/-android-reference-matchers/-i-m-m_-l-a-s-t_-f-o-c-u-s_-v-i-e-w/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-i-n-p-u-t_-m-a-n-a-g-e-r__-m_-l-a-t-e_-i-n-i-t_-c-o-n-t-e-x-t/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/INPUT_MANAGER__M_LATE_INIT_CONTEXT</p>"},{"location":"api/shark/-android-reference-matchers/-i-n-p-u-t_-m-a-n-a-g-e-r__-m_-l-a-t-e_-i-n-i-t_-c-o-n-t-e-x-t/#input_manager__m_late_init_context","title":"INPUT_MANAGER__M_LATE_INIT_CONTEXT","text":"<p>INPUT_MANAGER__M_LATE_INIT_CONTEXT()</p>"},{"location":"api/shark/-android-reference-matchers/-i-n-p-u-t_-m-a-n-a-g-e-r__-m_-l-a-t-e_-i-n-i-t_-c-o-n-t-e-x-t/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-i-n-p-u-t_-m-e-t-h-o-d_-m-a-n-a-g-e-r_-i-s_-t-e-r-r-i-b-l-e/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/INPUT_METHOD_MANAGER_IS_TERRIBLE</p>"},{"location":"api/shark/-android-reference-matchers/-i-n-p-u-t_-m-e-t-h-o-d_-m-a-n-a-g-e-r_-i-s_-t-e-r-r-i-b-l-e/#input_method_manager_is_terrible","title":"INPUT_METHOD_MANAGER_IS_TERRIBLE","text":"<p>INPUT_METHOD_MANAGER_IS_TERRIBLE()</p>"},{"location":"api/shark/-android-reference-matchers/-i-n-p-u-t_-m-e-t-h-o-d_-m-a-n-a-g-e-r_-i-s_-t-e-r-r-i-b-l-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-i-n-s-t-r-u-m-e-n-t-a-t-i-o-n_-r-e-c-o-m-m-e-n-d_-a-c-t-i-v-i-t-y/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/INSTRUMENTATION_RECOMMEND_ACTIVITY</p>"},{"location":"api/shark/-android-reference-matchers/-i-n-s-t-r-u-m-e-n-t-a-t-i-o-n_-r-e-c-o-m-m-e-n-d_-a-c-t-i-v-i-t-y/#instrumentation_recommend_activity","title":"INSTRUMENTATION_RECOMMEND_ACTIVITY","text":"<p>INSTRUMENTATION_RECOMMEND_ACTIVITY()</p>"},{"location":"api/shark/-android-reference-matchers/-i-n-s-t-r-u-m-e-n-t-a-t-i-o-n_-r-e-c-o-m-m-e-n-d_-a-c-t-i-v-i-t-y/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-i-r-e-q-u-e-s-t_-f-i-n-i-s-h_-c-a-l-l-b-a-c-k/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/IREQUEST_FINISH_CALLBACK</p>"},{"location":"api/shark/-android-reference-matchers/-i-r-e-q-u-e-s-t_-f-i-n-i-s-h_-c-a-l-l-b-a-c-k/#irequest_finish_callback","title":"IREQUEST_FINISH_CALLBACK","text":"<p>IREQUEST_FINISH_CALLBACK()</p>"},{"location":"api/shark/-android-reference-matchers/-i-r-e-q-u-e-s-t_-f-i-n-i-s-h_-c-a-l-l-b-a-c-k/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-j-o-b_-s-e-r-v-i-c-e/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/JOB_SERVICE</p>"},{"location":"api/shark/-android-reference-matchers/-j-o-b_-s-e-r-v-i-c-e/#job_service","title":"JOB_SERVICE","text":"<p>JOB_SERVICE()</p>"},{"location":"api/shark/-android-reference-matchers/-j-o-b_-s-e-r-v-i-c-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-l-a-y-o-u-t_-t-r-a-n-s-i-t-i-o-n/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/LAYOUT_TRANSITION</p>"},{"location":"api/shark/-android-reference-matchers/-l-a-y-o-u-t_-t-r-a-n-s-i-t-i-o-n/#layout_transition","title":"LAYOUT_TRANSITION","text":"<p>LAYOUT_TRANSITION()</p>"},{"location":"api/shark/-android-reference-matchers/-l-a-y-o-u-t_-t-r-a-n-s-i-t-i-o-n/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-l-e-a-k_-c-a-n-a-r-y_-h-e-a-p_-d-u-m-p-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/LEAK_CANARY_HEAP_DUMPER</p>"},{"location":"api/shark/-android-reference-matchers/-l-e-a-k_-c-a-n-a-r-y_-h-e-a-p_-d-u-m-p-e-r/#leak_canary_heap_dumper","title":"LEAK_CANARY_HEAP_DUMPER","text":"<p>LEAK_CANARY_HEAP_DUMPER()</p>"},{"location":"api/shark/-android-reference-matchers/-l-e-a-k_-c-a-n-a-r-y_-h-e-a-p_-d-u-m-p-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-l-e-a-k_-c-a-n-a-r-y_-i-n-t-e-r-n-a-l/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/LEAK_CANARY_INTERNAL</p>"},{"location":"api/shark/-android-reference-matchers/-l-e-a-k_-c-a-n-a-r-y_-i-n-t-e-r-n-a-l/#leak_canary_internal","title":"LEAK_CANARY_INTERNAL","text":"<p>LEAK_CANARY_INTERNAL()</p>"},{"location":"api/shark/-android-reference-matchers/-l-e-a-k_-c-a-n-a-r-y_-i-n-t-e-r-n-a-l/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-l-e-a-k_-c-a-n-a-r-y_-t-h-r-e-a-d/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/LEAK_CANARY_THREAD</p>"},{"location":"api/shark/-android-reference-matchers/-l-e-a-k_-c-a-n-a-r-y_-t-h-r-e-a-d/#leak_canary_thread","title":"LEAK_CANARY_THREAD","text":"<p>LEAK_CANARY_THREAD()</p>"},{"location":"api/shark/-android-reference-matchers/-l-e-a-k_-c-a-n-a-r-y_-t-h-r-e-a-d/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-l-g-c-o-n-t-e-x-t__-m-c-o-n-t-e-x-t/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/LGCONTEXT__MCONTEXT</p>"},{"location":"api/shark/-android-reference-matchers/-l-g-c-o-n-t-e-x-t__-m-c-o-n-t-e-x-t/#lgcontext__mcontext","title":"LGCONTEXT__MCONTEXT","text":"<p>LGCONTEXT__MCONTEXT()</p>"},{"location":"api/shark/-android-reference-matchers/-l-g-c-o-n-t-e-x-t__-m-c-o-n-t-e-x-t/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-m-a-g-n-i-f-i-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/MAGNIFIER</p>"},{"location":"api/shark/-android-reference-matchers/-m-a-g-n-i-f-i-e-r/#magnifier","title":"MAGNIFIER","text":"<p>MAGNIFIER()</p>"},{"location":"api/shark/-android-reference-matchers/-m-a-g-n-i-f-i-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-m-a-i-n/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/MAIN</p>"},{"location":"api/shark/-android-reference-matchers/-m-a-i-n/#main","title":"MAIN","text":"<p>MAIN()</p>"},{"location":"api/shark/-android-reference-matchers/-m-a-i-n/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-m-a-p-p-e-r_-c-l-i-e-n-t/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/MAPPER_CLIENT</p>"},{"location":"api/shark/-android-reference-matchers/-m-a-p-p-e-r_-c-l-i-e-n-t/#mapper_client","title":"MAPPER_CLIENT","text":"<p>MAPPER_CLIENT()</p>"},{"location":"api/shark/-android-reference-matchers/-m-a-p-p-e-r_-c-l-i-e-n-t/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-m-e-d-i-a_-p-r-o-j-e-c-t-i-o-n_-c-a-l-l-b-a-c-k/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/MEDIA_PROJECTION_CALLBACK</p>"},{"location":"api/shark/-android-reference-matchers/-m-e-d-i-a_-p-r-o-j-e-c-t-i-o-n_-c-a-l-l-b-a-c-k/#media_projection_callback","title":"MEDIA_PROJECTION_CALLBACK","text":"<p>MEDIA_PROJECTION_CALLBACK()</p>"},{"location":"api/shark/-android-reference-matchers/-m-e-d-i-a_-p-r-o-j-e-c-t-i-o-n_-c-a-l-l-b-a-c-k/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-m-e-d-i-a_-s-c-a-n-n-e-r_-c-o-n-n-e-c-t-i-o-n/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/MEDIA_SCANNER_CONNECTION</p>"},{"location":"api/shark/-android-reference-matchers/-m-e-d-i-a_-s-c-a-n-n-e-r_-c-o-n-n-e-c-t-i-o-n/#media_scanner_connection","title":"MEDIA_SCANNER_CONNECTION","text":"<p>MEDIA_SCANNER_CONNECTION()</p>"},{"location":"api/shark/-android-reference-matchers/-m-e-d-i-a_-s-c-a-n-n-e-r_-c-o-n-n-e-c-t-i-o-n/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-m-e-d-i-a_-s-e-s-s-i-o-n_-l-e-g-a-c-y_-h-e-l-p-e-r__-s-i-n-s-t-a-n-c-e/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/MEDIA_SESSION_LEGACY_HELPER__SINSTANCE</p>"},{"location":"api/shark/-android-reference-matchers/-m-e-d-i-a_-s-e-s-s-i-o-n_-l-e-g-a-c-y_-h-e-l-p-e-r__-s-i-n-s-t-a-n-c-e/#media_session_legacy_helper__sinstance","title":"MEDIA_SESSION_LEGACY_HELPER__SINSTANCE","text":"<p>MEDIA_SESSION_LEGACY_HELPER__SINSTANCE()</p>"},{"location":"api/shark/-android-reference-matchers/-m-e-d-i-a_-s-e-s-s-i-o-n_-l-e-g-a-c-y_-h-e-l-p-e-r__-s-i-n-s-t-a-n-c-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-m-u-l-t-i_-w-i-n-d-o-w_-d-e-c-o-r_-s-u-p-p-o-r-t__-m-w-i-n-d-o-w/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/MULTI_WINDOW_DECOR_SUPPORT__MWINDOW</p>"},{"location":"api/shark/-android-reference-matchers/-m-u-l-t-i_-w-i-n-d-o-w_-d-e-c-o-r_-s-u-p-p-o-r-t__-m-w-i-n-d-o-w/#multi_window_decor_support__mwindow","title":"MULTI_WINDOW_DECOR_SUPPORT__MWINDOW","text":"<p>MULTI_WINDOW_DECOR_SUPPORT__MWINDOW()</p>"},{"location":"api/shark/-android-reference-matchers/-m-u-l-t-i_-w-i-n-d-o-w_-d-e-c-o-r_-s-u-p-p-o-r-t__-m-w-i-n-d-o-w/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-o-e-m_-s-c-e-n-e_-c-a-l-l_-b-l-o-c-k-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/OEM_SCENE_CALL_BLOCKER</p>"},{"location":"api/shark/-android-reference-matchers/-o-e-m_-s-c-e-n-e_-c-a-l-l_-b-l-o-c-k-e-r/#oem_scene_call_blocker","title":"OEM_SCENE_CALL_BLOCKER","text":"<p>OEM_SCENE_CALL_BLOCKER()</p>"},{"location":"api/shark/-android-reference-matchers/-o-e-m_-s-c-e-n-e_-c-a-l-l_-b-l-o-c-k-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-p-e-r-f_-m-o-n-i-t-o-r_-l-a-s-t_-c-a-l-l-b-a-c-k/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/PERF_MONITOR_LAST_CALLBACK</p>"},{"location":"api/shark/-android-reference-matchers/-p-e-r-f_-m-o-n-i-t-o-r_-l-a-s-t_-c-a-l-l-b-a-c-k/#perf_monitor_last_callback","title":"PERF_MONITOR_LAST_CALLBACK","text":"<p>PERF_MONITOR_LAST_CALLBACK()</p>"},{"location":"api/shark/-android-reference-matchers/-p-e-r-f_-m-o-n-i-t-o-r_-l-a-s-t_-c-a-l-l-b-a-c-k/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-p-e-r-m-i-s-s-i-o-n_-c-o-n-t-r-o-l-l-e-r_-m-a-n-a-g-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/PERMISSION_CONTROLLER_MANAGER</p>"},{"location":"api/shark/-android-reference-matchers/-p-e-r-m-i-s-s-i-o-n_-c-o-n-t-r-o-l-l-e-r_-m-a-n-a-g-e-r/#permission_controller_manager","title":"PERMISSION_CONTROLLER_MANAGER","text":"<p>PERMISSION_CONTROLLER_MANAGER()</p>"},{"location":"api/shark/-android-reference-matchers/-p-e-r-m-i-s-s-i-o-n_-c-o-n-t-r-o-l-l-e-r_-m-a-n-a-g-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-p-e-r-s-o-n-a_-m-a-n-a-g-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/PERSONA_MANAGER</p>"},{"location":"api/shark/-android-reference-matchers/-p-e-r-s-o-n-a_-m-a-n-a-g-e-r/#persona_manager","title":"PERSONA_MANAGER","text":"<p>PERSONA_MANAGER()</p>"},{"location":"api/shark/-android-reference-matchers/-p-e-r-s-o-n-a_-m-a-n-a-g-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-p-l-a-y-e-r_-b-a-s-e/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/PLAYER_BASE</p>"},{"location":"api/shark/-android-reference-matchers/-p-l-a-y-e-r_-b-a-s-e/#player_base","title":"PLAYER_BASE","text":"<p>PLAYER_BASE()</p>"},{"location":"api/shark/-android-reference-matchers/-p-l-a-y-e-r_-b-a-s-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-r-a-z-e-r_-t-e-x-t_-k-e-y_-l-i-s-t-e-n-e-r__-m-c-o-n-t-e-x-t/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/RAZER_TEXT_KEY_LISTENER__MCONTEXT</p>"},{"location":"api/shark/-android-reference-matchers/-r-a-z-e-r_-t-e-x-t_-k-e-y_-l-i-s-t-e-n-e-r__-m-c-o-n-t-e-x-t/#razer_text_key_listener__mcontext","title":"RAZER_TEXT_KEY_LISTENER__MCONTEXT","text":"<p>RAZER_TEXT_KEY_LISTENER__MCONTEXT()</p>"},{"location":"api/shark/-android-reference-matchers/-r-a-z-e-r_-t-e-x-t_-k-e-y_-l-i-s-t-e-n-e-r__-m-c-o-n-t-e-x-t/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-r-e-f-e-r-e-n-c-e-s/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/REFERENCES</p>"},{"location":"api/shark/-android-reference-matchers/-r-e-f-e-r-e-n-c-e-s/#references","title":"REFERENCES","text":"<p>REFERENCES()</p>"},{"location":"api/shark/-android-reference-matchers/-r-e-f-e-r-e-n-c-e-s/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-r-e-n-d-e-r_-n-o-d-e_-a-n-i-m-a-t-o-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/RENDER_NODE_ANIMATOR</p>"},{"location":"api/shark/-android-reference-matchers/-r-e-n-d-e-r_-n-o-d-e_-a-n-i-m-a-t-o-r/#render_node_animator","title":"RENDER_NODE_ANIMATOR","text":"<p>RENDER_NODE_ANIMATOR()</p>"},{"location":"api/shark/-android-reference-matchers/-r-e-n-d-e-r_-n-o-d-e_-a-n-i-m-a-t-o-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-r-e-s-o-u-r-c-e-s__-m-c-o-n-t-e-x-t/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/RESOURCES__MCONTEXT</p>"},{"location":"api/shark/-android-reference-matchers/-r-e-s-o-u-r-c-e-s__-m-c-o-n-t-e-x-t/#resources__mcontext","title":"RESOURCES__MCONTEXT","text":"<p>RESOURCES__MCONTEXT()</p>"},{"location":"api/shark/-android-reference-matchers/-r-e-s-o-u-r-c-e-s__-m-c-o-n-t-e-x-t/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-s-e-m_-a-p-p_-i-c-o-n_-s-o-l-u-t-i-o-n/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/SEM_APP_ICON_SOLUTION</p>"},{"location":"api/shark/-android-reference-matchers/-s-e-m_-a-p-p_-i-c-o-n_-s-o-l-u-t-i-o-n/#sem_app_icon_solution","title":"SEM_APP_ICON_SOLUTION","text":"<p>SEM_APP_ICON_SOLUTION()</p>"},{"location":"api/shark/-android-reference-matchers/-s-e-m_-a-p-p_-i-c-o-n_-s-o-l-u-t-i-o-n/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-s-e-m_-c-l-i-p-b-o-a-r-d_-m-a-n-a-g-e-r__-m-c-o-n-t-e-x-t/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/SEM_CLIPBOARD_MANAGER__MCONTEXT</p>"},{"location":"api/shark/-android-reference-matchers/-s-e-m_-c-l-i-p-b-o-a-r-d_-m-a-n-a-g-e-r__-m-c-o-n-t-e-x-t/#sem_clipboard_manager__mcontext","title":"SEM_CLIPBOARD_MANAGER__MCONTEXT","text":"<p>SEM_CLIPBOARD_MANAGER__MCONTEXT()</p>"},{"location":"api/shark/-android-reference-matchers/-s-e-m_-c-l-i-p-b-o-a-r-d_-m-a-n-a-g-e-r__-m-c-o-n-t-e-x-t/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-s-e-m_-e-m-e-r-g-e-n-c-y_-m-a-n-a-g-e-r__-m-c-o-n-t-e-x-t/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/SEM_EMERGENCY_MANAGER__MCONTEXT</p>"},{"location":"api/shark/-android-reference-matchers/-s-e-m_-e-m-e-r-g-e-n-c-y_-m-a-n-a-g-e-r__-m-c-o-n-t-e-x-t/#sem_emergency_manager__mcontext","title":"SEM_EMERGENCY_MANAGER__MCONTEXT","text":"<p>SEM_EMERGENCY_MANAGER__MCONTEXT()</p>"},{"location":"api/shark/-android-reference-matchers/-s-e-m_-e-m-e-r-g-e-n-c-y_-m-a-n-a-g-e-r__-m-c-o-n-t-e-x-t/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-s-e-m_-p-e-r-s-o-n-a_-m-a-n-a-g-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/SEM_PERSONA_MANAGER</p>"},{"location":"api/shark/-android-reference-matchers/-s-e-m_-p-e-r-s-o-n-a_-m-a-n-a-g-e-r/#sem_persona_manager","title":"SEM_PERSONA_MANAGER","text":"<p>SEM_PERSONA_MANAGER()</p>"},{"location":"api/shark/-android-reference-matchers/-s-e-m_-p-e-r-s-o-n-a_-m-a-n-a-g-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-s-m-a-r-t_-c-o-v-e-r_-m-a-n-a-g-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/SMART_COVER_MANAGER</p>"},{"location":"api/shark/-android-reference-matchers/-s-m-a-r-t_-c-o-v-e-r_-m-a-n-a-g-e-r/#smart_cover_manager","title":"SMART_COVER_MANAGER","text":"<p>SMART_COVER_MANAGER()</p>"},{"location":"api/shark/-android-reference-matchers/-s-m-a-r-t_-c-o-v-e-r_-m-a-n-a-g-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-s-p-a-n_-c-o-n-t-r-o-l-l-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/SPAN_CONTROLLER</p>"},{"location":"api/shark/-android-reference-matchers/-s-p-a-n_-c-o-n-t-r-o-l-l-e-r/#span_controller","title":"SPAN_CONTROLLER","text":"<p>SPAN_CONTROLLER()</p>"},{"location":"api/shark/-android-reference-matchers/-s-p-a-n_-c-o-n-t-r-o-l-l-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-s-p-e-e-c-h_-r-e-c-o-g-n-i-z-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/SPEECH_RECOGNIZER</p>"},{"location":"api/shark/-android-reference-matchers/-s-p-e-e-c-h_-r-e-c-o-g-n-i-z-e-r/#speech_recognizer","title":"SPEECH_RECOGNIZER","text":"<p>SPEECH_RECOGNIZER()</p>"},{"location":"api/shark/-android-reference-matchers/-s-p-e-e-c-h_-r-e-c-o-g-n-i-z-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-s-p-e-l-l_-c-h-e-c-k-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/SPELL_CHECKER</p>"},{"location":"api/shark/-android-reference-matchers/-s-p-e-l-l_-c-h-e-c-k-e-r/#spell_checker","title":"SPELL_CHECKER","text":"<p>SPELL_CHECKER()</p>"},{"location":"api/shark/-android-reference-matchers/-s-p-e-l-l_-c-h-e-c-k-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-s-p-e-l-l_-c-h-e-c-k-e-r_-s-e-s-s-i-o-n/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/SPELL_CHECKER_SESSION</p>"},{"location":"api/shark/-android-reference-matchers/-s-p-e-l-l_-c-h-e-c-k-e-r_-s-e-s-s-i-o-n/#spell_checker_session","title":"SPELL_CHECKER_SESSION","text":"<p>SPELL_CHECKER_SESSION()</p>"},{"location":"api/shark/-android-reference-matchers/-s-p-e-l-l_-c-h-e-c-k-e-r_-s-e-s-s-i-o-n/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-s-p-e-n_-g-e-s-t-u-r-e_-m-a-n-a-g-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/SPEN_GESTURE_MANAGER</p>"},{"location":"api/shark/-android-reference-matchers/-s-p-e-n_-g-e-s-t-u-r-e_-m-a-n-a-g-e-r/#spen_gesture_manager","title":"SPEN_GESTURE_MANAGER","text":"<p>SPEN_GESTURE_MANAGER()</p>"},{"location":"api/shark/-android-reference-matchers/-s-p-e-n_-g-e-s-t-u-r-e_-m-a-n-a-g-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-s-t-a-t-i-c_-m-t-a-r-g-e-t_-v-i-e-w/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/STATIC_MTARGET_VIEW</p>"},{"location":"api/shark/-android-reference-matchers/-s-t-a-t-i-c_-m-t-a-r-g-e-t_-v-i-e-w/#static_mtarget_view","title":"STATIC_MTARGET_VIEW","text":"<p>STATIC_MTARGET_VIEW()</p>"},{"location":"api/shark/-android-reference-matchers/-s-t-a-t-i-c_-m-t-a-r-g-e-t_-v-i-e-w/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-s-y-s-t-e-m_-s-e-n-s-o-r_-m-a-n-a-g-e-r__-m-a-p-p-c-o-n-t-e-x-t-i-m-p-l/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/SYSTEM_SENSOR_MANAGER__MAPPCONTEXTIMPL</p>"},{"location":"api/shark/-android-reference-matchers/-s-y-s-t-e-m_-s-e-n-s-o-r_-m-a-n-a-g-e-r__-m-a-p-p-c-o-n-t-e-x-t-i-m-p-l/#system_sensor_manager__mappcontextimpl","title":"SYSTEM_SENSOR_MANAGER__MAPPCONTEXTIMPL","text":"<p>SYSTEM_SENSOR_MANAGER__MAPPCONTEXTIMPL()</p>"},{"location":"api/shark/-android-reference-matchers/-s-y-s-t-e-m_-s-e-n-s-o-r_-m-a-n-a-g-e-r__-m-a-p-p-c-o-n-t-e-x-t-i-m-p-l/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-t-e-x-t_-l-i-n-e__-s-c-a-c-h-e-d/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/TEXT_LINE__SCACHED</p>"},{"location":"api/shark/-android-reference-matchers/-t-e-x-t_-l-i-n-e__-s-c-a-c-h-e-d/#text_line__scached","title":"TEXT_LINE__SCACHED","text":"<p>TEXT_LINE__SCACHED()</p>"},{"location":"api/shark/-android-reference-matchers/-t-e-x-t_-l-i-n-e__-s-c-a-c-h-e-d/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-t-e-x-t_-t-o_-s-p-e-e-c-h/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/TEXT_TO_SPEECH</p>"},{"location":"api/shark/-android-reference-matchers/-t-e-x-t_-t-o_-s-p-e-e-c-h/#text_to_speech","title":"TEXT_TO_SPEECH","text":"<p>TEXT_TO_SPEECH()</p>"},{"location":"api/shark/-android-reference-matchers/-t-e-x-t_-t-o_-s-p-e-e-c-h/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-t-e-x-t_-v-i-e-w__-m-l-a-s-t_-h-o-v-e-r-e-d_-v-i-e-w/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/TEXT_VIEW__MLAST_HOVERED_VIEW</p>"},{"location":"api/shark/-android-reference-matchers/-t-e-x-t_-v-i-e-w__-m-l-a-s-t_-h-o-v-e-r-e-d_-v-i-e-w/#text_view__mlast_hovered_view","title":"TEXT_VIEW__MLAST_HOVERED_VIEW","text":"<p>TEXT_VIEW__MLAST_HOVERED_VIEW()</p>"},{"location":"api/shark/-android-reference-matchers/-t-e-x-t_-v-i-e-w__-m-l-a-s-t_-h-o-v-e-r-e-d_-v-i-e-w/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-t-o-a-s-t_-t-n/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/TOAST_TN</p>"},{"location":"api/shark/-android-reference-matchers/-t-o-a-s-t_-t-n/#toast_tn","title":"TOAST_TN","text":"<p>TOAST_TN()</p>"},{"location":"api/shark/-android-reference-matchers/-t-o-a-s-t_-t-n/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-u-i_-m-o-d-e_-m-a-n-a-g-e-r/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/UI_MODE_MANAGER</p>"},{"location":"api/shark/-android-reference-matchers/-u-i_-m-o-d-e_-m-a-n-a-g-e-r/#ui_mode_manager","title":"UI_MODE_MANAGER","text":"<p>UI_MODE_MANAGER()</p>"},{"location":"api/shark/-android-reference-matchers/-u-i_-m-o-d-e_-m-a-n-a-g-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-u-s-e-r_-m-a-n-a-g-e-r__-s-i-n-s-t-a-n-c-e/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/USER_MANAGER__SINSTANCE</p>"},{"location":"api/shark/-android-reference-matchers/-u-s-e-r_-m-a-n-a-g-e-r__-s-i-n-s-t-a-n-c-e/#user_manager__sinstance","title":"USER_MANAGER__SINSTANCE","text":"<p>USER_MANAGER__SINSTANCE()</p>"},{"location":"api/shark/-android-reference-matchers/-u-s-e-r_-m-a-n-a-g-e-r__-s-i-n-s-t-a-n-c-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-v-i-e-w-l-o-c-a-t-i-o-n-h-o-l-d-e-r_-r-o-o-t/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/VIEWLOCATIONHOLDER_ROOT</p>"},{"location":"api/shark/-android-reference-matchers/-v-i-e-w-l-o-c-a-t-i-o-n-h-o-l-d-e-r_-r-o-o-t/#viewlocationholder_root","title":"VIEWLOCATIONHOLDER_ROOT","text":"<p>VIEWLOCATIONHOLDER_ROOT()</p>"},{"location":"api/shark/-android-reference-matchers/-v-i-e-w-l-o-c-a-t-i-o-n-h-o-l-d-e-r_-r-o-o-t/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-v-i-e-w_-c-o-n-f-i-g-u-r-a-t-i-o-n__-m-c-o-n-t-e-x-t/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/VIEW_CONFIGURATION__MCONTEXT</p>"},{"location":"api/shark/-android-reference-matchers/-v-i-e-w_-c-o-n-f-i-g-u-r-a-t-i-o-n__-m-c-o-n-t-e-x-t/#view_configuration__mcontext","title":"VIEW_CONFIGURATION__MCONTEXT","text":"<p>VIEW_CONFIGURATION__MCONTEXT()</p>"},{"location":"api/shark/-android-reference-matchers/-v-i-e-w_-c-o-n-f-i-g-u-r-a-t-i-o-n__-m-c-o-n-t-e-x-t/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-v-i-e-w_-g-r-o-u-p__-m_-c-u-r-r-e-n-t_-d-r-a-g_-c-h-i-l-d/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/VIEW_GROUP__M_CURRENT_DRAG_CHILD</p>"},{"location":"api/shark/-android-reference-matchers/-v-i-e-w_-g-r-o-u-p__-m_-c-u-r-r-e-n-t_-d-r-a-g_-c-h-i-l-d/#view_group__m_current_drag_child","title":"VIEW_GROUP__M_CURRENT_DRAG_CHILD","text":"<p>VIEW_GROUP__M_CURRENT_DRAG_CHILD()</p>"},{"location":"api/shark/-android-reference-matchers/-v-i-e-w_-g-r-o-u-p__-m_-c-u-r-r-e-n-t_-d-r-a-g_-c-h-i-l-d/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-v-i-e-w_-g-r-o-u-p__-m_-p-r-e_-s-o-r-t-e-d_-c-h-i-l-d-r-e-n/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/VIEW_GROUP__M_PRE_SORTED_CHILDREN</p>"},{"location":"api/shark/-android-reference-matchers/-v-i-e-w_-g-r-o-u-p__-m_-p-r-e_-s-o-r-t-e-d_-c-h-i-l-d-r-e-n/#view_group__m_pre_sorted_children","title":"VIEW_GROUP__M_PRE_SORTED_CHILDREN","text":"<p>VIEW_GROUP__M_PRE_SORTED_CHILDREN()</p>"},{"location":"api/shark/-android-reference-matchers/-v-i-e-w_-g-r-o-u-p__-m_-p-r-e_-s-o-r-t-e-d_-c-h-i-l-d-r-e-n/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-v-i-e-w_-t-o-o-l-t-i-p_-c-a-l-l-b-a-c-k/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/VIEW_TOOLTIP_CALLBACK</p>"},{"location":"api/shark/-android-reference-matchers/-v-i-e-w_-t-o-o-l-t-i-p_-c-a-l-l-b-a-c-k/#view_tooltip_callback","title":"VIEW_TOOLTIP_CALLBACK","text":"<p>VIEW_TOOLTIP_CALLBACK()</p>"},{"location":"api/shark/-android-reference-matchers/-v-i-e-w_-t-o-o-l-t-i-p_-c-a-l-l-b-a-c-k/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-w-i-n-d-o-w_-o-n_-b-a-c-k_-i-n-v-o-k-e-d_-d-i-s-p-a-t-c-h-e-r__-s-t-u-b/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/WINDOW_ON_BACK_INVOKED_DISPATCHER__STUB</p>"},{"location":"api/shark/-android-reference-matchers/-w-i-n-d-o-w_-o-n_-b-a-c-k_-i-n-v-o-k-e-d_-d-i-s-p-a-t-c-h-e-r__-s-t-u-b/#window_on_back_invoked_dispatcher__stub","title":"WINDOW_ON_BACK_INVOKED_DISPATCHER__STUB","text":"<p>WINDOW_ON_BACK_INVOKED_DISPATCHER__STUB()</p>"},{"location":"api/shark/-android-reference-matchers/-w-i-n-d-o-w_-o-n_-b-a-c-k_-i-n-v-o-k-e-d_-d-i-s-p-a-t-c-h-e-r__-s-t-u-b/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-reference-matchers/-x-i-a-m-i__-r-e-s-o-u-r-c-e-s_-i-m-p-l/","title":"Index","text":"<p>//leakcanary/shark/AndroidReferenceMatchers/XIAMI__RESOURCES_IMPL</p>"},{"location":"api/shark/-android-reference-matchers/-x-i-a-m-i__-r-e-s-o-u-r-c-e-s_-i-m-p-l/#xiami__resources_impl","title":"XIAMI__RESOURCES_IMPL","text":"<p>XIAMI__RESOURCES_IMPL()</p>"},{"location":"api/shark/-android-reference-matchers/-x-i-a-m-i__-r-e-s-o-u-r-c-e-s_-i-m-p-l/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-android-resource-id-names/","title":"Index","text":"<p>//leakcanary/shark/AndroidResourceIdNames</p>"},{"location":"api/shark/-android-resource-id-names/#androidresourceidnames","title":"AndroidResourceIdNames","text":"<p>class AndroidResourceIdNames</p>"},{"location":"api/shark/-android-resource-id-names/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-android-resource-id-names/#functions","title":"Functions","text":"Name Summary get operator fun get(id: Int): String?"},{"location":"api/shark/-android-resource-id-names/get/","title":"Get","text":"<p>//leakcanary/shark/AndroidResourceIdNames/get</p>"},{"location":"api/shark/-android-resource-id-names/get/#get","title":"get","text":"<p>operator fun get(id: Int): String?</p>"},{"location":"api/shark/-android-resource-id-names/-companion/","title":"Index","text":"<p>//leakcanary/shark/AndroidResourceIdNames/Companion</p>"},{"location":"api/shark/-android-resource-id-names/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-android-resource-id-names/-companion/#functions","title":"Functions","text":"Name Summary readFromHeap fun readFromHeap(graph: HeapGraph): AndroidResourceIdNames? saveToMemory @Synchronizedfun saveToMemory(getResourceTypeName: (Int) -&gt; String?, getResourceEntryName: (Int) -&gt; String?)"},{"location":"api/shark/-android-resource-id-names/-companion/read-from-heap/","title":"Read from heap","text":"<p>//leakcanary/shark/AndroidResourceIdNames/Companion/readFromHeap</p>"},{"location":"api/shark/-android-resource-id-names/-companion/read-from-heap/#readfromheap","title":"readFromHeap","text":"<p>fun readFromHeap(graph: HeapGraph): AndroidResourceIdNames?</p>"},{"location":"api/shark/-android-resource-id-names/-companion/save-to-memory/","title":"Save to memory","text":"<p>//leakcanary/shark/AndroidResourceIdNames/Companion/saveToMemory</p>"},{"location":"api/shark/-android-resource-id-names/-companion/save-to-memory/#savetomemory","title":"saveToMemory","text":"<p>@Synchronized</p> <p>fun saveToMemory(getResourceTypeName: (Int) -&gt; String?, getResourceEntryName: (Int) -&gt; String?)</p>"},{"location":"api/shark/-android-resource-id-names/-companion/save-to-memory/#parameters","title":"Parameters","text":"<p>main</p> getResourceTypeName a function that delegates to Android Resources.getResourceTypeName but returns null when the name isn\u2019t found instead of throwing an exception. getResourceEntryName a function that delegates to Android Resources.getResourceEntryName but returns null when the name isn\u2019t found instead of throwing an exception."},{"location":"api/shark/-android-services/","title":"Index","text":"<p>//leakcanary/shark/AndroidServices</p>"},{"location":"api/shark/-android-services/#androidservices","title":"AndroidServices","text":"<p>object AndroidServices</p>"},{"location":"api/shark/-android-services/#properties","title":"Properties","text":"Name Summary aliveAndroidServiceObjectIds val HeapGraph.aliveAndroidServiceObjectIds: List&lt;Long&gt;"},{"location":"api/shark/-android-services/alive-android-service-object-ids/","title":"Alive android service object ids","text":"<p>//leakcanary/shark/AndroidServices/aliveAndroidServiceObjectIds</p>"},{"location":"api/shark/-android-services/alive-android-service-object-ids/#aliveandroidserviceobjectids","title":"aliveAndroidServiceObjectIds","text":"<p>val HeapGraph.aliveAndroidServiceObjectIds: List&lt;Long&gt;</p>"},{"location":"api/shark/-app-singleton-inspector/","title":"Index","text":"<p>//leakcanary/shark/AppSingletonInspector</p>"},{"location":"api/shark/-app-singleton-inspector/#appsingletoninspector","title":"AppSingletonInspector","text":"<p>class AppSingletonInspector(singletonClasses: String) : ObjectInspector</p> <p>Inspector that automatically marks instances of the provided class names as not leaking because they\u2019re app wide singletons.</p>"},{"location":"api/shark/-app-singleton-inspector/#constructors","title":"Constructors","text":"AppSingletonInspector fun AppSingletonInspector(vararg singletonClasses: String)"},{"location":"api/shark/-app-singleton-inspector/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-app-singleton-inspector/-app-singleton-inspector/","title":"app singleton inspector","text":"<p>//leakcanary/shark/AppSingletonInspector/AppSingletonInspector</p>"},{"location":"api/shark/-app-singleton-inspector/-app-singleton-inspector/#appsingletoninspector","title":"AppSingletonInspector","text":"<p>fun AppSingletonInspector(vararg singletonClasses: String)</p>"},{"location":"api/shark/-app-singleton-inspector/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/AppSingletonInspector/inspect</p>"},{"location":"api/shark/-app-singleton-inspector/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-app-singleton-inspector/inspect/#see-also","title":"See also","text":"<p>main</p> shark.ObjectInspector"},{"location":"api/shark/-application-leak/","title":"Index","text":"<p>//leakcanary/shark/ApplicationLeak</p>"},{"location":"api/shark/-application-leak/#applicationleak","title":"ApplicationLeak","text":"<p>data class ApplicationLeak(val leakTraces: List&lt;LeakTrace&gt;) : Leak</p> <p>A leak found by HeapAnalyzer in your application.</p>"},{"location":"api/shark/-application-leak/#constructors","title":"Constructors","text":"ApplicationLeak fun ApplicationLeak(leakTraces: List&lt;LeakTrace&gt;)"},{"location":"api/shark/-application-leak/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-application-leak/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-application-leak/#properties","title":"Properties","text":"Name Summary leakTraces open override val leakTraces: List&lt;LeakTrace&gt;Group of leak traces which share the same leak signature. shortDescription open override val shortDescription: String signature open override val signature: StringA unique SHA1 hash that represents this group of leak traces. totalRetainedHeapByteSize val totalRetainedHeapByteSize: Int?Sum of LeakTrace.retainedHeapByteSize for all elements in leakTraces. Null if the retained heap size was not computed. totalRetainedObjectCount val totalRetainedObjectCount: Int?Sum of LeakTrace.retainedObjectCount for all elements in leakTraces. Null if the retained heap size was not computed."},{"location":"api/shark/-application-leak/-application-leak/","title":"application leak","text":"<p>//leakcanary/shark/ApplicationLeak/ApplicationLeak</p>"},{"location":"api/shark/-application-leak/-application-leak/#applicationleak","title":"ApplicationLeak","text":"<p>fun ApplicationLeak(leakTraces: List&lt;LeakTrace&gt;)</p>"},{"location":"api/shark/-application-leak/leak-traces/","title":"Leak traces","text":"<p>//leakcanary/shark/ApplicationLeak/leakTraces</p>"},{"location":"api/shark/-application-leak/leak-traces/#leaktraces","title":"leakTraces","text":"<p>open override val leakTraces: List&lt;LeakTrace&gt;</p> <p>Group of leak traces which share the same leak signature.</p>"},{"location":"api/shark/-application-leak/short-description/","title":"Short description","text":"<p>//leakcanary/shark/ApplicationLeak/shortDescription</p>"},{"location":"api/shark/-application-leak/short-description/#shortdescription","title":"shortDescription","text":"<p>open override val shortDescription: String</p>"},{"location":"api/shark/-application-leak/signature/","title":"Signature","text":"<p>//leakcanary/shark/ApplicationLeak/signature</p>"},{"location":"api/shark/-application-leak/signature/#signature","title":"signature","text":"<p>open override val signature: String</p> <p>A unique SHA1 hash that represents this group of leak traces.</p> <p>For ApplicationLeak this is based on LeakTrace.signature and for LibraryLeak this is based on LibraryLeak.pattern.</p>"},{"location":"api/shark/-application-leak/to-string/","title":"To string","text":"<p>//leakcanary/shark/ApplicationLeak/toString</p>"},{"location":"api/shark/-application-leak/to-string/#tostring","title":"toString","text":"<p>open override fun toString(): String</p>"},{"location":"api/shark/-application-leak/-companion/","title":"Index","text":"<p>//leakcanary/shark/ApplicationLeak/Companion</p>"},{"location":"api/shark/-application-leak/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-byte-array-source-provider/","title":"Index","text":"<p>//leakcanary/shark/ByteArraySourceProvider</p>"},{"location":"api/shark/-byte-array-source-provider/#bytearraysourceprovider","title":"ByteArraySourceProvider","text":"<p>class ByteArraySourceProvider(byteArray: ByteArray) : DualSourceProvider</p>"},{"location":"api/shark/-byte-array-source-provider/#constructors","title":"Constructors","text":"ByteArraySourceProvider fun ByteArraySourceProvider(byteArray: ByteArray)"},{"location":"api/shark/-byte-array-source-provider/#functions","title":"Functions","text":"Name Summary openRandomAccessSource open override fun openRandomAccessSource(): RandomAccessSource openStreamingSource open override fun openStreamingSource(): BufferedSource"},{"location":"api/shark/-byte-array-source-provider/-byte-array-source-provider/","title":"byte array source provider","text":"<p>//leakcanary/shark/ByteArraySourceProvider/ByteArraySourceProvider</p>"},{"location":"api/shark/-byte-array-source-provider/-byte-array-source-provider/#bytearraysourceprovider","title":"ByteArraySourceProvider","text":"<p>fun ByteArraySourceProvider(byteArray: ByteArray)</p>"},{"location":"api/shark/-byte-array-source-provider/open-random-access-source/","title":"Open random access source","text":"<p>//leakcanary/shark/ByteArraySourceProvider/openRandomAccessSource</p>"},{"location":"api/shark/-byte-array-source-provider/open-random-access-source/#openrandomaccesssource","title":"openRandomAccessSource","text":"<p>open override fun openRandomAccessSource(): RandomAccessSource</p>"},{"location":"api/shark/-byte-array-source-provider/open-streaming-source/","title":"Open streaming source","text":"<p>//leakcanary/shark/ByteArraySourceProvider/openStreamingSource</p>"},{"location":"api/shark/-byte-array-source-provider/open-streaming-source/#openstreamingsource","title":"openStreamingSource","text":"<p>open override fun openStreamingSource(): BufferedSource</p>"},{"location":"api/shark/-closeable-heap-graph/","title":"Index","text":"<p>//leakcanary/shark/CloseableHeapGraph</p>"},{"location":"api/shark/-closeable-heap-graph/#closeableheapgraph","title":"CloseableHeapGraph","text":"<p>interface CloseableHeapGraph : HeapGraph, Closeable</p> <p>A HeapGraph that should be closed after being used.</p>"},{"location":"api/shark/-closeable-heap-graph/#functions","title":"Functions","text":"Name Summary close abstract override fun close() findClassByName abstract fun findClassByName(className: String): HeapObject.HeapClass?Returns the HeapClass corresponding to the provided className, or null if the class cannot be found. findHeapDumpIndex abstract fun findHeapDumpIndex(objectId: Long): IntReturns the 1-based index in the heap dump of the object corresponding to the provided objectId, and throws IllegalArgumentException otherwise. findObjectByHeapDumpIndex abstract fun findObjectByHeapDumpIndex(heapDumpIndex: Int): HeapObjectReturns the HeapObject corresponding to the provided heapDumpIndex, and throws IllegalArgumentException if heapDumpIndex is less than 1 or more than objectCount. findObjectById abstract fun findObjectById(objectId: Long): HeapObjectReturns the HeapObject corresponding to the provided objectId, and throws IllegalArgumentException otherwise. findObjectByIdOrNull abstract fun findObjectByIdOrNull(objectId: Long): HeapObject?Returns the HeapObject corresponding to the provided objectId or null if it cannot be found. findObjectByIndex abstract fun findObjectByIndex(objectIndex: Int): HeapObjectReturns the HeapObject corresponding to the provided objectIndex, and throws IllegalArgumentException if objectIndex is less than 0 or more than objectCount - 1. objectExists abstract fun objectExists(objectId: Long): BooleanReturns true if the provided objectId exists in the heap dump."},{"location":"api/shark/-closeable-heap-graph/#properties","title":"Properties","text":"Name Summary classCount abstract val classCount: Int classes abstract val classes: Sequence&lt;HeapObject.HeapClass&gt;Sequence of all classes in the heap dump. context abstract val context: GraphContextIn memory store that can be used to store objects this HeapGraph instance. gcRoots abstract val gcRoots: List&lt;GcRoot&gt;All GC roots which type matches types known to this heap graph and which point to non null references. You can retrieve the object that a GC Root points to by calling findObjectById with GcRoot.id, however you need to first check that objectExists returns true because GC roots can point to objects that don\u2019t exist in the heap dump. identifierByteSize abstract val identifierByteSize: Int instanceCount abstract val instanceCount: Int instances abstract val instances: Sequence&lt;HeapObject.HeapInstance&gt;Sequence of all instances in the heap dump. objectArrayCount abstract val objectArrayCount: Int objectArrays abstract val objectArrays: Sequence&lt;HeapObject.HeapObjectArray&gt;Sequence of all object arrays in the heap dump. objectCount abstract val objectCount: Int objects abstract val objects: Sequence&lt;HeapObject&gt;Sequence of all objects in the heap dump. primitiveArrayCount abstract val primitiveArrayCount: Int primitiveArrays abstract val primitiveArrays: Sequence&lt;HeapObject.HeapPrimitiveArray&gt;Sequence of all primitive arrays in the heap dump."},{"location":"api/shark/-closeable-heap-graph/#inheritors","title":"Inheritors","text":"Name HprofHeapGraph"},{"location":"api/shark/-constant-memory-metrics-dual-source-provider/","title":"Index","text":"<p>//leakcanary/shark/ConstantMemoryMetricsDualSourceProvider</p>"},{"location":"api/shark/-constant-memory-metrics-dual-source-provider/#constantmemorymetricsdualsourceprovider","title":"ConstantMemoryMetricsDualSourceProvider","text":"<p>class ConstantMemoryMetricsDualSourceProvider(realSourceProvider: DualSourceProvider) : DualSourceProvider</p> <p>Captures IO read metrics without using much memory.</p>"},{"location":"api/shark/-constant-memory-metrics-dual-source-provider/#constructors","title":"Constructors","text":"ConstantMemoryMetricsDualSourceProvider fun ConstantMemoryMetricsDualSourceProvider(realSourceProvider: DualSourceProvider)"},{"location":"api/shark/-constant-memory-metrics-dual-source-provider/#functions","title":"Functions","text":"Name Summary openRandomAccessSource open override fun openRandomAccessSource(): RandomAccessSource openStreamingSource open override fun openStreamingSource(): BufferedSource"},{"location":"api/shark/-constant-memory-metrics-dual-source-provider/#properties","title":"Properties","text":"Name Summary byteTravelRange val byteTravelRange: Long randomAccessByteReads val randomAccessByteReads: Long = 0 randomAccessByteTravel val randomAccessByteTravel: Long = 0 randomAccessReadCount val randomAccessReadCount: Long = 0"},{"location":"api/shark/-constant-memory-metrics-dual-source-provider/-constant-memory-metrics-dual-source-provider/","title":"constant memory metrics dual source provider","text":"<p>//leakcanary/shark/ConstantMemoryMetricsDualSourceProvider/ConstantMemoryMetricsDualSourceProvider</p>"},{"location":"api/shark/-constant-memory-metrics-dual-source-provider/-constant-memory-metrics-dual-source-provider/#constantmemorymetricsdualsourceprovider","title":"ConstantMemoryMetricsDualSourceProvider","text":"<p>fun ConstantMemoryMetricsDualSourceProvider(realSourceProvider: DualSourceProvider)</p>"},{"location":"api/shark/-constant-memory-metrics-dual-source-provider/byte-travel-range/","title":"Byte travel range","text":"<p>//leakcanary/shark/ConstantMemoryMetricsDualSourceProvider/byteTravelRange</p>"},{"location":"api/shark/-constant-memory-metrics-dual-source-provider/byte-travel-range/#bytetravelrange","title":"byteTravelRange","text":"<p>val byteTravelRange: Long</p>"},{"location":"api/shark/-constant-memory-metrics-dual-source-provider/open-random-access-source/","title":"Open random access source","text":"<p>//leakcanary/shark/ConstantMemoryMetricsDualSourceProvider/openRandomAccessSource</p>"},{"location":"api/shark/-constant-memory-metrics-dual-source-provider/open-random-access-source/#openrandomaccesssource","title":"openRandomAccessSource","text":"<p>open override fun openRandomAccessSource(): RandomAccessSource</p>"},{"location":"api/shark/-constant-memory-metrics-dual-source-provider/open-streaming-source/","title":"Open streaming source","text":"<p>//leakcanary/shark/ConstantMemoryMetricsDualSourceProvider/openStreamingSource</p>"},{"location":"api/shark/-constant-memory-metrics-dual-source-provider/open-streaming-source/#openstreamingsource","title":"openStreamingSource","text":"<p>open override fun openStreamingSource(): BufferedSource</p>"},{"location":"api/shark/-constant-memory-metrics-dual-source-provider/random-access-byte-reads/","title":"Random access byte reads","text":"<p>//leakcanary/shark/ConstantMemoryMetricsDualSourceProvider/randomAccessByteReads</p>"},{"location":"api/shark/-constant-memory-metrics-dual-source-provider/random-access-byte-reads/#randomaccessbytereads","title":"randomAccessByteReads","text":"<p>val randomAccessByteReads: Long = 0</p>"},{"location":"api/shark/-constant-memory-metrics-dual-source-provider/random-access-byte-travel/","title":"Random access byte travel","text":"<p>//leakcanary/shark/ConstantMemoryMetricsDualSourceProvider/randomAccessByteTravel</p>"},{"location":"api/shark/-constant-memory-metrics-dual-source-provider/random-access-byte-travel/#randomaccessbytetravel","title":"randomAccessByteTravel","text":"<p>val randomAccessByteTravel: Long = 0</p>"},{"location":"api/shark/-constant-memory-metrics-dual-source-provider/random-access-read-count/","title":"Random access read count","text":"<p>//leakcanary/shark/ConstantMemoryMetricsDualSourceProvider/randomAccessReadCount</p>"},{"location":"api/shark/-constant-memory-metrics-dual-source-provider/random-access-read-count/#randomaccessreadcount","title":"randomAccessReadCount","text":"<p>val randomAccessReadCount: Long = 0</p>"},{"location":"api/shark/-decorated-path/","title":"Index","text":"<p>//leakcanary/shark/DecoratedPath</p>"},{"location":"api/shark/-decorated-path/#decoratedpath","title":"DecoratedPath","text":"<p>class DecoratedPath(delegate: Path) : Path</p>"},{"location":"api/shark/-decorated-path/#constructors","title":"Constructors","text":"DecoratedPath fun DecoratedPath(delegate: Path)"},{"location":"api/shark/-decorated-path/#functions","title":"Functions","text":"Name Summary endNode open override fun endNode(): Node forEach open fun forEach(p0: Consumer&lt;in Entity&gt;) iterator open operator override fun iterator(): MutableIterator&lt;Entity&gt; lastRelationship open override fun lastRelationship(): Relationship length open override fun length(): Int nodes open override fun nodes(): MutableIterable&lt;Node&gt; relationships open override fun relationships(): Iterable&lt;Relationship&gt; reverseNodes open override fun reverseNodes(): MutableIterable&lt;Node&gt; reverseRelationships open override fun reverseRelationships(): Iterable&lt;Relationship&gt; spliterator open fun spliterator(): Spliterator&lt;Entity&gt; startNode open override fun startNode(): Node"},{"location":"api/shark/-decorated-path/-decorated-path/","title":"decorated path","text":"<p>//leakcanary/shark/DecoratedPath/DecoratedPath</p>"},{"location":"api/shark/-decorated-path/-decorated-path/#decoratedpath","title":"DecoratedPath","text":"<p>fun DecoratedPath(delegate: Path)</p>"},{"location":"api/shark/-decorated-path/iterator/","title":"Iterator","text":"<p>//leakcanary/shark/DecoratedPath/iterator</p>"},{"location":"api/shark/-decorated-path/iterator/#iterator","title":"iterator","text":"<p>open operator override fun iterator(): MutableIterator&lt;Entity&gt;</p>"},{"location":"api/shark/-decorated-path/relationships/","title":"Relationships","text":"<p>//leakcanary/shark/DecoratedPath/relationships</p>"},{"location":"api/shark/-decorated-path/relationships/#relationships","title":"relationships","text":"<p>open override fun relationships(): Iterable&lt;Relationship&gt;</p>"},{"location":"api/shark/-decorated-path/reverse-relationships/","title":"Reverse relationships","text":"<p>//leakcanary/shark/DecoratedPath/reverseRelationships</p>"},{"location":"api/shark/-decorated-path/reverse-relationships/#reverserelationships","title":"reverseRelationships","text":"<p>open override fun reverseRelationships(): Iterable&lt;Relationship&gt;</p>"},{"location":"api/shark/-deobfuscate-hprof-command/","title":"Index","text":"<p>//leakcanary/shark/DeobfuscateHprofCommand</p>"},{"location":"api/shark/-deobfuscate-hprof-command/#deobfuscatehprofcommand","title":"DeobfuscateHprofCommand","text":"<p>class DeobfuscateHprofCommand : CliktCommand</p>"},{"location":"api/shark/-deobfuscate-hprof-command/#constructors","title":"Constructors","text":"DeobfuscateHprofCommand fun DeobfuscateHprofCommand()"},{"location":"api/shark/-deobfuscate-hprof-command/#functions","title":"Functions","text":"Name Summary aliases open fun aliases(): Map&lt;String, List&lt;String&gt;&gt; getFormattedHelp open fun getFormattedHelp(): String getFormattedUsage open fun getFormattedUsage(): String issueMessage fun issueMessage(message: String) main fun main(argv: Array&lt;String&gt;)fun main(argv: List&lt;String&gt;) parse fun parse(argv: Array&lt;String&gt;, parentContext: Context?)fun parse(argv: List&lt;String&gt;, parentContext: Context?) registerArgument fun registerArgument(argument: Argument) registeredSubcommandNames fun registeredSubcommandNames(): List&lt;String&gt; registerOption open override fun registerOption(option: GroupableOption)fun registerOption(option: Option) registerOptionGroup fun registerOptionGroup(group: ParameterGroup) run open override fun run() toString open override fun toString(): String"},{"location":"api/shark/-deobfuscate-hprof-command/#properties","title":"Properties","text":"Name Summary commandHelp val commandHelp: String commandHelpEpilog val commandHelpEpilog: String commandName val commandName: String context val context: Context helpTags val helpTags: Map&lt;String, String&gt; invokeWithoutSubcommand val invokeWithoutSubcommand: Boolean messages val messages: List&lt;String&gt; printHelpOnEmptyArgs val printHelpOnEmptyArgs: Boolean"},{"location":"api/shark/-deobfuscate-hprof-command/-deobfuscate-hprof-command/","title":"deobfuscate hprof command","text":"<p>//leakcanary/shark/DeobfuscateHprofCommand/DeobfuscateHprofCommand</p>"},{"location":"api/shark/-deobfuscate-hprof-command/-deobfuscate-hprof-command/#deobfuscatehprofcommand","title":"DeobfuscateHprofCommand","text":"<p>fun DeobfuscateHprofCommand()</p>"},{"location":"api/shark/-deobfuscate-hprof-command/run/","title":"Run","text":"<p>//leakcanary/shark/DeobfuscateHprofCommand/run</p>"},{"location":"api/shark/-deobfuscate-hprof-command/run/#run","title":"run","text":"<p>open override fun run()</p>"},{"location":"api/shark/-dual-source-provider/","title":"Index","text":"<p>//leakcanary/shark/DualSourceProvider</p>"},{"location":"api/shark/-dual-source-provider/#dualsourceprovider","title":"DualSourceProvider","text":"<p>interface DualSourceProvider : StreamingSourceProvider, RandomAccessSourceProvider</p> <p>Both a StreamingSourceProvider and a RandomAccessSourceProvider</p>"},{"location":"api/shark/-dual-source-provider/#functions","title":"Functions","text":"Name Summary openRandomAccessSource abstract fun openRandomAccessSource(): RandomAccessSource openStreamingSource abstract fun openStreamingSource(): BufferedSource"},{"location":"api/shark/-dual-source-provider/#inheritors","title":"Inheritors","text":"Name ByteArraySourceProvider ConstantMemoryMetricsDualSourceProvider FileSourceProvider ThrowingCancelableFileSourceProvider"},{"location":"api/shark/-dual-source-provider/#extensions","title":"Extensions","text":"Name Summary openHeapGraph fun DualSourceProvider.openHeapGraph(proguardMapping: ProguardMapping? = null, indexedGcRootTypes: Set&lt;HprofRecordTag&gt; = HprofIndex.defaultIndexedGcRootTags()): CloseableHeapGraph"},{"location":"api/shark/-dump-process-command/","title":"Index","text":"<p>//leakcanary/shark/DumpProcessCommand</p>"},{"location":"api/shark/-dump-process-command/#dumpprocesscommand","title":"DumpProcessCommand","text":"<p>class DumpProcessCommand : CliktCommand</p>"},{"location":"api/shark/-dump-process-command/#constructors","title":"Constructors","text":"DumpProcessCommand fun DumpProcessCommand()"},{"location":"api/shark/-dump-process-command/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-dump-process-command/#functions","title":"Functions","text":"Name Summary aliases open fun aliases(): Map&lt;String, List&lt;String&gt;&gt; getFormattedHelp open fun getFormattedHelp(): String getFormattedUsage open fun getFormattedUsage(): String issueMessage fun issueMessage(message: String) main fun main(argv: Array&lt;String&gt;)fun main(argv: List&lt;String&gt;) parse fun parse(argv: Array&lt;String&gt;, parentContext: Context?)fun parse(argv: List&lt;String&gt;, parentContext: Context?) registerArgument fun registerArgument(argument: Argument) registeredSubcommandNames fun registeredSubcommandNames(): List&lt;String&gt; registerOption open override fun registerOption(option: GroupableOption)fun registerOption(option: Option) registerOptionGroup fun registerOptionGroup(group: ParameterGroup) run open override fun run() toString open override fun toString(): String"},{"location":"api/shark/-dump-process-command/#properties","title":"Properties","text":"Name Summary commandHelp val commandHelp: String commandHelpEpilog val commandHelpEpilog: String commandName val commandName: String context val context: Context helpTags val helpTags: Map&lt;String, String&gt; invokeWithoutSubcommand val invokeWithoutSubcommand: Boolean messages val messages: List&lt;String&gt; printHelpOnEmptyArgs val printHelpOnEmptyArgs: Boolean"},{"location":"api/shark/-dump-process-command/-dump-process-command/","title":"dump process command","text":"<p>//leakcanary/shark/DumpProcessCommand/DumpProcessCommand</p>"},{"location":"api/shark/-dump-process-command/-dump-process-command/#dumpprocesscommand","title":"DumpProcessCommand","text":"<p>fun DumpProcessCommand()</p>"},{"location":"api/shark/-dump-process-command/run/","title":"Run","text":"<p>//leakcanary/shark/DumpProcessCommand/run</p>"},{"location":"api/shark/-dump-process-command/run/#run","title":"run","text":"<p>open override fun run()</p>"},{"location":"api/shark/-dump-process-command/-companion/","title":"Index","text":"<p>//leakcanary/shark/DumpProcessCommand/Companion</p>"},{"location":"api/shark/-dump-process-command/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-dump-process-command/-companion/#functions","title":"Functions","text":"Name Summary dumpHeap fun CliktCommand.dumpHeap(processNameParam: String, maybeDeviceId: String?): File"},{"location":"api/shark/-dump-process-command/-companion/dump-heap/","title":"Dump heap","text":"<p>//leakcanary/shark/DumpProcessCommand/Companion/dumpHeap</p>"},{"location":"api/shark/-dump-process-command/-companion/dump-heap/#dumpheap","title":"dumpHeap","text":"<p>fun CliktCommand.dumpHeap(processNameParam: String, maybeDeviceId: String?): File</p>"},{"location":"api/shark/-file-source-provider/","title":"Index","text":"<p>//leakcanary/shark/FileSourceProvider</p>"},{"location":"api/shark/-file-source-provider/#filesourceprovider","title":"FileSourceProvider","text":"<p>class FileSourceProvider(file: File) : DualSourceProvider</p>"},{"location":"api/shark/-file-source-provider/#constructors","title":"Constructors","text":"FileSourceProvider fun FileSourceProvider(file: File)"},{"location":"api/shark/-file-source-provider/#functions","title":"Functions","text":"Name Summary openRandomAccessSource open override fun openRandomAccessSource(): RandomAccessSource openStreamingSource open override fun openStreamingSource(): BufferedSource"},{"location":"api/shark/-file-source-provider/-file-source-provider/","title":"file source provider","text":"<p>//leakcanary/shark/FileSourceProvider/FileSourceProvider</p>"},{"location":"api/shark/-file-source-provider/-file-source-provider/#filesourceprovider","title":"FileSourceProvider","text":"<p>fun FileSourceProvider(file: File)</p>"},{"location":"api/shark/-file-source-provider/open-random-access-source/","title":"Open random access source","text":"<p>//leakcanary/shark/FileSourceProvider/openRandomAccessSource</p>"},{"location":"api/shark/-file-source-provider/open-random-access-source/#openrandomaccesssource","title":"openRandomAccessSource","text":"<p>open override fun openRandomAccessSource(): RandomAccessSource</p>"},{"location":"api/shark/-file-source-provider/open-streaming-source/","title":"Open streaming source","text":"<p>//leakcanary/shark/FileSourceProvider/openStreamingSource</p>"},{"location":"api/shark/-file-source-provider/open-streaming-source/#openstreamingsource","title":"openStreamingSource","text":"<p>open override fun openStreamingSource(): BufferedSource</p>"},{"location":"api/shark/-filtering-leaking-object-finder/","title":"Index","text":"<p>//leakcanary/shark/FilteringLeakingObjectFinder</p>"},{"location":"api/shark/-filtering-leaking-object-finder/#filteringleakingobjectfinder","title":"FilteringLeakingObjectFinder","text":"<p>class FilteringLeakingObjectFinder(filters: List&lt;FilteringLeakingObjectFinder.LeakingObjectFilter&gt;) : LeakingObjectFinder</p> <p>Finds the objects that are leaking by scanning all objects in the heap dump and delegating the decision to a list of FilteringLeakingObjectFinder.LeakingObjectFilter</p>"},{"location":"api/shark/-filtering-leaking-object-finder/#constructors","title":"Constructors","text":"FilteringLeakingObjectFinder fun FilteringLeakingObjectFinder(filters: List&lt;FilteringLeakingObjectFinder.LeakingObjectFilter&gt;)"},{"location":"api/shark/-filtering-leaking-object-finder/#types","title":"Types","text":"Name Summary LeakingObjectFilter fun interface LeakingObjectFilterFilter to be passed to the FilteringLeakingObjectFinder constructor."},{"location":"api/shark/-filtering-leaking-object-finder/#functions","title":"Functions","text":"Name Summary findLeakingObjectIds open override fun findLeakingObjectIds(graph: HeapGraph): Set&lt;Long&gt;For a given heap graph, returns a set of object ids for the objects that are leaking."},{"location":"api/shark/-filtering-leaking-object-finder/-filtering-leaking-object-finder/","title":"filtering leaking object finder","text":"<p>//leakcanary/shark/FilteringLeakingObjectFinder/FilteringLeakingObjectFinder</p>"},{"location":"api/shark/-filtering-leaking-object-finder/-filtering-leaking-object-finder/#filteringleakingobjectfinder","title":"FilteringLeakingObjectFinder","text":"<p>fun FilteringLeakingObjectFinder(filters: List&lt;FilteringLeakingObjectFinder.LeakingObjectFilter&gt;)</p>"},{"location":"api/shark/-filtering-leaking-object-finder/find-leaking-object-ids/","title":"Find leaking object ids","text":"<p>//leakcanary/shark/FilteringLeakingObjectFinder/findLeakingObjectIds</p>"},{"location":"api/shark/-filtering-leaking-object-finder/find-leaking-object-ids/#findleakingobjectids","title":"findLeakingObjectIds","text":"<p>open override fun findLeakingObjectIds(graph: HeapGraph): Set&lt;Long&gt;</p> <p>For a given heap graph, returns a set of object ids for the objects that are leaking.</p>"},{"location":"api/shark/-filtering-leaking-object-finder/-leaking-object-filter/","title":"Index","text":"<p>//leakcanary/shark/FilteringLeakingObjectFinder/LeakingObjectFilter</p>"},{"location":"api/shark/-filtering-leaking-object-finder/-leaking-object-filter/#leakingobjectfilter","title":"LeakingObjectFilter","text":"<p>fun interface LeakingObjectFilter</p> <p>Filter to be passed to the FilteringLeakingObjectFinder constructor.</p>"},{"location":"api/shark/-filtering-leaking-object-finder/-leaking-object-filter/#functions","title":"Functions","text":"Name Summary isLeakingObject abstract fun isLeakingObject(heapObject: HeapObject): BooleanReturns whether the passed in heapObject is leaking. This should only return true when we\u2019re 100% sure the passed in heapObject should not be in memory anymore."},{"location":"api/shark/-filtering-leaking-object-finder/-leaking-object-filter/is-leaking-object/","title":"Is leaking object","text":"<p>//leakcanary/shark/FilteringLeakingObjectFinder/LeakingObjectFilter/isLeakingObject</p>"},{"location":"api/shark/-filtering-leaking-object-finder/-leaking-object-filter/is-leaking-object/#isleakingobject","title":"isLeakingObject","text":"<p>abstract fun isLeakingObject(heapObject: HeapObject): Boolean</p> <p>Returns whether the passed in heapObject is leaking. This should only return true when we\u2019re 100% sure the passed in heapObject should not be in memory anymore.</p>"},{"location":"api/shark/-find-leak-paths/","title":"Index","text":"<p>//leakcanary/shark/FindLeakPaths</p>"},{"location":"api/shark/-find-leak-paths/#findleakpaths","title":"FindLeakPaths","text":"<p>class FindLeakPaths</p>"},{"location":"api/shark/-find-leak-paths/#constructors","title":"Constructors","text":"FindLeakPaths fun FindLeakPaths()"},{"location":"api/shark/-find-leak-paths/#functions","title":"Functions","text":"Name Summary leakPaths fun leakPaths(): List&lt;Path&gt;"},{"location":"api/shark/-find-leak-paths/#properties","title":"Properties","text":"Name Summary transaction lateinit var transaction: Transaction"},{"location":"api/shark/-find-leak-paths/-find-leak-paths/","title":"find leak paths","text":"<p>//leakcanary/shark/FindLeakPaths/FindLeakPaths</p>"},{"location":"api/shark/-find-leak-paths/-find-leak-paths/#findleakpaths","title":"FindLeakPaths","text":"<p>fun FindLeakPaths()</p>"},{"location":"api/shark/-find-leak-paths/leak-paths/","title":"Leak paths","text":"<p>//leakcanary/shark/FindLeakPaths/leakPaths</p>"},{"location":"api/shark/-find-leak-paths/leak-paths/#leakpaths","title":"leakPaths","text":"<p>fun leakPaths(): List&lt;Path&gt;</p>"},{"location":"api/shark/-find-leak-paths/transaction/","title":"Transaction","text":"<p>//leakcanary/shark/FindLeakPaths/transaction</p>"},{"location":"api/shark/-find-leak-paths/transaction/#transaction","title":"transaction","text":"<p>lateinit var transaction: Transaction</p>"},{"location":"api/shark/-gc-root/","title":"Index","text":"<p>//leakcanary/shark/GcRoot</p>"},{"location":"api/shark/-gc-root/#gcroot","title":"GcRoot","text":"<p>sealed class GcRoot</p> <p>A GcRoot as identified by HprofRecord.HeapDumpRecord.GcRootRecord in the heap dump.</p>"},{"location":"api/shark/-gc-root/#types","title":"Types","text":"Name Summary Debugger class Debugger(val id: Long) : GcRootAn object held by a connected debugger Finalizing class Finalizing(val id: Long) : GcRootAn object that is in a queue, waiting for a finalizer to run. InternedString class InternedString(val id: Long) : GcRootAn interned string, see java.lang.String.intern. JavaFrame class JavaFrame(val id: Long, val threadSerialNumber: Int, val frameNumber: Int) : GcRootA java local variable JniGlobal class JniGlobal(val id: Long, val jniGlobalRefId: Long) : GcRootA global variable in native code. JniLocal class JniLocal(val id: Long, val threadSerialNumber: Int, val frameNumber: Int) : GcRootA local variable in native code. JniMonitor class JniMonitor(val id: Long, val stackTraceSerialNumber: Int, val stackDepth: Int) : GcRootIt\u2019s unclear what this is, documentation welcome. MonitorUsed class MonitorUsed(val id: Long) : GcRootEverything that called the wait() or notify() methods, or that is synchronized. NativeStack class NativeStack(val id: Long, val threadSerialNumber: Int) : GcRootInput or output parameters in native code ReferenceCleanup class ReferenceCleanup(val id: Long) : GcRootIt\u2019s unclear what this is, documentation welcome. StickyClass class StickyClass(val id: Long) : GcRootA system class ThreadBlock class ThreadBlock(val id: Long, val threadSerialNumber: Int) : GcRoot ThreadObject class ThreadObject(val id: Long, val threadSerialNumber: Int, val stackTraceSerialNumber: Int) : GcRootA thread. Unknown class Unknown(val id: Long) : GcRootAn unknown gc root. Unreachable class Unreachable(val id: Long) : GcRootAn object that is unreachable from any other root, but not a root itself. VmInternal class VmInternal(val id: Long) : GcRootIt\u2019s unclear what this is, documentation welcome."},{"location":"api/shark/-gc-root/#properties","title":"Properties","text":"Name Summary id abstract val id: LongThe object id of the object that this gc root references."},{"location":"api/shark/-gc-root/#inheritors","title":"Inheritors","text":"Name Unknown JniGlobal JniLocal JavaFrame NativeStack StickyClass ThreadBlock MonitorUsed ThreadObject ReferenceCleanup VmInternal JniMonitor InternedString Finalizing Debugger Unreachable"},{"location":"api/shark/-gc-root/id/","title":"Id","text":"<p>//leakcanary/shark/GcRoot/id</p>"},{"location":"api/shark/-gc-root/id/#id","title":"id","text":"<p>abstract val id: Long</p> <p>The object id of the object that this gc root references.</p>"},{"location":"api/shark/-gc-root/-debugger/","title":"Index","text":"<p>//leakcanary/shark/GcRoot/Debugger</p>"},{"location":"api/shark/-gc-root/-debugger/#debugger","title":"Debugger","text":"<p>class Debugger(val id: Long) : GcRoot</p> <p>An object held by a connected debugger</p>"},{"location":"api/shark/-gc-root/-debugger/#constructors","title":"Constructors","text":"Debugger fun Debugger(id: Long)"},{"location":"api/shark/-gc-root/-debugger/#properties","title":"Properties","text":"Name Summary id open override val id: LongThe object id of the object that this gc root references."},{"location":"api/shark/-gc-root/-debugger/-debugger/","title":"debugger","text":"<p>//leakcanary/shark/GcRoot/Debugger/Debugger</p>"},{"location":"api/shark/-gc-root/-debugger/-debugger/#debugger","title":"Debugger","text":"<p>fun Debugger(id: Long)</p>"},{"location":"api/shark/-gc-root/-debugger/id/","title":"Id","text":"<p>//leakcanary/shark/GcRoot/Debugger/id</p>"},{"location":"api/shark/-gc-root/-debugger/id/#id","title":"id","text":"<p>open override val id: Long</p> <p>The object id of the object that this gc root references.</p>"},{"location":"api/shark/-gc-root/-finalizing/","title":"Index","text":"<p>//leakcanary/shark/GcRoot/Finalizing</p>"},{"location":"api/shark/-gc-root/-finalizing/#finalizing","title":"Finalizing","text":"<p>class Finalizing(val id: Long) : GcRoot</p> <p>An object that is in a queue, waiting for a finalizer to run.</p>"},{"location":"api/shark/-gc-root/-finalizing/#constructors","title":"Constructors","text":"Finalizing fun Finalizing(id: Long)"},{"location":"api/shark/-gc-root/-finalizing/#properties","title":"Properties","text":"Name Summary id open override val id: LongThe object id of the object that this gc root references."},{"location":"api/shark/-gc-root/-finalizing/-finalizing/","title":"finalizing","text":"<p>//leakcanary/shark/GcRoot/Finalizing/Finalizing</p>"},{"location":"api/shark/-gc-root/-finalizing/-finalizing/#finalizing","title":"Finalizing","text":"<p>fun Finalizing(id: Long)</p>"},{"location":"api/shark/-gc-root/-finalizing/id/","title":"Id","text":"<p>//leakcanary/shark/GcRoot/Finalizing/id</p>"},{"location":"api/shark/-gc-root/-finalizing/id/#id","title":"id","text":"<p>open override val id: Long</p> <p>The object id of the object that this gc root references.</p>"},{"location":"api/shark/-gc-root/-interned-string/","title":"Index","text":"<p>//leakcanary/shark/GcRoot/InternedString</p>"},{"location":"api/shark/-gc-root/-interned-string/#internedstring","title":"InternedString","text":"<p>class InternedString(val id: Long) : GcRoot</p> <p>An interned string, see java.lang.String.intern.</p>"},{"location":"api/shark/-gc-root/-interned-string/#constructors","title":"Constructors","text":"InternedString fun InternedString(id: Long)"},{"location":"api/shark/-gc-root/-interned-string/#properties","title":"Properties","text":"Name Summary id open override val id: LongThe object id of the object that this gc root references."},{"location":"api/shark/-gc-root/-interned-string/-interned-string/","title":"interned string","text":"<p>//leakcanary/shark/GcRoot/InternedString/InternedString</p>"},{"location":"api/shark/-gc-root/-interned-string/-interned-string/#internedstring","title":"InternedString","text":"<p>fun InternedString(id: Long)</p>"},{"location":"api/shark/-gc-root/-interned-string/id/","title":"Id","text":"<p>//leakcanary/shark/GcRoot/InternedString/id</p>"},{"location":"api/shark/-gc-root/-interned-string/id/#id","title":"id","text":"<p>open override val id: Long</p> <p>The object id of the object that this gc root references.</p>"},{"location":"api/shark/-gc-root/-java-frame/","title":"Index","text":"<p>//leakcanary/shark/GcRoot/JavaFrame</p>"},{"location":"api/shark/-gc-root/-java-frame/#javaframe","title":"JavaFrame","text":"<p>class JavaFrame(val id: Long, val threadSerialNumber: Int, val frameNumber: Int) : GcRoot</p> <p>A java local variable</p>"},{"location":"api/shark/-gc-root/-java-frame/#constructors","title":"Constructors","text":"JavaFrame fun JavaFrame(id: Long, threadSerialNumber: Int, frameNumber: Int)"},{"location":"api/shark/-gc-root/-java-frame/#properties","title":"Properties","text":"Name Summary frameNumber val frameNumber: Intframe number in stack trace (-1 for empty) id open override val id: LongThe object id of the object that this gc root references. threadSerialNumber val threadSerialNumber: IntCorresponds to ThreadObject.threadSerialNumber"},{"location":"api/shark/-gc-root/-java-frame/-java-frame/","title":"java frame","text":"<p>//leakcanary/shark/GcRoot/JavaFrame/JavaFrame</p>"},{"location":"api/shark/-gc-root/-java-frame/-java-frame/#javaframe","title":"JavaFrame","text":"<p>fun JavaFrame(id: Long, threadSerialNumber: Int, frameNumber: Int)</p>"},{"location":"api/shark/-gc-root/-java-frame/frame-number/","title":"Frame number","text":"<p>//leakcanary/shark/GcRoot/JavaFrame/frameNumber</p>"},{"location":"api/shark/-gc-root/-java-frame/frame-number/#framenumber","title":"frameNumber","text":"<p>val frameNumber: Int</p> <p>frame number in stack trace (-1 for empty)</p>"},{"location":"api/shark/-gc-root/-java-frame/id/","title":"Id","text":"<p>//leakcanary/shark/GcRoot/JavaFrame/id</p>"},{"location":"api/shark/-gc-root/-java-frame/id/#id","title":"id","text":"<p>open override val id: Long</p> <p>The object id of the object that this gc root references.</p>"},{"location":"api/shark/-gc-root/-java-frame/thread-serial-number/","title":"Thread serial number","text":"<p>//leakcanary/shark/GcRoot/JavaFrame/threadSerialNumber</p>"},{"location":"api/shark/-gc-root/-java-frame/thread-serial-number/#threadserialnumber","title":"threadSerialNumber","text":"<p>val threadSerialNumber: Int</p> <p>Corresponds to ThreadObject.threadSerialNumber</p>"},{"location":"api/shark/-gc-root/-jni-global/","title":"Index","text":"<p>//leakcanary/shark/GcRoot/JniGlobal</p>"},{"location":"api/shark/-gc-root/-jni-global/#jniglobal","title":"JniGlobal","text":"<p>class JniGlobal(val id: Long, val jniGlobalRefId: Long) : GcRoot</p> <p>A global variable in native code.</p>"},{"location":"api/shark/-gc-root/-jni-global/#constructors","title":"Constructors","text":"JniGlobal fun JniGlobal(id: Long, jniGlobalRefId: Long)"},{"location":"api/shark/-gc-root/-jni-global/#properties","title":"Properties","text":"Name Summary id open override val id: LongThe object id of the object that this gc root references. jniGlobalRefId val jniGlobalRefId: Long"},{"location":"api/shark/-gc-root/-jni-global/-jni-global/","title":"jni global","text":"<p>//leakcanary/shark/GcRoot/JniGlobal/JniGlobal</p>"},{"location":"api/shark/-gc-root/-jni-global/-jni-global/#jniglobal","title":"JniGlobal","text":"<p>fun JniGlobal(id: Long, jniGlobalRefId: Long)</p>"},{"location":"api/shark/-gc-root/-jni-global/id/","title":"Id","text":"<p>//leakcanary/shark/GcRoot/JniGlobal/id</p>"},{"location":"api/shark/-gc-root/-jni-global/id/#id","title":"id","text":"<p>open override val id: Long</p> <p>The object id of the object that this gc root references.</p>"},{"location":"api/shark/-gc-root/-jni-global/jni-global-ref-id/","title":"Jni global ref id","text":"<p>//leakcanary/shark/GcRoot/JniGlobal/jniGlobalRefId</p>"},{"location":"api/shark/-gc-root/-jni-global/jni-global-ref-id/#jniglobalrefid","title":"jniGlobalRefId","text":"<p>val jniGlobalRefId: Long</p>"},{"location":"api/shark/-gc-root/-jni-local/","title":"Index","text":"<p>//leakcanary/shark/GcRoot/JniLocal</p>"},{"location":"api/shark/-gc-root/-jni-local/#jnilocal","title":"JniLocal","text":"<p>class JniLocal(val id: Long, val threadSerialNumber: Int, val frameNumber: Int) : GcRoot</p> <p>A local variable in native code.</p>"},{"location":"api/shark/-gc-root/-jni-local/#constructors","title":"Constructors","text":"JniLocal fun JniLocal(id: Long, threadSerialNumber: Int, frameNumber: Int)"},{"location":"api/shark/-gc-root/-jni-local/#properties","title":"Properties","text":"Name Summary frameNumber val frameNumber: Intframe number in stack trace (-1 for empty) id open override val id: LongThe object id of the object that this gc root references. threadSerialNumber val threadSerialNumber: IntCorresponds to ThreadObject.threadSerialNumber"},{"location":"api/shark/-gc-root/-jni-local/-jni-local/","title":"jni local","text":"<p>//leakcanary/shark/GcRoot/JniLocal/JniLocal</p>"},{"location":"api/shark/-gc-root/-jni-local/-jni-local/#jnilocal","title":"JniLocal","text":"<p>fun JniLocal(id: Long, threadSerialNumber: Int, frameNumber: Int)</p>"},{"location":"api/shark/-gc-root/-jni-local/frame-number/","title":"Frame number","text":"<p>//leakcanary/shark/GcRoot/JniLocal/frameNumber</p>"},{"location":"api/shark/-gc-root/-jni-local/frame-number/#framenumber","title":"frameNumber","text":"<p>val frameNumber: Int</p> <p>frame number in stack trace (-1 for empty)</p>"},{"location":"api/shark/-gc-root/-jni-local/id/","title":"Id","text":"<p>//leakcanary/shark/GcRoot/JniLocal/id</p>"},{"location":"api/shark/-gc-root/-jni-local/id/#id","title":"id","text":"<p>open override val id: Long</p> <p>The object id of the object that this gc root references.</p>"},{"location":"api/shark/-gc-root/-jni-local/thread-serial-number/","title":"Thread serial number","text":"<p>//leakcanary/shark/GcRoot/JniLocal/threadSerialNumber</p>"},{"location":"api/shark/-gc-root/-jni-local/thread-serial-number/#threadserialnumber","title":"threadSerialNumber","text":"<p>val threadSerialNumber: Int</p> <p>Corresponds to ThreadObject.threadSerialNumber</p>"},{"location":"api/shark/-gc-root/-jni-monitor/","title":"Index","text":"<p>//leakcanary/shark/GcRoot/JniMonitor</p>"},{"location":"api/shark/-gc-root/-jni-monitor/#jnimonitor","title":"JniMonitor","text":"<p>class JniMonitor(val id: Long, val stackTraceSerialNumber: Int, val stackDepth: Int) : GcRoot</p> <p>It\u2019s unclear what this is, documentation welcome.</p>"},{"location":"api/shark/-gc-root/-jni-monitor/#constructors","title":"Constructors","text":"JniMonitor fun JniMonitor(id: Long, stackTraceSerialNumber: Int, stackDepth: Int)"},{"location":"api/shark/-gc-root/-jni-monitor/#properties","title":"Properties","text":"Name Summary id open override val id: LongThe object id of the object that this gc root references. stackDepth val stackDepth: Int stackTraceSerialNumber val stackTraceSerialNumber: Int"},{"location":"api/shark/-gc-root/-jni-monitor/-jni-monitor/","title":"jni monitor","text":"<p>//leakcanary/shark/GcRoot/JniMonitor/JniMonitor</p>"},{"location":"api/shark/-gc-root/-jni-monitor/-jni-monitor/#jnimonitor","title":"JniMonitor","text":"<p>fun JniMonitor(id: Long, stackTraceSerialNumber: Int, stackDepth: Int)</p>"},{"location":"api/shark/-gc-root/-jni-monitor/id/","title":"Id","text":"<p>//leakcanary/shark/GcRoot/JniMonitor/id</p>"},{"location":"api/shark/-gc-root/-jni-monitor/id/#id","title":"id","text":"<p>open override val id: Long</p> <p>The object id of the object that this gc root references.</p>"},{"location":"api/shark/-gc-root/-jni-monitor/stack-depth/","title":"Stack depth","text":"<p>//leakcanary/shark/GcRoot/JniMonitor/stackDepth</p>"},{"location":"api/shark/-gc-root/-jni-monitor/stack-depth/#stackdepth","title":"stackDepth","text":"<p>val stackDepth: Int</p>"},{"location":"api/shark/-gc-root/-jni-monitor/stack-trace-serial-number/","title":"Stack trace serial number","text":"<p>//leakcanary/shark/GcRoot/JniMonitor/stackTraceSerialNumber</p>"},{"location":"api/shark/-gc-root/-jni-monitor/stack-trace-serial-number/#stacktraceserialnumber","title":"stackTraceSerialNumber","text":"<p>val stackTraceSerialNumber: Int</p>"},{"location":"api/shark/-gc-root/-monitor-used/","title":"Index","text":"<p>//leakcanary/shark/GcRoot/MonitorUsed</p>"},{"location":"api/shark/-gc-root/-monitor-used/#monitorused","title":"MonitorUsed","text":"<p>class MonitorUsed(val id: Long) : GcRoot</p> <p>Everything that called the wait() or notify() methods, or that is synchronized.</p>"},{"location":"api/shark/-gc-root/-monitor-used/#constructors","title":"Constructors","text":"MonitorUsed fun MonitorUsed(id: Long)"},{"location":"api/shark/-gc-root/-monitor-used/#properties","title":"Properties","text":"Name Summary id open override val id: LongThe object id of the object that this gc root references."},{"location":"api/shark/-gc-root/-monitor-used/-monitor-used/","title":"monitor used","text":"<p>//leakcanary/shark/GcRoot/MonitorUsed/MonitorUsed</p>"},{"location":"api/shark/-gc-root/-monitor-used/-monitor-used/#monitorused","title":"MonitorUsed","text":"<p>fun MonitorUsed(id: Long)</p>"},{"location":"api/shark/-gc-root/-monitor-used/id/","title":"Id","text":"<p>//leakcanary/shark/GcRoot/MonitorUsed/id</p>"},{"location":"api/shark/-gc-root/-monitor-used/id/#id","title":"id","text":"<p>open override val id: Long</p> <p>The object id of the object that this gc root references.</p>"},{"location":"api/shark/-gc-root/-native-stack/","title":"Index","text":"<p>//leakcanary/shark/GcRoot/NativeStack</p>"},{"location":"api/shark/-gc-root/-native-stack/#nativestack","title":"NativeStack","text":"<p>class NativeStack(val id: Long, val threadSerialNumber: Int) : GcRoot</p> <p>Input or output parameters in native code</p>"},{"location":"api/shark/-gc-root/-native-stack/#constructors","title":"Constructors","text":"NativeStack fun NativeStack(id: Long, threadSerialNumber: Int)"},{"location":"api/shark/-gc-root/-native-stack/#properties","title":"Properties","text":"Name Summary id open override val id: LongThe object id of the object that this gc root references. threadSerialNumber val threadSerialNumber: IntCorresponds to ThreadObject.threadSerialNumber Note: the corresponding thread is sometimes not found, see: https://issuetracker.google.com/issues/122713143"},{"location":"api/shark/-gc-root/-native-stack/-native-stack/","title":"native stack","text":"<p>//leakcanary/shark/GcRoot/NativeStack/NativeStack</p>"},{"location":"api/shark/-gc-root/-native-stack/-native-stack/#nativestack","title":"NativeStack","text":"<p>fun NativeStack(id: Long, threadSerialNumber: Int)</p>"},{"location":"api/shark/-gc-root/-native-stack/id/","title":"Id","text":"<p>//leakcanary/shark/GcRoot/NativeStack/id</p>"},{"location":"api/shark/-gc-root/-native-stack/id/#id","title":"id","text":"<p>open override val id: Long</p> <p>The object id of the object that this gc root references.</p>"},{"location":"api/shark/-gc-root/-native-stack/thread-serial-number/","title":"Thread serial number","text":"<p>//leakcanary/shark/GcRoot/NativeStack/threadSerialNumber</p>"},{"location":"api/shark/-gc-root/-native-stack/thread-serial-number/#threadserialnumber","title":"threadSerialNumber","text":"<p>val threadSerialNumber: Int</p> <p>Corresponds to ThreadObject.threadSerialNumber Note: the corresponding thread is sometimes not found, see: https://issuetracker.google.com/issues/122713143</p>"},{"location":"api/shark/-gc-root/-reference-cleanup/","title":"Index","text":"<p>//leakcanary/shark/GcRoot/ReferenceCleanup</p>"},{"location":"api/shark/-gc-root/-reference-cleanup/#referencecleanup","title":"ReferenceCleanup","text":"<p>class ReferenceCleanup(val id: Long) : GcRoot</p> <p>It\u2019s unclear what this is, documentation welcome.</p>"},{"location":"api/shark/-gc-root/-reference-cleanup/#constructors","title":"Constructors","text":"ReferenceCleanup fun ReferenceCleanup(id: Long)"},{"location":"api/shark/-gc-root/-reference-cleanup/#properties","title":"Properties","text":"Name Summary id open override val id: LongThe object id of the object that this gc root references."},{"location":"api/shark/-gc-root/-reference-cleanup/-reference-cleanup/","title":"reference cleanup","text":"<p>//leakcanary/shark/GcRoot/ReferenceCleanup/ReferenceCleanup</p>"},{"location":"api/shark/-gc-root/-reference-cleanup/-reference-cleanup/#referencecleanup","title":"ReferenceCleanup","text":"<p>fun ReferenceCleanup(id: Long)</p>"},{"location":"api/shark/-gc-root/-reference-cleanup/id/","title":"Id","text":"<p>//leakcanary/shark/GcRoot/ReferenceCleanup/id</p>"},{"location":"api/shark/-gc-root/-reference-cleanup/id/#id","title":"id","text":"<p>open override val id: Long</p> <p>The object id of the object that this gc root references.</p>"},{"location":"api/shark/-gc-root/-sticky-class/","title":"Index","text":"<p>//leakcanary/shark/GcRoot/StickyClass</p>"},{"location":"api/shark/-gc-root/-sticky-class/#stickyclass","title":"StickyClass","text":"<p>class StickyClass(val id: Long) : GcRoot</p> <p>A system class</p>"},{"location":"api/shark/-gc-root/-sticky-class/#constructors","title":"Constructors","text":"StickyClass fun StickyClass(id: Long)"},{"location":"api/shark/-gc-root/-sticky-class/#properties","title":"Properties","text":"Name Summary id open override val id: LongThe object id of the object that this gc root references."},{"location":"api/shark/-gc-root/-sticky-class/-sticky-class/","title":"sticky class","text":"<p>//leakcanary/shark/GcRoot/StickyClass/StickyClass</p>"},{"location":"api/shark/-gc-root/-sticky-class/-sticky-class/#stickyclass","title":"StickyClass","text":"<p>fun StickyClass(id: Long)</p>"},{"location":"api/shark/-gc-root/-sticky-class/id/","title":"Id","text":"<p>//leakcanary/shark/GcRoot/StickyClass/id</p>"},{"location":"api/shark/-gc-root/-sticky-class/id/#id","title":"id","text":"<p>open override val id: Long</p> <p>The object id of the object that this gc root references.</p>"},{"location":"api/shark/-gc-root/-thread-block/","title":"Index","text":"<p>//leakcanary/shark/GcRoot/ThreadBlock</p>"},{"location":"api/shark/-gc-root/-thread-block/#threadblock","title":"ThreadBlock","text":"<p>class ThreadBlock(val id: Long, val threadSerialNumber: Int) : GcRoot</p>"},{"location":"api/shark/-gc-root/-thread-block/#constructors","title":"Constructors","text":"ThreadBlock fun ThreadBlock(id: Long, threadSerialNumber: Int)"},{"location":"api/shark/-gc-root/-thread-block/#properties","title":"Properties","text":"Name Summary id open override val id: LongThe object id of the object that this gc root references. threadSerialNumber val threadSerialNumber: IntCorresponds to ThreadObject.threadSerialNumber"},{"location":"api/shark/-gc-root/-thread-block/-thread-block/","title":"thread block","text":"<p>//leakcanary/shark/GcRoot/ThreadBlock/ThreadBlock</p>"},{"location":"api/shark/-gc-root/-thread-block/-thread-block/#threadblock","title":"ThreadBlock","text":"<p>fun ThreadBlock(id: Long, threadSerialNumber: Int)</p>"},{"location":"api/shark/-gc-root/-thread-block/id/","title":"Id","text":"<p>//leakcanary/shark/GcRoot/ThreadBlock/id</p>"},{"location":"api/shark/-gc-root/-thread-block/id/#id","title":"id","text":"<p>open override val id: Long</p> <p>The object id of the object that this gc root references.</p>"},{"location":"api/shark/-gc-root/-thread-block/thread-serial-number/","title":"Thread serial number","text":"<p>//leakcanary/shark/GcRoot/ThreadBlock/threadSerialNumber</p>"},{"location":"api/shark/-gc-root/-thread-block/thread-serial-number/#threadserialnumber","title":"threadSerialNumber","text":"<p>val threadSerialNumber: Int</p> <p>Corresponds to ThreadObject.threadSerialNumber</p>"},{"location":"api/shark/-gc-root/-thread-object/","title":"Index","text":"<p>//leakcanary/shark/GcRoot/ThreadObject</p>"},{"location":"api/shark/-gc-root/-thread-object/#threadobject","title":"ThreadObject","text":"<p>class ThreadObject(val id: Long, val threadSerialNumber: Int, val stackTraceSerialNumber: Int) : GcRoot</p> <p>A thread.</p> <p>Added at https://android.googlesource.com/platform/tools/base/+/c0f0d528c155cab32e372dac77370569a386245c</p>"},{"location":"api/shark/-gc-root/-thread-object/#constructors","title":"Constructors","text":"ThreadObject fun ThreadObject(id: Long, threadSerialNumber: Int, stackTraceSerialNumber: Int)"},{"location":"api/shark/-gc-root/-thread-object/#properties","title":"Properties","text":"Name Summary id open override val id: LongThe object id of the object that this gc root references. stackTraceSerialNumber val stackTraceSerialNumber: Int threadSerialNumber val threadSerialNumber: Int"},{"location":"api/shark/-gc-root/-thread-object/-thread-object/","title":"thread object","text":"<p>//leakcanary/shark/GcRoot/ThreadObject/ThreadObject</p>"},{"location":"api/shark/-gc-root/-thread-object/-thread-object/#threadobject","title":"ThreadObject","text":"<p>fun ThreadObject(id: Long, threadSerialNumber: Int, stackTraceSerialNumber: Int)</p>"},{"location":"api/shark/-gc-root/-thread-object/id/","title":"Id","text":"<p>//leakcanary/shark/GcRoot/ThreadObject/id</p>"},{"location":"api/shark/-gc-root/-thread-object/id/#id","title":"id","text":"<p>open override val id: Long</p> <p>The object id of the object that this gc root references.</p>"},{"location":"api/shark/-gc-root/-thread-object/stack-trace-serial-number/","title":"Stack trace serial number","text":"<p>//leakcanary/shark/GcRoot/ThreadObject/stackTraceSerialNumber</p>"},{"location":"api/shark/-gc-root/-thread-object/stack-trace-serial-number/#stacktraceserialnumber","title":"stackTraceSerialNumber","text":"<p>val stackTraceSerialNumber: Int</p>"},{"location":"api/shark/-gc-root/-thread-object/thread-serial-number/","title":"Thread serial number","text":"<p>//leakcanary/shark/GcRoot/ThreadObject/threadSerialNumber</p>"},{"location":"api/shark/-gc-root/-thread-object/thread-serial-number/#threadserialnumber","title":"threadSerialNumber","text":"<p>val threadSerialNumber: Int</p>"},{"location":"api/shark/-gc-root/-unknown/","title":"Index","text":"<p>//leakcanary/shark/GcRoot/Unknown</p>"},{"location":"api/shark/-gc-root/-unknown/#unknown","title":"Unknown","text":"<p>class Unknown(val id: Long) : GcRoot</p> <p>An unknown gc root.</p>"},{"location":"api/shark/-gc-root/-unknown/#constructors","title":"Constructors","text":"Unknown fun Unknown(id: Long)"},{"location":"api/shark/-gc-root/-unknown/#properties","title":"Properties","text":"Name Summary id open override val id: LongThe object id of the object that this gc root references."},{"location":"api/shark/-gc-root/-unknown/-unknown/","title":"unknown","text":"<p>//leakcanary/shark/GcRoot/Unknown/Unknown</p>"},{"location":"api/shark/-gc-root/-unknown/-unknown/#unknown","title":"Unknown","text":"<p>fun Unknown(id: Long)</p>"},{"location":"api/shark/-gc-root/-unknown/id/","title":"Id","text":"<p>//leakcanary/shark/GcRoot/Unknown/id</p>"},{"location":"api/shark/-gc-root/-unknown/id/#id","title":"id","text":"<p>open override val id: Long</p> <p>The object id of the object that this gc root references.</p>"},{"location":"api/shark/-gc-root/-unreachable/","title":"Index","text":"<p>//leakcanary/shark/GcRoot/Unreachable</p>"},{"location":"api/shark/-gc-root/-unreachable/#unreachable","title":"Unreachable","text":"<p>class Unreachable(val id: Long) : GcRoot</p> <p>An object that is unreachable from any other root, but not a root itself.</p>"},{"location":"api/shark/-gc-root/-unreachable/#constructors","title":"Constructors","text":"Unreachable fun Unreachable(id: Long)"},{"location":"api/shark/-gc-root/-unreachable/#properties","title":"Properties","text":"Name Summary id open override val id: LongThe object id of the object that this gc root references."},{"location":"api/shark/-gc-root/-unreachable/-unreachable/","title":"unreachable","text":"<p>//leakcanary/shark/GcRoot/Unreachable/Unreachable</p>"},{"location":"api/shark/-gc-root/-unreachable/-unreachable/#unreachable","title":"Unreachable","text":"<p>fun Unreachable(id: Long)</p>"},{"location":"api/shark/-gc-root/-unreachable/id/","title":"Id","text":"<p>//leakcanary/shark/GcRoot/Unreachable/id</p>"},{"location":"api/shark/-gc-root/-unreachable/id/#id","title":"id","text":"<p>open override val id: Long</p> <p>The object id of the object that this gc root references.</p>"},{"location":"api/shark/-gc-root/-vm-internal/","title":"Index","text":"<p>//leakcanary/shark/GcRoot/VmInternal</p>"},{"location":"api/shark/-gc-root/-vm-internal/#vminternal","title":"VmInternal","text":"<p>class VmInternal(val id: Long) : GcRoot</p> <p>It\u2019s unclear what this is, documentation welcome.</p>"},{"location":"api/shark/-gc-root/-vm-internal/#constructors","title":"Constructors","text":"VmInternal fun VmInternal(id: Long)"},{"location":"api/shark/-gc-root/-vm-internal/#properties","title":"Properties","text":"Name Summary id open override val id: LongThe object id of the object that this gc root references."},{"location":"api/shark/-gc-root/-vm-internal/-vm-internal/","title":"vm internal","text":"<p>//leakcanary/shark/GcRoot/VmInternal/VmInternal</p>"},{"location":"api/shark/-gc-root/-vm-internal/-vm-internal/#vminternal","title":"VmInternal","text":"<p>fun VmInternal(id: Long)</p>"},{"location":"api/shark/-gc-root/-vm-internal/id/","title":"Id","text":"<p>//leakcanary/shark/GcRoot/VmInternal/id</p>"},{"location":"api/shark/-gc-root/-vm-internal/id/#id","title":"id","text":"<p>open override val id: Long</p> <p>The object id of the object that this gc root references.</p>"},{"location":"api/shark/-graph-context/","title":"Index","text":"<p>//leakcanary/shark/GraphContext</p>"},{"location":"api/shark/-graph-context/#graphcontext","title":"GraphContext","text":"<p>class GraphContext</p> <p>In memory store that can be used to store objects in a given HeapGraph instance. This is a simple MutableMap of String to Any, but with unsafe generics access.</p>"},{"location":"api/shark/-graph-context/#constructors","title":"Constructors","text":"GraphContext fun GraphContext()"},{"location":"api/shark/-graph-context/#functions","title":"Functions","text":"Name Summary contains operator fun contains(key: String): Boolean get operator fun &lt;T&gt; get(key: String): T? getOrPut fun &lt;T&gt; getOrPut(key: String, defaultValue: () -&gt; T): T minusAssign operator fun minusAssign(key: String) set operator fun &lt;T&gt; set(key: String, value: T)"},{"location":"api/shark/-graph-context/-graph-context/","title":"graph context","text":"<p>//leakcanary/shark/GraphContext/GraphContext</p>"},{"location":"api/shark/-graph-context/-graph-context/#graphcontext","title":"GraphContext","text":"<p>fun GraphContext()</p>"},{"location":"api/shark/-graph-context/contains/","title":"Contains","text":"<p>//leakcanary/shark/GraphContext/contains</p>"},{"location":"api/shark/-graph-context/contains/#contains","title":"contains","text":"<p>operator fun contains(key: String): Boolean</p>"},{"location":"api/shark/-graph-context/contains/#see-also","title":"See also","text":"<p>main</p> kotlin.collections.MutableMap"},{"location":"api/shark/-graph-context/get-or-put/","title":"Get or put","text":"<p>//leakcanary/shark/GraphContext/getOrPut</p>"},{"location":"api/shark/-graph-context/get-or-put/#getorput","title":"getOrPut","text":"<p>fun &lt;T&gt; getOrPut(key: String, defaultValue: () -&gt; T): T</p>"},{"location":"api/shark/-graph-context/get-or-put/#see-also","title":"See also","text":"<p>main</p> MutableMap.getOrPut"},{"location":"api/shark/-graph-context/get/","title":"Get","text":"<p>//leakcanary/shark/GraphContext/get</p>"},{"location":"api/shark/-graph-context/get/#get","title":"get","text":"<p>operator fun &lt;T&gt; get(key: String): T?</p>"},{"location":"api/shark/-graph-context/minus-assign/","title":"Minus assign","text":"<p>//leakcanary/shark/GraphContext/minusAssign</p>"},{"location":"api/shark/-graph-context/minus-assign/#minusassign","title":"minusAssign","text":"<p>operator fun minusAssign(key: String)</p>"},{"location":"api/shark/-graph-context/minus-assign/#see-also","title":"See also","text":"<p>main</p> kotlin.collections.MutableMap"},{"location":"api/shark/-graph-context/set/","title":"Set","text":"<p>//leakcanary/shark/GraphContext/set</p>"},{"location":"api/shark/-graph-context/set/#set","title":"set","text":"<p>operator fun &lt;T&gt; set(key: String, value: T)</p>"},{"location":"api/shark/-graph-context/set/#see-also","title":"See also","text":"<p>main</p> MutableMap.set"},{"location":"api/shark/-heap-analysis/","title":"Index","text":"<p>//leakcanary/shark/HeapAnalysis</p>"},{"location":"api/shark/-heap-analysis/#heapanalysis","title":"HeapAnalysis","text":"<p>sealed class HeapAnalysis : Serializable</p> <p>The result of an analysis performed by HeapAnalyzer, either a HeapAnalysisSuccess or a HeapAnalysisFailure. This class is serializable however there are no guarantees of forward compatibility.</p>"},{"location":"api/shark/-heap-analysis/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-heap-analysis/#properties","title":"Properties","text":"Name Summary analysisDurationMillis abstract val analysisDurationMillis: LongTotal time spent analyzing the heap. createdAtTimeMillis abstract val createdAtTimeMillis: LongThe System.currentTimeMillis when this HeapAnalysis instance was created. dumpDurationMillis abstract val dumpDurationMillis: LongTotal time spent dumping the heap. heapDumpFile abstract val heapDumpFile: FileThe hprof file that was analyzed."},{"location":"api/shark/-heap-analysis/#inheritors","title":"Inheritors","text":"Name HeapAnalysisFailure HeapAnalysisSuccess"},{"location":"api/shark/-heap-analysis/analysis-duration-millis/","title":"Analysis duration millis","text":"<p>//leakcanary/shark/HeapAnalysis/analysisDurationMillis</p>"},{"location":"api/shark/-heap-analysis/analysis-duration-millis/#analysisdurationmillis","title":"analysisDurationMillis","text":"<p>abstract val analysisDurationMillis: Long</p> <p>Total time spent analyzing the heap.</p>"},{"location":"api/shark/-heap-analysis/created-at-time-millis/","title":"Created at time millis","text":"<p>//leakcanary/shark/HeapAnalysis/createdAtTimeMillis</p>"},{"location":"api/shark/-heap-analysis/created-at-time-millis/#createdattimemillis","title":"createdAtTimeMillis","text":"<p>abstract val createdAtTimeMillis: Long</p> <p>The System.currentTimeMillis when this HeapAnalysis instance was created.</p>"},{"location":"api/shark/-heap-analysis/dump-duration-millis/","title":"Dump duration millis","text":"<p>//leakcanary/shark/HeapAnalysis/dumpDurationMillis</p>"},{"location":"api/shark/-heap-analysis/dump-duration-millis/#dumpdurationmillis","title":"dumpDurationMillis","text":"<p>abstract val dumpDurationMillis: Long</p> <p>Total time spent dumping the heap.</p>"},{"location":"api/shark/-heap-analysis/heap-dump-file/","title":"Heap dump file","text":"<p>//leakcanary/shark/HeapAnalysis/heapDumpFile</p>"},{"location":"api/shark/-heap-analysis/heap-dump-file/#heapdumpfile","title":"heapDumpFile","text":"<p>abstract val heapDumpFile: File</p> <p>The hprof file that was analyzed.</p>"},{"location":"api/shark/-heap-analysis/-companion/","title":"Index","text":"<p>//leakcanary/shark/HeapAnalysis/Companion</p>"},{"location":"api/shark/-heap-analysis/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-heap-analysis/-companion/#properties","title":"Properties","text":"Name Summary DUMP_DURATION_UNKNOWN const val DUMP_DURATION_UNKNOWN: Long"},{"location":"api/shark/-heap-analysis/-companion/-d-u-m-p_-d-u-r-a-t-i-o-n_-u-n-k-n-o-w-n/","title":"d u m p  d u r a t i o n  u n k n o w n","text":"<p>//leakcanary/shark/HeapAnalysis/Companion/DUMP_DURATION_UNKNOWN</p>"},{"location":"api/shark/-heap-analysis/-companion/-d-u-m-p_-d-u-r-a-t-i-o-n_-u-n-k-n-o-w-n/#dump_duration_unknown","title":"DUMP_DURATION_UNKNOWN","text":"<p>const val DUMP_DURATION_UNKNOWN: Long</p>"},{"location":"api/shark/-heap-analysis-exception/","title":"Index","text":"<p>//leakcanary/shark/HeapAnalysisException</p>"},{"location":"api/shark/-heap-analysis-exception/#heapanalysisexception","title":"HeapAnalysisException","text":"<p>class HeapAnalysisException(cause: Throwable) : RuntimeException</p>"},{"location":"api/shark/-heap-analysis-exception/#constructors","title":"Constructors","text":"HeapAnalysisException fun HeapAnalysisException(cause: Throwable)"},{"location":"api/shark/-heap-analysis-exception/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-heap-analysis-exception/#functions","title":"Functions","text":"Name Summary addSuppressed fun addSuppressed(p0: Throwable) fillInStackTrace open fun fillInStackTrace(): Throwable getLocalizedMessage open fun getLocalizedMessage(): String getStackTrace open fun getStackTrace(): Array&lt;StackTraceElement&gt; getSuppressed fun getSuppressed(): Array&lt;Throwable&gt; initCause open fun initCause(p0: Throwable): Throwable printStackTrace open fun printStackTrace()open fun printStackTrace(p0: PrintStream)open fun printStackTrace(p0: PrintWriter) setStackTrace open fun setStackTrace(p0: Array&lt;StackTraceElement&gt;) toString open override fun toString(): String"},{"location":"api/shark/-heap-analysis-exception/#properties","title":"Properties","text":"Name Summary cause open val cause: Throwable? message open val message: String?"},{"location":"api/shark/-heap-analysis-exception/-heap-analysis-exception/","title":"heap analysis exception","text":"<p>//leakcanary/shark/HeapAnalysisException/HeapAnalysisException</p>"},{"location":"api/shark/-heap-analysis-exception/-heap-analysis-exception/#heapanalysisexception","title":"HeapAnalysisException","text":"<p>fun HeapAnalysisException(cause: Throwable)</p>"},{"location":"api/shark/-heap-analysis-exception/to-string/","title":"To string","text":"<p>//leakcanary/shark/HeapAnalysisException/toString</p>"},{"location":"api/shark/-heap-analysis-exception/to-string/#tostring","title":"toString","text":"<p>open override fun toString(): String</p>"},{"location":"api/shark/-heap-analysis-exception/-companion/","title":"Index","text":"<p>//leakcanary/shark/HeapAnalysisException/Companion</p>"},{"location":"api/shark/-heap-analysis-exception/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-heap-analysis-failure/","title":"Index","text":"<p>//leakcanary/shark/HeapAnalysisFailure</p>"},{"location":"api/shark/-heap-analysis-failure/#heapanalysisfailure","title":"HeapAnalysisFailure","text":"<p>data class HeapAnalysisFailure(val heapDumpFile: File, val createdAtTimeMillis: Long, val dumpDurationMillis: Long = DUMP_DURATION_UNKNOWN, val analysisDurationMillis: Long, val exception: HeapAnalysisException) : HeapAnalysis</p> <p>The analysis performed by HeapAnalyzer did not complete successfully.</p>"},{"location":"api/shark/-heap-analysis-failure/#constructors","title":"Constructors","text":"HeapAnalysisFailure fun HeapAnalysisFailure(heapDumpFile: File, createdAtTimeMillis: Long, dumpDurationMillis: Long = DUMP_DURATION_UNKNOWN, analysisDurationMillis: Long, exception: HeapAnalysisException)"},{"location":"api/shark/-heap-analysis-failure/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-heap-analysis-failure/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-heap-analysis-failure/#properties","title":"Properties","text":"Name Summary analysisDurationMillis open override val analysisDurationMillis: LongTotal time spent analyzing the heap. createdAtTimeMillis open override val createdAtTimeMillis: LongThe System.currentTimeMillis when this HeapAnalysis instance was created. dumpDurationMillis open override val dumpDurationMillis: LongTotal time spent dumping the heap. exception val exception: HeapAnalysisExceptionAn exception wrapping the actual exception that was thrown. heapDumpFile open override val heapDumpFile: FileThe hprof file that was analyzed."},{"location":"api/shark/-heap-analysis-failure/-heap-analysis-failure/","title":"heap analysis failure","text":"<p>//leakcanary/shark/HeapAnalysisFailure/HeapAnalysisFailure</p>"},{"location":"api/shark/-heap-analysis-failure/-heap-analysis-failure/#heapanalysisfailure","title":"HeapAnalysisFailure","text":"<p>fun HeapAnalysisFailure(heapDumpFile: File, createdAtTimeMillis: Long, dumpDurationMillis: Long = DUMP_DURATION_UNKNOWN, analysisDurationMillis: Long, exception: HeapAnalysisException)</p>"},{"location":"api/shark/-heap-analysis-failure/analysis-duration-millis/","title":"Analysis duration millis","text":"<p>//leakcanary/shark/HeapAnalysisFailure/analysisDurationMillis</p>"},{"location":"api/shark/-heap-analysis-failure/analysis-duration-millis/#analysisdurationmillis","title":"analysisDurationMillis","text":"<p>open override val analysisDurationMillis: Long</p> <p>Total time spent analyzing the heap.</p>"},{"location":"api/shark/-heap-analysis-failure/created-at-time-millis/","title":"Created at time millis","text":"<p>//leakcanary/shark/HeapAnalysisFailure/createdAtTimeMillis</p>"},{"location":"api/shark/-heap-analysis-failure/created-at-time-millis/#createdattimemillis","title":"createdAtTimeMillis","text":"<p>open override val createdAtTimeMillis: Long</p> <p>The System.currentTimeMillis when this HeapAnalysis instance was created.</p>"},{"location":"api/shark/-heap-analysis-failure/dump-duration-millis/","title":"Dump duration millis","text":"<p>//leakcanary/shark/HeapAnalysisFailure/dumpDurationMillis</p>"},{"location":"api/shark/-heap-analysis-failure/dump-duration-millis/#dumpdurationmillis","title":"dumpDurationMillis","text":"<p>open override val dumpDurationMillis: Long</p> <p>Total time spent dumping the heap.</p>"},{"location":"api/shark/-heap-analysis-failure/exception/","title":"Exception","text":"<p>//leakcanary/shark/HeapAnalysisFailure/exception</p>"},{"location":"api/shark/-heap-analysis-failure/exception/#exception","title":"exception","text":"<p>val exception: HeapAnalysisException</p> <p>An exception wrapping the actual exception that was thrown.</p>"},{"location":"api/shark/-heap-analysis-failure/heap-dump-file/","title":"Heap dump file","text":"<p>//leakcanary/shark/HeapAnalysisFailure/heapDumpFile</p>"},{"location":"api/shark/-heap-analysis-failure/heap-dump-file/#heapdumpfile","title":"heapDumpFile","text":"<p>open override val heapDumpFile: File</p> <p>The hprof file that was analyzed.</p>"},{"location":"api/shark/-heap-analysis-failure/to-string/","title":"To string","text":"<p>//leakcanary/shark/HeapAnalysisFailure/toString</p>"},{"location":"api/shark/-heap-analysis-failure/to-string/#tostring","title":"toString","text":"<p>open override fun toString(): String</p>"},{"location":"api/shark/-heap-analysis-failure/-companion/","title":"Index","text":"<p>//leakcanary/shark/HeapAnalysisFailure/Companion</p>"},{"location":"api/shark/-heap-analysis-failure/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-heap-analysis-success/","title":"Index","text":"<p>//leakcanary/shark/HeapAnalysisSuccess</p>"},{"location":"api/shark/-heap-analysis-success/#heapanalysissuccess","title":"HeapAnalysisSuccess","text":"<p>data class HeapAnalysisSuccess(val heapDumpFile: File, val createdAtTimeMillis: Long, val dumpDurationMillis: Long = DUMP_DURATION_UNKNOWN, val analysisDurationMillis: Long, val metadata: Map&lt;String, String&gt;, val applicationLeaks: List&lt;ApplicationLeak&gt;, val libraryLeaks: List&lt;LibraryLeak&gt;, val unreachableObjects: List&lt;LeakTraceObject&gt;) : HeapAnalysis</p> <p>The result of a successful heap analysis performed by HeapAnalyzer.</p>"},{"location":"api/shark/-heap-analysis-success/#constructors","title":"Constructors","text":"HeapAnalysisSuccess fun HeapAnalysisSuccess(heapDumpFile: File, createdAtTimeMillis: Long, dumpDurationMillis: Long = DUMP_DURATION_UNKNOWN, analysisDurationMillis: Long, metadata: Map&lt;String, String&gt;, applicationLeaks: List&lt;ApplicationLeak&gt;, libraryLeaks: List&lt;LibraryLeak&gt;, unreachableObjects: List&lt;LeakTraceObject&gt;)"},{"location":"api/shark/-heap-analysis-success/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-heap-analysis-success/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-heap-analysis-success/#properties","title":"Properties","text":"Name Summary allLeaks val allLeaks: Sequence&lt;Leak&gt;The list of Leak found in the heap dump by HeapAnalyzer, ie all applicationLeaks and all libraryLeaks in one list. analysisDurationMillis open override val analysisDurationMillis: LongTotal time spent analyzing the heap. applicationLeaks val applicationLeaks: List&lt;ApplicationLeak&gt;The list of ApplicationLeak found in the heap dump by HeapAnalyzer. createdAtTimeMillis open override val createdAtTimeMillis: LongThe System.currentTimeMillis when this HeapAnalysis instance was created. dumpDurationMillis open override val dumpDurationMillis: LongTotal time spent dumping the heap. heapDumpFile open override val heapDumpFile: FileThe hprof file that was analyzed. libraryLeaks val libraryLeaks: List&lt;LibraryLeak&gt;The list of LibraryLeak found in the heap dump by HeapAnalyzer. metadata val metadata: Map&lt;String, String&gt; unreachableObjects val unreachableObjects: List&lt;LeakTraceObject&gt;"},{"location":"api/shark/-heap-analysis-success/#extensions","title":"Extensions","text":"Name Summary assertionTag val HeapAnalysisSuccess.assertionTag: String? totalDurationMillis val HeapAnalysisSuccess.totalDurationMillis: Int? waitForRetainedDurationMillis val HeapAnalysisSuccess.waitForRetainedDurationMillis: Int?"},{"location":"api/shark/-heap-analysis-success/-heap-analysis-success/","title":"heap analysis success","text":"<p>//leakcanary/shark/HeapAnalysisSuccess/HeapAnalysisSuccess</p>"},{"location":"api/shark/-heap-analysis-success/-heap-analysis-success/#heapanalysissuccess","title":"HeapAnalysisSuccess","text":"<p>fun HeapAnalysisSuccess(heapDumpFile: File, createdAtTimeMillis: Long, dumpDurationMillis: Long = DUMP_DURATION_UNKNOWN, analysisDurationMillis: Long, metadata: Map&lt;String, String&gt;, applicationLeaks: List&lt;ApplicationLeak&gt;, libraryLeaks: List&lt;LibraryLeak&gt;, unreachableObjects: List&lt;LeakTraceObject&gt;)</p>"},{"location":"api/shark/-heap-analysis-success/all-leaks/","title":"All leaks","text":"<p>//leakcanary/shark/HeapAnalysisSuccess/allLeaks</p>"},{"location":"api/shark/-heap-analysis-success/all-leaks/#allleaks","title":"allLeaks","text":"<p>val allLeaks: Sequence&lt;Leak&gt;</p> <p>The list of Leak found in the heap dump by HeapAnalyzer, ie all applicationLeaks and all libraryLeaks in one list.</p>"},{"location":"api/shark/-heap-analysis-success/analysis-duration-millis/","title":"Analysis duration millis","text":"<p>//leakcanary/shark/HeapAnalysisSuccess/analysisDurationMillis</p>"},{"location":"api/shark/-heap-analysis-success/analysis-duration-millis/#analysisdurationmillis","title":"analysisDurationMillis","text":"<p>open override val analysisDurationMillis: Long</p> <p>Total time spent analyzing the heap.</p>"},{"location":"api/shark/-heap-analysis-success/application-leaks/","title":"Application leaks","text":"<p>//leakcanary/shark/HeapAnalysisSuccess/applicationLeaks</p>"},{"location":"api/shark/-heap-analysis-success/application-leaks/#applicationleaks","title":"applicationLeaks","text":"<p>val applicationLeaks: List&lt;ApplicationLeak&gt;</p> <p>The list of ApplicationLeak found in the heap dump by HeapAnalyzer.</p>"},{"location":"api/shark/-heap-analysis-success/created-at-time-millis/","title":"Created at time millis","text":"<p>//leakcanary/shark/HeapAnalysisSuccess/createdAtTimeMillis</p>"},{"location":"api/shark/-heap-analysis-success/created-at-time-millis/#createdattimemillis","title":"createdAtTimeMillis","text":"<p>open override val createdAtTimeMillis: Long</p> <p>The System.currentTimeMillis when this HeapAnalysis instance was created.</p>"},{"location":"api/shark/-heap-analysis-success/dump-duration-millis/","title":"Dump duration millis","text":"<p>//leakcanary/shark/HeapAnalysisSuccess/dumpDurationMillis</p>"},{"location":"api/shark/-heap-analysis-success/dump-duration-millis/#dumpdurationmillis","title":"dumpDurationMillis","text":"<p>open override val dumpDurationMillis: Long</p> <p>Total time spent dumping the heap.</p>"},{"location":"api/shark/-heap-analysis-success/heap-dump-file/","title":"Heap dump file","text":"<p>//leakcanary/shark/HeapAnalysisSuccess/heapDumpFile</p>"},{"location":"api/shark/-heap-analysis-success/heap-dump-file/#heapdumpfile","title":"heapDumpFile","text":"<p>open override val heapDumpFile: File</p> <p>The hprof file that was analyzed.</p>"},{"location":"api/shark/-heap-analysis-success/library-leaks/","title":"Library leaks","text":"<p>//leakcanary/shark/HeapAnalysisSuccess/libraryLeaks</p>"},{"location":"api/shark/-heap-analysis-success/library-leaks/#libraryleaks","title":"libraryLeaks","text":"<p>val libraryLeaks: List&lt;LibraryLeak&gt;</p> <p>The list of LibraryLeak found in the heap dump by HeapAnalyzer.</p>"},{"location":"api/shark/-heap-analysis-success/metadata/","title":"Metadata","text":"<p>//leakcanary/shark/HeapAnalysisSuccess/metadata</p>"},{"location":"api/shark/-heap-analysis-success/metadata/#metadata","title":"metadata","text":"<p>val metadata: Map&lt;String, String&gt;</p>"},{"location":"api/shark/-heap-analysis-success/to-string/","title":"To string","text":"<p>//leakcanary/shark/HeapAnalysisSuccess/toString</p>"},{"location":"api/shark/-heap-analysis-success/to-string/#tostring","title":"toString","text":"<p>open override fun toString(): String</p>"},{"location":"api/shark/-heap-analysis-success/unreachable-objects/","title":"Unreachable objects","text":"<p>//leakcanary/shark/HeapAnalysisSuccess/unreachableObjects</p>"},{"location":"api/shark/-heap-analysis-success/unreachable-objects/#unreachableobjects","title":"unreachableObjects","text":"<p>val unreachableObjects: List&lt;LeakTraceObject&gt;</p>"},{"location":"api/shark/-heap-analysis-success/-companion/","title":"Index","text":"<p>//leakcanary/shark/HeapAnalysisSuccess/Companion</p>"},{"location":"api/shark/-heap-analysis-success/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-heap-analyzer/","title":"Index","text":"<p>//leakcanary/shark/HeapAnalyzer</p>"},{"location":"api/shark/-heap-analyzer/#heapanalyzer","title":"HeapAnalyzer","text":"<p>class HeapAnalyzer(listener: OnAnalysisProgressListener)</p> <p>Analyzes heap dumps to look for leaks.</p>"},{"location":"api/shark/-heap-analyzer/#constructors","title":"Constructors","text":"HeapAnalyzer fun HeapAnalyzer(listener: OnAnalysisProgressListener)"},{"location":"api/shark/-heap-analyzer/#functions","title":"Functions","text":"Name Summary analyze fun analyze(heapDumpFile: File, graph: HeapGraph, leakingObjectFinder: LeakingObjectFinder, referenceMatchers: List&lt;ReferenceMatcher&gt; = emptyList(), computeRetainedHeapSize: Boolean = false, objectInspectors: List&lt;ObjectInspector&gt; = emptyList(), metadataExtractor: MetadataExtractor = MetadataExtractor.NO_OP): HeapAnalysisSearches the heap dump for leaking instances and then computes the shortest strong reference path from those instances to the GC roots."},{"location":"api/shark/-heap-analyzer/-heap-analyzer/","title":"heap analyzer","text":"<p>//leakcanary/shark/HeapAnalyzer/HeapAnalyzer</p>"},{"location":"api/shark/-heap-analyzer/-heap-analyzer/#heapanalyzer","title":"HeapAnalyzer","text":"<p>fun HeapAnalyzer(listener: OnAnalysisProgressListener)</p>"},{"location":"api/shark/-heap-analyzer/analyze/","title":"Analyze","text":"<p>//leakcanary/shark/HeapAnalyzer/analyze</p>"},{"location":"api/shark/-heap-analyzer/analyze/#analyze","title":"analyze","text":"<p>fun analyze(heapDumpFile: File, graph: HeapGraph, leakingObjectFinder: LeakingObjectFinder, referenceMatchers: List&lt;ReferenceMatcher&gt; = emptyList(), computeRetainedHeapSize: Boolean = false, objectInspectors: List&lt;ObjectInspector&gt; = emptyList(), metadataExtractor: MetadataExtractor = MetadataExtractor.NO_OP): HeapAnalysis</p> <p>Searches the heap dump for leaking instances and then computes the shortest strong reference path from those instances to the GC roots.</p>"},{"location":"api/shark/-heap-dump-rule/","title":"Index","text":"<p>//leakcanary/shark/HeapDumpRule</p>"},{"location":"api/shark/-heap-dump-rule/#heapdumprule","title":"HeapDumpRule","text":"<p>class HeapDumpRule : ExternalResource</p>"},{"location":"api/shark/-heap-dump-rule/#constructors","title":"Constructors","text":"HeapDumpRule fun HeapDumpRule()"},{"location":"api/shark/-heap-dump-rule/#functions","title":"Functions","text":"Name Summary apply open override fun apply(p0: Statement, p1: Description): Statement dumpHeap fun dumpHeap(): File"},{"location":"api/shark/-heap-dump-rule/-heap-dump-rule/","title":"heap dump rule","text":"<p>//leakcanary/shark/HeapDumpRule/HeapDumpRule</p>"},{"location":"api/shark/-heap-dump-rule/-heap-dump-rule/#heapdumprule","title":"HeapDumpRule","text":"<p>fun HeapDumpRule()</p>"},{"location":"api/shark/-heap-dump-rule/dump-heap/","title":"Dump heap","text":"<p>//leakcanary/shark/HeapDumpRule/dumpHeap</p>"},{"location":"api/shark/-heap-dump-rule/dump-heap/#dumpheap","title":"dumpHeap","text":"<p>fun dumpHeap(): File</p>"},{"location":"api/shark/-heap-field/","title":"Index","text":"<p>//leakcanary/shark/HeapField</p>"},{"location":"api/shark/-heap-field/#heapfield","title":"HeapField","text":"<p>class HeapField(val declaringClass: HeapObject.HeapClass, val name: String, val value: HeapValue)</p> <p>Represents a static field or an instance field.</p>"},{"location":"api/shark/-heap-field/#constructors","title":"Constructors","text":"HeapField fun HeapField(declaringClass: HeapObject.HeapClass, name: String, value: HeapValue)"},{"location":"api/shark/-heap-field/#properties","title":"Properties","text":"Name Summary declaringClass val declaringClass: HeapObject.HeapClassThe class this field was declared in. name val name: StringName of the field value val value: HeapValueValue of the field. Also see shorthands valueAsClass, valueAsInstance, valueAsObjectArray, valueAsPrimitiveArray. valueAsClass val valueAsClass: HeapObject.HeapClass?Return a HeapClass is value references a class, and null otherwise. valueAsInstance val valueAsInstance: HeapObject.HeapInstance?Return a HeapInstance is value references an instance, and null otherwise. valueAsObjectArray val valueAsObjectArray: HeapObject.HeapObjectArray?Return a HeapObjectArray is value references an object array, and null otherwise. valueAsPrimitiveArray val valueAsPrimitiveArray: HeapObject.HeapPrimitiveArray?Return a HeapPrimitiveArray is value references a primitive array, and null otherwise."},{"location":"api/shark/-heap-field/-heap-field/","title":"heap field","text":"<p>//leakcanary/shark/HeapField/HeapField</p>"},{"location":"api/shark/-heap-field/-heap-field/#heapfield","title":"HeapField","text":"<p>fun HeapField(declaringClass: HeapObject.HeapClass, name: String, value: HeapValue)</p>"},{"location":"api/shark/-heap-field/declaring-class/","title":"Declaring class","text":"<p>//leakcanary/shark/HeapField/declaringClass</p>"},{"location":"api/shark/-heap-field/declaring-class/#declaringclass","title":"declaringClass","text":"<p>val declaringClass: HeapObject.HeapClass</p> <p>The class this field was declared in.</p>"},{"location":"api/shark/-heap-field/name/","title":"Name","text":"<p>//leakcanary/shark/HeapField/name</p>"},{"location":"api/shark/-heap-field/name/#name","title":"name","text":"<p>val name: String</p> <p>Name of the field</p>"},{"location":"api/shark/-heap-field/value-as-class/","title":"Value as class","text":"<p>//leakcanary/shark/HeapField/valueAsClass</p>"},{"location":"api/shark/-heap-field/value-as-class/#valueasclass","title":"valueAsClass","text":"<p>val valueAsClass: HeapObject.HeapClass?</p> <p>Return a HeapClass is value references a class, and null otherwise.</p>"},{"location":"api/shark/-heap-field/value-as-instance/","title":"Value as instance","text":"<p>//leakcanary/shark/HeapField/valueAsInstance</p>"},{"location":"api/shark/-heap-field/value-as-instance/#valueasinstance","title":"valueAsInstance","text":"<p>val valueAsInstance: HeapObject.HeapInstance?</p> <p>Return a HeapInstance is value references an instance, and null otherwise.</p>"},{"location":"api/shark/-heap-field/value-as-object-array/","title":"Value as object array","text":"<p>//leakcanary/shark/HeapField/valueAsObjectArray</p>"},{"location":"api/shark/-heap-field/value-as-object-array/#valueasobjectarray","title":"valueAsObjectArray","text":"<p>val valueAsObjectArray: HeapObject.HeapObjectArray?</p> <p>Return a HeapObjectArray is value references an object array, and null otherwise.</p>"},{"location":"api/shark/-heap-field/value-as-primitive-array/","title":"Value as primitive array","text":"<p>//leakcanary/shark/HeapField/valueAsPrimitiveArray</p>"},{"location":"api/shark/-heap-field/value-as-primitive-array/#valueasprimitivearray","title":"valueAsPrimitiveArray","text":"<p>val valueAsPrimitiveArray: HeapObject.HeapPrimitiveArray?</p> <p>Return a HeapPrimitiveArray is value references a primitive array, and null otherwise.</p>"},{"location":"api/shark/-heap-field/value/","title":"Value","text":"<p>//leakcanary/shark/HeapField/value</p>"},{"location":"api/shark/-heap-field/value/#value","title":"value","text":"<p>val value: HeapValue</p> <p>Value of the field. Also see shorthands valueAsClass, valueAsInstance, valueAsObjectArray, valueAsPrimitiveArray.</p>"},{"location":"api/shark/-heap-graph/","title":"Index","text":"<p>//leakcanary/shark/HeapGraph</p>"},{"location":"api/shark/-heap-graph/#heapgraph","title":"HeapGraph","text":"<p>interface HeapGraph</p> <p>Enables navigation through the heap graph of objects.</p>"},{"location":"api/shark/-heap-graph/#functions","title":"Functions","text":"Name Summary findClassByName abstract fun findClassByName(className: String): HeapObject.HeapClass?Returns the HeapClass corresponding to the provided className, or null if the class cannot be found. findHeapDumpIndex abstract fun findHeapDumpIndex(objectId: Long): IntReturns the 1-based index in the heap dump of the object corresponding to the provided objectId, and throws IllegalArgumentException otherwise. findObjectByHeapDumpIndex abstract fun findObjectByHeapDumpIndex(heapDumpIndex: Int): HeapObjectReturns the HeapObject corresponding to the provided heapDumpIndex, and throws IllegalArgumentException if heapDumpIndex is less than 1 or more than objectCount. findObjectById abstract fun findObjectById(objectId: Long): HeapObjectReturns the HeapObject corresponding to the provided objectId, and throws IllegalArgumentException otherwise. findObjectByIdOrNull abstract fun findObjectByIdOrNull(objectId: Long): HeapObject?Returns the HeapObject corresponding to the provided objectId or null if it cannot be found. findObjectByIndex abstract fun findObjectByIndex(objectIndex: Int): HeapObjectReturns the HeapObject corresponding to the provided objectIndex, and throws IllegalArgumentException if objectIndex is less than 0 or more than objectCount - 1. objectExists abstract fun objectExists(objectId: Long): BooleanReturns true if the provided objectId exists in the heap dump."},{"location":"api/shark/-heap-graph/#properties","title":"Properties","text":"Name Summary classCount abstract val classCount: Int classes abstract val classes: Sequence&lt;HeapObject.HeapClass&gt;Sequence of all classes in the heap dump. context abstract val context: GraphContextIn memory store that can be used to store objects this HeapGraph instance. gcRoots abstract val gcRoots: List&lt;GcRoot&gt;All GC roots which type matches types known to this heap graph and which point to non null references. You can retrieve the object that a GC Root points to by calling findObjectById with GcRoot.id, however you need to first check that objectExists returns true because GC roots can point to objects that don\u2019t exist in the heap dump. identifierByteSize abstract val identifierByteSize: Int instanceCount abstract val instanceCount: Int instances abstract val instances: Sequence&lt;HeapObject.HeapInstance&gt;Sequence of all instances in the heap dump. objectArrayCount abstract val objectArrayCount: Int objectArrays abstract val objectArrays: Sequence&lt;HeapObject.HeapObjectArray&gt;Sequence of all object arrays in the heap dump. objectCount abstract val objectCount: Int objects abstract val objects: Sequence&lt;HeapObject&gt;Sequence of all objects in the heap dump. primitiveArrayCount abstract val primitiveArrayCount: Int primitiveArrays abstract val primitiveArrays: Sequence&lt;HeapObject.HeapPrimitiveArray&gt;Sequence of all primitive arrays in the heap dump."},{"location":"api/shark/-heap-graph/#inheritors","title":"Inheritors","text":"Name CloseableHeapGraph"},{"location":"api/shark/-heap-graph/#extensions","title":"Extensions","text":"Name Summary aliveAndroidServiceObjectIds val HeapGraph.aliveAndroidServiceObjectIds: List&lt;Long&gt;"},{"location":"api/shark/-heap-graph/class-count/","title":"Class count","text":"<p>//leakcanary/shark/HeapGraph/classCount</p>"},{"location":"api/shark/-heap-graph/class-count/#classcount","title":"classCount","text":"<p>abstract val classCount: Int</p>"},{"location":"api/shark/-heap-graph/classes/","title":"Classes","text":"<p>//leakcanary/shark/HeapGraph/classes</p>"},{"location":"api/shark/-heap-graph/classes/#classes","title":"classes","text":"<p>abstract val classes: Sequence&lt;HeapObject.HeapClass&gt;</p> <p>Sequence of all classes in the heap dump.</p> <p>This sequence does not trigger any IO reads.</p>"},{"location":"api/shark/-heap-graph/context/","title":"Context","text":"<p>//leakcanary/shark/HeapGraph/context</p>"},{"location":"api/shark/-heap-graph/context/#context","title":"context","text":"<p>abstract val context: GraphContext</p> <p>In memory store that can be used to store objects this HeapGraph instance.</p>"},{"location":"api/shark/-heap-graph/find-class-by-name/","title":"Find class by name","text":"<p>//leakcanary/shark/HeapGraph/findClassByName</p>"},{"location":"api/shark/-heap-graph/find-class-by-name/#findclassbyname","title":"findClassByName","text":"<p>abstract fun findClassByName(className: String): HeapObject.HeapClass?</p> <p>Returns the HeapClass corresponding to the provided className, or null if the class cannot be found.</p>"},{"location":"api/shark/-heap-graph/find-heap-dump-index/","title":"Find heap dump index","text":"<p>//leakcanary/shark/HeapGraph/findHeapDumpIndex</p>"},{"location":"api/shark/-heap-graph/find-heap-dump-index/#findheapdumpindex","title":"findHeapDumpIndex","text":"<p>abstract fun findHeapDumpIndex(objectId: Long): Int</p> <p>Returns the 1-based index in the heap dump of the object corresponding to the provided objectId, and throws IllegalArgumentException otherwise.</p> <p>This is the object index that YourKit provides in its Java profiler.</p>"},{"location":"api/shark/-heap-graph/find-object-by-heap-dump-index/","title":"Find object by heap dump index","text":"<p>//leakcanary/shark/HeapGraph/findObjectByHeapDumpIndex</p>"},{"location":"api/shark/-heap-graph/find-object-by-heap-dump-index/#findobjectbyheapdumpindex","title":"findObjectByHeapDumpIndex","text":"<p>abstract fun findObjectByHeapDumpIndex(heapDumpIndex: Int): HeapObject</p> <p>Returns the HeapObject corresponding to the provided heapDumpIndex, and throws IllegalArgumentException if heapDumpIndex is less than 1 or more than objectCount.</p> <p>This is the object index that YourKit provides in its Java profiler.</p>"},{"location":"api/shark/-heap-graph/find-object-by-id-or-null/","title":"Find object by id or null","text":"<p>//leakcanary/shark/HeapGraph/findObjectByIdOrNull</p>"},{"location":"api/shark/-heap-graph/find-object-by-id-or-null/#findobjectbyidornull","title":"findObjectByIdOrNull","text":"<p>abstract fun findObjectByIdOrNull(objectId: Long): HeapObject?</p> <p>Returns the HeapObject corresponding to the provided objectId or null if it cannot be found.</p>"},{"location":"api/shark/-heap-graph/find-object-by-id/","title":"Find object by id","text":"<p>//leakcanary/shark/HeapGraph/findObjectById</p>"},{"location":"api/shark/-heap-graph/find-object-by-id/#findobjectbyid","title":"findObjectById","text":"<p>abstract fun findObjectById(objectId: Long): HeapObject</p> <p>Returns the HeapObject corresponding to the provided objectId, and throws IllegalArgumentException otherwise.</p>"},{"location":"api/shark/-heap-graph/find-object-by-index/","title":"Find object by index","text":"<p>//leakcanary/shark/HeapGraph/findObjectByIndex</p>"},{"location":"api/shark/-heap-graph/find-object-by-index/#findobjectbyindex","title":"findObjectByIndex","text":"<p>abstract fun findObjectByIndex(objectIndex: Int): HeapObject</p> <p>Returns the HeapObject corresponding to the provided objectIndex, and throws IllegalArgumentException if objectIndex is less than 0 or more than objectCount - 1.</p>"},{"location":"api/shark/-heap-graph/gc-roots/","title":"Gc roots","text":"<p>//leakcanary/shark/HeapGraph/gcRoots</p>"},{"location":"api/shark/-heap-graph/gc-roots/#gcroots","title":"gcRoots","text":"<p>abstract val gcRoots: List&lt;GcRoot&gt;</p> <p>All GC roots which type matches types known to this heap graph and which point to non null references. You can retrieve the object that a GC Root points to by calling findObjectById with GcRoot.id, however you need to first check that objectExists returns true because GC roots can point to objects that don\u2019t exist in the heap dump.</p>"},{"location":"api/shark/-heap-graph/identifier-byte-size/","title":"Identifier byte size","text":"<p>//leakcanary/shark/HeapGraph/identifierByteSize</p>"},{"location":"api/shark/-heap-graph/identifier-byte-size/#identifierbytesize","title":"identifierByteSize","text":"<p>abstract val identifierByteSize: Int</p>"},{"location":"api/shark/-heap-graph/instance-count/","title":"Instance count","text":"<p>//leakcanary/shark/HeapGraph/instanceCount</p>"},{"location":"api/shark/-heap-graph/instance-count/#instancecount","title":"instanceCount","text":"<p>abstract val instanceCount: Int</p>"},{"location":"api/shark/-heap-graph/instances/","title":"Instances","text":"<p>//leakcanary/shark/HeapGraph/instances</p>"},{"location":"api/shark/-heap-graph/instances/#instances","title":"instances","text":"<p>abstract val instances: Sequence&lt;HeapObject.HeapInstance&gt;</p> <p>Sequence of all instances in the heap dump.</p> <p>This sequence does not trigger any IO reads.</p>"},{"location":"api/shark/-heap-graph/object-array-count/","title":"Object array count","text":"<p>//leakcanary/shark/HeapGraph/objectArrayCount</p>"},{"location":"api/shark/-heap-graph/object-array-count/#objectarraycount","title":"objectArrayCount","text":"<p>abstract val objectArrayCount: Int</p>"},{"location":"api/shark/-heap-graph/object-arrays/","title":"Object arrays","text":"<p>//leakcanary/shark/HeapGraph/objectArrays</p>"},{"location":"api/shark/-heap-graph/object-arrays/#objectarrays","title":"objectArrays","text":"<p>abstract val objectArrays: Sequence&lt;HeapObject.HeapObjectArray&gt;</p> <p>Sequence of all object arrays in the heap dump.</p> <p>This sequence does not trigger any IO reads.</p>"},{"location":"api/shark/-heap-graph/object-count/","title":"Object count","text":"<p>//leakcanary/shark/HeapGraph/objectCount</p>"},{"location":"api/shark/-heap-graph/object-count/#objectcount","title":"objectCount","text":"<p>abstract val objectCount: Int</p>"},{"location":"api/shark/-heap-graph/object-exists/","title":"Object exists","text":"<p>//leakcanary/shark/HeapGraph/objectExists</p>"},{"location":"api/shark/-heap-graph/object-exists/#objectexists","title":"objectExists","text":"<p>abstract fun objectExists(objectId: Long): Boolean</p> <p>Returns true if the provided objectId exists in the heap dump.</p>"},{"location":"api/shark/-heap-graph/objects/","title":"Objects","text":"<p>//leakcanary/shark/HeapGraph/objects</p>"},{"location":"api/shark/-heap-graph/objects/#objects","title":"objects","text":"<p>abstract val objects: Sequence&lt;HeapObject&gt;</p> <p>Sequence of all objects in the heap dump.</p> <p>This sequence does not trigger any IO reads.</p>"},{"location":"api/shark/-heap-graph/primitive-array-count/","title":"Primitive array count","text":"<p>//leakcanary/shark/HeapGraph/primitiveArrayCount</p>"},{"location":"api/shark/-heap-graph/primitive-array-count/#primitivearraycount","title":"primitiveArrayCount","text":"<p>abstract val primitiveArrayCount: Int</p>"},{"location":"api/shark/-heap-graph/primitive-arrays/","title":"Primitive arrays","text":"<p>//leakcanary/shark/HeapGraph/primitiveArrays</p>"},{"location":"api/shark/-heap-graph/primitive-arrays/#primitivearrays","title":"primitiveArrays","text":"<p>abstract val primitiveArrays: Sequence&lt;HeapObject.HeapPrimitiveArray&gt;</p> <p>Sequence of all primitive arrays in the heap dump.</p> <p>This sequence does not trigger any IO reads.</p>"},{"location":"api/shark/-heap-object/","title":"Index","text":"<p>//leakcanary/shark/HeapObject</p>"},{"location":"api/shark/-heap-object/#heapobject","title":"HeapObject","text":"<p>sealed class HeapObject</p> <p>An object in the heap dump.</p>"},{"location":"api/shark/-heap-object/#types","title":"Types","text":"Name Summary Companion object Companion HeapClass class HeapClass : HeapObjectA class in the heap dump. HeapInstance class HeapInstance : HeapObjectAn instance in the heap dump. HeapObjectArray class HeapObjectArray : HeapObjectAn object array in the heap dump. HeapPrimitiveArray class HeapPrimitiveArray : HeapObjectA primitive array in the heap dump."},{"location":"api/shark/-heap-object/#functions","title":"Functions","text":"Name Summary readRecord abstract fun readRecord(): HprofRecord.HeapDumpRecord.ObjectRecordReads and returns the underlying ObjectRecord."},{"location":"api/shark/-heap-object/#properties","title":"Properties","text":"Name Summary asClass val asClass: HeapObject.HeapClass?This HeapObject as a HeapClass if it is one, or null otherwise asInstance val asInstance: HeapObject.HeapInstance?This HeapObject as a HeapInstance if it is one, or null otherwise asObjectArray val asObjectArray: HeapObject.HeapObjectArray?This HeapObject as a HeapObjectArray if it is one, or null otherwise asPrimitiveArray val asPrimitiveArray: HeapObject.HeapPrimitiveArray?This HeapObject as a HeapPrimitiveArray if it is one, or null otherwise graph abstract val graph: HeapGraphThe graph of objects in the heap, which you can use to navigate the heap. objectId abstract val objectId: LongThe heap identifier of this object. objectIndex abstract val objectIndex: IntAn positive object index that\u2019s specific to how Shark stores objects in memory. The index starts at 0 and ends at HeapGraph.objectCount - 1. There are no gaps, every index value corresponds to an object. Classes are first, then instances, then object arrays then primitive arrays. positiveObjectId val positiveObjectId: LongobjectId masked to be a positive unique identifier, as reported in Android Studio. recordSize abstract val recordSize: IntThe total byte size for the record of this object in the heap dump."},{"location":"api/shark/-heap-object/#inheritors","title":"Inheritors","text":"Name HeapClass HeapInstance HeapObjectArray HeapPrimitiveArray"},{"location":"api/shark/-heap-object/as-class/","title":"As class","text":"<p>//leakcanary/shark/HeapObject/asClass</p>"},{"location":"api/shark/-heap-object/as-class/#asclass","title":"asClass","text":"<p>val asClass: HeapObject.HeapClass?</p> <p>This HeapObject as a HeapClass if it is one, or null otherwise</p>"},{"location":"api/shark/-heap-object/as-instance/","title":"As instance","text":"<p>//leakcanary/shark/HeapObject/asInstance</p>"},{"location":"api/shark/-heap-object/as-instance/#asinstance","title":"asInstance","text":"<p>val asInstance: HeapObject.HeapInstance?</p> <p>This HeapObject as a HeapInstance if it is one, or null otherwise</p>"},{"location":"api/shark/-heap-object/as-object-array/","title":"As object array","text":"<p>//leakcanary/shark/HeapObject/asObjectArray</p>"},{"location":"api/shark/-heap-object/as-object-array/#asobjectarray","title":"asObjectArray","text":"<p>val asObjectArray: HeapObject.HeapObjectArray?</p> <p>This HeapObject as a HeapObjectArray if it is one, or null otherwise</p>"},{"location":"api/shark/-heap-object/as-primitive-array/","title":"As primitive array","text":"<p>//leakcanary/shark/HeapObject/asPrimitiveArray</p>"},{"location":"api/shark/-heap-object/as-primitive-array/#asprimitivearray","title":"asPrimitiveArray","text":"<p>val asPrimitiveArray: HeapObject.HeapPrimitiveArray?</p> <p>This HeapObject as a HeapPrimitiveArray if it is one, or null otherwise</p>"},{"location":"api/shark/-heap-object/graph/","title":"Graph","text":"<p>//leakcanary/shark/HeapObject/graph</p>"},{"location":"api/shark/-heap-object/graph/#graph","title":"graph","text":"<p>abstract val graph: HeapGraph</p> <p>The graph of objects in the heap, which you can use to navigate the heap.</p>"},{"location":"api/shark/-heap-object/object-id/","title":"Object id","text":"<p>//leakcanary/shark/HeapObject/objectId</p>"},{"location":"api/shark/-heap-object/object-id/#objectid","title":"objectId","text":"<p>abstract val objectId: Long</p> <p>The heap identifier of this object.</p>"},{"location":"api/shark/-heap-object/object-index/","title":"Object index","text":"<p>//leakcanary/shark/HeapObject/objectIndex</p>"},{"location":"api/shark/-heap-object/object-index/#objectindex","title":"objectIndex","text":"<p>abstract val objectIndex: Int</p> <p>An positive object index that\u2019s specific to how Shark stores objects in memory. The index starts at 0 and ends at HeapGraph.objectCount - 1. There are no gaps, every index value corresponds to an object. Classes are first, then instances, then object arrays then primitive arrays.</p>"},{"location":"api/shark/-heap-object/positive-object-id/","title":"Positive object id","text":"<p>//leakcanary/shark/HeapObject/positiveObjectId</p>"},{"location":"api/shark/-heap-object/positive-object-id/#positiveobjectid","title":"positiveObjectId","text":"<p>val positiveObjectId: Long</p> <p>objectId masked to be a positive unique identifier, as reported in Android Studio.</p>"},{"location":"api/shark/-heap-object/read-record/","title":"Read record","text":"<p>//leakcanary/shark/HeapObject/readRecord</p>"},{"location":"api/shark/-heap-object/read-record/#readrecord","title":"readRecord","text":"<p>abstract fun readRecord(): HprofRecord.HeapDumpRecord.ObjectRecord</p> <p>Reads and returns the underlying ObjectRecord.</p> <p>This may trigger IO reads.</p>"},{"location":"api/shark/-heap-object/record-size/","title":"Record size","text":"<p>//leakcanary/shark/HeapObject/recordSize</p>"},{"location":"api/shark/-heap-object/record-size/#recordsize","title":"recordSize","text":"<p>abstract val recordSize: Int</p> <p>The total byte size for the record of this object in the heap dump.</p>"},{"location":"api/shark/-heap-object/-companion/","title":"Index","text":"<p>//leakcanary/shark/HeapObject/Companion</p>"},{"location":"api/shark/-heap-object/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-heap-object/-heap-class/","title":"Index","text":"<p>//leakcanary/shark/HeapObject/HeapClass</p>"},{"location":"api/shark/-heap-object/-heap-class/#heapclass","title":"HeapClass","text":"<p>class HeapClass : HeapObject</p> <p>A class in the heap dump.</p>"},{"location":"api/shark/-heap-object/-heap-class/#functions","title":"Functions","text":"Name Summary get operator fun get(fieldName: String): HeapField? instanceFieldName fun instanceFieldName(fieldRecord: HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecord.FieldRecord): StringReturns the name of the field declared in this class for the specified fieldRecord. readFieldsByteSize fun readFieldsByteSize(): IntThe total byte size of fields for instances of this class, computed as the sum of the individual size of each field of this class. This does not include the size of fields from superclasses. readRecord open override fun readRecord(): HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecordReads and returns the underlying ClassDumpRecord. readRecordFields fun readRecordFields(): List&lt;HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecord.FieldRecord&gt; readRecordStaticFields fun readRecordStaticFields(): List&lt;HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecord.StaticFieldRecord&gt; readStaticField fun readStaticField(fieldName: String): HeapField?Returns a HeapField object that reflects the specified declared field of the class represented by this HeapClass object, or null if this field does not exist. The name parameter specifies the simple name of the desired field. readStaticFields fun readStaticFields(): Sequence&lt;HeapField&gt;The static fields of this class, as a sequence of HeapField. subclassOf infix fun subclassOf(superclass: HeapObject.HeapClass): BooleanReturns true if superclass is a superclass of this HeapClass. superclassOf infix fun superclassOf(subclass: HeapObject.HeapClass): BooleanReturns true if subclass is a sub class of this HeapClass. toString open override fun toString(): String"},{"location":"api/shark/-heap-object/-heap-class/#properties","title":"Properties","text":"Name Summary asClass val asClass: HeapObject.HeapClass?This HeapObject as a HeapClass if it is one, or null otherwise asInstance val asInstance: HeapObject.HeapInstance?This HeapObject as a HeapInstance if it is one, or null otherwise asObjectArray val asObjectArray: HeapObject.HeapObjectArray?This HeapObject as a HeapObjectArray if it is one, or null otherwise asPrimitiveArray val asPrimitiveArray: HeapObject.HeapPrimitiveArray?This HeapObject as a HeapPrimitiveArray if it is one, or null otherwise classHierarchy val classHierarchy: Sequence&lt;HeapObject.HeapClass&gt;The class hierarchy starting at this class (included) and ending at the Object class (included). directInstances val directInstances: Sequence&lt;HeapObject.HeapInstance&gt;All direct instances of this class, ie excluding any instance of subclasses of this class. graph open override val graph: HeapGraphThe graph of objects in the heap, which you can use to navigate the heap. hasReferenceInstanceFields val hasReferenceInstanceFields: Boolean instanceByteSize val instanceByteSize: IntThe total byte size of fields for instances of this class, as registered in the class dump. This includes the size of fields from superclasses. instances val instances: Sequence&lt;HeapObject.HeapInstance&gt;All instances of this class, including instances of subclasses of this class. isArrayClass val isArrayClass: BooleanReturns true if this class is an array class, and false otherwise. isObjectArrayClass val isObjectArrayClass: Boolean isPrimitiveArrayClass val isPrimitiveArrayClass: Boolean isPrimitiveWrapperClass val isPrimitiveWrapperClass: BooleanWhether this is class is a primitive wrapper type name val name: StringThe name of this class, identical to Class.getName. If this class is an array class, the name has a suffix of brackets for each dimension of the array, e.g. com.Foo[][] is a class for 2 dimensional arrays of com.Foo. objectArrayInstances val objectArrayInstances: Sequence&lt;HeapObject.HeapObjectArray&gt; objectId open override val objectId: LongThe heap identifier of this object. objectIndex open override val objectIndex: IntAn positive object index that\u2019s specific to how Shark stores objects in memory. The index starts at 0 and ends at HeapGraph.objectCount - 1. There are no gaps, every index value corresponds to an object. Classes are first, then instances, then object arrays then primitive arrays. positiveObjectId val positiveObjectId: LongobjectId masked to be a positive unique identifier, as reported in Android Studio. primitiveArrayInstances val primitiveArrayInstances: Sequence&lt;HeapObject.HeapPrimitiveArray&gt;Primitive arrays are one dimensional arrays of a primitive type. N-dimension arrays of primitive types (e.g. int[][]) are object arrays pointing to primitive arrays. recordSize open override val recordSize: IntThe total byte size for the record of this object in the heap dump. simpleName val simpleName: StringReturns name stripped of any string content before the last period (included). subclasses val subclasses: Sequence&lt;HeapObject.HeapClass&gt;All the subclasses (direct and indirect) of this class, in the order they were recorded in the heap dump. superclass val superclass: HeapObject.HeapClass?The HeapClass representing the superclass of this HeapClass. If this HeapClass represents either the Object class or a primitive type, then null is returned. If this HeapClass represents an array class then the HeapClass object representing the Object class is returned."},{"location":"api/shark/-heap-object/-heap-class/class-hierarchy/","title":"Class hierarchy","text":"<p>//leakcanary/shark/HeapObject/HeapClass/classHierarchy</p>"},{"location":"api/shark/-heap-object/-heap-class/class-hierarchy/#classhierarchy","title":"classHierarchy","text":"<p>val classHierarchy: Sequence&lt;HeapObject.HeapClass&gt;</p> <p>The class hierarchy starting at this class (included) and ending at the Object class (included).</p>"},{"location":"api/shark/-heap-object/-heap-class/direct-instances/","title":"Direct instances","text":"<p>//leakcanary/shark/HeapObject/HeapClass/directInstances</p>"},{"location":"api/shark/-heap-object/-heap-class/direct-instances/#directinstances","title":"directInstances","text":"<p>val directInstances: Sequence&lt;HeapObject.HeapInstance&gt;</p> <p>All direct instances of this class, ie excluding any instance of subclasses of this class.</p>"},{"location":"api/shark/-heap-object/-heap-class/get/","title":"Get","text":"<p>//leakcanary/shark/HeapObject/HeapClass/get</p>"},{"location":"api/shark/-heap-object/-heap-class/get/#get","title":"get","text":"<p>operator fun get(fieldName: String): HeapField?</p>"},{"location":"api/shark/-heap-object/-heap-class/get/#see-also","title":"See also","text":"<p>main</p> shark.HeapObject.HeapClass"},{"location":"api/shark/-heap-object/-heap-class/graph/","title":"Graph","text":"<p>//leakcanary/shark/HeapObject/HeapClass/graph</p>"},{"location":"api/shark/-heap-object/-heap-class/graph/#graph","title":"graph","text":"<p>open override val graph: HeapGraph</p> <p>The graph of objects in the heap, which you can use to navigate the heap.</p>"},{"location":"api/shark/-heap-object/-heap-class/has-reference-instance-fields/","title":"Has reference instance fields","text":"<p>//leakcanary/shark/HeapObject/HeapClass/hasReferenceInstanceFields</p>"},{"location":"api/shark/-heap-object/-heap-class/has-reference-instance-fields/#hasreferenceinstancefields","title":"hasReferenceInstanceFields","text":"<p>val hasReferenceInstanceFields: Boolean</p>"},{"location":"api/shark/-heap-object/-heap-class/instance-byte-size/","title":"Instance byte size","text":"<p>//leakcanary/shark/HeapObject/HeapClass/instanceByteSize</p>"},{"location":"api/shark/-heap-object/-heap-class/instance-byte-size/#instancebytesize","title":"instanceByteSize","text":"<p>val instanceByteSize: Int</p> <p>The total byte size of fields for instances of this class, as registered in the class dump. This includes the size of fields from superclasses.</p>"},{"location":"api/shark/-heap-object/-heap-class/instance-byte-size/#see-also","title":"See also","text":"<p>main</p> shark.HeapObject.HeapClass"},{"location":"api/shark/-heap-object/-heap-class/instance-field-name/","title":"Instance field name","text":"<p>//leakcanary/shark/HeapObject/HeapClass/instanceFieldName</p>"},{"location":"api/shark/-heap-object/-heap-class/instance-field-name/#instancefieldname","title":"instanceFieldName","text":"<p>fun instanceFieldName(fieldRecord: HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecord.FieldRecord): String</p> <p>Returns the name of the field declared in this class for the specified fieldRecord.</p>"},{"location":"api/shark/-heap-object/-heap-class/instances/","title":"Instances","text":"<p>//leakcanary/shark/HeapObject/HeapClass/instances</p>"},{"location":"api/shark/-heap-object/-heap-class/instances/#instances","title":"instances","text":"<p>val instances: Sequence&lt;HeapObject.HeapInstance&gt;</p> <p>All instances of this class, including instances of subclasses of this class.</p>"},{"location":"api/shark/-heap-object/-heap-class/is-array-class/","title":"Is array class","text":"<p>//leakcanary/shark/HeapObject/HeapClass/isArrayClass</p>"},{"location":"api/shark/-heap-object/-heap-class/is-array-class/#isarrayclass","title":"isArrayClass","text":"<p>val isArrayClass: Boolean</p> <p>Returns true if this class is an array class, and false otherwise.</p>"},{"location":"api/shark/-heap-object/-heap-class/is-object-array-class/","title":"Is object array class","text":"<p>//leakcanary/shark/HeapObject/HeapClass/isObjectArrayClass</p>"},{"location":"api/shark/-heap-object/-heap-class/is-object-array-class/#isobjectarrayclass","title":"isObjectArrayClass","text":"<p>val isObjectArrayClass: Boolean</p>"},{"location":"api/shark/-heap-object/-heap-class/is-primitive-array-class/","title":"Is primitive array class","text":"<p>//leakcanary/shark/HeapObject/HeapClass/isPrimitiveArrayClass</p>"},{"location":"api/shark/-heap-object/-heap-class/is-primitive-array-class/#isprimitivearrayclass","title":"isPrimitiveArrayClass","text":"<p>val isPrimitiveArrayClass: Boolean</p>"},{"location":"api/shark/-heap-object/-heap-class/is-primitive-wrapper-class/","title":"Is primitive wrapper class","text":"<p>//leakcanary/shark/HeapObject/HeapClass/isPrimitiveWrapperClass</p>"},{"location":"api/shark/-heap-object/-heap-class/is-primitive-wrapper-class/#isprimitivewrapperclass","title":"isPrimitiveWrapperClass","text":"<p>val isPrimitiveWrapperClass: Boolean</p> <p>Whether this is class is a primitive wrapper type</p>"},{"location":"api/shark/-heap-object/-heap-class/name/","title":"Name","text":"<p>//leakcanary/shark/HeapObject/HeapClass/name</p>"},{"location":"api/shark/-heap-object/-heap-class/name/#name","title":"name","text":"<p>val name: String</p> <p>The name of this class, identical to Class.getName. If this class is an array class, the name has a suffix of brackets for each dimension of the array, e.g. com.Foo[][] is a class for 2 dimensional arrays of com.Foo.</p> <p>The behavior for primitive types changes depending on the VM that dumped the heap. JVM heap dumps don\u2019t have any HeapClass object for primitive types, instead the java.land.Class class has 9 instances (the 8 primitive types and void). Android heap dumps have an HeapClass object for primitive type and the java.land.Class class has no instance.</p> <p>If this is an array class, you can find the component type by removing the brackets at the end, e.g. name.substringBefore(\u2018[\u2018). Be careful when doing this for JVM heap dumps though, as if the component type is a primitive type there will not be a HeapClass object for it. This is especially tricky with N dimension primitive type arrays, which are instances of HeapObjectArray (vs single dimension primitive type arrays which are instances of HeapPrimitiveArray).</p>"},{"location":"api/shark/-heap-object/-heap-class/object-array-instances/","title":"Object array instances","text":"<p>//leakcanary/shark/HeapObject/HeapClass/objectArrayInstances</p>"},{"location":"api/shark/-heap-object/-heap-class/object-array-instances/#objectarrayinstances","title":"objectArrayInstances","text":"<p>val objectArrayInstances: Sequence&lt;HeapObject.HeapObjectArray&gt;</p>"},{"location":"api/shark/-heap-object/-heap-class/object-id/","title":"Object id","text":"<p>//leakcanary/shark/HeapObject/HeapClass/objectId</p>"},{"location":"api/shark/-heap-object/-heap-class/object-id/#objectid","title":"objectId","text":"<p>open override val objectId: Long</p> <p>The heap identifier of this object.</p>"},{"location":"api/shark/-heap-object/-heap-class/object-index/","title":"Object index","text":"<p>//leakcanary/shark/HeapObject/HeapClass/objectIndex</p>"},{"location":"api/shark/-heap-object/-heap-class/object-index/#objectindex","title":"objectIndex","text":"<p>open override val objectIndex: Int</p> <p>An positive object index that\u2019s specific to how Shark stores objects in memory. The index starts at 0 and ends at HeapGraph.objectCount - 1. There are no gaps, every index value corresponds to an object. Classes are first, then instances, then object arrays then primitive arrays.</p>"},{"location":"api/shark/-heap-object/-heap-class/primitive-array-instances/","title":"Primitive array instances","text":"<p>//leakcanary/shark/HeapObject/HeapClass/primitiveArrayInstances</p>"},{"location":"api/shark/-heap-object/-heap-class/primitive-array-instances/#primitivearrayinstances","title":"primitiveArrayInstances","text":"<p>val primitiveArrayInstances: Sequence&lt;HeapObject.HeapPrimitiveArray&gt;</p> <p>Primitive arrays are one dimensional arrays of a primitive type. N-dimension arrays of primitive types (e.g. int[][]) are object arrays pointing to primitive arrays.</p>"},{"location":"api/shark/-heap-object/-heap-class/read-fields-byte-size/","title":"Read fields byte size","text":"<p>//leakcanary/shark/HeapObject/HeapClass/readFieldsByteSize</p>"},{"location":"api/shark/-heap-object/-heap-class/read-fields-byte-size/#readfieldsbytesize","title":"readFieldsByteSize","text":"<p>fun readFieldsByteSize(): Int</p> <p>The total byte size of fields for instances of this class, computed as the sum of the individual size of each field of this class. This does not include the size of fields from superclasses.</p> <p>This may trigger IO reads.</p>"},{"location":"api/shark/-heap-object/-heap-class/read-fields-byte-size/#see-also","title":"See also","text":"<p>main</p> shark.HeapObject.HeapClass"},{"location":"api/shark/-heap-object/-heap-class/read-record-fields/","title":"Read record fields","text":"<p>//leakcanary/shark/HeapObject/HeapClass/readRecordFields</p>"},{"location":"api/shark/-heap-object/-heap-class/read-record-fields/#readrecordfields","title":"readRecordFields","text":"<p>fun readRecordFields(): List&lt;HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecord.FieldRecord&gt;</p>"},{"location":"api/shark/-heap-object/-heap-class/read-record-static-fields/","title":"Read record static fields","text":"<p>//leakcanary/shark/HeapObject/HeapClass/readRecordStaticFields</p>"},{"location":"api/shark/-heap-object/-heap-class/read-record-static-fields/#readrecordstaticfields","title":"readRecordStaticFields","text":"<p>fun readRecordStaticFields(): List&lt;HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecord.StaticFieldRecord&gt;</p>"},{"location":"api/shark/-heap-object/-heap-class/read-record/","title":"Read record","text":"<p>//leakcanary/shark/HeapObject/HeapClass/readRecord</p>"},{"location":"api/shark/-heap-object/-heap-class/read-record/#readrecord","title":"readRecord","text":"<p>open override fun readRecord(): HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecord</p> <p>Reads and returns the underlying ClassDumpRecord.</p> <p>This may trigger IO reads.</p>"},{"location":"api/shark/-heap-object/-heap-class/read-static-field/","title":"Read static field","text":"<p>//leakcanary/shark/HeapObject/HeapClass/readStaticField</p>"},{"location":"api/shark/-heap-object/-heap-class/read-static-field/#readstaticfield","title":"readStaticField","text":"<p>fun readStaticField(fieldName: String): HeapField?</p> <p>Returns a HeapField object that reflects the specified declared field of the class represented by this HeapClass object, or null if this field does not exist. The name parameter specifies the simple name of the desired field.</p> <p>Also available as a convenience operator: get</p> <p>This may trigger IO reads.</p>"},{"location":"api/shark/-heap-object/-heap-class/read-static-fields/","title":"Read static fields","text":"<p>//leakcanary/shark/HeapObject/HeapClass/readStaticFields</p>"},{"location":"api/shark/-heap-object/-heap-class/read-static-fields/#readstaticfields","title":"readStaticFields","text":"<p>fun readStaticFields(): Sequence&lt;HeapField&gt;</p> <p>The static fields of this class, as a sequence of HeapField.</p> <p>This may trigger IO reads.</p>"},{"location":"api/shark/-heap-object/-heap-class/record-size/","title":"Record size","text":"<p>//leakcanary/shark/HeapObject/HeapClass/recordSize</p>"},{"location":"api/shark/-heap-object/-heap-class/record-size/#recordsize","title":"recordSize","text":"<p>open override val recordSize: Int</p> <p>The total byte size for the record of this object in the heap dump.</p>"},{"location":"api/shark/-heap-object/-heap-class/simple-name/","title":"Simple name","text":"<p>//leakcanary/shark/HeapObject/HeapClass/simpleName</p>"},{"location":"api/shark/-heap-object/-heap-class/simple-name/#simplename","title":"simpleName","text":"<p>val simpleName: String</p> <p>Returns name stripped of any string content before the last period (included).</p>"},{"location":"api/shark/-heap-object/-heap-class/subclass-of/","title":"Subclass of","text":"<p>//leakcanary/shark/HeapObject/HeapClass/subclassOf</p>"},{"location":"api/shark/-heap-object/-heap-class/subclass-of/#subclassof","title":"subclassOf","text":"<p>infix fun subclassOf(superclass: HeapObject.HeapClass): Boolean</p> <p>Returns true if superclass is a superclass of this HeapClass.</p>"},{"location":"api/shark/-heap-object/-heap-class/subclasses/","title":"Subclasses","text":"<p>//leakcanary/shark/HeapObject/HeapClass/subclasses</p>"},{"location":"api/shark/-heap-object/-heap-class/subclasses/#subclasses","title":"subclasses","text":"<p>val subclasses: Sequence&lt;HeapObject.HeapClass&gt;</p> <p>All the subclasses (direct and indirect) of this class, in the order they were recorded in the heap dump.</p>"},{"location":"api/shark/-heap-object/-heap-class/superclass-of/","title":"Superclass of","text":"<p>//leakcanary/shark/HeapObject/HeapClass/superclassOf</p>"},{"location":"api/shark/-heap-object/-heap-class/superclass-of/#superclassof","title":"superclassOf","text":"<p>infix fun superclassOf(subclass: HeapObject.HeapClass): Boolean</p> <p>Returns true if subclass is a sub class of this HeapClass.</p>"},{"location":"api/shark/-heap-object/-heap-class/superclass/","title":"Superclass","text":"<p>//leakcanary/shark/HeapObject/HeapClass/superclass</p>"},{"location":"api/shark/-heap-object/-heap-class/superclass/#superclass","title":"superclass","text":"<p>val superclass: HeapObject.HeapClass?</p> <p>The HeapClass representing the superclass of this HeapClass. If this HeapClass represents either the Object class or a primitive type, then null is returned. If this HeapClass represents an array class then the HeapClass object representing the Object class is returned.</p>"},{"location":"api/shark/-heap-object/-heap-class/to-string/","title":"To string","text":"<p>//leakcanary/shark/HeapObject/HeapClass/toString</p>"},{"location":"api/shark/-heap-object/-heap-class/to-string/#tostring","title":"toString","text":"<p>open override fun toString(): String</p>"},{"location":"api/shark/-heap-object/-heap-instance/","title":"Index","text":"<p>//leakcanary/shark/HeapObject/HeapInstance</p>"},{"location":"api/shark/-heap-object/-heap-instance/#heapinstance","title":"HeapInstance","text":"<p>class HeapInstance : HeapObject</p> <p>An instance in the heap dump.</p>"},{"location":"api/shark/-heap-object/-heap-instance/#functions","title":"Functions","text":"Name Summary get operator fun get(declaringClassName: String, fieldName: String): HeapField?operator fun get(declaringClass: KClass&lt;out Any&gt;, fieldName: String): HeapField? instanceOf infix fun instanceOf(className: String): BooleanReturns true if this is an instance of the class named className or an instance of a subclass of that class.infix fun instanceOf(expectedClass: KClass&lt;*&gt;): Booleaninfix fun instanceOf(expectedClass: HeapObject.HeapClass): BooleanReturns true if this is an instance of expectedClass or an instance of a subclass of that class. readAsJavaString fun readAsJavaString(): String?If this HeapInstance is an instance of the String class, returns a String instance with content that matches the string in the heap dump. Otherwise returns null. readField fun readField(declaringClassName: String, fieldName: String): HeapField?Returns a HeapField object that reflects the specified declared field of the instance represented by this HeapInstance object, or null if this field does not exist. The declaringClassName specifies the class in which the desired field is declared, and the fieldName parameter specifies the simple name of the desired field.fun readField(declaringClass: KClass&lt;out Any&gt;, fieldName: String): HeapField? readFields fun readFields(): Sequence&lt;HeapField&gt;The fields of this instance, as a sequence of HeapField. readRecord open override fun readRecord(): HprofRecord.HeapDumpRecord.ObjectRecord.InstanceDumpRecordReads and returns the underlying InstanceDumpRecord. toString open override fun toString(): String"},{"location":"api/shark/-heap-object/-heap-instance/#properties","title":"Properties","text":"Name Summary asClass val asClass: HeapObject.HeapClass?This HeapObject as a HeapClass if it is one, or null otherwise asInstance val asInstance: HeapObject.HeapInstance?This HeapObject as a HeapInstance if it is one, or null otherwise asObjectArray val asObjectArray: HeapObject.HeapObjectArray?This HeapObject as a HeapObjectArray if it is one, or null otherwise asPrimitiveArray val asPrimitiveArray: HeapObject.HeapPrimitiveArray?This HeapObject as a HeapPrimitiveArray if it is one, or null otherwise byteSize val byteSize: Int graph open override val graph: HeapGraphThe graph of objects in the heap, which you can use to navigate the heap. instanceClass val instanceClass: HeapObject.HeapClassThe class of this instance. instanceClassId val instanceClassId: LongThe heap identifier of the class of this instance. instanceClassName val instanceClassName: StringThe name of the class of this instance, identical to Class.getName. instanceClassSimpleName val instanceClassSimpleName: StringReturns instanceClassName stripped of any string content before the last period (included). isPrimitiveWrapper val isPrimitiveWrapper: BooleanWhether this is an instance of a primitive wrapper type. objectId open override val objectId: LongThe heap identifier of this object. objectIndex open override val objectIndex: IntAn positive object index that\u2019s specific to how Shark stores objects in memory. The index starts at 0 and ends at HeapGraph.objectCount - 1. There are no gaps, every index value corresponds to an object. Classes are first, then instances, then object arrays then primitive arrays. positiveObjectId val positiveObjectId: LongobjectId masked to be a positive unique identifier, as reported in Android Studio. recordSize open override val recordSize: IntThe total byte size for the record of this object in the heap dump."},{"location":"api/shark/-heap-object/-heap-instance/#extensions","title":"Extensions","text":"Name Summary hexIdentityHashCode val HeapObject.HeapInstance.hexIdentityHashCode: String?The system identity hashCode represented as hex, or null if it couldn\u2019t be found. This is the string identifier you see when calling Object.toString() at runtime on a class that does not override its hashCode() method, e.g. com.example.MyThing@6bd57cf identityHashCode val HeapObject.HeapInstance.identityHashCode: Int?The system identity hash code, or null if it couldn\u2019t be found."},{"location":"api/shark/-heap-object/-heap-instance/byte-size/","title":"Byte size","text":"<p>//leakcanary/shark/HeapObject/HeapInstance/byteSize</p>"},{"location":"api/shark/-heap-object/-heap-instance/byte-size/#bytesize","title":"byteSize","text":"<p>val byteSize: Int</p>"},{"location":"api/shark/-heap-object/-heap-instance/byte-size/#see-also","title":"See also","text":"<p>main</p> shark.HeapObject.HeapClass"},{"location":"api/shark/-heap-object/-heap-instance/get/","title":"Get","text":"<p>//leakcanary/shark/HeapObject/HeapInstance/get</p>"},{"location":"api/shark/-heap-object/-heap-instance/get/#get","title":"get","text":"<p>operator fun get(declaringClass: KClass&lt;out Any&gt;, fieldName: String): HeapField?</p> <p>operator fun get(declaringClassName: String, fieldName: String): HeapField?</p>"},{"location":"api/shark/-heap-object/-heap-instance/get/#see-also","title":"See also","text":"<p>main</p> shark.HeapObject.HeapInstance"},{"location":"api/shark/-heap-object/-heap-instance/graph/","title":"Graph","text":"<p>//leakcanary/shark/HeapObject/HeapInstance/graph</p>"},{"location":"api/shark/-heap-object/-heap-instance/graph/#graph","title":"graph","text":"<p>open override val graph: HeapGraph</p> <p>The graph of objects in the heap, which you can use to navigate the heap.</p>"},{"location":"api/shark/-heap-object/-heap-instance/instance-class-id/","title":"Instance class id","text":"<p>//leakcanary/shark/HeapObject/HeapInstance/instanceClassId</p>"},{"location":"api/shark/-heap-object/-heap-instance/instance-class-id/#instanceclassid","title":"instanceClassId","text":"<p>val instanceClassId: Long</p> <p>The heap identifier of the class of this instance.</p>"},{"location":"api/shark/-heap-object/-heap-instance/instance-class-name/","title":"Instance class name","text":"<p>//leakcanary/shark/HeapObject/HeapInstance/instanceClassName</p>"},{"location":"api/shark/-heap-object/-heap-instance/instance-class-name/#instanceclassname","title":"instanceClassName","text":"<p>val instanceClassName: String</p> <p>The name of the class of this instance, identical to Class.getName.</p>"},{"location":"api/shark/-heap-object/-heap-instance/instance-class-simple-name/","title":"Instance class simple name","text":"<p>//leakcanary/shark/HeapObject/HeapInstance/instanceClassSimpleName</p>"},{"location":"api/shark/-heap-object/-heap-instance/instance-class-simple-name/#instanceclasssimplename","title":"instanceClassSimpleName","text":"<p>val instanceClassSimpleName: String</p> <p>Returns instanceClassName stripped of any string content before the last period (included).</p>"},{"location":"api/shark/-heap-object/-heap-instance/instance-class/","title":"Instance class","text":"<p>//leakcanary/shark/HeapObject/HeapInstance/instanceClass</p>"},{"location":"api/shark/-heap-object/-heap-instance/instance-class/#instanceclass","title":"instanceClass","text":"<p>val instanceClass: HeapObject.HeapClass</p> <p>The class of this instance.</p>"},{"location":"api/shark/-heap-object/-heap-instance/instance-of/","title":"Instance of","text":"<p>//leakcanary/shark/HeapObject/HeapInstance/instanceOf</p>"},{"location":"api/shark/-heap-object/-heap-instance/instance-of/#instanceof","title":"instanceOf","text":"<p>infix fun instanceOf(className: String): Boolean</p> <p>Returns true if this is an instance of the class named className or an instance of a subclass of that class.</p> <p>infix fun instanceOf(expectedClass: KClass&lt;*&gt;): Boolean</p> <p>infix fun instanceOf(expectedClass: HeapObject.HeapClass): Boolean</p> <p>Returns true if this is an instance of expectedClass or an instance of a subclass of that class.</p>"},{"location":"api/shark/-heap-object/-heap-instance/is-primitive-wrapper/","title":"Is primitive wrapper","text":"<p>//leakcanary/shark/HeapObject/HeapInstance/isPrimitiveWrapper</p>"},{"location":"api/shark/-heap-object/-heap-instance/is-primitive-wrapper/#isprimitivewrapper","title":"isPrimitiveWrapper","text":"<p>val isPrimitiveWrapper: Boolean</p> <p>Whether this is an instance of a primitive wrapper type.</p>"},{"location":"api/shark/-heap-object/-heap-instance/object-id/","title":"Object id","text":"<p>//leakcanary/shark/HeapObject/HeapInstance/objectId</p>"},{"location":"api/shark/-heap-object/-heap-instance/object-id/#objectid","title":"objectId","text":"<p>open override val objectId: Long</p> <p>The heap identifier of this object.</p>"},{"location":"api/shark/-heap-object/-heap-instance/object-index/","title":"Object index","text":"<p>//leakcanary/shark/HeapObject/HeapInstance/objectIndex</p>"},{"location":"api/shark/-heap-object/-heap-instance/object-index/#objectindex","title":"objectIndex","text":"<p>open override val objectIndex: Int</p> <p>An positive object index that\u2019s specific to how Shark stores objects in memory. The index starts at 0 and ends at HeapGraph.objectCount - 1. There are no gaps, every index value corresponds to an object. Classes are first, then instances, then object arrays then primitive arrays.</p>"},{"location":"api/shark/-heap-object/-heap-instance/read-as-java-string/","title":"Read as java string","text":"<p>//leakcanary/shark/HeapObject/HeapInstance/readAsJavaString</p>"},{"location":"api/shark/-heap-object/-heap-instance/read-as-java-string/#readasjavastring","title":"readAsJavaString","text":"<p>fun readAsJavaString(): String?</p> <p>If this HeapInstance is an instance of the String class, returns a String instance with content that matches the string in the heap dump. Otherwise returns null.</p> <p>This may trigger IO reads.</p>"},{"location":"api/shark/-heap-object/-heap-instance/read-field/","title":"Read field","text":"<p>//leakcanary/shark/HeapObject/HeapInstance/readField</p>"},{"location":"api/shark/-heap-object/-heap-instance/read-field/#readfield","title":"readField","text":"<p>fun readField(declaringClass: KClass&lt;out Any&gt;, fieldName: String): HeapField?</p>"},{"location":"api/shark/-heap-object/-heap-instance/read-field/#see-also","title":"See also","text":"<p>main</p> shark.HeapObject.HeapInstance <p>fun readField(declaringClassName: String, fieldName: String): HeapField?</p> <p>Returns a HeapField object that reflects the specified declared field of the instance represented by this HeapInstance object, or null if this field does not exist. The declaringClassName specifies the class in which the desired field is declared, and the fieldName parameter specifies the simple name of the desired field.</p> <p>Also available as a convenience operator: get</p> <p>This may trigger IO reads.</p>"},{"location":"api/shark/-heap-object/-heap-instance/read-fields/","title":"Read fields","text":"<p>//leakcanary/shark/HeapObject/HeapInstance/readFields</p>"},{"location":"api/shark/-heap-object/-heap-instance/read-fields/#readfields","title":"readFields","text":"<p>fun readFields(): Sequence&lt;HeapField&gt;</p> <p>The fields of this instance, as a sequence of HeapField.</p> <p>This may trigger IO reads.</p>"},{"location":"api/shark/-heap-object/-heap-instance/read-record/","title":"Read record","text":"<p>//leakcanary/shark/HeapObject/HeapInstance/readRecord</p>"},{"location":"api/shark/-heap-object/-heap-instance/read-record/#readrecord","title":"readRecord","text":"<p>open override fun readRecord(): HprofRecord.HeapDumpRecord.ObjectRecord.InstanceDumpRecord</p> <p>Reads and returns the underlying InstanceDumpRecord.</p> <p>This may trigger IO reads.</p>"},{"location":"api/shark/-heap-object/-heap-instance/record-size/","title":"Record size","text":"<p>//leakcanary/shark/HeapObject/HeapInstance/recordSize</p>"},{"location":"api/shark/-heap-object/-heap-instance/record-size/#recordsize","title":"recordSize","text":"<p>open override val recordSize: Int</p> <p>The total byte size for the record of this object in the heap dump.</p>"},{"location":"api/shark/-heap-object/-heap-instance/to-string/","title":"To string","text":"<p>//leakcanary/shark/HeapObject/HeapInstance/toString</p>"},{"location":"api/shark/-heap-object/-heap-instance/to-string/#tostring","title":"toString","text":"<p>open override fun toString(): String</p>"},{"location":"api/shark/-heap-object/-heap-object-array/","title":"Index","text":"<p>//leakcanary/shark/HeapObject/HeapObjectArray</p>"},{"location":"api/shark/-heap-object/-heap-object-array/#heapobjectarray","title":"HeapObjectArray","text":"<p>class HeapObjectArray : HeapObject</p> <p>An object array in the heap dump.</p>"},{"location":"api/shark/-heap-object/-heap-object-array/#functions","title":"Functions","text":"Name Summary readElements fun readElements(): Sequence&lt;HeapValue&gt;The elements in this array, as a sequence of HeapValue. readRecord open override fun readRecord(): HprofRecord.HeapDumpRecord.ObjectRecord.ObjectArrayDumpRecordReads and returns the underlying ObjectArrayDumpRecord. toString open override fun toString(): String"},{"location":"api/shark/-heap-object/-heap-object-array/#properties","title":"Properties","text":"Name Summary arrayClass val arrayClass: HeapObject.HeapClassThe class of this array. arrayClassId val arrayClassId: LongThe heap identifier of the class of this array. arrayClassName val arrayClassName: StringThe name of the class of this array, identical to Class.getName. arrayClassSimpleName val arrayClassSimpleName: StringReturns arrayClassName stripped of any string content before the last period (included). asClass val asClass: HeapObject.HeapClass?This HeapObject as a HeapClass if it is one, or null otherwise asInstance val asInstance: HeapObject.HeapInstance?This HeapObject as a HeapInstance if it is one, or null otherwise asObjectArray val asObjectArray: HeapObject.HeapObjectArray?This HeapObject as a HeapObjectArray if it is one, or null otherwise asPrimitiveArray val asPrimitiveArray: HeapObject.HeapPrimitiveArray?This HeapObject as a HeapPrimitiveArray if it is one, or null otherwise byteSize val byteSize: IntThe total byte shallow size of elements in this array. graph open override val graph: HeapGraphThe graph of objects in the heap, which you can use to navigate the heap. objectId open override val objectId: LongThe heap identifier of this object. objectIndex open override val objectIndex: IntAn positive object index that\u2019s specific to how Shark stores objects in memory. The index starts at 0 and ends at HeapGraph.objectCount - 1. There are no gaps, every index value corresponds to an object. Classes are first, then instances, then object arrays then primitive arrays. positiveObjectId val positiveObjectId: LongobjectId masked to be a positive unique identifier, as reported in Android Studio. recordSize open override val recordSize: IntThe total byte size for the record of this object in the heap dump."},{"location":"api/shark/-heap-object/-heap-object-array/array-class-id/","title":"Array class id","text":"<p>//leakcanary/shark/HeapObject/HeapObjectArray/arrayClassId</p>"},{"location":"api/shark/-heap-object/-heap-object-array/array-class-id/#arrayclassid","title":"arrayClassId","text":"<p>val arrayClassId: Long</p> <p>The heap identifier of the class of this array.</p>"},{"location":"api/shark/-heap-object/-heap-object-array/array-class-name/","title":"Array class name","text":"<p>//leakcanary/shark/HeapObject/HeapObjectArray/arrayClassName</p>"},{"location":"api/shark/-heap-object/-heap-object-array/array-class-name/#arrayclassname","title":"arrayClassName","text":"<p>val arrayClassName: String</p> <p>The name of the class of this array, identical to Class.getName.</p>"},{"location":"api/shark/-heap-object/-heap-object-array/array-class-simple-name/","title":"Array class simple name","text":"<p>//leakcanary/shark/HeapObject/HeapObjectArray/arrayClassSimpleName</p>"},{"location":"api/shark/-heap-object/-heap-object-array/array-class-simple-name/#arrayclasssimplename","title":"arrayClassSimpleName","text":"<p>val arrayClassSimpleName: String</p> <p>Returns arrayClassName stripped of any string content before the last period (included).</p>"},{"location":"api/shark/-heap-object/-heap-object-array/array-class/","title":"Array class","text":"<p>//leakcanary/shark/HeapObject/HeapObjectArray/arrayClass</p>"},{"location":"api/shark/-heap-object/-heap-object-array/array-class/#arrayclass","title":"arrayClass","text":"<p>val arrayClass: HeapObject.HeapClass</p> <p>The class of this array.</p>"},{"location":"api/shark/-heap-object/-heap-object-array/byte-size/","title":"Byte size","text":"<p>//leakcanary/shark/HeapObject/HeapObjectArray/byteSize</p>"},{"location":"api/shark/-heap-object/-heap-object-array/byte-size/#bytesize","title":"byteSize","text":"<p>val byteSize: Int</p> <p>The total byte shallow size of elements in this array.</p>"},{"location":"api/shark/-heap-object/-heap-object-array/graph/","title":"Graph","text":"<p>//leakcanary/shark/HeapObject/HeapObjectArray/graph</p>"},{"location":"api/shark/-heap-object/-heap-object-array/graph/#graph","title":"graph","text":"<p>open override val graph: HeapGraph</p> <p>The graph of objects in the heap, which you can use to navigate the heap.</p>"},{"location":"api/shark/-heap-object/-heap-object-array/object-id/","title":"Object id","text":"<p>//leakcanary/shark/HeapObject/HeapObjectArray/objectId</p>"},{"location":"api/shark/-heap-object/-heap-object-array/object-id/#objectid","title":"objectId","text":"<p>open override val objectId: Long</p> <p>The heap identifier of this object.</p>"},{"location":"api/shark/-heap-object/-heap-object-array/object-index/","title":"Object index","text":"<p>//leakcanary/shark/HeapObject/HeapObjectArray/objectIndex</p>"},{"location":"api/shark/-heap-object/-heap-object-array/object-index/#objectindex","title":"objectIndex","text":"<p>open override val objectIndex: Int</p> <p>An positive object index that\u2019s specific to how Shark stores objects in memory. The index starts at 0 and ends at HeapGraph.objectCount - 1. There are no gaps, every index value corresponds to an object. Classes are first, then instances, then object arrays then primitive arrays.</p>"},{"location":"api/shark/-heap-object/-heap-object-array/read-elements/","title":"Read elements","text":"<p>//leakcanary/shark/HeapObject/HeapObjectArray/readElements</p>"},{"location":"api/shark/-heap-object/-heap-object-array/read-elements/#readelements","title":"readElements","text":"<p>fun readElements(): Sequence&lt;HeapValue&gt;</p> <p>The elements in this array, as a sequence of HeapValue.</p> <p>This may trigger IO reads.</p>"},{"location":"api/shark/-heap-object/-heap-object-array/read-record/","title":"Read record","text":"<p>//leakcanary/shark/HeapObject/HeapObjectArray/readRecord</p>"},{"location":"api/shark/-heap-object/-heap-object-array/read-record/#readrecord","title":"readRecord","text":"<p>open override fun readRecord(): HprofRecord.HeapDumpRecord.ObjectRecord.ObjectArrayDumpRecord</p> <p>Reads and returns the underlying ObjectArrayDumpRecord.</p> <p>This may trigger IO reads.</p>"},{"location":"api/shark/-heap-object/-heap-object-array/record-size/","title":"Record size","text":"<p>//leakcanary/shark/HeapObject/HeapObjectArray/recordSize</p>"},{"location":"api/shark/-heap-object/-heap-object-array/record-size/#recordsize","title":"recordSize","text":"<p>open override val recordSize: Int</p> <p>The total byte size for the record of this object in the heap dump.</p>"},{"location":"api/shark/-heap-object/-heap-object-array/to-string/","title":"To string","text":"<p>//leakcanary/shark/HeapObject/HeapObjectArray/toString</p>"},{"location":"api/shark/-heap-object/-heap-object-array/to-string/#tostring","title":"toString","text":"<p>open override fun toString(): String</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/","title":"Index","text":"<p>//leakcanary/shark/HeapObject/HeapPrimitiveArray</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/#heapprimitivearray","title":"HeapPrimitiveArray","text":"<p>class HeapPrimitiveArray : HeapObject</p> <p>A primitive array in the heap dump.</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/#functions","title":"Functions","text":"Name Summary readRecord open override fun readRecord(): HprofRecord.HeapDumpRecord.ObjectRecord.PrimitiveArrayDumpRecordReads and returns the underlying PrimitiveArrayDumpRecord. toString open override fun toString(): String"},{"location":"api/shark/-heap-object/-heap-primitive-array/#properties","title":"Properties","text":"Name Summary arrayClass val arrayClass: HeapObject.HeapClassThe class of this array. arrayClassName val arrayClassName: StringThe name of the class of this array, identical to Class.getName. asClass val asClass: HeapObject.HeapClass?This HeapObject as a HeapClass if it is one, or null otherwise asInstance val asInstance: HeapObject.HeapInstance?This HeapObject as a HeapInstance if it is one, or null otherwise asObjectArray val asObjectArray: HeapObject.HeapObjectArray?This HeapObject as a HeapObjectArray if it is one, or null otherwise asPrimitiveArray val asPrimitiveArray: HeapObject.HeapPrimitiveArray?This HeapObject as a HeapPrimitiveArray if it is one, or null otherwise byteSize val byteSize: IntThe total byte shallow size of elements in this array. graph open override val graph: HeapGraphThe graph of objects in the heap, which you can use to navigate the heap. objectId open override val objectId: LongThe heap identifier of this object. objectIndex open override val objectIndex: IntAn positive object index that\u2019s specific to how Shark stores objects in memory. The index starts at 0 and ends at HeapGraph.objectCount - 1. There are no gaps, every index value corresponds to an object. Classes are first, then instances, then object arrays then primitive arrays. positiveObjectId val positiveObjectId: LongobjectId masked to be a positive unique identifier, as reported in Android Studio. primitiveType val primitiveType: PrimitiveTypeThe PrimitiveType of elements in this array. recordSize open override val recordSize: IntThe total byte size for the record of this object in the heap dump."},{"location":"api/shark/-heap-object/-heap-primitive-array/array-class-name/","title":"Array class name","text":"<p>//leakcanary/shark/HeapObject/HeapPrimitiveArray/arrayClassName</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/array-class-name/#arrayclassname","title":"arrayClassName","text":"<p>val arrayClassName: String</p> <p>The name of the class of this array, identical to Class.getName.</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/array-class/","title":"Array class","text":"<p>//leakcanary/shark/HeapObject/HeapPrimitiveArray/arrayClass</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/array-class/#arrayclass","title":"arrayClass","text":"<p>val arrayClass: HeapObject.HeapClass</p> <p>The class of this array.</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/byte-size/","title":"Byte size","text":"<p>//leakcanary/shark/HeapObject/HeapPrimitiveArray/byteSize</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/byte-size/#bytesize","title":"byteSize","text":"<p>val byteSize: Int</p> <p>The total byte shallow size of elements in this array.</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/graph/","title":"Graph","text":"<p>//leakcanary/shark/HeapObject/HeapPrimitiveArray/graph</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/graph/#graph","title":"graph","text":"<p>open override val graph: HeapGraph</p> <p>The graph of objects in the heap, which you can use to navigate the heap.</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/object-id/","title":"Object id","text":"<p>//leakcanary/shark/HeapObject/HeapPrimitiveArray/objectId</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/object-id/#objectid","title":"objectId","text":"<p>open override val objectId: Long</p> <p>The heap identifier of this object.</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/object-index/","title":"Object index","text":"<p>//leakcanary/shark/HeapObject/HeapPrimitiveArray/objectIndex</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/object-index/#objectindex","title":"objectIndex","text":"<p>open override val objectIndex: Int</p> <p>An positive object index that\u2019s specific to how Shark stores objects in memory. The index starts at 0 and ends at HeapGraph.objectCount - 1. There are no gaps, every index value corresponds to an object. Classes are first, then instances, then object arrays then primitive arrays.</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/primitive-type/","title":"Primitive type","text":"<p>//leakcanary/shark/HeapObject/HeapPrimitiveArray/primitiveType</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/primitive-type/#primitivetype","title":"primitiveType","text":"<p>val primitiveType: PrimitiveType</p> <p>The PrimitiveType of elements in this array.</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/read-record/","title":"Read record","text":"<p>//leakcanary/shark/HeapObject/HeapPrimitiveArray/readRecord</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/read-record/#readrecord","title":"readRecord","text":"<p>open override fun readRecord(): HprofRecord.HeapDumpRecord.ObjectRecord.PrimitiveArrayDumpRecord</p> <p>Reads and returns the underlying PrimitiveArrayDumpRecord.</p> <p>This may trigger IO reads.</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/record-size/","title":"Record size","text":"<p>//leakcanary/shark/HeapObject/HeapPrimitiveArray/recordSize</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/record-size/#recordsize","title":"recordSize","text":"<p>open override val recordSize: Int</p> <p>The total byte size for the record of this object in the heap dump.</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/to-string/","title":"To string","text":"<p>//leakcanary/shark/HeapObject/HeapPrimitiveArray/toString</p>"},{"location":"api/shark/-heap-object/-heap-primitive-array/to-string/#tostring","title":"toString","text":"<p>open override fun toString(): String</p>"},{"location":"api/shark/-heap-value/","title":"Index","text":"<p>//leakcanary/shark/HeapValue</p>"},{"location":"api/shark/-heap-value/#heapvalue","title":"HeapValue","text":"<p>class HeapValue(val graph: HeapGraph, val holder: ValueHolder)</p> <p>Represents a value in the heap dump, which can be an object reference or a primitive type.</p>"},{"location":"api/shark/-heap-value/#constructors","title":"Constructors","text":"HeapValue fun HeapValue(graph: HeapGraph, holder: ValueHolder)"},{"location":"api/shark/-heap-value/#functions","title":"Functions","text":"Name Summary readAsJavaString fun readAsJavaString(): String?If this HeapValue if it represents a non null object reference to an instance of the String class that exists in the heap dump, returns a String instance with content that matches the string in the heap dump. Otherwise returns null."},{"location":"api/shark/-heap-value/#properties","title":"Properties","text":"Name Summary asBoolean val asBoolean: Boolean?This HeapValue as a Boolean if it represents one, or null otherwise. asByte val asByte: Byte?This HeapValue as a Byte if it represents one, or null otherwise. asChar val asChar: Char?This HeapValue as a Char if it represents one, or null otherwise. asDouble val asDouble: Double?This HeapValue as a Double if it represents one, or null otherwise. asFloat val asFloat: Float?This HeapValue as a Float if it represents one, or null otherwise. asInt val asInt: Int?This HeapValue as an Int if it represents one, or null otherwise. asLong val asLong: Long?This HeapValue as a Long if it represents one, or null otherwise. asNonNullObjectId val asNonNullObjectId: Long?This HeapValue as a Long if it represents a non null object reference, or null otherwise. asObject val asObject: HeapObject?The HeapObject referenced by this HeapValue if it represents a non null object reference, or null otherwise. asObjectId val asObjectId: Long?This HeapValue as a Long if it represents an object reference, or null otherwise. asShort val asShort: Short?This HeapValue as a Short if it represents one, or null otherwise. graph val graph: HeapGraphThe graph of objects in the heap, which you can use to navigate the heap. holder val holder: ValueHolderHolds the actual value that this HeapValue represents. isNonNullReference val isNonNullReference: BooleanTrue is this HeapValue represents a non null object reference, false otherwise. isNullReference val isNullReference: BooleanTrue is this HeapValue represents a null object reference, false otherwise."},{"location":"api/shark/-heap-value/#extensions","title":"Extensions","text":"Name Summary heapValueAsString fun HeapValue.heapValueAsString(): String"},{"location":"api/shark/-heap-value/-heap-value/","title":"heap value","text":"<p>//leakcanary/shark/HeapValue/HeapValue</p>"},{"location":"api/shark/-heap-value/-heap-value/#heapvalue","title":"HeapValue","text":"<p>fun HeapValue(graph: HeapGraph, holder: ValueHolder)</p>"},{"location":"api/shark/-heap-value/as-boolean/","title":"As boolean","text":"<p>//leakcanary/shark/HeapValue/asBoolean</p>"},{"location":"api/shark/-heap-value/as-boolean/#asboolean","title":"asBoolean","text":"<p>val asBoolean: Boolean?</p> <p>This HeapValue as a Boolean if it represents one, or null otherwise.</p>"},{"location":"api/shark/-heap-value/as-byte/","title":"As byte","text":"<p>//leakcanary/shark/HeapValue/asByte</p>"},{"location":"api/shark/-heap-value/as-byte/#asbyte","title":"asByte","text":"<p>val asByte: Byte?</p> <p>This HeapValue as a Byte if it represents one, or null otherwise.</p>"},{"location":"api/shark/-heap-value/as-char/","title":"As char","text":"<p>//leakcanary/shark/HeapValue/asChar</p>"},{"location":"api/shark/-heap-value/as-char/#aschar","title":"asChar","text":"<p>val asChar: Char?</p> <p>This HeapValue as a Char if it represents one, or null otherwise.</p>"},{"location":"api/shark/-heap-value/as-double/","title":"As double","text":"<p>//leakcanary/shark/HeapValue/asDouble</p>"},{"location":"api/shark/-heap-value/as-double/#asdouble","title":"asDouble","text":"<p>val asDouble: Double?</p> <p>This HeapValue as a Double if it represents one, or null otherwise.</p>"},{"location":"api/shark/-heap-value/as-float/","title":"As float","text":"<p>//leakcanary/shark/HeapValue/asFloat</p>"},{"location":"api/shark/-heap-value/as-float/#asfloat","title":"asFloat","text":"<p>val asFloat: Float?</p> <p>This HeapValue as a Float if it represents one, or null otherwise.</p>"},{"location":"api/shark/-heap-value/as-int/","title":"As int","text":"<p>//leakcanary/shark/HeapValue/asInt</p>"},{"location":"api/shark/-heap-value/as-int/#asint","title":"asInt","text":"<p>val asInt: Int?</p> <p>This HeapValue as an Int if it represents one, or null otherwise.</p>"},{"location":"api/shark/-heap-value/as-long/","title":"As long","text":"<p>//leakcanary/shark/HeapValue/asLong</p>"},{"location":"api/shark/-heap-value/as-long/#aslong","title":"asLong","text":"<p>val asLong: Long?</p> <p>This HeapValue as a Long if it represents one, or null otherwise.</p>"},{"location":"api/shark/-heap-value/as-non-null-object-id/","title":"As non null object id","text":"<p>//leakcanary/shark/HeapValue/asNonNullObjectId</p>"},{"location":"api/shark/-heap-value/as-non-null-object-id/#asnonnullobjectid","title":"asNonNullObjectId","text":"<p>val asNonNullObjectId: Long?</p> <p>This HeapValue as a Long if it represents a non null object reference, or null otherwise.</p>"},{"location":"api/shark/-heap-value/as-object-id/","title":"As object id","text":"<p>//leakcanary/shark/HeapValue/asObjectId</p>"},{"location":"api/shark/-heap-value/as-object-id/#asobjectid","title":"asObjectId","text":"<p>val asObjectId: Long?</p> <p>This HeapValue as a Long if it represents an object reference, or null otherwise.</p>"},{"location":"api/shark/-heap-value/as-object/","title":"As object","text":"<p>//leakcanary/shark/HeapValue/asObject</p>"},{"location":"api/shark/-heap-value/as-object/#asobject","title":"asObject","text":"<p>val asObject: HeapObject?</p> <p>The HeapObject referenced by this HeapValue if it represents a non null object reference, or null otherwise.</p>"},{"location":"api/shark/-heap-value/as-short/","title":"As short","text":"<p>//leakcanary/shark/HeapValue/asShort</p>"},{"location":"api/shark/-heap-value/as-short/#asshort","title":"asShort","text":"<p>val asShort: Short?</p> <p>This HeapValue as a Short if it represents one, or null otherwise.</p>"},{"location":"api/shark/-heap-value/graph/","title":"Graph","text":"<p>//leakcanary/shark/HeapValue/graph</p>"},{"location":"api/shark/-heap-value/graph/#graph","title":"graph","text":"<p>val graph: HeapGraph</p> <p>The graph of objects in the heap, which you can use to navigate the heap.</p>"},{"location":"api/shark/-heap-value/holder/","title":"Holder","text":"<p>//leakcanary/shark/HeapValue/holder</p>"},{"location":"api/shark/-heap-value/holder/#holder","title":"holder","text":"<p>val holder: ValueHolder</p> <p>Holds the actual value that this HeapValue represents.</p>"},{"location":"api/shark/-heap-value/is-non-null-reference/","title":"Is non null reference","text":"<p>//leakcanary/shark/HeapValue/isNonNullReference</p>"},{"location":"api/shark/-heap-value/is-non-null-reference/#isnonnullreference","title":"isNonNullReference","text":"<p>val isNonNullReference: Boolean</p> <p>True is this HeapValue represents a non null object reference, false otherwise.</p>"},{"location":"api/shark/-heap-value/is-null-reference/","title":"Is null reference","text":"<p>//leakcanary/shark/HeapValue/isNullReference</p>"},{"location":"api/shark/-heap-value/is-null-reference/#isnullreference","title":"isNullReference","text":"<p>val isNullReference: Boolean</p> <p>True is this HeapValue represents a null object reference, false otherwise.</p>"},{"location":"api/shark/-heap-value/read-as-java-string/","title":"Read as java string","text":"<p>//leakcanary/shark/HeapValue/readAsJavaString</p>"},{"location":"api/shark/-heap-value/read-as-java-string/#readasjavastring","title":"readAsJavaString","text":"<p>fun readAsJavaString(): String?</p> <p>If this HeapValue if it represents a non null object reference to an instance of the String class that exists in the heap dump, returns a String instance with content that matches the string in the heap dump. Otherwise returns null.</p> <p>This may trigger IO reads.</p>"},{"location":"api/shark/-hprof-deobfuscator/","title":"Index","text":"<p>//leakcanary/shark/HprofDeobfuscator</p>"},{"location":"api/shark/-hprof-deobfuscator/#hprofdeobfuscator","title":"HprofDeobfuscator","text":"<p>class HprofDeobfuscator</p> <p>Converts a Hprof file to another file with deobfuscated class and field names.</p>"},{"location":"api/shark/-hprof-deobfuscator/#constructors","title":"Constructors","text":"HprofDeobfuscator fun HprofDeobfuscator()"},{"location":"api/shark/-hprof-deobfuscator/#functions","title":"Functions","text":"Name Summary deobfuscate fun deobfuscate(proguardMapping: ProguardMapping, inputHprofFile: File, outputHprofFile: File = File(       inputHprofFile.parent, inputHprofFile.name.replace(       \".hprof\", \"-deobfuscated.hprof\"     ).let { if (it != inputHprofFile.name) it else inputHprofFile.name + \"-deobfuscated\" })): File"},{"location":"api/shark/-hprof-deobfuscator/-hprof-deobfuscator/","title":"hprof deobfuscator","text":"<p>//leakcanary/shark/HprofDeobfuscator/HprofDeobfuscator</p>"},{"location":"api/shark/-hprof-deobfuscator/-hprof-deobfuscator/#hprofdeobfuscator","title":"HprofDeobfuscator","text":"<p>fun HprofDeobfuscator()</p>"},{"location":"api/shark/-hprof-deobfuscator/deobfuscate/","title":"Deobfuscate","text":"<p>//leakcanary/shark/HprofDeobfuscator/deobfuscate</p>"},{"location":"api/shark/-hprof-deobfuscator/deobfuscate/#deobfuscate","title":"deobfuscate","text":"<p>fun deobfuscate(proguardMapping: ProguardMapping, inputHprofFile: File, outputHprofFile: File = File(       inputHprofFile.parent, inputHprofFile.name.replace(       \".hprof\", \"-deobfuscated.hprof\"     ).let { if (it != inputHprofFile.name) it else inputHprofFile.name + \"-deobfuscated\" })): File</p>"},{"location":"api/shark/-hprof-deobfuscator/deobfuscate/#see-also","title":"See also","text":"<p>main</p> shark.HprofDeobfuscator"},{"location":"api/shark/-hprof-header/","title":"Index","text":"<p>//leakcanary/shark/HprofHeader</p>"},{"location":"api/shark/-hprof-header/#hprofheader","title":"HprofHeader","text":"<p>data class HprofHeader(val heapDumpTimestamp: Long = System.currentTimeMillis(), val version: HprofVersion = HprofVersion.ANDROID, val identifierByteSize: Int = 4)</p> <p>Represents the header metadata of a Hprof file.</p>"},{"location":"api/shark/-hprof-header/#constructors","title":"Constructors","text":"HprofHeader fun HprofHeader(heapDumpTimestamp: Long = System.currentTimeMillis(), version: HprofVersion = HprofVersion.ANDROID, identifierByteSize: Int = 4)"},{"location":"api/shark/-hprof-header/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-hprof-header/#properties","title":"Properties","text":"Name Summary heapDumpTimestamp val heapDumpTimestamp: LongUnix timestamp at which the heap was dumped. identifierByteSize val identifierByteSize: Int = 4Size of Hprof identifiers. Identifiers are used to represent UTF8 strings, objects, stack traces, etc. They can have the same size as host pointers or sizeof(void*), but are not required to be. recordsPosition val recordsPosition: IntHow many bytes from the beginning of the file can we find the hprof records at. Version string, 0 delimiter (1 byte), identifier byte size int (4 bytes) ,timestamp long (8 bytes) version val version: HprofVersionHprof version, which is tied to the runtime where the heap was dumped."},{"location":"api/shark/-hprof-header/-hprof-header/","title":"hprof header","text":"<p>//leakcanary/shark/HprofHeader/HprofHeader</p>"},{"location":"api/shark/-hprof-header/-hprof-header/#hprofheader","title":"HprofHeader","text":"<p>fun HprofHeader(heapDumpTimestamp: Long = System.currentTimeMillis(), version: HprofVersion = HprofVersion.ANDROID, identifierByteSize: Int = 4)</p>"},{"location":"api/shark/-hprof-header/heap-dump-timestamp/","title":"Heap dump timestamp","text":"<p>//leakcanary/shark/HprofHeader/heapDumpTimestamp</p>"},{"location":"api/shark/-hprof-header/heap-dump-timestamp/#heapdumptimestamp","title":"heapDumpTimestamp","text":"<p>val heapDumpTimestamp: Long</p> <p>Unix timestamp at which the heap was dumped.</p>"},{"location":"api/shark/-hprof-header/identifier-byte-size/","title":"Identifier byte size","text":"<p>//leakcanary/shark/HprofHeader/identifierByteSize</p>"},{"location":"api/shark/-hprof-header/identifier-byte-size/#identifierbytesize","title":"identifierByteSize","text":"<p>val identifierByteSize: Int = 4</p> <p>Size of Hprof identifiers. Identifiers are used to represent UTF8 strings, objects, stack traces, etc. They can have the same size as host pointers or sizeof(void*), but are not required to be.</p>"},{"location":"api/shark/-hprof-header/records-position/","title":"Records position","text":"<p>//leakcanary/shark/HprofHeader/recordsPosition</p>"},{"location":"api/shark/-hprof-header/records-position/#recordsposition","title":"recordsPosition","text":"<p>val recordsPosition: Int</p> <p>How many bytes from the beginning of the file can we find the hprof records at. Version string, 0 delimiter (1 byte), identifier byte size int (4 bytes) ,timestamp long (8 bytes)</p>"},{"location":"api/shark/-hprof-header/version/","title":"Version","text":"<p>//leakcanary/shark/HprofHeader/version</p>"},{"location":"api/shark/-hprof-header/version/#version","title":"version","text":"<p>val version: HprofVersion</p> <p>Hprof version, which is tied to the runtime where the heap was dumped.</p>"},{"location":"api/shark/-hprof-header/-companion/","title":"Index","text":"<p>//leakcanary/shark/HprofHeader/Companion</p>"},{"location":"api/shark/-hprof-header/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-hprof-header/-companion/#functions","title":"Functions","text":"Name Summary parseHeaderOf fun parseHeaderOf(hprofFile: File): HprofHeaderReads the header of the provided hprofFile and returns it as a HprofHeaderfun parseHeaderOf(source: BufferedSource): HprofHeaderReads the header of the provided source and returns it as a HprofHeader. This does not close the source."},{"location":"api/shark/-hprof-header/-companion/parse-header-of/","title":"Parse header of","text":"<p>//leakcanary/shark/HprofHeader/Companion/parseHeaderOf</p>"},{"location":"api/shark/-hprof-header/-companion/parse-header-of/#parseheaderof","title":"parseHeaderOf","text":"<p>fun parseHeaderOf(hprofFile: File): HprofHeader</p> <p>Reads the header of the provided hprofFile and returns it as a HprofHeader</p> <p>fun parseHeaderOf(source: BufferedSource): HprofHeader</p> <p>Reads the header of the provided source and returns it as a HprofHeader. This does not close the source.</p>"},{"location":"api/shark/-hprof-heap-graph/","title":"Index","text":"<p>//leakcanary/shark/HprofHeapGraph</p>"},{"location":"api/shark/-hprof-heap-graph/#hprofheapgraph","title":"HprofHeapGraph","text":"<p>class HprofHeapGraph : CloseableHeapGraph</p> <p>A HeapGraph that reads from an Hprof file indexed by HprofIndex.</p>"},{"location":"api/shark/-hprof-heap-graph/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-hprof-heap-graph/#functions","title":"Functions","text":"Name Summary close open override fun close() findClassByName open override fun findClassByName(className: String): HeapObject.HeapClass?Returns the HeapClass corresponding to the provided className, or null if the class cannot be found. findHeapDumpIndex open override fun findHeapDumpIndex(objectId: Long): IntReturns the 1-based index in the heap dump of the object corresponding to the provided objectId, and throws IllegalArgumentException otherwise. findObjectByHeapDumpIndex open override fun findObjectByHeapDumpIndex(heapDumpIndex: Int): HeapObjectReturns the HeapObject corresponding to the provided heapDumpIndex, and throws IllegalArgumentException if heapDumpIndex is less than 1 or more than objectCount. findObjectById open override fun findObjectById(objectId: Long): HeapObjectReturns the HeapObject corresponding to the provided objectId, and throws IllegalArgumentException otherwise. findObjectByIdOrNull open override fun findObjectByIdOrNull(objectId: Long): HeapObject?Returns the HeapObject corresponding to the provided objectId or null if it cannot be found. findObjectByIndex open override fun findObjectByIndex(objectIndex: Int): HeapObjectReturns the HeapObject corresponding to the provided objectIndex, and throws IllegalArgumentException if objectIndex is less than 0 or more than objectCount - 1. lruCacheStats fun lruCacheStats(): StringThis is only public so that we can publish stats. Accessing this requires casting HeapGraph to HprofHeapGraph so it\u2019s really not a public API. May change at any time! objectExists open override fun objectExists(objectId: Long): BooleanReturns true if the provided objectId exists in the heap dump."},{"location":"api/shark/-hprof-heap-graph/#properties","title":"Properties","text":"Name Summary classCount open override val classCount: Int classes open override val classes: Sequence&lt;HeapObject.HeapClass&gt;Sequence of all classes in the heap dump. context open override val context: GraphContextIn memory store that can be used to store objects this HeapGraph instance. gcRoots open override val gcRoots: List&lt;GcRoot&gt;All GC roots which type matches types known to this heap graph and which point to non null references. You can retrieve the object that a GC Root points to by calling findObjectById with GcRoot.id, however you need to first check that objectExists returns true because GC roots can point to objects that don\u2019t exist in the heap dump. identifierByteSize open override val identifierByteSize: Int instanceCount open override val instanceCount: Int instances open override val instances: Sequence&lt;HeapObject.HeapInstance&gt;Sequence of all instances in the heap dump. objectArrayCount open override val objectArrayCount: Int objectArrays open override val objectArrays: Sequence&lt;HeapObject.HeapObjectArray&gt;Sequence of all object arrays in the heap dump. objectCount open override val objectCount: Int objects open override val objects: Sequence&lt;HeapObject&gt;Sequence of all objects in the heap dump. primitiveArrayCount open override val primitiveArrayCount: Int primitiveArrays open override val primitiveArrays: Sequence&lt;HeapObject.HeapPrimitiveArray&gt;Sequence of all primitive arrays in the heap dump."},{"location":"api/shark/-hprof-heap-graph/class-count/","title":"Class count","text":"<p>//leakcanary/shark/HprofHeapGraph/classCount</p>"},{"location":"api/shark/-hprof-heap-graph/class-count/#classcount","title":"classCount","text":"<p>open override val classCount: Int</p>"},{"location":"api/shark/-hprof-heap-graph/classes/","title":"Classes","text":"<p>//leakcanary/shark/HprofHeapGraph/classes</p>"},{"location":"api/shark/-hprof-heap-graph/classes/#classes","title":"classes","text":"<p>open override val classes: Sequence&lt;HeapObject.HeapClass&gt;</p> <p>Sequence of all classes in the heap dump.</p> <p>This sequence does not trigger any IO reads.</p>"},{"location":"api/shark/-hprof-heap-graph/close/","title":"Close","text":"<p>//leakcanary/shark/HprofHeapGraph/close</p>"},{"location":"api/shark/-hprof-heap-graph/close/#close","title":"close","text":"<p>open override fun close()</p>"},{"location":"api/shark/-hprof-heap-graph/context/","title":"Context","text":"<p>//leakcanary/shark/HprofHeapGraph/context</p>"},{"location":"api/shark/-hprof-heap-graph/context/#context","title":"context","text":"<p>open override val context: GraphContext</p> <p>In memory store that can be used to store objects this HeapGraph instance.</p>"},{"location":"api/shark/-hprof-heap-graph/find-class-by-name/","title":"Find class by name","text":"<p>//leakcanary/shark/HprofHeapGraph/findClassByName</p>"},{"location":"api/shark/-hprof-heap-graph/find-class-by-name/#findclassbyname","title":"findClassByName","text":"<p>open override fun findClassByName(className: String): HeapObject.HeapClass?</p> <p>Returns the HeapClass corresponding to the provided className, or null if the class cannot be found.</p>"},{"location":"api/shark/-hprof-heap-graph/find-heap-dump-index/","title":"Find heap dump index","text":"<p>//leakcanary/shark/HprofHeapGraph/findHeapDumpIndex</p>"},{"location":"api/shark/-hprof-heap-graph/find-heap-dump-index/#findheapdumpindex","title":"findHeapDumpIndex","text":"<p>open override fun findHeapDumpIndex(objectId: Long): Int</p> <p>Returns the 1-based index in the heap dump of the object corresponding to the provided objectId, and throws IllegalArgumentException otherwise.</p> <p>This is the object index that YourKit provides in its Java profiler.</p>"},{"location":"api/shark/-hprof-heap-graph/find-object-by-heap-dump-index/","title":"Find object by heap dump index","text":"<p>//leakcanary/shark/HprofHeapGraph/findObjectByHeapDumpIndex</p>"},{"location":"api/shark/-hprof-heap-graph/find-object-by-heap-dump-index/#findobjectbyheapdumpindex","title":"findObjectByHeapDumpIndex","text":"<p>open override fun findObjectByHeapDumpIndex(heapDumpIndex: Int): HeapObject</p> <p>Returns the HeapObject corresponding to the provided heapDumpIndex, and throws IllegalArgumentException if heapDumpIndex is less than 1 or more than objectCount.</p> <p>This is the object index that YourKit provides in its Java profiler.</p>"},{"location":"api/shark/-hprof-heap-graph/find-object-by-id-or-null/","title":"Find object by id or null","text":"<p>//leakcanary/shark/HprofHeapGraph/findObjectByIdOrNull</p>"},{"location":"api/shark/-hprof-heap-graph/find-object-by-id-or-null/#findobjectbyidornull","title":"findObjectByIdOrNull","text":"<p>open override fun findObjectByIdOrNull(objectId: Long): HeapObject?</p> <p>Returns the HeapObject corresponding to the provided objectId or null if it cannot be found.</p>"},{"location":"api/shark/-hprof-heap-graph/find-object-by-id/","title":"Find object by id","text":"<p>//leakcanary/shark/HprofHeapGraph/findObjectById</p>"},{"location":"api/shark/-hprof-heap-graph/find-object-by-id/#findobjectbyid","title":"findObjectById","text":"<p>open override fun findObjectById(objectId: Long): HeapObject</p> <p>Returns the HeapObject corresponding to the provided objectId, and throws IllegalArgumentException otherwise.</p>"},{"location":"api/shark/-hprof-heap-graph/find-object-by-index/","title":"Find object by index","text":"<p>//leakcanary/shark/HprofHeapGraph/findObjectByIndex</p>"},{"location":"api/shark/-hprof-heap-graph/find-object-by-index/#findobjectbyindex","title":"findObjectByIndex","text":"<p>open override fun findObjectByIndex(objectIndex: Int): HeapObject</p> <p>Returns the HeapObject corresponding to the provided objectIndex, and throws IllegalArgumentException if objectIndex is less than 0 or more than objectCount - 1.</p>"},{"location":"api/shark/-hprof-heap-graph/gc-roots/","title":"Gc roots","text":"<p>//leakcanary/shark/HprofHeapGraph/gcRoots</p>"},{"location":"api/shark/-hprof-heap-graph/gc-roots/#gcroots","title":"gcRoots","text":"<p>open override val gcRoots: List&lt;GcRoot&gt;</p> <p>All GC roots which type matches types known to this heap graph and which point to non null references. You can retrieve the object that a GC Root points to by calling findObjectById with GcRoot.id, however you need to first check that objectExists returns true because GC roots can point to objects that don\u2019t exist in the heap dump.</p>"},{"location":"api/shark/-hprof-heap-graph/identifier-byte-size/","title":"Identifier byte size","text":"<p>//leakcanary/shark/HprofHeapGraph/identifierByteSize</p>"},{"location":"api/shark/-hprof-heap-graph/identifier-byte-size/#identifierbytesize","title":"identifierByteSize","text":"<p>open override val identifierByteSize: Int</p>"},{"location":"api/shark/-hprof-heap-graph/instance-count/","title":"Instance count","text":"<p>//leakcanary/shark/HprofHeapGraph/instanceCount</p>"},{"location":"api/shark/-hprof-heap-graph/instance-count/#instancecount","title":"instanceCount","text":"<p>open override val instanceCount: Int</p>"},{"location":"api/shark/-hprof-heap-graph/instances/","title":"Instances","text":"<p>//leakcanary/shark/HprofHeapGraph/instances</p>"},{"location":"api/shark/-hprof-heap-graph/instances/#instances","title":"instances","text":"<p>open override val instances: Sequence&lt;HeapObject.HeapInstance&gt;</p> <p>Sequence of all instances in the heap dump.</p> <p>This sequence does not trigger any IO reads.</p>"},{"location":"api/shark/-hprof-heap-graph/lru-cache-stats/","title":"Lru cache stats","text":"<p>//leakcanary/shark/HprofHeapGraph/lruCacheStats</p>"},{"location":"api/shark/-hprof-heap-graph/lru-cache-stats/#lrucachestats","title":"lruCacheStats","text":"<p>fun lruCacheStats(): String</p> <p>This is only public so that we can publish stats. Accessing this requires casting HeapGraph to HprofHeapGraph so it\u2019s really not a public API. May change at any time!</p>"},{"location":"api/shark/-hprof-heap-graph/object-array-count/","title":"Object array count","text":"<p>//leakcanary/shark/HprofHeapGraph/objectArrayCount</p>"},{"location":"api/shark/-hprof-heap-graph/object-array-count/#objectarraycount","title":"objectArrayCount","text":"<p>open override val objectArrayCount: Int</p>"},{"location":"api/shark/-hprof-heap-graph/object-arrays/","title":"Object arrays","text":"<p>//leakcanary/shark/HprofHeapGraph/objectArrays</p>"},{"location":"api/shark/-hprof-heap-graph/object-arrays/#objectarrays","title":"objectArrays","text":"<p>open override val objectArrays: Sequence&lt;HeapObject.HeapObjectArray&gt;</p> <p>Sequence of all object arrays in the heap dump.</p> <p>This sequence does not trigger any IO reads.</p>"},{"location":"api/shark/-hprof-heap-graph/object-count/","title":"Object count","text":"<p>//leakcanary/shark/HprofHeapGraph/objectCount</p>"},{"location":"api/shark/-hprof-heap-graph/object-count/#objectcount","title":"objectCount","text":"<p>open override val objectCount: Int</p>"},{"location":"api/shark/-hprof-heap-graph/object-exists/","title":"Object exists","text":"<p>//leakcanary/shark/HprofHeapGraph/objectExists</p>"},{"location":"api/shark/-hprof-heap-graph/object-exists/#objectexists","title":"objectExists","text":"<p>open override fun objectExists(objectId: Long): Boolean</p> <p>Returns true if the provided objectId exists in the heap dump.</p>"},{"location":"api/shark/-hprof-heap-graph/objects/","title":"Objects","text":"<p>//leakcanary/shark/HprofHeapGraph/objects</p>"},{"location":"api/shark/-hprof-heap-graph/objects/#objects","title":"objects","text":"<p>open override val objects: Sequence&lt;HeapObject&gt;</p> <p>Sequence of all objects in the heap dump.</p> <p>This sequence does not trigger any IO reads.</p>"},{"location":"api/shark/-hprof-heap-graph/primitive-array-count/","title":"Primitive array count","text":"<p>//leakcanary/shark/HprofHeapGraph/primitiveArrayCount</p>"},{"location":"api/shark/-hprof-heap-graph/primitive-array-count/#primitivearraycount","title":"primitiveArrayCount","text":"<p>open override val primitiveArrayCount: Int</p>"},{"location":"api/shark/-hprof-heap-graph/primitive-arrays/","title":"Primitive arrays","text":"<p>//leakcanary/shark/HprofHeapGraph/primitiveArrays</p>"},{"location":"api/shark/-hprof-heap-graph/primitive-arrays/#primitivearrays","title":"primitiveArrays","text":"<p>open override val primitiveArrays: Sequence&lt;HeapObject.HeapPrimitiveArray&gt;</p> <p>Sequence of all primitive arrays in the heap dump.</p> <p>This sequence does not trigger any IO reads.</p>"},{"location":"api/shark/-hprof-heap-graph/-companion/","title":"Index","text":"<p>//leakcanary/shark/HprofHeapGraph/Companion</p>"},{"location":"api/shark/-hprof-heap-graph/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-hprof-heap-graph/-companion/#functions","title":"Functions","text":"Name Summary openHeapGraph fun File.openHeapGraph(proguardMapping: ProguardMapping? = null, indexedGcRootTypes: Set&lt;HprofRecordTag&gt; = HprofIndex.defaultIndexedGcRootTags()): CloseableHeapGraphA facility for opening a CloseableHeapGraph from a File. This first parses the file headers with HprofHeader.parseHeaderOf, then indexes the file content with HprofIndex.indexRecordsOf and then opens a CloseableHeapGraph from the index, which you are responsible for closing after using.fun DualSourceProvider.openHeapGraph(proguardMapping: ProguardMapping? = null, indexedGcRootTypes: Set&lt;HprofRecordTag&gt; = HprofIndex.defaultIndexedGcRootTags()): CloseableHeapGraph"},{"location":"api/shark/-hprof-heap-graph/-companion/#properties","title":"Properties","text":"Name Summary INTERNAL_LRU_CACHE_SIZE var INTERNAL_LRU_CACHE_SIZE: Int = 3000This is not a public API, it\u2019s only public so that we can evaluate the effectiveness of different cache size in tests in a different module."},{"location":"api/shark/-hprof-heap-graph/-companion/-i-n-t-e-r-n-a-l_-l-r-u_-c-a-c-h-e_-s-i-z-e/","title":"i n t e r n a l  l r u  c a c h e  s i z e","text":"<p>//leakcanary/shark/HprofHeapGraph/Companion/INTERNAL_LRU_CACHE_SIZE</p>"},{"location":"api/shark/-hprof-heap-graph/-companion/-i-n-t-e-r-n-a-l_-l-r-u_-c-a-c-h-e_-s-i-z-e/#internal_lru_cache_size","title":"INTERNAL_LRU_CACHE_SIZE","text":"<p>var INTERNAL_LRU_CACHE_SIZE: Int = 3000</p> <p>This is not a public API, it\u2019s only public so that we can evaluate the effectiveness of different cache size in tests in a different module.</p> <p>LRU cache size of 3000 is a sweet spot to balance hits vs memory usage. This is based on running InstrumentationLeakDetectorTest a bunch of time on a Pixel 2 XL API 28. Hit count was ~120K, miss count ~290K</p>"},{"location":"api/shark/-hprof-heap-graph/-companion/open-heap-graph/","title":"Open heap graph","text":"<p>//leakcanary/shark/HprofHeapGraph/Companion/openHeapGraph</p>"},{"location":"api/shark/-hprof-heap-graph/-companion/open-heap-graph/#openheapgraph","title":"openHeapGraph","text":"<p>fun File.openHeapGraph(proguardMapping: ProguardMapping? = null, indexedGcRootTypes: Set&lt;HprofRecordTag&gt; = HprofIndex.defaultIndexedGcRootTags()): CloseableHeapGraph</p> <p>A facility for opening a CloseableHeapGraph from a File. This first parses the file headers with HprofHeader.parseHeaderOf, then indexes the file content with HprofIndex.indexRecordsOf and then opens a CloseableHeapGraph from the index, which you are responsible for closing after using.</p> <p>fun DualSourceProvider.openHeapGraph(proguardMapping: ProguardMapping? = null, indexedGcRootTypes: Set&lt;HprofRecordTag&gt; = HprofIndex.defaultIndexedGcRootTags()): CloseableHeapGraph</p>"},{"location":"api/shark/-hprof-index/","title":"Index","text":"<p>//leakcanary/shark/HprofIndex</p>"},{"location":"api/shark/-hprof-index/#hprofindex","title":"HprofIndex","text":"<p>class HprofIndex</p> <p>An index on a Hprof file. See openHeapGraph.</p>"},{"location":"api/shark/-hprof-index/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-hprof-index/#functions","title":"Functions","text":"Name Summary openHeapGraph fun openHeapGraph(): CloseableHeapGraphOpens a CloseableHeapGraph which you can use to navigate the indexed hprof and then close."},{"location":"api/shark/-hprof-index/open-heap-graph/","title":"Open heap graph","text":"<p>//leakcanary/shark/HprofIndex/openHeapGraph</p>"},{"location":"api/shark/-hprof-index/open-heap-graph/#openheapgraph","title":"openHeapGraph","text":"<p>fun openHeapGraph(): CloseableHeapGraph</p> <p>Opens a CloseableHeapGraph which you can use to navigate the indexed hprof and then close.</p>"},{"location":"api/shark/-hprof-index/-companion/","title":"Index","text":"<p>//leakcanary/shark/HprofIndex/Companion</p>"},{"location":"api/shark/-hprof-index/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-hprof-index/-companion/#functions","title":"Functions","text":"Name Summary defaultIndexedGcRootTags fun defaultIndexedGcRootTags(): EnumSet&lt;HprofRecordTag&gt; indexRecordsOf fun indexRecordsOf(hprofSourceProvider: DualSourceProvider, hprofHeader: HprofHeader, proguardMapping: ProguardMapping? = null, indexedGcRootTags: Set&lt;HprofRecordTag&gt; = defaultIndexedGcRootTags()): HprofIndexCreates an in memory index of an hprof source provided by hprofSourceProvider."},{"location":"api/shark/-hprof-index/-companion/default-indexed-gc-root-tags/","title":"Default indexed gc root tags","text":"<p>//leakcanary/shark/HprofIndex/Companion/defaultIndexedGcRootTags</p>"},{"location":"api/shark/-hprof-index/-companion/default-indexed-gc-root-tags/#defaultindexedgcroottags","title":"defaultIndexedGcRootTags","text":"<p>fun defaultIndexedGcRootTags(): EnumSet&lt;HprofRecordTag&gt;</p>"},{"location":"api/shark/-hprof-index/-companion/index-records-of/","title":"Index records of","text":"<p>//leakcanary/shark/HprofIndex/Companion/indexRecordsOf</p>"},{"location":"api/shark/-hprof-index/-companion/index-records-of/#indexrecordsof","title":"indexRecordsOf","text":"<p>fun indexRecordsOf(hprofSourceProvider: DualSourceProvider, hprofHeader: HprofHeader, proguardMapping: ProguardMapping? = null, indexedGcRootTags: Set&lt;HprofRecordTag&gt; = defaultIndexedGcRootTags()): HprofIndex</p> <p>Creates an in memory index of an hprof source provided by hprofSourceProvider.</p>"},{"location":"api/shark/-hprof-primitive-array-stripper/","title":"Index","text":"<p>//leakcanary/shark/HprofPrimitiveArrayStripper</p>"},{"location":"api/shark/-hprof-primitive-array-stripper/#hprofprimitivearraystripper","title":"HprofPrimitiveArrayStripper","text":"<p>class HprofPrimitiveArrayStripper</p> <p>Converts a Hprof file to another file with all primitive arrays replaced with arrays of zeroes, which can be useful to remove PII. Char arrays are handled slightly differently because 0 would be the null character so instead these become arrays of \u2018?\u2019.</p>"},{"location":"api/shark/-hprof-primitive-array-stripper/#constructors","title":"Constructors","text":"HprofPrimitiveArrayStripper fun HprofPrimitiveArrayStripper()"},{"location":"api/shark/-hprof-primitive-array-stripper/#functions","title":"Functions","text":"Name Summary stripPrimitiveArrays fun stripPrimitiveArrays(inputHprofFile: File, outputHprofFile: File = File(       inputHprofFile.parent, inputHprofFile.name.replace(       \".hprof\", \"-stripped.hprof\"     ).let { if (it != inputHprofFile.name) it else inputHprofFile.name + \"-stripped\" })): Filefun stripPrimitiveArrays(hprofSourceProvider: StreamingSourceProvider, hprofSink: BufferedSink)"},{"location":"api/shark/-hprof-primitive-array-stripper/-hprof-primitive-array-stripper/","title":"hprof primitive array stripper","text":"<p>//leakcanary/shark/HprofPrimitiveArrayStripper/HprofPrimitiveArrayStripper</p>"},{"location":"api/shark/-hprof-primitive-array-stripper/-hprof-primitive-array-stripper/#hprofprimitivearraystripper","title":"HprofPrimitiveArrayStripper","text":"<p>fun HprofPrimitiveArrayStripper()</p>"},{"location":"api/shark/-hprof-primitive-array-stripper/strip-primitive-arrays/","title":"Strip primitive arrays","text":"<p>//leakcanary/shark/HprofPrimitiveArrayStripper/stripPrimitiveArrays</p>"},{"location":"api/shark/-hprof-primitive-array-stripper/strip-primitive-arrays/#stripprimitivearrays","title":"stripPrimitiveArrays","text":"<p>fun stripPrimitiveArrays(inputHprofFile: File, outputHprofFile: File = File(       inputHprofFile.parent, inputHprofFile.name.replace(       \".hprof\", \"-stripped.hprof\"     ).let { if (it != inputHprofFile.name) it else inputHprofFile.name + \"-stripped\" })): File</p> <p>fun stripPrimitiveArrays(hprofSourceProvider: StreamingSourceProvider, hprofSink: BufferedSink)</p>"},{"location":"api/shark/-hprof-primitive-array-stripper/strip-primitive-arrays/#see-also","title":"See also","text":"<p>main</p> shark.HprofPrimitiveArrayStripper"},{"location":"api/shark/-hprof-record/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord</p>"},{"location":"api/shark/-hprof-record/#hprofrecord","title":"HprofRecord","text":"<p>sealed class HprofRecord</p> <p>A Hprof record. These data structure map 1:1 with how records are written in hprof files.</p>"},{"location":"api/shark/-hprof-record/#types","title":"Types","text":"Name Summary HeapDumpEndRecord object HeapDumpEndRecord : HprofRecordTerminates a series of heap dump segments. Concatenation of heap dump segments equals a heap dump. HeapDumpRecord sealed class HeapDumpRecord : HprofRecord LoadClassRecord class LoadClassRecord(val classSerialNumber: Int, val id: Long, val stackTraceSerialNumber: Int, val classNameStringId: Long) : HprofRecord StackFrameRecord class StackFrameRecord(val id: Long, val methodNameStringId: Long, val methodSignatureStringId: Long, val sourceFileNameStringId: Long, val classSerialNumber: Int, val lineNumber: Int) : HprofRecord StackTraceRecord class StackTraceRecord(val stackTraceSerialNumber: Int, val threadSerialNumber: Int, val stackFrameIds: LongArray) : HprofRecord StringRecord class StringRecord(val id: Long, val string: String) : HprofRecord"},{"location":"api/shark/-hprof-record/#inheritors","title":"Inheritors","text":"Name StringRecord LoadClassRecord HeapDumpEndRecord StackFrameRecord StackTraceRecord HeapDumpRecord"},{"location":"api/shark/-hprof-record/-heap-dump-end-record/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpEndRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-end-record/#heapdumpendrecord","title":"HeapDumpEndRecord","text":"<p>object HeapDumpEndRecord : HprofRecord</p> <p>Terminates a series of heap dump segments. Concatenation of heap dump segments equals a heap dump.</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/#heapdumprecord","title":"HeapDumpRecord","text":"<p>sealed class HeapDumpRecord : HprofRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/#types","title":"Types","text":"Name Summary GcRootRecord class GcRootRecord(val gcRoot: GcRoot) : HprofRecord.HeapDumpRecord HeapDumpInfoRecord class HeapDumpInfoRecord(val heapId: Int, val heapNameStringId: Long) : HprofRecord.HeapDumpRecord ObjectRecord sealed class ObjectRecord : HprofRecord.HeapDumpRecord"},{"location":"api/shark/-hprof-record/-heap-dump-record/#inheritors","title":"Inheritors","text":"Name GcRootRecord ObjectRecord HeapDumpInfoRecord"},{"location":"api/shark/-hprof-record/-heap-dump-record/-gc-root-record/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/GcRootRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-gc-root-record/#gcrootrecord","title":"GcRootRecord","text":"<p>class GcRootRecord(val gcRoot: GcRoot) : HprofRecord.HeapDumpRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-gc-root-record/#constructors","title":"Constructors","text":"GcRootRecord fun GcRootRecord(gcRoot: GcRoot)"},{"location":"api/shark/-hprof-record/-heap-dump-record/-gc-root-record/#properties","title":"Properties","text":"Name Summary gcRoot val gcRoot: GcRoot"},{"location":"api/shark/-hprof-record/-heap-dump-record/-gc-root-record/-gc-root-record/","title":"gc root record","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/GcRootRecord/GcRootRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-gc-root-record/-gc-root-record/#gcrootrecord","title":"GcRootRecord","text":"<p>fun GcRootRecord(gcRoot: GcRoot)</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-gc-root-record/gc-root/","title":"Gc root","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/GcRootRecord/gcRoot</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-gc-root-record/gc-root/#gcroot","title":"gcRoot","text":"<p>val gcRoot: GcRoot</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-heap-dump-info-record/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/HeapDumpInfoRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-heap-dump-info-record/#heapdumpinforecord","title":"HeapDumpInfoRecord","text":"<p>class HeapDumpInfoRecord(val heapId: Int, val heapNameStringId: Long) : HprofRecord.HeapDumpRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-heap-dump-info-record/#constructors","title":"Constructors","text":"HeapDumpInfoRecord fun HeapDumpInfoRecord(heapId: Int, heapNameStringId: Long)"},{"location":"api/shark/-hprof-record/-heap-dump-record/-heap-dump-info-record/#properties","title":"Properties","text":"Name Summary heapId val heapId: Int heapNameStringId val heapNameStringId: Long"},{"location":"api/shark/-hprof-record/-heap-dump-record/-heap-dump-info-record/-heap-dump-info-record/","title":"heap dump info record","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/HeapDumpInfoRecord/HeapDumpInfoRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-heap-dump-info-record/-heap-dump-info-record/#heapdumpinforecord","title":"HeapDumpInfoRecord","text":"<p>fun HeapDumpInfoRecord(heapId: Int, heapNameStringId: Long)</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-heap-dump-info-record/heap-id/","title":"Heap id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/HeapDumpInfoRecord/heapId</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-heap-dump-info-record/heap-id/#heapid","title":"heapId","text":"<p>val heapId: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-heap-dump-info-record/heap-name-string-id/","title":"Heap name string id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/HeapDumpInfoRecord/heapNameStringId</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-heap-dump-info-record/heap-name-string-id/#heapnamestringid","title":"heapNameStringId","text":"<p>val heapNameStringId: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/#objectrecord","title":"ObjectRecord","text":"<p>sealed class ObjectRecord : HprofRecord.HeapDumpRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/#types","title":"Types","text":"Name Summary ClassDumpRecord class ClassDumpRecord(val id: Long, val stackTraceSerialNumber: Int, val superclassId: Long, val classLoaderId: Long, val signersId: Long, val protectionDomainId: Long, val instanceSize: Int, val staticFields: List&lt;HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecord.StaticFieldRecord&gt;, val fields: List&lt;HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecord.FieldRecord&gt;) : HprofRecord.HeapDumpRecord.ObjectRecord InstanceDumpRecord class InstanceDumpRecord(val id: Long, val stackTraceSerialNumber: Int, val classId: Long, val fieldValues: ByteArray) : HprofRecord.HeapDumpRecord.ObjectRecord ObjectArrayDumpRecord class ObjectArrayDumpRecord(val id: Long, val stackTraceSerialNumber: Int, val arrayClassId: Long, val elementIds: LongArray) : HprofRecord.HeapDumpRecord.ObjectRecord PrimitiveArrayDumpRecord sealed class PrimitiveArrayDumpRecord : HprofRecord.HeapDumpRecord.ObjectRecord"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/#inheritors","title":"Inheritors","text":"Name ClassDumpRecord InstanceDumpRecord ObjectArrayDumpRecord PrimitiveArrayDumpRecord"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ClassDumpRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/#classdumprecord","title":"ClassDumpRecord","text":"<p>class ClassDumpRecord(val id: Long, val stackTraceSerialNumber: Int, val superclassId: Long, val classLoaderId: Long, val signersId: Long, val protectionDomainId: Long, val instanceSize: Int, val staticFields: List&lt;HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecord.StaticFieldRecord&gt;, val fields: List&lt;HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecord.FieldRecord&gt;) : HprofRecord.HeapDumpRecord.ObjectRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/#constructors","title":"Constructors","text":"ClassDumpRecord fun ClassDumpRecord(id: Long, stackTraceSerialNumber: Int, superclassId: Long, classLoaderId: Long, signersId: Long, protectionDomainId: Long, instanceSize: Int, staticFields: List&lt;HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecord.StaticFieldRecord&gt;, fields: List&lt;HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecord.FieldRecord&gt;)"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/#types","title":"Types","text":"Name Summary FieldRecord data class FieldRecord(val nameStringId: Long, val type: Int) StaticFieldRecord data class StaticFieldRecord(val nameStringId: Long, val type: Int, val value: ValueHolder)"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/#properties","title":"Properties","text":"Name Summary classLoaderId val classLoaderId: Long fields val fields: List&lt;HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecord.FieldRecord&gt; id val id: Long instanceSize val instanceSize: Int protectionDomainId val protectionDomainId: Long signersId val signersId: Long stackTraceSerialNumber val stackTraceSerialNumber: Int staticFields val staticFields: List&lt;HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecord.StaticFieldRecord&gt; superclassId val superclassId: Long"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-class-dump-record/","title":"class dump record","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ClassDumpRecord/ClassDumpRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-class-dump-record/#classdumprecord","title":"ClassDumpRecord","text":"<p>fun ClassDumpRecord(id: Long, stackTraceSerialNumber: Int, superclassId: Long, classLoaderId: Long, signersId: Long, protectionDomainId: Long, instanceSize: Int, staticFields: List&lt;HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecord.StaticFieldRecord&gt;, fields: List&lt;HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecord.FieldRecord&gt;)</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/class-loader-id/","title":"Class loader id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ClassDumpRecord/classLoaderId</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/class-loader-id/#classloaderid","title":"classLoaderId","text":"<p>val classLoaderId: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/fields/","title":"Fields","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ClassDumpRecord/fields</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/fields/#fields","title":"fields","text":"<p>val fields: List&lt;HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecord.FieldRecord&gt;</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/id/","title":"Id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ClassDumpRecord/id</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/id/#id","title":"id","text":"<p>val id: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/instance-size/","title":"Instance size","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ClassDumpRecord/instanceSize</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/instance-size/#instancesize","title":"instanceSize","text":"<p>val instanceSize: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/protection-domain-id/","title":"Protection domain id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ClassDumpRecord/protectionDomainId</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/protection-domain-id/#protectiondomainid","title":"protectionDomainId","text":"<p>val protectionDomainId: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/signers-id/","title":"Signers id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ClassDumpRecord/signersId</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/signers-id/#signersid","title":"signersId","text":"<p>val signersId: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/stack-trace-serial-number/","title":"Stack trace serial number","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ClassDumpRecord/stackTraceSerialNumber</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/stack-trace-serial-number/#stacktraceserialnumber","title":"stackTraceSerialNumber","text":"<p>val stackTraceSerialNumber: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/static-fields/","title":"Static fields","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ClassDumpRecord/staticFields</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/static-fields/#staticfields","title":"staticFields","text":"<p>val staticFields: List&lt;HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecord.StaticFieldRecord&gt;</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/superclass-id/","title":"Superclass id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ClassDumpRecord/superclassId</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/superclass-id/#superclassid","title":"superclassId","text":"<p>val superclassId: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-field-record/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ClassDumpRecord/FieldRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-field-record/#fieldrecord","title":"FieldRecord","text":"<p>data class FieldRecord(val nameStringId: Long, val type: Int)</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-field-record/#constructors","title":"Constructors","text":"FieldRecord fun FieldRecord(nameStringId: Long, type: Int)"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-field-record/#properties","title":"Properties","text":"Name Summary nameStringId val nameStringId: Long type val type: Int"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-field-record/-field-record/","title":"field record","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ClassDumpRecord/FieldRecord/FieldRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-field-record/-field-record/#fieldrecord","title":"FieldRecord","text":"<p>fun FieldRecord(nameStringId: Long, type: Int)</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-field-record/name-string-id/","title":"Name string id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ClassDumpRecord/FieldRecord/nameStringId</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-field-record/name-string-id/#namestringid","title":"nameStringId","text":"<p>val nameStringId: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-field-record/type/","title":"Type","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ClassDumpRecord/FieldRecord/type</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-field-record/type/#type","title":"type","text":"<p>val type: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ClassDumpRecord/StaticFieldRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/#staticfieldrecord","title":"StaticFieldRecord","text":"<p>data class StaticFieldRecord(val nameStringId: Long, val type: Int, val value: ValueHolder)</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/#constructors","title":"Constructors","text":"StaticFieldRecord fun StaticFieldRecord(nameStringId: Long, type: Int, value: ValueHolder)"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/#properties","title":"Properties","text":"Name Summary nameStringId val nameStringId: Long type val type: Int value val value: ValueHolder"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/-static-field-record/","title":"static field record","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ClassDumpRecord/StaticFieldRecord/StaticFieldRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/-static-field-record/#staticfieldrecord","title":"StaticFieldRecord","text":"<p>fun StaticFieldRecord(nameStringId: Long, type: Int, value: ValueHolder)</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/name-string-id/","title":"Name string id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ClassDumpRecord/StaticFieldRecord/nameStringId</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/name-string-id/#namestringid","title":"nameStringId","text":"<p>val nameStringId: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/type/","title":"Type","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ClassDumpRecord/StaticFieldRecord/type</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/type/#type","title":"type","text":"<p>val type: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/value/","title":"Value","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ClassDumpRecord/StaticFieldRecord/value</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/value/#value","title":"value","text":"<p>val value: ValueHolder</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/InstanceDumpRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/#instancedumprecord","title":"InstanceDumpRecord","text":"<p>class InstanceDumpRecord(val id: Long, val stackTraceSerialNumber: Int, val classId: Long, val fieldValues: ByteArray) : HprofRecord.HeapDumpRecord.ObjectRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/#constructors","title":"Constructors","text":"InstanceDumpRecord fun InstanceDumpRecord(id: Long, stackTraceSerialNumber: Int, classId: Long, fieldValues: ByteArray)"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/#properties","title":"Properties","text":"Name Summary classId val classId: Long fieldValues val fieldValues: ByteArrayInstance field values (this class, followed by super class, etc) id val id: Long stackTraceSerialNumber val stackTraceSerialNumber: Int"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/-instance-dump-record/","title":"instance dump record","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/InstanceDumpRecord/InstanceDumpRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/-instance-dump-record/#instancedumprecord","title":"InstanceDumpRecord","text":"<p>fun InstanceDumpRecord(id: Long, stackTraceSerialNumber: Int, classId: Long, fieldValues: ByteArray)</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/class-id/","title":"Class id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/InstanceDumpRecord/classId</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/class-id/#classid","title":"classId","text":"<p>val classId: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/field-values/","title":"Field values","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/InstanceDumpRecord/fieldValues</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/field-values/#fieldvalues","title":"fieldValues","text":"<p>val fieldValues: ByteArray</p> <p>Instance field values (this class, followed by super class, etc)</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/id/","title":"Id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/InstanceDumpRecord/id</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/id/#id","title":"id","text":"<p>val id: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/stack-trace-serial-number/","title":"Stack trace serial number","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/InstanceDumpRecord/stackTraceSerialNumber</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/stack-trace-serial-number/#stacktraceserialnumber","title":"stackTraceSerialNumber","text":"<p>val stackTraceSerialNumber: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ObjectArrayDumpRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/#objectarraydumprecord","title":"ObjectArrayDumpRecord","text":"<p>class ObjectArrayDumpRecord(val id: Long, val stackTraceSerialNumber: Int, val arrayClassId: Long, val elementIds: LongArray) : HprofRecord.HeapDumpRecord.ObjectRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/#constructors","title":"Constructors","text":"ObjectArrayDumpRecord fun ObjectArrayDumpRecord(id: Long, stackTraceSerialNumber: Int, arrayClassId: Long, elementIds: LongArray)"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/#properties","title":"Properties","text":"Name Summary arrayClassId val arrayClassId: Long elementIds val elementIds: LongArray id val id: Long stackTraceSerialNumber val stackTraceSerialNumber: Int"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/-object-array-dump-record/","title":"object array dump record","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ObjectArrayDumpRecord/ObjectArrayDumpRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/-object-array-dump-record/#objectarraydumprecord","title":"ObjectArrayDumpRecord","text":"<p>fun ObjectArrayDumpRecord(id: Long, stackTraceSerialNumber: Int, arrayClassId: Long, elementIds: LongArray)</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/array-class-id/","title":"Array class id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ObjectArrayDumpRecord/arrayClassId</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/array-class-id/#arrayclassid","title":"arrayClassId","text":"<p>val arrayClassId: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/element-ids/","title":"Element ids","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ObjectArrayDumpRecord/elementIds</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/element-ids/#elementids","title":"elementIds","text":"<p>val elementIds: LongArray</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/id/","title":"Id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ObjectArrayDumpRecord/id</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/id/#id","title":"id","text":"<p>val id: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/stack-trace-serial-number/","title":"Stack trace serial number","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/ObjectArrayDumpRecord/stackTraceSerialNumber</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/stack-trace-serial-number/#stacktraceserialnumber","title":"stackTraceSerialNumber","text":"<p>val stackTraceSerialNumber: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/#primitivearraydumprecord","title":"PrimitiveArrayDumpRecord","text":"<p>sealed class PrimitiveArrayDumpRecord : HprofRecord.HeapDumpRecord.ObjectRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/#types","title":"Types","text":"Name Summary BooleanArrayDump class BooleanArrayDump(val id: Long, val stackTraceSerialNumber: Int, val array: BooleanArray) : HprofRecord.HeapDumpRecord.ObjectRecord.PrimitiveArrayDumpRecord ByteArrayDump class ByteArrayDump(val id: Long, val stackTraceSerialNumber: Int, val array: ByteArray) : HprofRecord.HeapDumpRecord.ObjectRecord.PrimitiveArrayDumpRecord CharArrayDump class CharArrayDump(val id: Long, val stackTraceSerialNumber: Int, val array: CharArray) : HprofRecord.HeapDumpRecord.ObjectRecord.PrimitiveArrayDumpRecord DoubleArrayDump class DoubleArrayDump(val id: Long, val stackTraceSerialNumber: Int, val array: DoubleArray) : HprofRecord.HeapDumpRecord.ObjectRecord.PrimitiveArrayDumpRecord FloatArrayDump class FloatArrayDump(val id: Long, val stackTraceSerialNumber: Int, val array: FloatArray) : HprofRecord.HeapDumpRecord.ObjectRecord.PrimitiveArrayDumpRecord IntArrayDump class IntArrayDump(val id: Long, val stackTraceSerialNumber: Int, val array: IntArray) : HprofRecord.HeapDumpRecord.ObjectRecord.PrimitiveArrayDumpRecord LongArrayDump class LongArrayDump(val id: Long, val stackTraceSerialNumber: Int, val array: LongArray) : HprofRecord.HeapDumpRecord.ObjectRecord.PrimitiveArrayDumpRecord ShortArrayDump class ShortArrayDump(val id: Long, val stackTraceSerialNumber: Int, val array: ShortArray) : HprofRecord.HeapDumpRecord.ObjectRecord.PrimitiveArrayDumpRecord"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/#properties","title":"Properties","text":"Name Summary id abstract val id: Long size abstract val size: Int stackTraceSerialNumber abstract val stackTraceSerialNumber: Int"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/#inheritors","title":"Inheritors","text":"Name BooleanArrayDump CharArrayDump FloatArrayDump DoubleArrayDump ByteArrayDump ShortArrayDump IntArrayDump LongArrayDump"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/id/","title":"Id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/id</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/id/#id","title":"id","text":"<p>abstract val id: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/size/","title":"Size","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/size</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/size/#size","title":"size","text":"<p>abstract val size: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/stack-trace-serial-number/","title":"Stack trace serial number","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/stackTraceSerialNumber</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/stack-trace-serial-number/#stacktraceserialnumber","title":"stackTraceSerialNumber","text":"<p>abstract val stackTraceSerialNumber: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/BooleanArrayDump</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/#booleanarraydump","title":"BooleanArrayDump","text":"<p>class BooleanArrayDump(val id: Long, val stackTraceSerialNumber: Int, val array: BooleanArray) : HprofRecord.HeapDumpRecord.ObjectRecord.PrimitiveArrayDumpRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/#constructors","title":"Constructors","text":"BooleanArrayDump fun BooleanArrayDump(id: Long, stackTraceSerialNumber: Int, array: BooleanArray)"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/#properties","title":"Properties","text":"Name Summary array val array: BooleanArray id open override val id: Long size open override val size: Int stackTraceSerialNumber open override val stackTraceSerialNumber: Int"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/-boolean-array-dump/","title":"boolean array dump","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/BooleanArrayDump/BooleanArrayDump</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/-boolean-array-dump/#booleanarraydump","title":"BooleanArrayDump","text":"<p>fun BooleanArrayDump(id: Long, stackTraceSerialNumber: Int, array: BooleanArray)</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/array/","title":"Array","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/BooleanArrayDump/array</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/array/#array","title":"array","text":"<p>val array: BooleanArray</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/id/","title":"Id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/BooleanArrayDump/id</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/id/#id","title":"id","text":"<p>open override val id: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/size/","title":"Size","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/BooleanArrayDump/size</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/size/#size","title":"size","text":"<p>open override val size: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/stack-trace-serial-number/","title":"Stack trace serial number","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/BooleanArrayDump/stackTraceSerialNumber</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/stack-trace-serial-number/#stacktraceserialnumber","title":"stackTraceSerialNumber","text":"<p>open override val stackTraceSerialNumber: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/ByteArrayDump</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/#bytearraydump","title":"ByteArrayDump","text":"<p>class ByteArrayDump(val id: Long, val stackTraceSerialNumber: Int, val array: ByteArray) : HprofRecord.HeapDumpRecord.ObjectRecord.PrimitiveArrayDumpRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/#constructors","title":"Constructors","text":"ByteArrayDump fun ByteArrayDump(id: Long, stackTraceSerialNumber: Int, array: ByteArray)"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/#properties","title":"Properties","text":"Name Summary array val array: ByteArray id open override val id: Long size open override val size: Int stackTraceSerialNumber open override val stackTraceSerialNumber: Int"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/-byte-array-dump/","title":"byte array dump","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/ByteArrayDump/ByteArrayDump</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/-byte-array-dump/#bytearraydump","title":"ByteArrayDump","text":"<p>fun ByteArrayDump(id: Long, stackTraceSerialNumber: Int, array: ByteArray)</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/array/","title":"Array","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/ByteArrayDump/array</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/array/#array","title":"array","text":"<p>val array: ByteArray</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/id/","title":"Id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/ByteArrayDump/id</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/id/#id","title":"id","text":"<p>open override val id: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/size/","title":"Size","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/ByteArrayDump/size</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/size/#size","title":"size","text":"<p>open override val size: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/stack-trace-serial-number/","title":"Stack trace serial number","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/ByteArrayDump/stackTraceSerialNumber</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/stack-trace-serial-number/#stacktraceserialnumber","title":"stackTraceSerialNumber","text":"<p>open override val stackTraceSerialNumber: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/CharArrayDump</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/#chararraydump","title":"CharArrayDump","text":"<p>class CharArrayDump(val id: Long, val stackTraceSerialNumber: Int, val array: CharArray) : HprofRecord.HeapDumpRecord.ObjectRecord.PrimitiveArrayDumpRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/#constructors","title":"Constructors","text":"CharArrayDump fun CharArrayDump(id: Long, stackTraceSerialNumber: Int, array: CharArray)"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/#properties","title":"Properties","text":"Name Summary array val array: CharArray id open override val id: Long size open override val size: Int stackTraceSerialNumber open override val stackTraceSerialNumber: Int"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/-char-array-dump/","title":"char array dump","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/CharArrayDump/CharArrayDump</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/-char-array-dump/#chararraydump","title":"CharArrayDump","text":"<p>fun CharArrayDump(id: Long, stackTraceSerialNumber: Int, array: CharArray)</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/array/","title":"Array","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/CharArrayDump/array</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/array/#array","title":"array","text":"<p>val array: CharArray</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/id/","title":"Id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/CharArrayDump/id</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/id/#id","title":"id","text":"<p>open override val id: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/size/","title":"Size","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/CharArrayDump/size</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/size/#size","title":"size","text":"<p>open override val size: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/stack-trace-serial-number/","title":"Stack trace serial number","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/CharArrayDump/stackTraceSerialNumber</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/stack-trace-serial-number/#stacktraceserialnumber","title":"stackTraceSerialNumber","text":"<p>open override val stackTraceSerialNumber: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/DoubleArrayDump</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/#doublearraydump","title":"DoubleArrayDump","text":"<p>class DoubleArrayDump(val id: Long, val stackTraceSerialNumber: Int, val array: DoubleArray) : HprofRecord.HeapDumpRecord.ObjectRecord.PrimitiveArrayDumpRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/#constructors","title":"Constructors","text":"DoubleArrayDump fun DoubleArrayDump(id: Long, stackTraceSerialNumber: Int, array: DoubleArray)"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/#properties","title":"Properties","text":"Name Summary array val array: DoubleArray id open override val id: Long size open override val size: Int stackTraceSerialNumber open override val stackTraceSerialNumber: Int"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/-double-array-dump/","title":"double array dump","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/DoubleArrayDump/DoubleArrayDump</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/-double-array-dump/#doublearraydump","title":"DoubleArrayDump","text":"<p>fun DoubleArrayDump(id: Long, stackTraceSerialNumber: Int, array: DoubleArray)</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/array/","title":"Array","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/DoubleArrayDump/array</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/array/#array","title":"array","text":"<p>val array: DoubleArray</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/id/","title":"Id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/DoubleArrayDump/id</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/id/#id","title":"id","text":"<p>open override val id: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/size/","title":"Size","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/DoubleArrayDump/size</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/size/#size","title":"size","text":"<p>open override val size: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/stack-trace-serial-number/","title":"Stack trace serial number","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/DoubleArrayDump/stackTraceSerialNumber</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/stack-trace-serial-number/#stacktraceserialnumber","title":"stackTraceSerialNumber","text":"<p>open override val stackTraceSerialNumber: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/FloatArrayDump</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/#floatarraydump","title":"FloatArrayDump","text":"<p>class FloatArrayDump(val id: Long, val stackTraceSerialNumber: Int, val array: FloatArray) : HprofRecord.HeapDumpRecord.ObjectRecord.PrimitiveArrayDumpRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/#constructors","title":"Constructors","text":"FloatArrayDump fun FloatArrayDump(id: Long, stackTraceSerialNumber: Int, array: FloatArray)"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/#properties","title":"Properties","text":"Name Summary array val array: FloatArray id open override val id: Long size open override val size: Int stackTraceSerialNumber open override val stackTraceSerialNumber: Int"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/-float-array-dump/","title":"float array dump","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/FloatArrayDump/FloatArrayDump</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/-float-array-dump/#floatarraydump","title":"FloatArrayDump","text":"<p>fun FloatArrayDump(id: Long, stackTraceSerialNumber: Int, array: FloatArray)</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/array/","title":"Array","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/FloatArrayDump/array</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/array/#array","title":"array","text":"<p>val array: FloatArray</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/id/","title":"Id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/FloatArrayDump/id</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/id/#id","title":"id","text":"<p>open override val id: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/size/","title":"Size","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/FloatArrayDump/size</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/size/#size","title":"size","text":"<p>open override val size: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/stack-trace-serial-number/","title":"Stack trace serial number","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/FloatArrayDump/stackTraceSerialNumber</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/stack-trace-serial-number/#stacktraceserialnumber","title":"stackTraceSerialNumber","text":"<p>open override val stackTraceSerialNumber: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/IntArrayDump</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/#intarraydump","title":"IntArrayDump","text":"<p>class IntArrayDump(val id: Long, val stackTraceSerialNumber: Int, val array: IntArray) : HprofRecord.HeapDumpRecord.ObjectRecord.PrimitiveArrayDumpRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/#constructors","title":"Constructors","text":"IntArrayDump fun IntArrayDump(id: Long, stackTraceSerialNumber: Int, array: IntArray)"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/#properties","title":"Properties","text":"Name Summary array val array: IntArray id open override val id: Long size open override val size: Int stackTraceSerialNumber open override val stackTraceSerialNumber: Int"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/-int-array-dump/","title":"int array dump","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/IntArrayDump/IntArrayDump</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/-int-array-dump/#intarraydump","title":"IntArrayDump","text":"<p>fun IntArrayDump(id: Long, stackTraceSerialNumber: Int, array: IntArray)</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/array/","title":"Array","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/IntArrayDump/array</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/array/#array","title":"array","text":"<p>val array: IntArray</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/id/","title":"Id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/IntArrayDump/id</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/id/#id","title":"id","text":"<p>open override val id: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/size/","title":"Size","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/IntArrayDump/size</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/size/#size","title":"size","text":"<p>open override val size: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/stack-trace-serial-number/","title":"Stack trace serial number","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/IntArrayDump/stackTraceSerialNumber</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/stack-trace-serial-number/#stacktraceserialnumber","title":"stackTraceSerialNumber","text":"<p>open override val stackTraceSerialNumber: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/LongArrayDump</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/#longarraydump","title":"LongArrayDump","text":"<p>class LongArrayDump(val id: Long, val stackTraceSerialNumber: Int, val array: LongArray) : HprofRecord.HeapDumpRecord.ObjectRecord.PrimitiveArrayDumpRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/#constructors","title":"Constructors","text":"LongArrayDump fun LongArrayDump(id: Long, stackTraceSerialNumber: Int, array: LongArray)"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/#properties","title":"Properties","text":"Name Summary array val array: LongArray id open override val id: Long size open override val size: Int stackTraceSerialNumber open override val stackTraceSerialNumber: Int"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/-long-array-dump/","title":"long array dump","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/LongArrayDump/LongArrayDump</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/-long-array-dump/#longarraydump","title":"LongArrayDump","text":"<p>fun LongArrayDump(id: Long, stackTraceSerialNumber: Int, array: LongArray)</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/array/","title":"Array","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/LongArrayDump/array</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/array/#array","title":"array","text":"<p>val array: LongArray</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/id/","title":"Id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/LongArrayDump/id</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/id/#id","title":"id","text":"<p>open override val id: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/size/","title":"Size","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/LongArrayDump/size</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/size/#size","title":"size","text":"<p>open override val size: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/stack-trace-serial-number/","title":"Stack trace serial number","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/LongArrayDump/stackTraceSerialNumber</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/stack-trace-serial-number/#stacktraceserialnumber","title":"stackTraceSerialNumber","text":"<p>open override val stackTraceSerialNumber: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/ShortArrayDump</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/#shortarraydump","title":"ShortArrayDump","text":"<p>class ShortArrayDump(val id: Long, val stackTraceSerialNumber: Int, val array: ShortArray) : HprofRecord.HeapDumpRecord.ObjectRecord.PrimitiveArrayDumpRecord</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/#constructors","title":"Constructors","text":"ShortArrayDump fun ShortArrayDump(id: Long, stackTraceSerialNumber: Int, array: ShortArray)"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/#properties","title":"Properties","text":"Name Summary array val array: ShortArray id open override val id: Long size open override val size: Int stackTraceSerialNumber open override val stackTraceSerialNumber: Int"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/-short-array-dump/","title":"short array dump","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/ShortArrayDump/ShortArrayDump</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/-short-array-dump/#shortarraydump","title":"ShortArrayDump","text":"<p>fun ShortArrayDump(id: Long, stackTraceSerialNumber: Int, array: ShortArray)</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/array/","title":"Array","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/ShortArrayDump/array</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/array/#array","title":"array","text":"<p>val array: ShortArray</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/id/","title":"Id","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/ShortArrayDump/id</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/id/#id","title":"id","text":"<p>open override val id: Long</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/size/","title":"Size","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/ShortArrayDump/size</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/size/#size","title":"size","text":"<p>open override val size: Int</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/stack-trace-serial-number/","title":"Stack trace serial number","text":"<p>//leakcanary/shark/HprofRecord/HeapDumpRecord/ObjectRecord/PrimitiveArrayDumpRecord/ShortArrayDump/stackTraceSerialNumber</p>"},{"location":"api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/stack-trace-serial-number/#stacktraceserialnumber","title":"stackTraceSerialNumber","text":"<p>open override val stackTraceSerialNumber: Int</p>"},{"location":"api/shark/-hprof-record/-load-class-record/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/LoadClassRecord</p>"},{"location":"api/shark/-hprof-record/-load-class-record/#loadclassrecord","title":"LoadClassRecord","text":"<p>class LoadClassRecord(val classSerialNumber: Int, val id: Long, val stackTraceSerialNumber: Int, val classNameStringId: Long) : HprofRecord</p>"},{"location":"api/shark/-hprof-record/-load-class-record/#constructors","title":"Constructors","text":"LoadClassRecord fun LoadClassRecord(classSerialNumber: Int, id: Long, stackTraceSerialNumber: Int, classNameStringId: Long)"},{"location":"api/shark/-hprof-record/-load-class-record/#properties","title":"Properties","text":"Name Summary classNameStringId val classNameStringId: Long classSerialNumber val classSerialNumber: Int id val id: Long stackTraceSerialNumber val stackTraceSerialNumber: Int"},{"location":"api/shark/-hprof-record/-load-class-record/-load-class-record/","title":"load class record","text":"<p>//leakcanary/shark/HprofRecord/LoadClassRecord/LoadClassRecord</p>"},{"location":"api/shark/-hprof-record/-load-class-record/-load-class-record/#loadclassrecord","title":"LoadClassRecord","text":"<p>fun LoadClassRecord(classSerialNumber: Int, id: Long, stackTraceSerialNumber: Int, classNameStringId: Long)</p>"},{"location":"api/shark/-hprof-record/-load-class-record/class-name-string-id/","title":"Class name string id","text":"<p>//leakcanary/shark/HprofRecord/LoadClassRecord/classNameStringId</p>"},{"location":"api/shark/-hprof-record/-load-class-record/class-name-string-id/#classnamestringid","title":"classNameStringId","text":"<p>val classNameStringId: Long</p>"},{"location":"api/shark/-hprof-record/-load-class-record/class-serial-number/","title":"Class serial number","text":"<p>//leakcanary/shark/HprofRecord/LoadClassRecord/classSerialNumber</p>"},{"location":"api/shark/-hprof-record/-load-class-record/class-serial-number/#classserialnumber","title":"classSerialNumber","text":"<p>val classSerialNumber: Int</p>"},{"location":"api/shark/-hprof-record/-load-class-record/id/","title":"Id","text":"<p>//leakcanary/shark/HprofRecord/LoadClassRecord/id</p>"},{"location":"api/shark/-hprof-record/-load-class-record/id/#id","title":"id","text":"<p>val id: Long</p>"},{"location":"api/shark/-hprof-record/-load-class-record/stack-trace-serial-number/","title":"Stack trace serial number","text":"<p>//leakcanary/shark/HprofRecord/LoadClassRecord/stackTraceSerialNumber</p>"},{"location":"api/shark/-hprof-record/-load-class-record/stack-trace-serial-number/#stacktraceserialnumber","title":"stackTraceSerialNumber","text":"<p>val stackTraceSerialNumber: Int</p>"},{"location":"api/shark/-hprof-record/-stack-frame-record/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/StackFrameRecord</p>"},{"location":"api/shark/-hprof-record/-stack-frame-record/#stackframerecord","title":"StackFrameRecord","text":"<p>class StackFrameRecord(val id: Long, val methodNameStringId: Long, val methodSignatureStringId: Long, val sourceFileNameStringId: Long, val classSerialNumber: Int, val lineNumber: Int) : HprofRecord</p>"},{"location":"api/shark/-hprof-record/-stack-frame-record/#constructors","title":"Constructors","text":"StackFrameRecord fun StackFrameRecord(id: Long, methodNameStringId: Long, methodSignatureStringId: Long, sourceFileNameStringId: Long, classSerialNumber: Int, lineNumber: Int)"},{"location":"api/shark/-hprof-record/-stack-frame-record/#properties","title":"Properties","text":"Name Summary classSerialNumber val classSerialNumber: Int id val id: Long lineNumber val lineNumber: Int methodNameStringId val methodNameStringId: Long methodSignatureStringId val methodSignatureStringId: Long sourceFileNameStringId val sourceFileNameStringId: Long"},{"location":"api/shark/-hprof-record/-stack-frame-record/-stack-frame-record/","title":"stack frame record","text":"<p>//leakcanary/shark/HprofRecord/StackFrameRecord/StackFrameRecord</p>"},{"location":"api/shark/-hprof-record/-stack-frame-record/-stack-frame-record/#stackframerecord","title":"StackFrameRecord","text":"<p>fun StackFrameRecord(id: Long, methodNameStringId: Long, methodSignatureStringId: Long, sourceFileNameStringId: Long, classSerialNumber: Int, lineNumber: Int)</p>"},{"location":"api/shark/-hprof-record/-stack-frame-record/class-serial-number/","title":"Class serial number","text":"<p>//leakcanary/shark/HprofRecord/StackFrameRecord/classSerialNumber</p>"},{"location":"api/shark/-hprof-record/-stack-frame-record/class-serial-number/#classserialnumber","title":"classSerialNumber","text":"<p>val classSerialNumber: Int</p>"},{"location":"api/shark/-hprof-record/-stack-frame-record/id/","title":"Id","text":"<p>//leakcanary/shark/HprofRecord/StackFrameRecord/id</p>"},{"location":"api/shark/-hprof-record/-stack-frame-record/id/#id","title":"id","text":"<p>val id: Long</p>"},{"location":"api/shark/-hprof-record/-stack-frame-record/line-number/","title":"Line number","text":"<p>//leakcanary/shark/HprofRecord/StackFrameRecord/lineNumber</p>"},{"location":"api/shark/-hprof-record/-stack-frame-record/line-number/#linenumber","title":"lineNumber","text":"<p>val lineNumber: Int</p> <p>0 line number 0 no line information available -1 unknown location -2 compiled method (Not implemented) -3 native method (Not implemented)</p>"},{"location":"api/shark/-hprof-record/-stack-frame-record/method-name-string-id/","title":"Method name string id","text":"<p>//leakcanary/shark/HprofRecord/StackFrameRecord/methodNameStringId</p>"},{"location":"api/shark/-hprof-record/-stack-frame-record/method-name-string-id/#methodnamestringid","title":"methodNameStringId","text":"<p>val methodNameStringId: Long</p>"},{"location":"api/shark/-hprof-record/-stack-frame-record/method-signature-string-id/","title":"Method signature string id","text":"<p>//leakcanary/shark/HprofRecord/StackFrameRecord/methodSignatureStringId</p>"},{"location":"api/shark/-hprof-record/-stack-frame-record/method-signature-string-id/#methodsignaturestringid","title":"methodSignatureStringId","text":"<p>val methodSignatureStringId: Long</p>"},{"location":"api/shark/-hprof-record/-stack-frame-record/source-file-name-string-id/","title":"Source file name string id","text":"<p>//leakcanary/shark/HprofRecord/StackFrameRecord/sourceFileNameStringId</p>"},{"location":"api/shark/-hprof-record/-stack-frame-record/source-file-name-string-id/#sourcefilenamestringid","title":"sourceFileNameStringId","text":"<p>val sourceFileNameStringId: Long</p>"},{"location":"api/shark/-hprof-record/-stack-trace-record/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/StackTraceRecord</p>"},{"location":"api/shark/-hprof-record/-stack-trace-record/#stacktracerecord","title":"StackTraceRecord","text":"<p>class StackTraceRecord(val stackTraceSerialNumber: Int, val threadSerialNumber: Int, val stackFrameIds: LongArray) : HprofRecord</p>"},{"location":"api/shark/-hprof-record/-stack-trace-record/#constructors","title":"Constructors","text":"StackTraceRecord fun StackTraceRecord(stackTraceSerialNumber: Int, threadSerialNumber: Int, stackFrameIds: LongArray)"},{"location":"api/shark/-hprof-record/-stack-trace-record/#properties","title":"Properties","text":"Name Summary stackFrameIds val stackFrameIds: LongArray stackTraceSerialNumber val stackTraceSerialNumber: Int threadSerialNumber val threadSerialNumber: Int"},{"location":"api/shark/-hprof-record/-stack-trace-record/-stack-trace-record/","title":"stack trace record","text":"<p>//leakcanary/shark/HprofRecord/StackTraceRecord/StackTraceRecord</p>"},{"location":"api/shark/-hprof-record/-stack-trace-record/-stack-trace-record/#stacktracerecord","title":"StackTraceRecord","text":"<p>fun StackTraceRecord(stackTraceSerialNumber: Int, threadSerialNumber: Int, stackFrameIds: LongArray)</p>"},{"location":"api/shark/-hprof-record/-stack-trace-record/stack-frame-ids/","title":"Stack frame ids","text":"<p>//leakcanary/shark/HprofRecord/StackTraceRecord/stackFrameIds</p>"},{"location":"api/shark/-hprof-record/-stack-trace-record/stack-frame-ids/#stackframeids","title":"stackFrameIds","text":"<p>val stackFrameIds: LongArray</p>"},{"location":"api/shark/-hprof-record/-stack-trace-record/stack-trace-serial-number/","title":"Stack trace serial number","text":"<p>//leakcanary/shark/HprofRecord/StackTraceRecord/stackTraceSerialNumber</p>"},{"location":"api/shark/-hprof-record/-stack-trace-record/stack-trace-serial-number/#stacktraceserialnumber","title":"stackTraceSerialNumber","text":"<p>val stackTraceSerialNumber: Int</p>"},{"location":"api/shark/-hprof-record/-stack-trace-record/thread-serial-number/","title":"Thread serial number","text":"<p>//leakcanary/shark/HprofRecord/StackTraceRecord/threadSerialNumber</p>"},{"location":"api/shark/-hprof-record/-stack-trace-record/thread-serial-number/#threadserialnumber","title":"threadSerialNumber","text":"<p>val threadSerialNumber: Int</p>"},{"location":"api/shark/-hprof-record/-string-record/","title":"Index","text":"<p>//leakcanary/shark/HprofRecord/StringRecord</p>"},{"location":"api/shark/-hprof-record/-string-record/#stringrecord","title":"StringRecord","text":"<p>class StringRecord(val id: Long, val string: String) : HprofRecord</p>"},{"location":"api/shark/-hprof-record/-string-record/#constructors","title":"Constructors","text":"StringRecord fun StringRecord(id: Long, string: String)"},{"location":"api/shark/-hprof-record/-string-record/#properties","title":"Properties","text":"Name Summary id val id: Long string val string: String"},{"location":"api/shark/-hprof-record/-string-record/-string-record/","title":"string record","text":"<p>//leakcanary/shark/HprofRecord/StringRecord/StringRecord</p>"},{"location":"api/shark/-hprof-record/-string-record/-string-record/#stringrecord","title":"StringRecord","text":"<p>fun StringRecord(id: Long, string: String)</p>"},{"location":"api/shark/-hprof-record/-string-record/id/","title":"Id","text":"<p>//leakcanary/shark/HprofRecord/StringRecord/id</p>"},{"location":"api/shark/-hprof-record/-string-record/id/#id","title":"id","text":"<p>val id: Long</p>"},{"location":"api/shark/-hprof-record/-string-record/string/","title":"String","text":"<p>//leakcanary/shark/HprofRecord/StringRecord/string</p>"},{"location":"api/shark/-hprof-record/-string-record/string/#string","title":"string","text":"<p>val string: String</p>"},{"location":"api/shark/-hprof-record-reader/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordReader</p>"},{"location":"api/shark/-hprof-record-reader/#hprofrecordreader","title":"HprofRecordReader","text":"<p>class HprofRecordReader</p> <p>Reads hprof content from an Okio BufferedSource.</p> <p>Binary Dump Format reference: http://hg.openjdk.java.net/jdk6/jdk6/jdk/raw-file/tip/src/share /demo/jvmti/hprof/manual.html#mozTocId848088</p> <p>The Android Hprof format differs in some ways from that reference. This parser implementation is largely adapted from https://android.googlesource.com/platform/tools/base/+/studio-master-dev /perflib/src/main/java/com/android/tools/perflib</p> <p>Not thread safe, should be used from a single thread.</p>"},{"location":"api/shark/-hprof-record-reader/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-hprof-record-reader/#functions","title":"Functions","text":"Name Summary readBoolean fun readBoolean(): Boolean readBooleanArray fun readBooleanArray(arrayLength: Int): BooleanArray readByte fun readByte(): Byte readByteArray fun readByteArray(byteCount: Int): ByteArray readChar fun readChar(): Char readCharArray fun readCharArray(arrayLength: Int): CharArray readClassDumpRecord fun readClassDumpRecord(): HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecordReads a full class record after a class dump tag. readDebuggerGcRootRecord fun readDebuggerGcRootRecord(): GcRoot.Debugger readDouble fun readDouble(): Double readDoubleArray fun readDoubleArray(arrayLength: Int): DoubleArray readFinalizingGcRootRecord fun readFinalizingGcRootRecord(): GcRoot.Finalizing readFloat fun readFloat(): Float readFloatArray fun readFloatArray(arrayLength: Int): FloatArray readHeapDumpInfoRecord fun readHeapDumpInfoRecord(): HprofRecord.HeapDumpRecord.HeapDumpInfoRecord readId fun readId(): Long readIdArray fun readIdArray(arrayLength: Int): LongArray readInstanceDumpRecord fun readInstanceDumpRecord(): HprofRecord.HeapDumpRecord.ObjectRecord.InstanceDumpRecordReads a full instance record after a instance dump tag. readInt fun readInt(): Int readIntArray fun readIntArray(arrayLength: Int): IntArray readInternedStringGcRootRecord fun readInternedStringGcRootRecord(): GcRoot.InternedString readJavaFrameGcRootRecord fun readJavaFrameGcRootRecord(): GcRoot.JavaFrame readJniGlobalGcRootRecord fun readJniGlobalGcRootRecord(): GcRoot.JniGlobal readJniLocalGcRootRecord fun readJniLocalGcRootRecord(): GcRoot.JniLocal readJniMonitorGcRootRecord fun readJniMonitorGcRootRecord(): GcRoot.JniMonitor readLoadClassRecord fun readLoadClassRecord(): HprofRecord.LoadClassRecord readLong fun readLong(): Long readLongArray fun readLongArray(arrayLength: Int): LongArray readMonitorUsedGcRootRecord fun readMonitorUsedGcRootRecord(): GcRoot.MonitorUsed readNativeStackGcRootRecord fun readNativeStackGcRootRecord(): GcRoot.NativeStack readObjectArrayDumpRecord fun readObjectArrayDumpRecord(): HprofRecord.HeapDumpRecord.ObjectRecord.ObjectArrayDumpRecordReads a full object array record after a object array dump tag. readPrimitiveArrayDumpRecord fun readPrimitiveArrayDumpRecord(): HprofRecord.HeapDumpRecord.ObjectRecord.PrimitiveArrayDumpRecordReads a full primitive array record after a primitive array dump tag. readReferenceCleanupGcRootRecord fun readReferenceCleanupGcRootRecord(): GcRoot.ReferenceCleanup readShort fun readShort(): Short readShortArray fun readShortArray(arrayLength: Int): ShortArray readStackFrameRecord fun readStackFrameRecord(): HprofRecord.StackFrameRecord readStackTraceRecord fun readStackTraceRecord(): HprofRecord.StackTraceRecord readStickyClassGcRootRecord fun readStickyClassGcRootRecord(): GcRoot.StickyClass readString fun readString(byteCount: Int, charset: Charset): String readStringRecord fun readStringRecord(length: Long): HprofRecord.StringRecord readThreadBlockGcRootRecord fun readThreadBlockGcRootRecord(): GcRoot.ThreadBlock readThreadObjectGcRootRecord fun readThreadObjectGcRootRecord(): GcRoot.ThreadObject readUnknownGcRootRecord fun readUnknownGcRootRecord(): GcRoot.Unknown readUnreachableGcRootRecord fun readUnreachableGcRootRecord(): GcRoot.Unreachable readUnsignedByte fun readUnsignedByte(): Int readUnsignedInt fun readUnsignedInt(): Long readUnsignedShort fun readUnsignedShort(): Int readUtf8 fun readUtf8(byteCount: Long): String readValue fun readValue(type: Int): ValueHolderReads a value in the heap dump, which can be a reference or a primitive type. readVmInternalGcRootRecord fun readVmInternalGcRootRecord(): GcRoot.VmInternal sizeOf fun sizeOf(type: Int): Int skip fun skip(byteCount: Int)fun skip(byteCount: Long) skipClassDumpConstantPool fun skipClassDumpConstantPool() skipClassDumpFields fun skipClassDumpFields() skipClassDumpHeader fun skipClassDumpHeader() skipClassDumpRecord fun skipClassDumpRecord() skipClassDumpStaticFields fun skipClassDumpStaticFields() skipHeapDumpInfoRecord fun skipHeapDumpInfoRecord() skipId fun skipId() skipInstanceDumpRecord fun skipInstanceDumpRecord() skipObjectArrayDumpRecord fun skipObjectArrayDumpRecord() skipPrimitiveArrayDumpRecord fun skipPrimitiveArrayDumpRecord()"},{"location":"api/shark/-hprof-record-reader/#properties","title":"Properties","text":"Name Summary bytesRead val bytesRead: Long = 0How many bytes this reader has read from source. Can only increase."},{"location":"api/shark/-hprof-record-reader/bytes-read/","title":"Bytes read","text":"<p>//leakcanary/shark/HprofRecordReader/bytesRead</p>"},{"location":"api/shark/-hprof-record-reader/bytes-read/#bytesread","title":"bytesRead","text":"<p>val bytesRead: Long = 0</p> <p>How many bytes this reader has read from source. Can only increase.</p>"},{"location":"api/shark/-hprof-record-reader/read-boolean-array/","title":"Read boolean array","text":"<p>//leakcanary/shark/HprofRecordReader/readBooleanArray</p>"},{"location":"api/shark/-hprof-record-reader/read-boolean-array/#readbooleanarray","title":"readBooleanArray","text":"<p>fun readBooleanArray(arrayLength: Int): BooleanArray</p>"},{"location":"api/shark/-hprof-record-reader/read-boolean/","title":"Read boolean","text":"<p>//leakcanary/shark/HprofRecordReader/readBoolean</p>"},{"location":"api/shark/-hprof-record-reader/read-boolean/#readboolean","title":"readBoolean","text":"<p>fun readBoolean(): Boolean</p>"},{"location":"api/shark/-hprof-record-reader/read-byte-array/","title":"Read byte array","text":"<p>//leakcanary/shark/HprofRecordReader/readByteArray</p>"},{"location":"api/shark/-hprof-record-reader/read-byte-array/#readbytearray","title":"readByteArray","text":"<p>fun readByteArray(byteCount: Int): ByteArray</p>"},{"location":"api/shark/-hprof-record-reader/read-byte/","title":"Read byte","text":"<p>//leakcanary/shark/HprofRecordReader/readByte</p>"},{"location":"api/shark/-hprof-record-reader/read-byte/#readbyte","title":"readByte","text":"<p>fun readByte(): Byte</p>"},{"location":"api/shark/-hprof-record-reader/read-char-array/","title":"Read char array","text":"<p>//leakcanary/shark/HprofRecordReader/readCharArray</p>"},{"location":"api/shark/-hprof-record-reader/read-char-array/#readchararray","title":"readCharArray","text":"<p>fun readCharArray(arrayLength: Int): CharArray</p>"},{"location":"api/shark/-hprof-record-reader/read-char/","title":"Read char","text":"<p>//leakcanary/shark/HprofRecordReader/readChar</p>"},{"location":"api/shark/-hprof-record-reader/read-char/#readchar","title":"readChar","text":"<p>fun readChar(): Char</p>"},{"location":"api/shark/-hprof-record-reader/read-class-dump-record/","title":"Read class dump record","text":"<p>//leakcanary/shark/HprofRecordReader/readClassDumpRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-class-dump-record/#readclassdumprecord","title":"readClassDumpRecord","text":"<p>fun readClassDumpRecord(): HprofRecord.HeapDumpRecord.ObjectRecord.ClassDumpRecord</p> <p>Reads a full class record after a class dump tag.</p>"},{"location":"api/shark/-hprof-record-reader/read-debugger-gc-root-record/","title":"Read debugger gc root record","text":"<p>//leakcanary/shark/HprofRecordReader/readDebuggerGcRootRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-debugger-gc-root-record/#readdebuggergcrootrecord","title":"readDebuggerGcRootRecord","text":"<p>fun readDebuggerGcRootRecord(): GcRoot.Debugger</p>"},{"location":"api/shark/-hprof-record-reader/read-double-array/","title":"Read double array","text":"<p>//leakcanary/shark/HprofRecordReader/readDoubleArray</p>"},{"location":"api/shark/-hprof-record-reader/read-double-array/#readdoublearray","title":"readDoubleArray","text":"<p>fun readDoubleArray(arrayLength: Int): DoubleArray</p>"},{"location":"api/shark/-hprof-record-reader/read-double/","title":"Read double","text":"<p>//leakcanary/shark/HprofRecordReader/readDouble</p>"},{"location":"api/shark/-hprof-record-reader/read-double/#readdouble","title":"readDouble","text":"<p>fun readDouble(): Double</p>"},{"location":"api/shark/-hprof-record-reader/read-finalizing-gc-root-record/","title":"Read finalizing gc root record","text":"<p>//leakcanary/shark/HprofRecordReader/readFinalizingGcRootRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-finalizing-gc-root-record/#readfinalizinggcrootrecord","title":"readFinalizingGcRootRecord","text":"<p>fun readFinalizingGcRootRecord(): GcRoot.Finalizing</p>"},{"location":"api/shark/-hprof-record-reader/read-float-array/","title":"Read float array","text":"<p>//leakcanary/shark/HprofRecordReader/readFloatArray</p>"},{"location":"api/shark/-hprof-record-reader/read-float-array/#readfloatarray","title":"readFloatArray","text":"<p>fun readFloatArray(arrayLength: Int): FloatArray</p>"},{"location":"api/shark/-hprof-record-reader/read-float/","title":"Read float","text":"<p>//leakcanary/shark/HprofRecordReader/readFloat</p>"},{"location":"api/shark/-hprof-record-reader/read-float/#readfloat","title":"readFloat","text":"<p>fun readFloat(): Float</p>"},{"location":"api/shark/-hprof-record-reader/read-heap-dump-info-record/","title":"Read heap dump info record","text":"<p>//leakcanary/shark/HprofRecordReader/readHeapDumpInfoRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-heap-dump-info-record/#readheapdumpinforecord","title":"readHeapDumpInfoRecord","text":"<p>fun readHeapDumpInfoRecord(): HprofRecord.HeapDumpRecord.HeapDumpInfoRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-id-array/","title":"Read id array","text":"<p>//leakcanary/shark/HprofRecordReader/readIdArray</p>"},{"location":"api/shark/-hprof-record-reader/read-id-array/#readidarray","title":"readIdArray","text":"<p>fun readIdArray(arrayLength: Int): LongArray</p>"},{"location":"api/shark/-hprof-record-reader/read-id/","title":"Read id","text":"<p>//leakcanary/shark/HprofRecordReader/readId</p>"},{"location":"api/shark/-hprof-record-reader/read-id/#readid","title":"readId","text":"<p>fun readId(): Long</p>"},{"location":"api/shark/-hprof-record-reader/read-instance-dump-record/","title":"Read instance dump record","text":"<p>//leakcanary/shark/HprofRecordReader/readInstanceDumpRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-instance-dump-record/#readinstancedumprecord","title":"readInstanceDumpRecord","text":"<p>fun readInstanceDumpRecord(): HprofRecord.HeapDumpRecord.ObjectRecord.InstanceDumpRecord</p> <p>Reads a full instance record after a instance dump tag.</p>"},{"location":"api/shark/-hprof-record-reader/read-int-array/","title":"Read int array","text":"<p>//leakcanary/shark/HprofRecordReader/readIntArray</p>"},{"location":"api/shark/-hprof-record-reader/read-int-array/#readintarray","title":"readIntArray","text":"<p>fun readIntArray(arrayLength: Int): IntArray</p>"},{"location":"api/shark/-hprof-record-reader/read-int/","title":"Read int","text":"<p>//leakcanary/shark/HprofRecordReader/readInt</p>"},{"location":"api/shark/-hprof-record-reader/read-int/#readint","title":"readInt","text":"<p>fun readInt(): Int</p>"},{"location":"api/shark/-hprof-record-reader/read-interned-string-gc-root-record/","title":"Read interned string gc root record","text":"<p>//leakcanary/shark/HprofRecordReader/readInternedStringGcRootRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-interned-string-gc-root-record/#readinternedstringgcrootrecord","title":"readInternedStringGcRootRecord","text":"<p>fun readInternedStringGcRootRecord(): GcRoot.InternedString</p>"},{"location":"api/shark/-hprof-record-reader/read-java-frame-gc-root-record/","title":"Read java frame gc root record","text":"<p>//leakcanary/shark/HprofRecordReader/readJavaFrameGcRootRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-java-frame-gc-root-record/#readjavaframegcrootrecord","title":"readJavaFrameGcRootRecord","text":"<p>fun readJavaFrameGcRootRecord(): GcRoot.JavaFrame</p>"},{"location":"api/shark/-hprof-record-reader/read-jni-global-gc-root-record/","title":"Read jni global gc root record","text":"<p>//leakcanary/shark/HprofRecordReader/readJniGlobalGcRootRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-jni-global-gc-root-record/#readjniglobalgcrootrecord","title":"readJniGlobalGcRootRecord","text":"<p>fun readJniGlobalGcRootRecord(): GcRoot.JniGlobal</p>"},{"location":"api/shark/-hprof-record-reader/read-jni-local-gc-root-record/","title":"Read jni local gc root record","text":"<p>//leakcanary/shark/HprofRecordReader/readJniLocalGcRootRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-jni-local-gc-root-record/#readjnilocalgcrootrecord","title":"readJniLocalGcRootRecord","text":"<p>fun readJniLocalGcRootRecord(): GcRoot.JniLocal</p>"},{"location":"api/shark/-hprof-record-reader/read-jni-monitor-gc-root-record/","title":"Read jni monitor gc root record","text":"<p>//leakcanary/shark/HprofRecordReader/readJniMonitorGcRootRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-jni-monitor-gc-root-record/#readjnimonitorgcrootrecord","title":"readJniMonitorGcRootRecord","text":"<p>fun readJniMonitorGcRootRecord(): GcRoot.JniMonitor</p>"},{"location":"api/shark/-hprof-record-reader/read-load-class-record/","title":"Read load class record","text":"<p>//leakcanary/shark/HprofRecordReader/readLoadClassRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-load-class-record/#readloadclassrecord","title":"readLoadClassRecord","text":"<p>fun readLoadClassRecord(): HprofRecord.LoadClassRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-long-array/","title":"Read long array","text":"<p>//leakcanary/shark/HprofRecordReader/readLongArray</p>"},{"location":"api/shark/-hprof-record-reader/read-long-array/#readlongarray","title":"readLongArray","text":"<p>fun readLongArray(arrayLength: Int): LongArray</p>"},{"location":"api/shark/-hprof-record-reader/read-long/","title":"Read long","text":"<p>//leakcanary/shark/HprofRecordReader/readLong</p>"},{"location":"api/shark/-hprof-record-reader/read-long/#readlong","title":"readLong","text":"<p>fun readLong(): Long</p>"},{"location":"api/shark/-hprof-record-reader/read-monitor-used-gc-root-record/","title":"Read monitor used gc root record","text":"<p>//leakcanary/shark/HprofRecordReader/readMonitorUsedGcRootRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-monitor-used-gc-root-record/#readmonitorusedgcrootrecord","title":"readMonitorUsedGcRootRecord","text":"<p>fun readMonitorUsedGcRootRecord(): GcRoot.MonitorUsed</p>"},{"location":"api/shark/-hprof-record-reader/read-native-stack-gc-root-record/","title":"Read native stack gc root record","text":"<p>//leakcanary/shark/HprofRecordReader/readNativeStackGcRootRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-native-stack-gc-root-record/#readnativestackgcrootrecord","title":"readNativeStackGcRootRecord","text":"<p>fun readNativeStackGcRootRecord(): GcRoot.NativeStack</p>"},{"location":"api/shark/-hprof-record-reader/read-object-array-dump-record/","title":"Read object array dump record","text":"<p>//leakcanary/shark/HprofRecordReader/readObjectArrayDumpRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-object-array-dump-record/#readobjectarraydumprecord","title":"readObjectArrayDumpRecord","text":"<p>fun readObjectArrayDumpRecord(): HprofRecord.HeapDumpRecord.ObjectRecord.ObjectArrayDumpRecord</p> <p>Reads a full object array record after a object array dump tag.</p>"},{"location":"api/shark/-hprof-record-reader/read-primitive-array-dump-record/","title":"Read primitive array dump record","text":"<p>//leakcanary/shark/HprofRecordReader/readPrimitiveArrayDumpRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-primitive-array-dump-record/#readprimitivearraydumprecord","title":"readPrimitiveArrayDumpRecord","text":"<p>fun readPrimitiveArrayDumpRecord(): HprofRecord.HeapDumpRecord.ObjectRecord.PrimitiveArrayDumpRecord</p> <p>Reads a full primitive array record after a primitive array dump tag.</p>"},{"location":"api/shark/-hprof-record-reader/read-reference-cleanup-gc-root-record/","title":"Read reference cleanup gc root record","text":"<p>//leakcanary/shark/HprofRecordReader/readReferenceCleanupGcRootRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-reference-cleanup-gc-root-record/#readreferencecleanupgcrootrecord","title":"readReferenceCleanupGcRootRecord","text":"<p>fun readReferenceCleanupGcRootRecord(): GcRoot.ReferenceCleanup</p>"},{"location":"api/shark/-hprof-record-reader/read-short-array/","title":"Read short array","text":"<p>//leakcanary/shark/HprofRecordReader/readShortArray</p>"},{"location":"api/shark/-hprof-record-reader/read-short-array/#readshortarray","title":"readShortArray","text":"<p>fun readShortArray(arrayLength: Int): ShortArray</p>"},{"location":"api/shark/-hprof-record-reader/read-short/","title":"Read short","text":"<p>//leakcanary/shark/HprofRecordReader/readShort</p>"},{"location":"api/shark/-hprof-record-reader/read-short/#readshort","title":"readShort","text":"<p>fun readShort(): Short</p>"},{"location":"api/shark/-hprof-record-reader/read-stack-frame-record/","title":"Read stack frame record","text":"<p>//leakcanary/shark/HprofRecordReader/readStackFrameRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-stack-frame-record/#readstackframerecord","title":"readStackFrameRecord","text":"<p>fun readStackFrameRecord(): HprofRecord.StackFrameRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-stack-trace-record/","title":"Read stack trace record","text":"<p>//leakcanary/shark/HprofRecordReader/readStackTraceRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-stack-trace-record/#readstacktracerecord","title":"readStackTraceRecord","text":"<p>fun readStackTraceRecord(): HprofRecord.StackTraceRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-sticky-class-gc-root-record/","title":"Read sticky class gc root record","text":"<p>//leakcanary/shark/HprofRecordReader/readStickyClassGcRootRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-sticky-class-gc-root-record/#readstickyclassgcrootrecord","title":"readStickyClassGcRootRecord","text":"<p>fun readStickyClassGcRootRecord(): GcRoot.StickyClass</p>"},{"location":"api/shark/-hprof-record-reader/read-string-record/","title":"Read string record","text":"<p>//leakcanary/shark/HprofRecordReader/readStringRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-string-record/#readstringrecord","title":"readStringRecord","text":"<p>fun readStringRecord(length: Long): HprofRecord.StringRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-string/","title":"Read string","text":"<p>//leakcanary/shark/HprofRecordReader/readString</p>"},{"location":"api/shark/-hprof-record-reader/read-string/#readstring","title":"readString","text":"<p>fun readString(byteCount: Int, charset: Charset): String</p>"},{"location":"api/shark/-hprof-record-reader/read-thread-block-gc-root-record/","title":"Read thread block gc root record","text":"<p>//leakcanary/shark/HprofRecordReader/readThreadBlockGcRootRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-thread-block-gc-root-record/#readthreadblockgcrootrecord","title":"readThreadBlockGcRootRecord","text":"<p>fun readThreadBlockGcRootRecord(): GcRoot.ThreadBlock</p>"},{"location":"api/shark/-hprof-record-reader/read-thread-object-gc-root-record/","title":"Read thread object gc root record","text":"<p>//leakcanary/shark/HprofRecordReader/readThreadObjectGcRootRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-thread-object-gc-root-record/#readthreadobjectgcrootrecord","title":"readThreadObjectGcRootRecord","text":"<p>fun readThreadObjectGcRootRecord(): GcRoot.ThreadObject</p>"},{"location":"api/shark/-hprof-record-reader/read-unknown-gc-root-record/","title":"Read unknown gc root record","text":"<p>//leakcanary/shark/HprofRecordReader/readUnknownGcRootRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-unknown-gc-root-record/#readunknowngcrootrecord","title":"readUnknownGcRootRecord","text":"<p>fun readUnknownGcRootRecord(): GcRoot.Unknown</p>"},{"location":"api/shark/-hprof-record-reader/read-unreachable-gc-root-record/","title":"Read unreachable gc root record","text":"<p>//leakcanary/shark/HprofRecordReader/readUnreachableGcRootRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-unreachable-gc-root-record/#readunreachablegcrootrecord","title":"readUnreachableGcRootRecord","text":"<p>fun readUnreachableGcRootRecord(): GcRoot.Unreachable</p>"},{"location":"api/shark/-hprof-record-reader/read-unsigned-byte/","title":"Read unsigned byte","text":"<p>//leakcanary/shark/HprofRecordReader/readUnsignedByte</p>"},{"location":"api/shark/-hprof-record-reader/read-unsigned-byte/#readunsignedbyte","title":"readUnsignedByte","text":"<p>fun readUnsignedByte(): Int</p>"},{"location":"api/shark/-hprof-record-reader/read-unsigned-int/","title":"Read unsigned int","text":"<p>//leakcanary/shark/HprofRecordReader/readUnsignedInt</p>"},{"location":"api/shark/-hprof-record-reader/read-unsigned-int/#readunsignedint","title":"readUnsignedInt","text":"<p>fun readUnsignedInt(): Long</p>"},{"location":"api/shark/-hprof-record-reader/read-unsigned-short/","title":"Read unsigned short","text":"<p>//leakcanary/shark/HprofRecordReader/readUnsignedShort</p>"},{"location":"api/shark/-hprof-record-reader/read-unsigned-short/#readunsignedshort","title":"readUnsignedShort","text":"<p>fun readUnsignedShort(): Int</p>"},{"location":"api/shark/-hprof-record-reader/read-utf8/","title":"Read utf8","text":"<p>//leakcanary/shark/HprofRecordReader/readUtf8</p>"},{"location":"api/shark/-hprof-record-reader/read-utf8/#readutf8","title":"readUtf8","text":"<p>fun readUtf8(byteCount: Long): String</p>"},{"location":"api/shark/-hprof-record-reader/read-value/","title":"Read value","text":"<p>//leakcanary/shark/HprofRecordReader/readValue</p>"},{"location":"api/shark/-hprof-record-reader/read-value/#readvalue","title":"readValue","text":"<p>fun readValue(type: Int): ValueHolder</p> <p>Reads a value in the heap dump, which can be a reference or a primitive type.</p>"},{"location":"api/shark/-hprof-record-reader/read-vm-internal-gc-root-record/","title":"Read vm internal gc root record","text":"<p>//leakcanary/shark/HprofRecordReader/readVmInternalGcRootRecord</p>"},{"location":"api/shark/-hprof-record-reader/read-vm-internal-gc-root-record/#readvminternalgcrootrecord","title":"readVmInternalGcRootRecord","text":"<p>fun readVmInternalGcRootRecord(): GcRoot.VmInternal</p>"},{"location":"api/shark/-hprof-record-reader/size-of/","title":"Size of","text":"<p>//leakcanary/shark/HprofRecordReader/sizeOf</p>"},{"location":"api/shark/-hprof-record-reader/size-of/#sizeof","title":"sizeOf","text":"<p>fun sizeOf(type: Int): Int</p>"},{"location":"api/shark/-hprof-record-reader/skip-class-dump-constant-pool/","title":"Skip class dump constant pool","text":"<p>//leakcanary/shark/HprofRecordReader/skipClassDumpConstantPool</p>"},{"location":"api/shark/-hprof-record-reader/skip-class-dump-constant-pool/#skipclassdumpconstantpool","title":"skipClassDumpConstantPool","text":"<p>fun skipClassDumpConstantPool()</p>"},{"location":"api/shark/-hprof-record-reader/skip-class-dump-fields/","title":"Skip class dump fields","text":"<p>//leakcanary/shark/HprofRecordReader/skipClassDumpFields</p>"},{"location":"api/shark/-hprof-record-reader/skip-class-dump-fields/#skipclassdumpfields","title":"skipClassDumpFields","text":"<p>fun skipClassDumpFields()</p>"},{"location":"api/shark/-hprof-record-reader/skip-class-dump-header/","title":"Skip class dump header","text":"<p>//leakcanary/shark/HprofRecordReader/skipClassDumpHeader</p>"},{"location":"api/shark/-hprof-record-reader/skip-class-dump-header/#skipclassdumpheader","title":"skipClassDumpHeader","text":"<p>fun skipClassDumpHeader()</p>"},{"location":"api/shark/-hprof-record-reader/skip-class-dump-record/","title":"Skip class dump record","text":"<p>//leakcanary/shark/HprofRecordReader/skipClassDumpRecord</p>"},{"location":"api/shark/-hprof-record-reader/skip-class-dump-record/#skipclassdumprecord","title":"skipClassDumpRecord","text":"<p>fun skipClassDumpRecord()</p>"},{"location":"api/shark/-hprof-record-reader/skip-class-dump-static-fields/","title":"Skip class dump static fields","text":"<p>//leakcanary/shark/HprofRecordReader/skipClassDumpStaticFields</p>"},{"location":"api/shark/-hprof-record-reader/skip-class-dump-static-fields/#skipclassdumpstaticfields","title":"skipClassDumpStaticFields","text":"<p>fun skipClassDumpStaticFields()</p>"},{"location":"api/shark/-hprof-record-reader/skip-heap-dump-info-record/","title":"Skip heap dump info record","text":"<p>//leakcanary/shark/HprofRecordReader/skipHeapDumpInfoRecord</p>"},{"location":"api/shark/-hprof-record-reader/skip-heap-dump-info-record/#skipheapdumpinforecord","title":"skipHeapDumpInfoRecord","text":"<p>fun skipHeapDumpInfoRecord()</p>"},{"location":"api/shark/-hprof-record-reader/skip-id/","title":"Skip id","text":"<p>//leakcanary/shark/HprofRecordReader/skipId</p>"},{"location":"api/shark/-hprof-record-reader/skip-id/#skipid","title":"skipId","text":"<p>fun skipId()</p>"},{"location":"api/shark/-hprof-record-reader/skip-instance-dump-record/","title":"Skip instance dump record","text":"<p>//leakcanary/shark/HprofRecordReader/skipInstanceDumpRecord</p>"},{"location":"api/shark/-hprof-record-reader/skip-instance-dump-record/#skipinstancedumprecord","title":"skipInstanceDumpRecord","text":"<p>fun skipInstanceDumpRecord()</p>"},{"location":"api/shark/-hprof-record-reader/skip-object-array-dump-record/","title":"Skip object array dump record","text":"<p>//leakcanary/shark/HprofRecordReader/skipObjectArrayDumpRecord</p>"},{"location":"api/shark/-hprof-record-reader/skip-object-array-dump-record/#skipobjectarraydumprecord","title":"skipObjectArrayDumpRecord","text":"<p>fun skipObjectArrayDumpRecord()</p>"},{"location":"api/shark/-hprof-record-reader/skip-primitive-array-dump-record/","title":"Skip primitive array dump record","text":"<p>//leakcanary/shark/HprofRecordReader/skipPrimitiveArrayDumpRecord</p>"},{"location":"api/shark/-hprof-record-reader/skip-primitive-array-dump-record/#skipprimitivearraydumprecord","title":"skipPrimitiveArrayDumpRecord","text":"<p>fun skipPrimitiveArrayDumpRecord()</p>"},{"location":"api/shark/-hprof-record-reader/skip/","title":"Skip","text":"<p>//leakcanary/shark/HprofRecordReader/skip</p>"},{"location":"api/shark/-hprof-record-reader/skip/#skip","title":"skip","text":"<p>fun skip(byteCount: Int)</p> <p>fun skip(byteCount: Long)</p>"},{"location":"api/shark/-hprof-record-reader/-companion/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordReader/Companion</p>"},{"location":"api/shark/-hprof-record-reader/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-hprof-record-tag/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag</p>"},{"location":"api/shark/-hprof-record-tag/#hprofrecordtag","title":"HprofRecordTag","text":"<p>enum HprofRecordTag : Enum&lt;HprofRecordTag&gt;</p>"},{"location":"api/shark/-hprof-record-tag/#entries","title":"Entries","text":"PRIMITIVE_ARRAY_DUMP PRIMITIVE_ARRAY_DUMP(35) OBJECT_ARRAY_DUMP OBJECT_ARRAY_DUMP(34) INSTANCE_DUMP INSTANCE_DUMP(33) CLASS_DUMP CLASS_DUMP(32) PRIMITIVE_ARRAY_NODATA PRIMITIVE_ARRAY_NODATA(195) ROOT_UNREACHABLE ROOT_UNREACHABLE(144) ROOT_JNI_MONITOR ROOT_JNI_MONITOR(142) ROOT_VM_INTERNAL ROOT_VM_INTERNAL(141) ROOT_REFERENCE_CLEANUP ROOT_REFERENCE_CLEANUP(140) ROOT_DEBUGGER ROOT_DEBUGGER(139) ROOT_FINALIZING ROOT_FINALIZING(138) ROOT_INTERNED_STRING ROOT_INTERNED_STRING(137) HEAP_DUMP_INFO HEAP_DUMP_INFO(254)Android format addition ROOT_THREAD_OBJECT ROOT_THREAD_OBJECT(8) ROOT_MONITOR_USED ROOT_MONITOR_USED(7) ROOT_THREAD_BLOCK ROOT_THREAD_BLOCK(6) ROOT_STICKY_CLASS ROOT_STICKY_CLASS(5) ROOT_NATIVE_STACK ROOT_NATIVE_STACK(4) ROOT_JAVA_FRAME ROOT_JAVA_FRAME(3) ROOT_JNI_LOCAL ROOT_JNI_LOCAL(2) ROOT_JNI_GLOBAL ROOT_JNI_GLOBAL(1) ROOT_UNKNOWN ROOT_UNKNOWN(255) CONTROL_SETTINGS CONTROL_SETTINGS(14) CPU_SAMPLES CPU_SAMPLES(13) HEAP_DUMP_END HEAP_DUMP_END(44) HEAP_DUMP_SEGMENT HEAP_DUMP_SEGMENT(28) HEAP_DUMP HEAP_DUMP(12) END_THREAD END_THREAD(11) START_THREAD START_THREAD(10) HEAP_SUMMARY HEAP_SUMMARY(7) ALLOC_SITES ALLOC_SITES(6) STACK_TRACE STACK_TRACE(5) STACK_FRAME STACK_FRAME(4) UNLOAD_CLASS UNLOAD_CLASS(3) LOAD_CLASS LOAD_CLASS(2) STRING_IN_UTF8 STRING_IN_UTF8(1)"},{"location":"api/shark/-hprof-record-tag/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-hprof-record-tag/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/tag/","title":"Tag","text":"<p>//leakcanary/shark/HprofRecordTag/tag</p>"},{"location":"api/shark/-hprof-record-tag/tag/#tag","title":"tag","text":"<p>val tag: Int</p>"},{"location":"api/shark/-hprof-record-tag/-a-l-l-o-c_-s-i-t-e-s/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/ALLOC_SITES</p>"},{"location":"api/shark/-hprof-record-tag/-a-l-l-o-c_-s-i-t-e-s/#alloc_sites","title":"ALLOC_SITES","text":"<p>ALLOC_SITES(6)</p>"},{"location":"api/shark/-hprof-record-tag/-a-l-l-o-c_-s-i-t-e-s/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-c-l-a-s-s_-d-u-m-p/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/CLASS_DUMP</p>"},{"location":"api/shark/-hprof-record-tag/-c-l-a-s-s_-d-u-m-p/#class_dump","title":"CLASS_DUMP","text":"<p>CLASS_DUMP(32)</p>"},{"location":"api/shark/-hprof-record-tag/-c-l-a-s-s_-d-u-m-p/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-c-o-n-t-r-o-l_-s-e-t-t-i-n-g-s/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/CONTROL_SETTINGS</p>"},{"location":"api/shark/-hprof-record-tag/-c-o-n-t-r-o-l_-s-e-t-t-i-n-g-s/#control_settings","title":"CONTROL_SETTINGS","text":"<p>CONTROL_SETTINGS(14)</p>"},{"location":"api/shark/-hprof-record-tag/-c-o-n-t-r-o-l_-s-e-t-t-i-n-g-s/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-c-p-u_-s-a-m-p-l-e-s/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/CPU_SAMPLES</p>"},{"location":"api/shark/-hprof-record-tag/-c-p-u_-s-a-m-p-l-e-s/#cpu_samples","title":"CPU_SAMPLES","text":"<p>CPU_SAMPLES(13)</p>"},{"location":"api/shark/-hprof-record-tag/-c-p-u_-s-a-m-p-l-e-s/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-companion/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/Companion</p>"},{"location":"api/shark/-hprof-record-tag/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-hprof-record-tag/-companion/#properties","title":"Properties","text":"Name Summary rootTags val rootTags: EnumSet&lt;HprofRecordTag&gt;"},{"location":"api/shark/-hprof-record-tag/-companion/root-tags/","title":"Root tags","text":"<p>//leakcanary/shark/HprofRecordTag/Companion/rootTags</p>"},{"location":"api/shark/-hprof-record-tag/-companion/root-tags/#roottags","title":"rootTags","text":"<p>val rootTags: EnumSet&lt;HprofRecordTag&gt;</p>"},{"location":"api/shark/-hprof-record-tag/-e-n-d_-t-h-r-e-a-d/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/END_THREAD</p>"},{"location":"api/shark/-hprof-record-tag/-e-n-d_-t-h-r-e-a-d/#end_thread","title":"END_THREAD","text":"<p>END_THREAD(11)</p>"},{"location":"api/shark/-hprof-record-tag/-e-n-d_-t-h-r-e-a-d/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/HEAP_DUMP</p>"},{"location":"api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p/#heap_dump","title":"HEAP_DUMP","text":"<p>HEAP_DUMP(12)</p>"},{"location":"api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p_-e-n-d/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/HEAP_DUMP_END</p>"},{"location":"api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p_-e-n-d/#heap_dump_end","title":"HEAP_DUMP_END","text":"<p>HEAP_DUMP_END(44)</p>"},{"location":"api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p_-e-n-d/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p_-i-n-f-o/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/HEAP_DUMP_INFO</p>"},{"location":"api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p_-i-n-f-o/#heap_dump_info","title":"HEAP_DUMP_INFO","text":"<p>HEAP_DUMP_INFO(254)</p> <p>Android format addition</p> <p>Specifies information about which heap certain objects came from. When a sub-tag of this type appears in a HPROF_HEAP_DUMP or HPROF_HEAP_DUMP_SEGMENT record, entries that follow it will be associated with the specified heap.  The HEAP_DUMP_INFO data is reset at the end of the HEAP_DUMP[_SEGMENT].  Multiple HEAP_DUMP_INFO entries may appear in a single HEAP_DUMP[_SEGMENT].</p> <p>Format: u1: Tag value (0xFE) u4: heap ID ID: heap name string ID</p>"},{"location":"api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p_-i-n-f-o/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p_-s-e-g-m-e-n-t/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/HEAP_DUMP_SEGMENT</p>"},{"location":"api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p_-s-e-g-m-e-n-t/#heap_dump_segment","title":"HEAP_DUMP_SEGMENT","text":"<p>HEAP_DUMP_SEGMENT(28)</p>"},{"location":"api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p_-s-e-g-m-e-n-t/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-h-e-a-p_-s-u-m-m-a-r-y/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/HEAP_SUMMARY</p>"},{"location":"api/shark/-hprof-record-tag/-h-e-a-p_-s-u-m-m-a-r-y/#heap_summary","title":"HEAP_SUMMARY","text":"<p>HEAP_SUMMARY(7)</p>"},{"location":"api/shark/-hprof-record-tag/-h-e-a-p_-s-u-m-m-a-r-y/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-i-n-s-t-a-n-c-e_-d-u-m-p/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/INSTANCE_DUMP</p>"},{"location":"api/shark/-hprof-record-tag/-i-n-s-t-a-n-c-e_-d-u-m-p/#instance_dump","title":"INSTANCE_DUMP","text":"<p>INSTANCE_DUMP(33)</p>"},{"location":"api/shark/-hprof-record-tag/-i-n-s-t-a-n-c-e_-d-u-m-p/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-l-o-a-d_-c-l-a-s-s/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/LOAD_CLASS</p>"},{"location":"api/shark/-hprof-record-tag/-l-o-a-d_-c-l-a-s-s/#load_class","title":"LOAD_CLASS","text":"<p>LOAD_CLASS(2)</p>"},{"location":"api/shark/-hprof-record-tag/-l-o-a-d_-c-l-a-s-s/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-o-b-j-e-c-t_-a-r-r-a-y_-d-u-m-p/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/OBJECT_ARRAY_DUMP</p>"},{"location":"api/shark/-hprof-record-tag/-o-b-j-e-c-t_-a-r-r-a-y_-d-u-m-p/#object_array_dump","title":"OBJECT_ARRAY_DUMP","text":"<p>OBJECT_ARRAY_DUMP(34)</p>"},{"location":"api/shark/-hprof-record-tag/-o-b-j-e-c-t_-a-r-r-a-y_-d-u-m-p/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-p-r-i-m-i-t-i-v-e_-a-r-r-a-y_-d-u-m-p/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/PRIMITIVE_ARRAY_DUMP</p>"},{"location":"api/shark/-hprof-record-tag/-p-r-i-m-i-t-i-v-e_-a-r-r-a-y_-d-u-m-p/#primitive_array_dump","title":"PRIMITIVE_ARRAY_DUMP","text":"<p>PRIMITIVE_ARRAY_DUMP(35)</p>"},{"location":"api/shark/-hprof-record-tag/-p-r-i-m-i-t-i-v-e_-a-r-r-a-y_-d-u-m-p/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-p-r-i-m-i-t-i-v-e_-a-r-r-a-y_-n-o-d-a-t-a/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/PRIMITIVE_ARRAY_NODATA</p>"},{"location":"api/shark/-hprof-record-tag/-p-r-i-m-i-t-i-v-e_-a-r-r-a-y_-n-o-d-a-t-a/#primitive_array_nodata","title":"PRIMITIVE_ARRAY_NODATA","text":"<p>PRIMITIVE_ARRAY_NODATA(195)</p>"},{"location":"api/shark/-hprof-record-tag/-p-r-i-m-i-t-i-v-e_-a-r-r-a-y_-n-o-d-a-t-a/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-d-e-b-u-g-g-e-r/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/ROOT_DEBUGGER</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-d-e-b-u-g-g-e-r/#root_debugger","title":"ROOT_DEBUGGER","text":"<p>ROOT_DEBUGGER(139)</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-d-e-b-u-g-g-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-f-i-n-a-l-i-z-i-n-g/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/ROOT_FINALIZING</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-f-i-n-a-l-i-z-i-n-g/#root_finalizing","title":"ROOT_FINALIZING","text":"<p>ROOT_FINALIZING(138)</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-f-i-n-a-l-i-z-i-n-g/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-i-n-t-e-r-n-e-d_-s-t-r-i-n-g/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/ROOT_INTERNED_STRING</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-i-n-t-e-r-n-e-d_-s-t-r-i-n-g/#root_interned_string","title":"ROOT_INTERNED_STRING","text":"<p>ROOT_INTERNED_STRING(137)</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-i-n-t-e-r-n-e-d_-s-t-r-i-n-g/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-j-a-v-a_-f-r-a-m-e/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/ROOT_JAVA_FRAME</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-j-a-v-a_-f-r-a-m-e/#root_java_frame","title":"ROOT_JAVA_FRAME","text":"<p>ROOT_JAVA_FRAME(3)</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-j-a-v-a_-f-r-a-m-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-j-n-i_-g-l-o-b-a-l/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/ROOT_JNI_GLOBAL</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-j-n-i_-g-l-o-b-a-l/#root_jni_global","title":"ROOT_JNI_GLOBAL","text":"<p>ROOT_JNI_GLOBAL(1)</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-j-n-i_-g-l-o-b-a-l/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-j-n-i_-l-o-c-a-l/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/ROOT_JNI_LOCAL</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-j-n-i_-l-o-c-a-l/#root_jni_local","title":"ROOT_JNI_LOCAL","text":"<p>ROOT_JNI_LOCAL(2)</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-j-n-i_-l-o-c-a-l/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-j-n-i_-m-o-n-i-t-o-r/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/ROOT_JNI_MONITOR</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-j-n-i_-m-o-n-i-t-o-r/#root_jni_monitor","title":"ROOT_JNI_MONITOR","text":"<p>ROOT_JNI_MONITOR(142)</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-j-n-i_-m-o-n-i-t-o-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-m-o-n-i-t-o-r_-u-s-e-d/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/ROOT_MONITOR_USED</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-m-o-n-i-t-o-r_-u-s-e-d/#root_monitor_used","title":"ROOT_MONITOR_USED","text":"<p>ROOT_MONITOR_USED(7)</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-m-o-n-i-t-o-r_-u-s-e-d/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-n-a-t-i-v-e_-s-t-a-c-k/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/ROOT_NATIVE_STACK</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-n-a-t-i-v-e_-s-t-a-c-k/#root_native_stack","title":"ROOT_NATIVE_STACK","text":"<p>ROOT_NATIVE_STACK(4)</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-n-a-t-i-v-e_-s-t-a-c-k/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-r-e-f-e-r-e-n-c-e_-c-l-e-a-n-u-p/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/ROOT_REFERENCE_CLEANUP</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-r-e-f-e-r-e-n-c-e_-c-l-e-a-n-u-p/#root_reference_cleanup","title":"ROOT_REFERENCE_CLEANUP","text":"<p>ROOT_REFERENCE_CLEANUP(140)</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-r-e-f-e-r-e-n-c-e_-c-l-e-a-n-u-p/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-s-t-i-c-k-y_-c-l-a-s-s/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/ROOT_STICKY_CLASS</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-s-t-i-c-k-y_-c-l-a-s-s/#root_sticky_class","title":"ROOT_STICKY_CLASS","text":"<p>ROOT_STICKY_CLASS(5)</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-s-t-i-c-k-y_-c-l-a-s-s/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-t-h-r-e-a-d_-b-l-o-c-k/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/ROOT_THREAD_BLOCK</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-t-h-r-e-a-d_-b-l-o-c-k/#root_thread_block","title":"ROOT_THREAD_BLOCK","text":"<p>ROOT_THREAD_BLOCK(6)</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-t-h-r-e-a-d_-b-l-o-c-k/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-t-h-r-e-a-d_-o-b-j-e-c-t/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/ROOT_THREAD_OBJECT</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-t-h-r-e-a-d_-o-b-j-e-c-t/#root_thread_object","title":"ROOT_THREAD_OBJECT","text":"<p>ROOT_THREAD_OBJECT(8)</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-t-h-r-e-a-d_-o-b-j-e-c-t/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-u-n-k-n-o-w-n/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/ROOT_UNKNOWN</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-u-n-k-n-o-w-n/#root_unknown","title":"ROOT_UNKNOWN","text":"<p>ROOT_UNKNOWN(255)</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-u-n-k-n-o-w-n/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-u-n-r-e-a-c-h-a-b-l-e/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/ROOT_UNREACHABLE</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-u-n-r-e-a-c-h-a-b-l-e/#root_unreachable","title":"ROOT_UNREACHABLE","text":"<p>ROOT_UNREACHABLE(144)</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-u-n-r-e-a-c-h-a-b-l-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-v-m_-i-n-t-e-r-n-a-l/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/ROOT_VM_INTERNAL</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-v-m_-i-n-t-e-r-n-a-l/#root_vm_internal","title":"ROOT_VM_INTERNAL","text":"<p>ROOT_VM_INTERNAL(141)</p>"},{"location":"api/shark/-hprof-record-tag/-r-o-o-t_-v-m_-i-n-t-e-r-n-a-l/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-s-t-a-c-k_-f-r-a-m-e/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/STACK_FRAME</p>"},{"location":"api/shark/-hprof-record-tag/-s-t-a-c-k_-f-r-a-m-e/#stack_frame","title":"STACK_FRAME","text":"<p>STACK_FRAME(4)</p>"},{"location":"api/shark/-hprof-record-tag/-s-t-a-c-k_-f-r-a-m-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-s-t-a-c-k_-t-r-a-c-e/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/STACK_TRACE</p>"},{"location":"api/shark/-hprof-record-tag/-s-t-a-c-k_-t-r-a-c-e/#stack_trace","title":"STACK_TRACE","text":"<p>STACK_TRACE(5)</p>"},{"location":"api/shark/-hprof-record-tag/-s-t-a-c-k_-t-r-a-c-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-s-t-a-r-t_-t-h-r-e-a-d/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/START_THREAD</p>"},{"location":"api/shark/-hprof-record-tag/-s-t-a-r-t_-t-h-r-e-a-d/#start_thread","title":"START_THREAD","text":"<p>START_THREAD(10)</p>"},{"location":"api/shark/-hprof-record-tag/-s-t-a-r-t_-t-h-r-e-a-d/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-s-t-r-i-n-g_-i-n_-u-t-f8/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/STRING_IN_UTF8</p>"},{"location":"api/shark/-hprof-record-tag/-s-t-r-i-n-g_-i-n_-u-t-f8/#string_in_utf8","title":"STRING_IN_UTF8","text":"<p>STRING_IN_UTF8(1)</p>"},{"location":"api/shark/-hprof-record-tag/-s-t-r-i-n-g_-i-n_-u-t-f8/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-record-tag/-u-n-l-o-a-d_-c-l-a-s-s/","title":"Index","text":"<p>//leakcanary/shark/HprofRecordTag/UNLOAD_CLASS</p>"},{"location":"api/shark/-hprof-record-tag/-u-n-l-o-a-d_-c-l-a-s-s/#unload_class","title":"UNLOAD_CLASS","text":"<p>UNLOAD_CLASS(3)</p>"},{"location":"api/shark/-hprof-record-tag/-u-n-l-o-a-d_-c-l-a-s-s/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int tag val tag: Int"},{"location":"api/shark/-hprof-version/","title":"Index","text":"<p>//leakcanary/shark/HprofVersion</p>"},{"location":"api/shark/-hprof-version/#hprofversion","title":"HprofVersion","text":"<p>enum HprofVersion : Enum&lt;HprofVersion&gt; </p> <p>Supported hprof versions</p>"},{"location":"api/shark/-hprof-version/#entries","title":"Entries","text":"ANDROID ANDROID(\"JAVA PROFILE 1.0.3\") JDK_6 JDK_6(\"JAVA PROFILE 1.0.2\") JDK1_2_BETA4 JDK1_2_BETA4(\"JAVA PROFILE 1.0.1\") JDK1_2_BETA3 JDK1_2_BETA3(\"JAVA PROFILE 1.0\")"},{"location":"api/shark/-hprof-version/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int versionString val versionString: String"},{"location":"api/shark/-hprof-version/version-string/","title":"Version string","text":"<p>//leakcanary/shark/HprofVersion/versionString</p>"},{"location":"api/shark/-hprof-version/version-string/#versionstring","title":"versionString","text":"<p>val versionString: String</p>"},{"location":"api/shark/-hprof-version/-a-n-d-r-o-i-d/","title":"Index","text":"<p>//leakcanary/shark/HprofVersion/ANDROID</p>"},{"location":"api/shark/-hprof-version/-a-n-d-r-o-i-d/#android","title":"ANDROID","text":"<p>ANDROID(\"JAVA PROFILE 1.0.3\")</p>"},{"location":"api/shark/-hprof-version/-a-n-d-r-o-i-d/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int versionString val versionString: String"},{"location":"api/shark/-hprof-version/-j-d-k1_2_-b-e-t-a3/","title":"Index","text":"<p>//leakcanary/shark/HprofVersion/JDK1_2_BETA3</p>"},{"location":"api/shark/-hprof-version/-j-d-k1_2_-b-e-t-a3/#jdk1_2_beta3","title":"JDK1_2_BETA3","text":"<p>JDK1_2_BETA3(\"JAVA PROFILE 1.0\")</p>"},{"location":"api/shark/-hprof-version/-j-d-k1_2_-b-e-t-a3/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int versionString val versionString: String"},{"location":"api/shark/-hprof-version/-j-d-k1_2_-b-e-t-a4/","title":"Index","text":"<p>//leakcanary/shark/HprofVersion/JDK1_2_BETA4</p>"},{"location":"api/shark/-hprof-version/-j-d-k1_2_-b-e-t-a4/#jdk1_2_beta4","title":"JDK1_2_BETA4","text":"<p>JDK1_2_BETA4(\"JAVA PROFILE 1.0.1\")</p>"},{"location":"api/shark/-hprof-version/-j-d-k1_2_-b-e-t-a4/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int versionString val versionString: String"},{"location":"api/shark/-hprof-version/-j-d-k_6/","title":"Index","text":"<p>//leakcanary/shark/HprofVersion/JDK_6</p>"},{"location":"api/shark/-hprof-version/-j-d-k_6/#jdk_6","title":"JDK_6","text":"<p>JDK_6(\"JAVA PROFILE 1.0.2\")</p>"},{"location":"api/shark/-hprof-version/-j-d-k_6/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int versionString val versionString: String"},{"location":"api/shark/-hprof-writer/","title":"Index","text":"<p>//leakcanary/shark/HprofWriter</p>"},{"location":"api/shark/-hprof-writer/#hprofwriter","title":"HprofWriter","text":"<p>class HprofWriter : Closeable</p> <p>Generates Hprof files.</p> <p>Call openWriterFor to obtain a new instance.</p> <p>Call write to add records and close when you\u2019re done.</p>"},{"location":"api/shark/-hprof-writer/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-hprof-writer/#functions","title":"Functions","text":"Name Summary close open override fun close()Flushes to disk all HprofRecord.HeapDumpRecord that are currently written to the in memory buffer, then closes the file. valuesToBytes fun valuesToBytes(values: List&lt;ValueHolder&gt;): ByteArrayHelper method for creating a ByteArray for InstanceDumpRecord.fieldValues from a list of ValueHolder. write fun write(record: HprofRecord)Appends a HprofRecord to the heap dump. If record is a HprofRecord.HeapDumpRecord then it will not be written to an in memory buffer and written to file only when the next a record that is not a HprofRecord.HeapDumpRecord is written or when close is called."},{"location":"api/shark/-hprof-writer/#properties","title":"Properties","text":"Name Summary hprofHeader val hprofHeader: HprofHeader"},{"location":"api/shark/-hprof-writer/close/","title":"Close","text":"<p>//leakcanary/shark/HprofWriter/close</p>"},{"location":"api/shark/-hprof-writer/close/#close","title":"close","text":"<p>open override fun close()</p> <p>Flushes to disk all HprofRecord.HeapDumpRecord that are currently written to the in memory buffer, then closes the file.</p>"},{"location":"api/shark/-hprof-writer/hprof-header/","title":"Hprof header","text":"<p>//leakcanary/shark/HprofWriter/hprofHeader</p>"},{"location":"api/shark/-hprof-writer/hprof-header/#hprofheader","title":"hprofHeader","text":"<p>val hprofHeader: HprofHeader</p>"},{"location":"api/shark/-hprof-writer/values-to-bytes/","title":"Values to bytes","text":"<p>//leakcanary/shark/HprofWriter/valuesToBytes</p>"},{"location":"api/shark/-hprof-writer/values-to-bytes/#valuestobytes","title":"valuesToBytes","text":"<p>fun valuesToBytes(values: List&lt;ValueHolder&gt;): ByteArray</p> <p>Helper method for creating a ByteArray for InstanceDumpRecord.fieldValues from a list of ValueHolder.</p>"},{"location":"api/shark/-hprof-writer/write/","title":"Write","text":"<p>//leakcanary/shark/HprofWriter/write</p>"},{"location":"api/shark/-hprof-writer/write/#write","title":"write","text":"<p>fun write(record: HprofRecord)</p> <p>Appends a HprofRecord to the heap dump. If record is a HprofRecord.HeapDumpRecord then it will not be written to an in memory buffer and written to file only when the next a record that is not a HprofRecord.HeapDumpRecord is written or when close is called.</p>"},{"location":"api/shark/-hprof-writer/-companion/","title":"Index","text":"<p>//leakcanary/shark/HprofWriter/Companion</p>"},{"location":"api/shark/-hprof-writer/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-hprof-writer/-companion/#functions","title":"Functions","text":"Name Summary openWriterFor fun openWriterFor(hprofFile: File, hprofHeader: HprofHeader = HprofHeader()): HprofWriterfun openWriterFor(hprofSink: BufferedSink, hprofHeader: HprofHeader = HprofHeader()): HprofWriter"},{"location":"api/shark/-hprof-writer/-companion/open-writer-for/","title":"Open writer for","text":"<p>//leakcanary/shark/HprofWriter/Companion/openWriterFor</p>"},{"location":"api/shark/-hprof-writer/-companion/open-writer-for/#openwriterfor","title":"openWriterFor","text":"<p>fun openWriterFor(hprofFile: File, hprofHeader: HprofHeader = HprofHeader()): HprofWriter</p> <p>fun openWriterFor(hprofSink: BufferedSink, hprofHeader: HprofHeader = HprofHeader()): HprofWriter</p>"},{"location":"api/shark/-hprof-writer-helper/","title":"Index","text":"<p>//leakcanary/shark/HprofWriterHelper</p>"},{"location":"api/shark/-hprof-writer-helper/#hprofwriterhelper","title":"HprofWriterHelper","text":"<p>class HprofWriterHelper(writer: HprofWriter) : Closeable</p>"},{"location":"api/shark/-hprof-writer-helper/#constructors","title":"Constructors","text":"HprofWriterHelper fun HprofWriterHelper(writer: HprofWriter)"},{"location":"api/shark/-hprof-writer-helper/#types","title":"Types","text":"Name Summary ClassDefinition inner class ClassDefinition InstanceAndClassDefinition inner class InstanceAndClassDefinition"},{"location":"api/shark/-hprof-writer-helper/#functions","title":"Functions","text":"Name Summary arrayClass fun arrayClass(className: String): Long clazz infix fun String.clazz(block: HprofWriterHelper.ClassDefinition.() -&gt; Unit): Longfun clazz(className: String, superclassId: Long = -1L, staticFields: List&lt;Pair&lt;String, ValueHolder&gt;&gt; = emptyList(), fields: List&lt;Pair&lt;String, KClass&lt;out ValueHolder&gt;&gt;&gt; = emptyList()): Longfun clazz(classNameRecord: HprofRecord.StringRecord, superclassId: Long = -1L, staticFields: List&lt;Pair&lt;Long, ValueHolder&gt;&gt; = emptyList(), fields: List&lt;Pair&lt;Long, KClass&lt;out ValueHolder&gt;&gt;&gt; = emptyList()): Long close open override fun close() gcRoot fun gcRoot(gcRoot: GcRoot) instance infix fun String.instance(block: HprofWriterHelper.InstanceAndClassDefinition.() -&gt; Unit): ValueHolder.ReferenceHolderfun instance(classId: Long, fields: List&lt;ValueHolder&gt; = emptyList()): ValueHolder.ReferenceHolder keyedWeakReference fun keyedWeakReference(referentInstanceId: ValueHolder.ReferenceHolder): ValueHolder.ReferenceHolder objectArray fun objectArray(vararg elements: ValueHolder.ReferenceHolder): ValueHolder.ReferenceHolderfun objectArray(classId: Long, array: LongArray): Long objectArrayOf fun objectArrayOf(classId: Long, vararg elements: ValueHolder.ReferenceHolder): ValueHolder.ReferenceHolder primitiveLongArray fun primitiveLongArray(array: LongArray): Long string fun string(string: String): ValueHolder.ReferenceHolder stringRecord fun stringRecord(name: String): HprofRecord.StringRecord watchedInstance infix fun String.watchedInstance(block: HprofWriterHelper.InstanceAndClassDefinition.() -&gt; Unit): ValueHolder.ReferenceHolder"},{"location":"api/shark/-hprof-writer-helper/#properties","title":"Properties","text":"Name Summary charArrayDump val String.charArrayDump: ValueHolder.ReferenceHolder"},{"location":"api/shark/-hprof-writer-helper/-hprof-writer-helper/","title":"hprof writer helper","text":"<p>//leakcanary/shark/HprofWriterHelper/HprofWriterHelper</p>"},{"location":"api/shark/-hprof-writer-helper/-hprof-writer-helper/#hprofwriterhelper","title":"HprofWriterHelper","text":"<p>fun HprofWriterHelper(writer: HprofWriter)</p>"},{"location":"api/shark/-hprof-writer-helper/array-class/","title":"Array class","text":"<p>//leakcanary/shark/HprofWriterHelper/arrayClass</p>"},{"location":"api/shark/-hprof-writer-helper/array-class/#arrayclass","title":"arrayClass","text":"<p>fun arrayClass(className: String): Long</p>"},{"location":"api/shark/-hprof-writer-helper/char-array-dump/","title":"Char array dump","text":"<p>//leakcanary/shark/HprofWriterHelper/charArrayDump</p>"},{"location":"api/shark/-hprof-writer-helper/char-array-dump/#chararraydump","title":"charArrayDump","text":"<p>val String.charArrayDump: ValueHolder.ReferenceHolder</p>"},{"location":"api/shark/-hprof-writer-helper/clazz/","title":"Clazz","text":"<p>//leakcanary/shark/HprofWriterHelper/clazz</p>"},{"location":"api/shark/-hprof-writer-helper/clazz/#clazz","title":"clazz","text":"<p>fun clazz(className: String, superclassId: Long = -1L, staticFields: List&lt;Pair&lt;String, ValueHolder&gt;&gt; = emptyList(), fields: List&lt;Pair&lt;String, KClass&lt;out ValueHolder&gt;&gt;&gt; = emptyList()): Long</p> <p>fun clazz(classNameRecord: HprofRecord.StringRecord, superclassId: Long = -1L, staticFields: List&lt;Pair&lt;Long, ValueHolder&gt;&gt; = emptyList(), fields: List&lt;Pair&lt;Long, KClass&lt;out ValueHolder&gt;&gt;&gt; = emptyList()): Long</p> <p>infix fun String.clazz(block: HprofWriterHelper.ClassDefinition.() -&gt; Unit): Long</p>"},{"location":"api/shark/-hprof-writer-helper/close/","title":"Close","text":"<p>//leakcanary/shark/HprofWriterHelper/close</p>"},{"location":"api/shark/-hprof-writer-helper/close/#close","title":"close","text":"<p>open override fun close()</p>"},{"location":"api/shark/-hprof-writer-helper/gc-root/","title":"Gc root","text":"<p>//leakcanary/shark/HprofWriterHelper/gcRoot</p>"},{"location":"api/shark/-hprof-writer-helper/gc-root/#gcroot","title":"gcRoot","text":"<p>fun gcRoot(gcRoot: GcRoot)</p>"},{"location":"api/shark/-hprof-writer-helper/instance/","title":"Instance","text":"<p>//leakcanary/shark/HprofWriterHelper/instance</p>"},{"location":"api/shark/-hprof-writer-helper/instance/#instance","title":"instance","text":"<p>fun instance(classId: Long, fields: List&lt;ValueHolder&gt; = emptyList()): ValueHolder.ReferenceHolder</p> <p>infix fun String.instance(block: HprofWriterHelper.InstanceAndClassDefinition.() -&gt; Unit): ValueHolder.ReferenceHolder</p>"},{"location":"api/shark/-hprof-writer-helper/keyed-weak-reference/","title":"Keyed weak reference","text":"<p>//leakcanary/shark/HprofWriterHelper/keyedWeakReference</p>"},{"location":"api/shark/-hprof-writer-helper/keyed-weak-reference/#keyedweakreference","title":"keyedWeakReference","text":"<p>fun keyedWeakReference(referentInstanceId: ValueHolder.ReferenceHolder): ValueHolder.ReferenceHolder</p>"},{"location":"api/shark/-hprof-writer-helper/object-array-of/","title":"Object array of","text":"<p>//leakcanary/shark/HprofWriterHelper/objectArrayOf</p>"},{"location":"api/shark/-hprof-writer-helper/object-array-of/#objectarrayof","title":"objectArrayOf","text":"<p>fun objectArrayOf(classId: Long, vararg elements: ValueHolder.ReferenceHolder): ValueHolder.ReferenceHolder</p>"},{"location":"api/shark/-hprof-writer-helper/object-array/","title":"Object array","text":"<p>//leakcanary/shark/HprofWriterHelper/objectArray</p>"},{"location":"api/shark/-hprof-writer-helper/object-array/#objectarray","title":"objectArray","text":"<p>fun objectArray(vararg elements: ValueHolder.ReferenceHolder): ValueHolder.ReferenceHolder</p> <p>fun objectArray(classId: Long, array: LongArray): Long</p>"},{"location":"api/shark/-hprof-writer-helper/primitive-long-array/","title":"Primitive long array","text":"<p>//leakcanary/shark/HprofWriterHelper/primitiveLongArray</p>"},{"location":"api/shark/-hprof-writer-helper/primitive-long-array/#primitivelongarray","title":"primitiveLongArray","text":"<p>fun primitiveLongArray(array: LongArray): Long</p>"},{"location":"api/shark/-hprof-writer-helper/string-record/","title":"String record","text":"<p>//leakcanary/shark/HprofWriterHelper/stringRecord</p>"},{"location":"api/shark/-hprof-writer-helper/string-record/#stringrecord","title":"stringRecord","text":"<p>fun stringRecord(name: String): HprofRecord.StringRecord</p>"},{"location":"api/shark/-hprof-writer-helper/string/","title":"String","text":"<p>//leakcanary/shark/HprofWriterHelper/string</p>"},{"location":"api/shark/-hprof-writer-helper/string/#string","title":"string","text":"<p>fun string(string: String): ValueHolder.ReferenceHolder</p>"},{"location":"api/shark/-hprof-writer-helper/watched-instance/","title":"Watched instance","text":"<p>//leakcanary/shark/HprofWriterHelper/watchedInstance</p>"},{"location":"api/shark/-hprof-writer-helper/watched-instance/#watchedinstance","title":"watchedInstance","text":"<p>infix fun String.watchedInstance(block: HprofWriterHelper.InstanceAndClassDefinition.() -&gt; Unit): ValueHolder.ReferenceHolder</p>"},{"location":"api/shark/-hprof-writer-helper/-class-definition/","title":"Index","text":"<p>//leakcanary/shark/HprofWriterHelper/ClassDefinition</p>"},{"location":"api/shark/-hprof-writer-helper/-class-definition/#classdefinition","title":"ClassDefinition","text":"<p>inner class ClassDefinition</p>"},{"location":"api/shark/-hprof-writer-helper/-class-definition/#constructors","title":"Constructors","text":"ClassDefinition fun ClassDefinition()"},{"location":"api/shark/-hprof-writer-helper/-class-definition/#properties","title":"Properties","text":"Name Summary staticField val staticField: LinkedHashMap&lt;String, ValueHolder&gt;"},{"location":"api/shark/-hprof-writer-helper/-class-definition/-class-definition/","title":"class definition","text":"<p>//leakcanary/shark/HprofWriterHelper/ClassDefinition/ClassDefinition</p>"},{"location":"api/shark/-hprof-writer-helper/-class-definition/-class-definition/#classdefinition","title":"ClassDefinition","text":"<p>fun ClassDefinition()</p>"},{"location":"api/shark/-hprof-writer-helper/-class-definition/static-field/","title":"Static field","text":"<p>//leakcanary/shark/HprofWriterHelper/ClassDefinition/staticField</p>"},{"location":"api/shark/-hprof-writer-helper/-class-definition/static-field/#staticfield","title":"staticField","text":"<p>val staticField: LinkedHashMap&lt;String, ValueHolder&gt;</p>"},{"location":"api/shark/-hprof-writer-helper/-instance-and-class-definition/","title":"Index","text":"<p>//leakcanary/shark/HprofWriterHelper/InstanceAndClassDefinition</p>"},{"location":"api/shark/-hprof-writer-helper/-instance-and-class-definition/#instanceandclassdefinition","title":"InstanceAndClassDefinition","text":"<p>inner class InstanceAndClassDefinition</p>"},{"location":"api/shark/-hprof-writer-helper/-instance-and-class-definition/#constructors","title":"Constructors","text":"InstanceAndClassDefinition fun InstanceAndClassDefinition()"},{"location":"api/shark/-hprof-writer-helper/-instance-and-class-definition/#properties","title":"Properties","text":"Name Summary field val field: LinkedHashMap&lt;String, ValueHolder&gt; staticField val staticField: LinkedHashMap&lt;String, ValueHolder&gt;"},{"location":"api/shark/-hprof-writer-helper/-instance-and-class-definition/-instance-and-class-definition/","title":"instance and class definition","text":"<p>//leakcanary/shark/HprofWriterHelper/InstanceAndClassDefinition/InstanceAndClassDefinition</p>"},{"location":"api/shark/-hprof-writer-helper/-instance-and-class-definition/-instance-and-class-definition/#instanceandclassdefinition","title":"InstanceAndClassDefinition","text":"<p>fun InstanceAndClassDefinition()</p>"},{"location":"api/shark/-hprof-writer-helper/-instance-and-class-definition/field/","title":"Field","text":"<p>//leakcanary/shark/HprofWriterHelper/InstanceAndClassDefinition/field</p>"},{"location":"api/shark/-hprof-writer-helper/-instance-and-class-definition/field/#field","title":"field","text":"<p>val field: LinkedHashMap&lt;String, ValueHolder&gt;</p>"},{"location":"api/shark/-hprof-writer-helper/-instance-and-class-definition/static-field/","title":"Static field","text":"<p>//leakcanary/shark/HprofWriterHelper/InstanceAndClassDefinition/staticField</p>"},{"location":"api/shark/-hprof-writer-helper/-instance-and-class-definition/static-field/#staticfield","title":"staticField","text":"<p>val staticField: LinkedHashMap&lt;String, ValueHolder&gt;</p>"},{"location":"api/shark/-ignored-reference-matcher/","title":"Index","text":"<p>//leakcanary/shark/IgnoredReferenceMatcher</p>"},{"location":"api/shark/-ignored-reference-matcher/#ignoredreferencematcher","title":"IgnoredReferenceMatcher","text":"<p>class IgnoredReferenceMatcher(val pattern: ReferencePattern) : ReferenceMatcher</p> <p>IgnoredReferenceMatcher should be used to match references that cannot ever create leaks. The shortest path finder will never go through matching references.</p>"},{"location":"api/shark/-ignored-reference-matcher/#constructors","title":"Constructors","text":"IgnoredReferenceMatcher fun IgnoredReferenceMatcher(pattern: ReferencePattern)"},{"location":"api/shark/-ignored-reference-matcher/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-ignored-reference-matcher/#properties","title":"Properties","text":"Name Summary pattern open override val pattern: ReferencePatternThe pattern that references will be matched against."},{"location":"api/shark/-ignored-reference-matcher/-ignored-reference-matcher/","title":"ignored reference matcher","text":"<p>//leakcanary/shark/IgnoredReferenceMatcher/IgnoredReferenceMatcher</p>"},{"location":"api/shark/-ignored-reference-matcher/-ignored-reference-matcher/#ignoredreferencematcher","title":"IgnoredReferenceMatcher","text":"<p>fun IgnoredReferenceMatcher(pattern: ReferencePattern)</p>"},{"location":"api/shark/-ignored-reference-matcher/pattern/","title":"Pattern","text":"<p>//leakcanary/shark/IgnoredReferenceMatcher/pattern</p>"},{"location":"api/shark/-ignored-reference-matcher/pattern/#pattern","title":"pattern","text":"<p>open override val pattern: ReferencePattern</p> <p>The pattern that references will be matched against.</p>"},{"location":"api/shark/-ignored-reference-matcher/to-string/","title":"To string","text":"<p>//leakcanary/shark/IgnoredReferenceMatcher/toString</p>"},{"location":"api/shark/-ignored-reference-matcher/to-string/#tostring","title":"toString","text":"<p>open override fun toString(): String</p>"},{"location":"api/shark/-interactive-command/","title":"Index","text":"<p>//leakcanary/shark/InteractiveCommand</p>"},{"location":"api/shark/-interactive-command/#interactivecommand","title":"InteractiveCommand","text":"<p>class InteractiveCommand : CliktCommand</p>"},{"location":"api/shark/-interactive-command/#constructors","title":"Constructors","text":"InteractiveCommand fun InteractiveCommand()"},{"location":"api/shark/-interactive-command/#types","title":"Types","text":"Name Summary COMMAND enum COMMAND : Enum&lt;InteractiveCommand.COMMAND&gt;"},{"location":"api/shark/-interactive-command/#functions","title":"Functions","text":"Name Summary aliases open fun aliases(): Map&lt;String, List&lt;String&gt;&gt; getFormattedHelp open fun getFormattedHelp(): String getFormattedUsage open fun getFormattedUsage(): String issueMessage fun issueMessage(message: String) main fun main(argv: Array&lt;String&gt;)fun main(argv: List&lt;String&gt;) parse fun parse(argv: Array&lt;String&gt;, parentContext: Context?)fun parse(argv: List&lt;String&gt;, parentContext: Context?) registerArgument fun registerArgument(argument: Argument) registeredSubcommandNames fun registeredSubcommandNames(): List&lt;String&gt; registerOption open override fun registerOption(option: GroupableOption)fun registerOption(option: Option) registerOptionGroup fun registerOptionGroup(group: ParameterGroup) run open override fun run() toString open override fun toString(): String"},{"location":"api/shark/-interactive-command/#properties","title":"Properties","text":"Name Summary commandHelp val commandHelp: String commandHelpEpilog val commandHelpEpilog: String commandName val commandName: String context val context: Context helpTags val helpTags: Map&lt;String, String&gt; invokeWithoutSubcommand val invokeWithoutSubcommand: Boolean messages val messages: List&lt;String&gt; printHelpOnEmptyArgs val printHelpOnEmptyArgs: Boolean"},{"location":"api/shark/-interactive-command/-interactive-command/","title":"interactive command","text":"<p>//leakcanary/shark/InteractiveCommand/InteractiveCommand</p>"},{"location":"api/shark/-interactive-command/-interactive-command/#interactivecommand","title":"InteractiveCommand","text":"<p>fun InteractiveCommand()</p>"},{"location":"api/shark/-interactive-command/run/","title":"Run","text":"<p>//leakcanary/shark/InteractiveCommand/run</p>"},{"location":"api/shark/-interactive-command/run/#run","title":"run","text":"<p>open override fun run()</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/","title":"Index","text":"<p>//leakcanary/shark/InteractiveCommand/COMMAND</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/#command","title":"COMMAND","text":"<p>enum COMMAND : Enum&lt;InteractiveCommand.COMMAND&gt;</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/#entries","title":"Entries","text":"EXIT EXIT(\"exit\", \"Exit this interactive prompt.\") HELP HELP(\"help\", \"Show this message.\") DETAILED_PATH_TO_INSTANCE DETAILED_PATH_TO_INSTANCE(\"~&gt;instance\", \"CLASS_NAME@ID\", \"Show path from GC Roots to instance, highlighting suspect references.\") PATH_TO_INSTANCE PATH_TO_INSTANCE(\"-&gt;instance\", \"CLASS_NAME@ID\", \"Show path from GC Roots to instance.\") ARRAY ARRAY(\"array\", \"CLASS_NAME@ID\", \"Show array instance with a matching CLASS_NAME and Object ID.\") INSTANCE INSTANCE(\"instance\", \"CLASS_NAME@ID\", \"Show instance with a matching CLASS_NAME and Object ID.\") CLASS CLASS(\"class\", \"NAME@ID\", \"Show class with a matching NAME and Object ID.\") ANALYZE ANALYZE(\"analyze\", \"Analyze the heap dump.\")"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/#properties","title":"Properties","text":"Name Summary commandName val commandName: String help val help: String name val name: String ordinal val ordinal: Int pattern val pattern: String patternHelp val patternHelp: String suffix val suffix: String"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/command-name/","title":"Command name","text":"<p>//leakcanary/shark/InteractiveCommand/COMMAND/commandName</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/command-name/#commandname","title":"commandName","text":"<p>val commandName: String</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/help/","title":"Help","text":"<p>//leakcanary/shark/InteractiveCommand/COMMAND/help</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/help/#help","title":"help","text":"<p>val help: String</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/pattern-help/","title":"Pattern help","text":"<p>//leakcanary/shark/InteractiveCommand/COMMAND/patternHelp</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/pattern-help/#patternhelp","title":"patternHelp","text":"<p>val patternHelp: String</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/pattern/","title":"Pattern","text":"<p>//leakcanary/shark/InteractiveCommand/COMMAND/pattern</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/pattern/#pattern","title":"pattern","text":"<p>val pattern: String</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/suffix/","title":"Suffix","text":"<p>//leakcanary/shark/InteractiveCommand/COMMAND/suffix</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/suffix/#suffix","title":"suffix","text":"<p>val suffix: String</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/to-string/","title":"To string","text":"<p>//leakcanary/shark/InteractiveCommand/COMMAND/toString</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/to-string/#tostring","title":"toString","text":"<p>open override fun toString(): String</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-a-n-a-l-y-z-e/","title":"Index","text":"<p>//leakcanary/shark/InteractiveCommand/COMMAND/ANALYZE</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-a-n-a-l-y-z-e/#analyze","title":"ANALYZE","text":"<p>ANALYZE(\"analyze\", \"Analyze the heap dump.\")</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-a-n-a-l-y-z-e/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-a-n-a-l-y-z-e/#properties","title":"Properties","text":"Name Summary commandName val commandName: String help val help: String name val name: String ordinal val ordinal: Int pattern val pattern: String patternHelp val patternHelp: String suffix val suffix: String"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-a-r-r-a-y/","title":"Index","text":"<p>//leakcanary/shark/InteractiveCommand/COMMAND/ARRAY</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-a-r-r-a-y/#array","title":"ARRAY","text":"<p>ARRAY(\"array\", \"CLASS_NAME@ID\", \"Show array instance with a matching CLASS_NAME and Object ID.\")</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-a-r-r-a-y/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-a-r-r-a-y/#properties","title":"Properties","text":"Name Summary commandName val commandName: String help val help: String name val name: String ordinal val ordinal: Int pattern val pattern: String patternHelp val patternHelp: String suffix val suffix: String"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-c-l-a-s-s/","title":"Index","text":"<p>//leakcanary/shark/InteractiveCommand/COMMAND/CLASS</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-c-l-a-s-s/#class","title":"CLASS","text":"<p>CLASS(\"class\", \"NAME@ID\", \"Show class with a matching NAME and Object ID.\")</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-c-l-a-s-s/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-c-l-a-s-s/#properties","title":"Properties","text":"Name Summary commandName val commandName: String help val help: String name val name: String ordinal val ordinal: Int pattern val pattern: String patternHelp val patternHelp: String suffix val suffix: String"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-companion/","title":"Index","text":"<p>//leakcanary/shark/InteractiveCommand/COMMAND/Companion</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-companion/#functions","title":"Functions","text":"Name Summary matchesCommand infix fun String.matchesCommand(command: InteractiveCommand.COMMAND): Boolean"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-companion/matches-command/","title":"Matches command","text":"<p>//leakcanary/shark/InteractiveCommand/COMMAND/Companion/matchesCommand</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-companion/matches-command/#matchescommand","title":"matchesCommand","text":"<p>infix fun String.matchesCommand(command: InteractiveCommand.COMMAND): Boolean</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-d-e-t-a-i-l-e-d_-p-a-t-h_-t-o_-i-n-s-t-a-n-c-e/","title":"Index","text":"<p>//leakcanary/shark/InteractiveCommand/COMMAND/DETAILED_PATH_TO_INSTANCE</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-d-e-t-a-i-l-e-d_-p-a-t-h_-t-o_-i-n-s-t-a-n-c-e/#detailed_path_to_instance","title":"DETAILED_PATH_TO_INSTANCE","text":"<p>DETAILED_PATH_TO_INSTANCE(\"~&gt;instance\", \"CLASS_NAME@ID\", \"Show path from GC Roots to instance, highlighting suspect references.\")</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-d-e-t-a-i-l-e-d_-p-a-t-h_-t-o_-i-n-s-t-a-n-c-e/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-d-e-t-a-i-l-e-d_-p-a-t-h_-t-o_-i-n-s-t-a-n-c-e/#properties","title":"Properties","text":"Name Summary commandName val commandName: String help val help: String name val name: String ordinal val ordinal: Int pattern val pattern: String patternHelp val patternHelp: String suffix val suffix: String"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-e-x-i-t/","title":"Index","text":"<p>//leakcanary/shark/InteractiveCommand/COMMAND/EXIT</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-e-x-i-t/#exit","title":"EXIT","text":"<p>EXIT(\"exit\", \"Exit this interactive prompt.\")</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-e-x-i-t/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-e-x-i-t/#properties","title":"Properties","text":"Name Summary commandName val commandName: String help val help: String name val name: String ordinal val ordinal: Int pattern val pattern: String patternHelp val patternHelp: String suffix val suffix: String"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-h-e-l-p/","title":"Index","text":"<p>//leakcanary/shark/InteractiveCommand/COMMAND/HELP</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-h-e-l-p/#help","title":"HELP","text":"<p>HELP(\"help\", \"Show this message.\")</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-h-e-l-p/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-h-e-l-p/#properties","title":"Properties","text":"Name Summary commandName val commandName: String help val help: String name val name: String ordinal val ordinal: Int pattern val pattern: String patternHelp val patternHelp: String suffix val suffix: String"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-i-n-s-t-a-n-c-e/","title":"Index","text":"<p>//leakcanary/shark/InteractiveCommand/COMMAND/INSTANCE</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-i-n-s-t-a-n-c-e/#instance","title":"INSTANCE","text":"<p>INSTANCE(\"instance\", \"CLASS_NAME@ID\", \"Show instance with a matching CLASS_NAME and Object ID.\")</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-i-n-s-t-a-n-c-e/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-i-n-s-t-a-n-c-e/#properties","title":"Properties","text":"Name Summary commandName val commandName: String help val help: String name val name: String ordinal val ordinal: Int pattern val pattern: String patternHelp val patternHelp: String suffix val suffix: String"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-p-a-t-h_-t-o_-i-n-s-t-a-n-c-e/","title":"Index","text":"<p>//leakcanary/shark/InteractiveCommand/COMMAND/PATH_TO_INSTANCE</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-p-a-t-h_-t-o_-i-n-s-t-a-n-c-e/#path_to_instance","title":"PATH_TO_INSTANCE","text":"<p>PATH_TO_INSTANCE(\"-&gt;instance\", \"CLASS_NAME@ID\", \"Show path from GC Roots to instance.\")</p>"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-p-a-t-h_-t-o_-i-n-s-t-a-n-c-e/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-interactive-command/-c-o-m-m-a-n-d/-p-a-t-h_-t-o_-i-n-s-t-a-n-c-e/#properties","title":"Properties","text":"Name Summary commandName val commandName: String help val help: String name val name: String ordinal val ordinal: Int pattern val pattern: String patternHelp val patternHelp: String suffix val suffix: String"},{"location":"api/shark/-jvm-test-heap-dumper/","title":"Index","text":"<p>//leakcanary/shark/JvmTestHeapDumper</p>"},{"location":"api/shark/-jvm-test-heap-dumper/#jvmtestheapdumper","title":"JvmTestHeapDumper","text":"<p>object JvmTestHeapDumper</p>"},{"location":"api/shark/-jvm-test-heap-dumper/#functions","title":"Functions","text":"Name Summary dumpHeap fun dumpHeap(fileName: String)"},{"location":"api/shark/-jvm-test-heap-dumper/dump-heap/","title":"Dump heap","text":"<p>//leakcanary/shark/JvmTestHeapDumper/dumpHeap</p>"},{"location":"api/shark/-jvm-test-heap-dumper/dump-heap/#dumpheap","title":"dumpHeap","text":"<p>fun dumpHeap(fileName: String)</p>"},{"location":"api/shark/-keyed-weak-reference-finder/","title":"Index","text":"<p>//leakcanary/shark/KeyedWeakReferenceFinder</p>"},{"location":"api/shark/-keyed-weak-reference-finder/#keyedweakreferencefinder","title":"KeyedWeakReferenceFinder","text":"<p>object KeyedWeakReferenceFinder : LeakingObjectFinder</p> <p>Finds all objects tracked by a KeyedWeakReference, ie all objects that were passed to ObjectWatcher.watch.</p>"},{"location":"api/shark/-keyed-weak-reference-finder/#functions","title":"Functions","text":"Name Summary findLeakingObjectIds open override fun findLeakingObjectIds(graph: HeapGraph): Set&lt;Long&gt;For a given heap graph, returns a set of object ids for the objects that are leaking. heapDumpUptimeMillis fun heapDumpUptimeMillis(graph: HeapGraph): Long?"},{"location":"api/shark/-keyed-weak-reference-finder/find-leaking-object-ids/","title":"Find leaking object ids","text":"<p>//leakcanary/shark/KeyedWeakReferenceFinder/findLeakingObjectIds</p>"},{"location":"api/shark/-keyed-weak-reference-finder/find-leaking-object-ids/#findleakingobjectids","title":"findLeakingObjectIds","text":"<p>open override fun findLeakingObjectIds(graph: HeapGraph): Set&lt;Long&gt;</p> <p>For a given heap graph, returns a set of object ids for the objects that are leaking.</p>"},{"location":"api/shark/-keyed-weak-reference-finder/heap-dump-uptime-millis/","title":"Heap dump uptime millis","text":"<p>//leakcanary/shark/KeyedWeakReferenceFinder/heapDumpUptimeMillis</p>"},{"location":"api/shark/-keyed-weak-reference-finder/heap-dump-uptime-millis/#heapdumpuptimemillis","title":"heapDumpUptimeMillis","text":"<p>fun heapDumpUptimeMillis(graph: HeapGraph): Long?</p>"},{"location":"api/shark/-leak/","title":"Index","text":"<p>//leakcanary/shark/Leak</p>"},{"location":"api/shark/-leak/#leak","title":"Leak","text":"<p>sealed class Leak : Serializable</p> <p>A leak found by HeapAnalyzer, either an ApplicationLeak or a LibraryLeak.</p>"},{"location":"api/shark/-leak/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-leak/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-leak/#properties","title":"Properties","text":"Name Summary leakTraces abstract val leakTraces: List&lt;LeakTrace&gt;Group of leak traces which share the same leak signature. shortDescription abstract val shortDescription: String signature abstract val signature: StringA unique SHA1 hash that represents this group of leak traces. totalRetainedHeapByteSize val totalRetainedHeapByteSize: Int?Sum of LeakTrace.retainedHeapByteSize for all elements in leakTraces. Null if the retained heap size was not computed. totalRetainedObjectCount val totalRetainedObjectCount: Int?Sum of LeakTrace.retainedObjectCount for all elements in leakTraces. Null if the retained heap size was not computed."},{"location":"api/shark/-leak/#inheritors","title":"Inheritors","text":"Name LibraryLeak ApplicationLeak"},{"location":"api/shark/-leak/leak-traces/","title":"Leak traces","text":"<p>//leakcanary/shark/Leak/leakTraces</p>"},{"location":"api/shark/-leak/leak-traces/#leaktraces","title":"leakTraces","text":"<p>abstract val leakTraces: List&lt;LeakTrace&gt;</p> <p>Group of leak traces which share the same leak signature.</p>"},{"location":"api/shark/-leak/short-description/","title":"Short description","text":"<p>//leakcanary/shark/Leak/shortDescription</p>"},{"location":"api/shark/-leak/short-description/#shortdescription","title":"shortDescription","text":"<p>abstract val shortDescription: String</p>"},{"location":"api/shark/-leak/signature/","title":"Signature","text":"<p>//leakcanary/shark/Leak/signature</p>"},{"location":"api/shark/-leak/signature/#signature","title":"signature","text":"<p>abstract val signature: String</p> <p>A unique SHA1 hash that represents this group of leak traces.</p> <p>For ApplicationLeak this is based on LeakTrace.signature and for LibraryLeak this is based on LibraryLeak.pattern.</p>"},{"location":"api/shark/-leak/to-string/","title":"To string","text":"<p>//leakcanary/shark/Leak/toString</p>"},{"location":"api/shark/-leak/to-string/#tostring","title":"toString","text":"<p>open override fun toString(): String</p>"},{"location":"api/shark/-leak/total-retained-heap-byte-size/","title":"Total retained heap byte size","text":"<p>//leakcanary/shark/Leak/totalRetainedHeapByteSize</p>"},{"location":"api/shark/-leak/total-retained-heap-byte-size/#totalretainedheapbytesize","title":"totalRetainedHeapByteSize","text":"<p>val totalRetainedHeapByteSize: Int?</p> <p>Sum of LeakTrace.retainedHeapByteSize for all elements in leakTraces. Null if the retained heap size was not computed.</p>"},{"location":"api/shark/-leak/total-retained-object-count/","title":"Total retained object count","text":"<p>//leakcanary/shark/Leak/totalRetainedObjectCount</p>"},{"location":"api/shark/-leak/total-retained-object-count/#totalretainedobjectcount","title":"totalRetainedObjectCount","text":"<p>val totalRetainedObjectCount: Int?</p> <p>Sum of LeakTrace.retainedObjectCount for all elements in leakTraces. Null if the retained heap size was not computed.</p>"},{"location":"api/shark/-leak/-companion/","title":"Index","text":"<p>//leakcanary/shark/Leak/Companion</p>"},{"location":"api/shark/-leak/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-leak-trace/","title":"Index","text":"<p>//leakcanary/shark/LeakTrace</p>"},{"location":"api/shark/-leak-trace/#leaktrace","title":"LeakTrace","text":"<p>data class LeakTrace(val gcRootType: LeakTrace.GcRootType, val referencePath: List&lt;LeakTraceReference&gt;, val leakingObject: LeakTraceObject) : Serializable</p> <p>The best strong reference path from a GC root to the leaking object. \"Best\" here means the shortest prioritized path. A large number of distinct paths can generally be found leading to a leaking object. Shark prioritizes paths that don\u2019t go through known LibraryLeakReferenceMatcher (because those are known to create leaks so it\u2019s more interesting to find other paths causing leaks), then it prioritize paths that don\u2019t go through java local gc roots (because those are harder to reason about). Taking those priorities into account, finding the shortest path means there are less LeakTraceReference that can be suspected to cause the leak.</p>"},{"location":"api/shark/-leak-trace/#constructors","title":"Constructors","text":"LeakTrace fun LeakTrace(gcRootType: LeakTrace.GcRootType, referencePath: List&lt;LeakTraceReference&gt;, leakingObject: LeakTraceObject)"},{"location":"api/shark/-leak-trace/#types","title":"Types","text":"Name Summary Companion object Companion GcRootType enum GcRootType : Enum&lt;LeakTrace.GcRootType&gt;"},{"location":"api/shark/-leak-trace/#functions","title":"Functions","text":"Name Summary referencePathElementIsSuspect fun referencePathElementIsSuspect(index: Int): BooleanReturns true if the referencePath element at the provided index contains a reference that is suspected to cause the leak, ie if index is greater than or equal to the index of the LeakTraceReference of the last non leaking object and strictly lower than the index of the LeakTraceReference of the first leaking object. toSimplePathString fun toSimplePathString(): String toString open override fun toString(): String"},{"location":"api/shark/-leak-trace/#properties","title":"Properties","text":"Name Summary gcRootType val gcRootType: LeakTrace.GcRootTypeThe Garbage Collection root that references the LeakTraceReference.originObject in the first LeakTraceReference of referencePath. leakingObject val leakingObject: LeakTraceObject referencePath val referencePath: List&lt;LeakTraceReference&gt; retainedHeapByteSize val retainedHeapByteSize: Int?The minimum number of bytes which would be freed if the leak was fixed. Null if the retained heap size was not computed. retainedObjectCount val retainedObjectCount: Int?The minimum number of objects which would be unreachable if the leak was fixed. Null if the retained heap size was not computed. signature val signature: StringA SHA1 hash that represents this leak trace. This can be useful to group together similar leak traces. suspectReferenceSubpath val suspectReferenceSubpath: Sequence&lt;LeakTraceReference&gt;A part of referencePath that contains the references suspected to cause the leak. Starts at the last non leaking object and ends before the first leaking object."},{"location":"api/shark/-leak-trace/-leak-trace/","title":"leak trace","text":"<p>//leakcanary/shark/LeakTrace/LeakTrace</p>"},{"location":"api/shark/-leak-trace/-leak-trace/#leaktrace","title":"LeakTrace","text":"<p>fun LeakTrace(gcRootType: LeakTrace.GcRootType, referencePath: List&lt;LeakTraceReference&gt;, leakingObject: LeakTraceObject)</p>"},{"location":"api/shark/-leak-trace/gc-root-type/","title":"Gc root type","text":"<p>//leakcanary/shark/LeakTrace/gcRootType</p>"},{"location":"api/shark/-leak-trace/gc-root-type/#gcroottype","title":"gcRootType","text":"<p>val gcRootType: LeakTrace.GcRootType</p> <p>The Garbage Collection root that references the LeakTraceReference.originObject in the first LeakTraceReference of referencePath.</p>"},{"location":"api/shark/-leak-trace/leaking-object/","title":"Leaking object","text":"<p>//leakcanary/shark/LeakTrace/leakingObject</p>"},{"location":"api/shark/-leak-trace/leaking-object/#leakingobject","title":"leakingObject","text":"<p>val leakingObject: LeakTraceObject</p>"},{"location":"api/shark/-leak-trace/reference-path-element-is-suspect/","title":"Reference path element is suspect","text":"<p>//leakcanary/shark/LeakTrace/referencePathElementIsSuspect</p>"},{"location":"api/shark/-leak-trace/reference-path-element-is-suspect/#referencepathelementissuspect","title":"referencePathElementIsSuspect","text":"<p>fun referencePathElementIsSuspect(index: Int): Boolean</p> <p>Returns true if the referencePath element at the provided index contains a reference that is suspected to cause the leak, ie if index is greater than or equal to the index of the LeakTraceReference of the last non leaking object and strictly lower than the index of the LeakTraceReference of the first leaking object.</p>"},{"location":"api/shark/-leak-trace/reference-path/","title":"Reference path","text":"<p>//leakcanary/shark/LeakTrace/referencePath</p>"},{"location":"api/shark/-leak-trace/reference-path/#referencepath","title":"referencePath","text":"<p>val referencePath: List&lt;LeakTraceReference&gt;</p>"},{"location":"api/shark/-leak-trace/retained-heap-byte-size/","title":"Retained heap byte size","text":"<p>//leakcanary/shark/LeakTrace/retainedHeapByteSize</p>"},{"location":"api/shark/-leak-trace/retained-heap-byte-size/#retainedheapbytesize","title":"retainedHeapByteSize","text":"<p>val retainedHeapByteSize: Int?</p> <p>The minimum number of bytes which would be freed if the leak was fixed. Null if the retained heap size was not computed.</p>"},{"location":"api/shark/-leak-trace/retained-object-count/","title":"Retained object count","text":"<p>//leakcanary/shark/LeakTrace/retainedObjectCount</p>"},{"location":"api/shark/-leak-trace/retained-object-count/#retainedobjectcount","title":"retainedObjectCount","text":"<p>val retainedObjectCount: Int?</p> <p>The minimum number of objects which would be unreachable if the leak was fixed. Null if the retained heap size was not computed.</p>"},{"location":"api/shark/-leak-trace/signature/","title":"Signature","text":"<p>//leakcanary/shark/LeakTrace/signature</p>"},{"location":"api/shark/-leak-trace/signature/#signature","title":"signature","text":"<p>val signature: String</p> <p>A SHA1 hash that represents this leak trace. This can be useful to group together similar leak traces.</p> <p>The signature is a hash of suspectReferenceSubpath.</p>"},{"location":"api/shark/-leak-trace/suspect-reference-subpath/","title":"Suspect reference subpath","text":"<p>//leakcanary/shark/LeakTrace/suspectReferenceSubpath</p>"},{"location":"api/shark/-leak-trace/suspect-reference-subpath/#suspectreferencesubpath","title":"suspectReferenceSubpath","text":"<p>val suspectReferenceSubpath: Sequence&lt;LeakTraceReference&gt;</p> <p>A part of referencePath that contains the references suspected to cause the leak. Starts at the last non leaking object and ends before the first leaking object.</p>"},{"location":"api/shark/-leak-trace/to-simple-path-string/","title":"To simple path string","text":"<p>//leakcanary/shark/LeakTrace/toSimplePathString</p>"},{"location":"api/shark/-leak-trace/to-simple-path-string/#tosimplepathstring","title":"toSimplePathString","text":"<p>fun toSimplePathString(): String</p>"},{"location":"api/shark/-leak-trace/to-string/","title":"To string","text":"<p>//leakcanary/shark/LeakTrace/toString</p>"},{"location":"api/shark/-leak-trace/to-string/#tostring","title":"toString","text":"<p>open override fun toString(): String</p>"},{"location":"api/shark/-leak-trace/-companion/","title":"Index","text":"<p>//leakcanary/shark/LeakTrace/Companion</p>"},{"location":"api/shark/-leak-trace/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/","title":"Index","text":"<p>//leakcanary/shark/LeakTrace/GcRootType</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/#gcroottype","title":"GcRootType","text":"<p>enum GcRootType : Enum&lt;LeakTrace.GcRootType&gt;</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/#entries","title":"Entries","text":"JNI_MONITOR JNI_MONITOR(\"Root JNI monitor\") THREAD_OBJECT THREAD_OBJECT(\"Thread object\") MONITOR_USED MONITOR_USED(\"Monitor (anything that called the wait() or notify() methods, or that is synchronized.)\") THREAD_BLOCK THREAD_BLOCK(\"Thread block\") STICKY_CLASS STICKY_CLASS(\"System class\") NATIVE_STACK NATIVE_STACK(\"Input or output parameters in native code\") JAVA_FRAME JAVA_FRAME(\"Java local variable\") JNI_LOCAL JNI_LOCAL(\"Local variable in native code\") JNI_GLOBAL JNI_GLOBAL(\"Global variable in native code\")"},{"location":"api/shark/-leak-trace/-gc-root-type/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-leak-trace/-gc-root-type/#properties","title":"Properties","text":"Name Summary description val description: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace/-gc-root-type/description/","title":"Description","text":"<p>//leakcanary/shark/LeakTrace/GcRootType/description</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/description/#description","title":"description","text":"<p>val description: String</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-companion/","title":"Index","text":"<p>//leakcanary/shark/LeakTrace/GcRootType/Companion</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-companion/#functions","title":"Functions","text":"Name Summary fromGcRoot fun fromGcRoot(gcRoot: GcRoot): LeakTrace.GcRootType"},{"location":"api/shark/-leak-trace/-gc-root-type/-companion/from-gc-root/","title":"From gc root","text":"<p>//leakcanary/shark/LeakTrace/GcRootType/Companion/fromGcRoot</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-companion/from-gc-root/#fromgcroot","title":"fromGcRoot","text":"<p>fun fromGcRoot(gcRoot: GcRoot): LeakTrace.GcRootType</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-j-a-v-a_-f-r-a-m-e/","title":"Index","text":"<p>//leakcanary/shark/LeakTrace/GcRootType/JAVA_FRAME</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-j-a-v-a_-f-r-a-m-e/#java_frame","title":"JAVA_FRAME","text":"<p>JAVA_FRAME(\"Java local variable\")</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-j-a-v-a_-f-r-a-m-e/#properties","title":"Properties","text":"Name Summary description val description: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace/-gc-root-type/-j-n-i_-g-l-o-b-a-l/","title":"Index","text":"<p>//leakcanary/shark/LeakTrace/GcRootType/JNI_GLOBAL</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-j-n-i_-g-l-o-b-a-l/#jni_global","title":"JNI_GLOBAL","text":"<p>JNI_GLOBAL(\"Global variable in native code\")</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-j-n-i_-g-l-o-b-a-l/#properties","title":"Properties","text":"Name Summary description val description: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace/-gc-root-type/-j-n-i_-l-o-c-a-l/","title":"Index","text":"<p>//leakcanary/shark/LeakTrace/GcRootType/JNI_LOCAL</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-j-n-i_-l-o-c-a-l/#jni_local","title":"JNI_LOCAL","text":"<p>JNI_LOCAL(\"Local variable in native code\")</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-j-n-i_-l-o-c-a-l/#properties","title":"Properties","text":"Name Summary description val description: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace/-gc-root-type/-j-n-i_-m-o-n-i-t-o-r/","title":"Index","text":"<p>//leakcanary/shark/LeakTrace/GcRootType/JNI_MONITOR</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-j-n-i_-m-o-n-i-t-o-r/#jni_monitor","title":"JNI_MONITOR","text":"<p>JNI_MONITOR(\"Root JNI monitor\")</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-j-n-i_-m-o-n-i-t-o-r/#properties","title":"Properties","text":"Name Summary description val description: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace/-gc-root-type/-m-o-n-i-t-o-r_-u-s-e-d/","title":"Index","text":"<p>//leakcanary/shark/LeakTrace/GcRootType/MONITOR_USED</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-m-o-n-i-t-o-r_-u-s-e-d/#monitor_used","title":"MONITOR_USED","text":"<p>MONITOR_USED(\"Monitor (anything that called the wait() or notify() methods, or that is synchronized.)\")</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-m-o-n-i-t-o-r_-u-s-e-d/#properties","title":"Properties","text":"Name Summary description val description: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace/-gc-root-type/-n-a-t-i-v-e_-s-t-a-c-k/","title":"Index","text":"<p>//leakcanary/shark/LeakTrace/GcRootType/NATIVE_STACK</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-n-a-t-i-v-e_-s-t-a-c-k/#native_stack","title":"NATIVE_STACK","text":"<p>NATIVE_STACK(\"Input or output parameters in native code\")</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-n-a-t-i-v-e_-s-t-a-c-k/#properties","title":"Properties","text":"Name Summary description val description: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace/-gc-root-type/-s-t-i-c-k-y_-c-l-a-s-s/","title":"Index","text":"<p>//leakcanary/shark/LeakTrace/GcRootType/STICKY_CLASS</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-s-t-i-c-k-y_-c-l-a-s-s/#sticky_class","title":"STICKY_CLASS","text":"<p>STICKY_CLASS(\"System class\")</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-s-t-i-c-k-y_-c-l-a-s-s/#properties","title":"Properties","text":"Name Summary description val description: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace/-gc-root-type/-t-h-r-e-a-d_-b-l-o-c-k/","title":"Index","text":"<p>//leakcanary/shark/LeakTrace/GcRootType/THREAD_BLOCK</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-t-h-r-e-a-d_-b-l-o-c-k/#thread_block","title":"THREAD_BLOCK","text":"<p>THREAD_BLOCK(\"Thread block\")</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-t-h-r-e-a-d_-b-l-o-c-k/#properties","title":"Properties","text":"Name Summary description val description: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace/-gc-root-type/-t-h-r-e-a-d_-o-b-j-e-c-t/","title":"Index","text":"<p>//leakcanary/shark/LeakTrace/GcRootType/THREAD_OBJECT</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-t-h-r-e-a-d_-o-b-j-e-c-t/#thread_object","title":"THREAD_OBJECT","text":"<p>THREAD_OBJECT(\"Thread object\")</p>"},{"location":"api/shark/-leak-trace/-gc-root-type/-t-h-r-e-a-d_-o-b-j-e-c-t/#properties","title":"Properties","text":"Name Summary description val description: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace-object/","title":"Index","text":"<p>//leakcanary/shark/LeakTraceObject</p>"},{"location":"api/shark/-leak-trace-object/#leaktraceobject","title":"LeakTraceObject","text":"<p>data class LeakTraceObject(val type: LeakTraceObject.ObjectType, val className: String, val labels: Set&lt;String&gt;, val leakingStatus: LeakTraceObject.LeakingStatus, val leakingStatusReason: String, val retainedHeapByteSize: Int?, val retainedObjectCount: Int?) : Serializable</p>"},{"location":"api/shark/-leak-trace-object/#constructors","title":"Constructors","text":"LeakTraceObject fun LeakTraceObject(type: LeakTraceObject.ObjectType, className: String, labels: Set&lt;String&gt;, leakingStatus: LeakTraceObject.LeakingStatus, leakingStatusReason: String, retainedHeapByteSize: Int?, retainedObjectCount: Int?)"},{"location":"api/shark/-leak-trace-object/#types","title":"Types","text":"Name Summary Companion object Companion LeakingStatus enum LeakingStatus : Enum&lt;LeakTraceObject.LeakingStatus&gt; ObjectType enum ObjectType : Enum&lt;LeakTraceObject.ObjectType&gt;"},{"location":"api/shark/-leak-trace-object/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-leak-trace-object/#properties","title":"Properties","text":"Name Summary className val className: StringClass name of the object. The class name format is the same as what would be returned by Class.getName. classSimpleName val classSimpleName: StringReturns {@link #className} without the package, ie stripped of any string content before the last period (included). labels val labels: Set&lt;String&gt;Labels that were computed during analysis. A label provides extra information that helps understand the state of the leak trace object. leakingStatus val leakingStatus: LeakTraceObject.LeakingStatus leakingStatusReason val leakingStatusReason: String retainedHeapByteSize val retainedHeapByteSize: Int?The minimum number of bytes which would be freed if all references to this object were released. Not null only if the retained heap size was computed AND leakingStatus is equal to LeakingStatus.UNKNOWN or LeakingStatus.LEAKING. retainedObjectCount val retainedObjectCount: Int?The minimum number of objects which would be unreachable if all references to this object were released. Not null only if the retained heap size was computed AND leakingStatus is equal to LeakingStatus.UNKNOWN or LeakingStatus.LEAKING. type val type: LeakTraceObject.ObjectType typeName val typeName: String"},{"location":"api/shark/-leak-trace-object/-leak-trace-object/","title":"leak trace object","text":"<p>//leakcanary/shark/LeakTraceObject/LeakTraceObject</p>"},{"location":"api/shark/-leak-trace-object/-leak-trace-object/#leaktraceobject","title":"LeakTraceObject","text":"<p>fun LeakTraceObject(type: LeakTraceObject.ObjectType, className: String, labels: Set&lt;String&gt;, leakingStatus: LeakTraceObject.LeakingStatus, leakingStatusReason: String, retainedHeapByteSize: Int?, retainedObjectCount: Int?)</p>"},{"location":"api/shark/-leak-trace-object/class-name/","title":"Class name","text":"<p>//leakcanary/shark/LeakTraceObject/className</p>"},{"location":"api/shark/-leak-trace-object/class-name/#classname","title":"className","text":"<p>val className: String</p> <p>Class name of the object. The class name format is the same as what would be returned by Class.getName.</p>"},{"location":"api/shark/-leak-trace-object/class-simple-name/","title":"Class simple name","text":"<p>//leakcanary/shark/LeakTraceObject/classSimpleName</p>"},{"location":"api/shark/-leak-trace-object/class-simple-name/#classsimplename","title":"classSimpleName","text":"<p>val classSimpleName: String</p> <p>Returns {@link #className} without the package, ie stripped of any string content before the last period (included).</p>"},{"location":"api/shark/-leak-trace-object/labels/","title":"Labels","text":"<p>//leakcanary/shark/LeakTraceObject/labels</p>"},{"location":"api/shark/-leak-trace-object/labels/#labels","title":"labels","text":"<p>val labels: Set&lt;String&gt;</p> <p>Labels that were computed during analysis. A label provides extra information that helps understand the state of the leak trace object.</p>"},{"location":"api/shark/-leak-trace-object/leaking-status-reason/","title":"Leaking status reason","text":"<p>//leakcanary/shark/LeakTraceObject/leakingStatusReason</p>"},{"location":"api/shark/-leak-trace-object/leaking-status-reason/#leakingstatusreason","title":"leakingStatusReason","text":"<p>val leakingStatusReason: String</p>"},{"location":"api/shark/-leak-trace-object/leaking-status/","title":"Leaking status","text":"<p>//leakcanary/shark/LeakTraceObject/leakingStatus</p>"},{"location":"api/shark/-leak-trace-object/leaking-status/#leakingstatus","title":"leakingStatus","text":"<p>val leakingStatus: LeakTraceObject.LeakingStatus</p>"},{"location":"api/shark/-leak-trace-object/retained-heap-byte-size/","title":"Retained heap byte size","text":"<p>//leakcanary/shark/LeakTraceObject/retainedHeapByteSize</p>"},{"location":"api/shark/-leak-trace-object/retained-heap-byte-size/#retainedheapbytesize","title":"retainedHeapByteSize","text":"<p>val retainedHeapByteSize: Int?</p> <p>The minimum number of bytes which would be freed if all references to this object were released. Not null only if the retained heap size was computed AND leakingStatus is equal to LeakingStatus.UNKNOWN or LeakingStatus.LEAKING.</p>"},{"location":"api/shark/-leak-trace-object/retained-object-count/","title":"Retained object count","text":"<p>//leakcanary/shark/LeakTraceObject/retainedObjectCount</p>"},{"location":"api/shark/-leak-trace-object/retained-object-count/#retainedobjectcount","title":"retainedObjectCount","text":"<p>val retainedObjectCount: Int?</p> <p>The minimum number of objects which would be unreachable if all references to this object were released. Not null only if the retained heap size was computed AND leakingStatus is equal to LeakingStatus.UNKNOWN or LeakingStatus.LEAKING.</p>"},{"location":"api/shark/-leak-trace-object/to-string/","title":"To string","text":"<p>//leakcanary/shark/LeakTraceObject/toString</p>"},{"location":"api/shark/-leak-trace-object/to-string/#tostring","title":"toString","text":"<p>open override fun toString(): String</p>"},{"location":"api/shark/-leak-trace-object/type-name/","title":"Type name","text":"<p>//leakcanary/shark/LeakTraceObject/typeName</p>"},{"location":"api/shark/-leak-trace-object/type-name/#typename","title":"typeName","text":"<p>val typeName: String</p>"},{"location":"api/shark/-leak-trace-object/type/","title":"Type","text":"<p>//leakcanary/shark/LeakTraceObject/type</p>"},{"location":"api/shark/-leak-trace-object/type/#type","title":"type","text":"<p>val type: LeakTraceObject.ObjectType</p>"},{"location":"api/shark/-leak-trace-object/-companion/","title":"Index","text":"<p>//leakcanary/shark/LeakTraceObject/Companion</p>"},{"location":"api/shark/-leak-trace-object/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-leak-trace-object/-leaking-status/","title":"Index","text":"<p>//leakcanary/shark/LeakTraceObject/LeakingStatus</p>"},{"location":"api/shark/-leak-trace-object/-leaking-status/#leakingstatus","title":"LeakingStatus","text":"<p>enum LeakingStatus : Enum&lt;LeakTraceObject.LeakingStatus&gt;</p>"},{"location":"api/shark/-leak-trace-object/-leaking-status/#entries","title":"Entries","text":"UNKNOWN UNKNOWN()No decision can be made about the provided object. LEAKING LEAKING()The object was no longer needed and therefore expected to be unreachable. NOT_LEAKING NOT_LEAKING()The object was needed and therefore expected to be reachable."},{"location":"api/shark/-leak-trace-object/-leaking-status/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace-object/-leaking-status/-l-e-a-k-i-n-g/","title":"Index","text":"<p>//leakcanary/shark/LeakTraceObject/LeakingStatus/LEAKING</p>"},{"location":"api/shark/-leak-trace-object/-leaking-status/-l-e-a-k-i-n-g/#leaking","title":"LEAKING","text":"<p>LEAKING()</p> <p>The object was no longer needed and therefore expected to be unreachable.</p>"},{"location":"api/shark/-leak-trace-object/-leaking-status/-l-e-a-k-i-n-g/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace-object/-leaking-status/-n-o-t_-l-e-a-k-i-n-g/","title":"Index","text":"<p>//leakcanary/shark/LeakTraceObject/LeakingStatus/NOT_LEAKING</p>"},{"location":"api/shark/-leak-trace-object/-leaking-status/-n-o-t_-l-e-a-k-i-n-g/#not_leaking","title":"NOT_LEAKING","text":"<p>NOT_LEAKING()</p> <p>The object was needed and therefore expected to be reachable.</p>"},{"location":"api/shark/-leak-trace-object/-leaking-status/-n-o-t_-l-e-a-k-i-n-g/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace-object/-leaking-status/-u-n-k-n-o-w-n/","title":"Index","text":"<p>//leakcanary/shark/LeakTraceObject/LeakingStatus/UNKNOWN</p>"},{"location":"api/shark/-leak-trace-object/-leaking-status/-u-n-k-n-o-w-n/#unknown","title":"UNKNOWN","text":"<p>UNKNOWN()</p> <p>No decision can be made about the provided object.</p>"},{"location":"api/shark/-leak-trace-object/-leaking-status/-u-n-k-n-o-w-n/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace-object/-object-type/","title":"Index","text":"<p>//leakcanary/shark/LeakTraceObject/ObjectType</p>"},{"location":"api/shark/-leak-trace-object/-object-type/#objecttype","title":"ObjectType","text":"<p>enum ObjectType : Enum&lt;LeakTraceObject.ObjectType&gt;</p>"},{"location":"api/shark/-leak-trace-object/-object-type/#entries","title":"Entries","text":"INSTANCE INSTANCE() ARRAY ARRAY() CLASS CLASS()"},{"location":"api/shark/-leak-trace-object/-object-type/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace-object/-object-type/-a-r-r-a-y/","title":"Index","text":"<p>//leakcanary/shark/LeakTraceObject/ObjectType/ARRAY</p>"},{"location":"api/shark/-leak-trace-object/-object-type/-a-r-r-a-y/#array","title":"ARRAY","text":"<p>ARRAY()</p>"},{"location":"api/shark/-leak-trace-object/-object-type/-a-r-r-a-y/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace-object/-object-type/-c-l-a-s-s/","title":"Index","text":"<p>//leakcanary/shark/LeakTraceObject/ObjectType/CLASS</p>"},{"location":"api/shark/-leak-trace-object/-object-type/-c-l-a-s-s/#class","title":"CLASS","text":"<p>CLASS()</p>"},{"location":"api/shark/-leak-trace-object/-object-type/-c-l-a-s-s/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace-object/-object-type/-i-n-s-t-a-n-c-e/","title":"Index","text":"<p>//leakcanary/shark/LeakTraceObject/ObjectType/INSTANCE</p>"},{"location":"api/shark/-leak-trace-object/-object-type/-i-n-s-t-a-n-c-e/#instance","title":"INSTANCE","text":"<p>INSTANCE()</p>"},{"location":"api/shark/-leak-trace-object/-object-type/-i-n-s-t-a-n-c-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace-reference/","title":"Index","text":"<p>//leakcanary/shark/LeakTraceReference</p>"},{"location":"api/shark/-leak-trace-reference/#leaktracereference","title":"LeakTraceReference","text":"<p>data class LeakTraceReference(val originObject: LeakTraceObject, val referenceType: LeakTraceReference.ReferenceType, val owningClassName: String, val referenceName: String) : Serializable</p> <p>A LeakTraceReference represents an origin LeakTraceObject and either a reference from that object to the LeakTraceObject in the next LeakTraceReference in LeakTrace.referencePath, or to LeakTrace.leakingObject if this is the last LeakTraceReference in LeakTrace.referencePath.</p>"},{"location":"api/shark/-leak-trace-reference/#constructors","title":"Constructors","text":"LeakTraceReference fun LeakTraceReference(originObject: LeakTraceObject, referenceType: LeakTraceReference.ReferenceType, owningClassName: String, referenceName: String)"},{"location":"api/shark/-leak-trace-reference/#types","title":"Types","text":"Name Summary Companion object Companion ReferenceType enum ReferenceType : Enum&lt;LeakTraceReference.ReferenceType&gt;"},{"location":"api/shark/-leak-trace-reference/#properties","title":"Properties","text":"Name Summary originObject val originObject: LeakTraceObject owningClassName val owningClassName: String owningClassSimpleName val owningClassSimpleName: StringReturns {@link #className} without the package, ie stripped of any string content before the last period (included). referenceDisplayName val referenceDisplayName: String referenceGenericName val referenceGenericName: String referenceName val referenceName: String referenceType val referenceType: LeakTraceReference.ReferenceType"},{"location":"api/shark/-leak-trace-reference/-leak-trace-reference/","title":"leak trace reference","text":"<p>//leakcanary/shark/LeakTraceReference/LeakTraceReference</p>"},{"location":"api/shark/-leak-trace-reference/-leak-trace-reference/#leaktracereference","title":"LeakTraceReference","text":"<p>fun LeakTraceReference(originObject: LeakTraceObject, referenceType: LeakTraceReference.ReferenceType, owningClassName: String, referenceName: String)</p>"},{"location":"api/shark/-leak-trace-reference/origin-object/","title":"Origin object","text":"<p>//leakcanary/shark/LeakTraceReference/originObject</p>"},{"location":"api/shark/-leak-trace-reference/origin-object/#originobject","title":"originObject","text":"<p>val originObject: LeakTraceObject</p>"},{"location":"api/shark/-leak-trace-reference/owning-class-name/","title":"Owning class name","text":"<p>//leakcanary/shark/LeakTraceReference/owningClassName</p>"},{"location":"api/shark/-leak-trace-reference/owning-class-name/#owningclassname","title":"owningClassName","text":"<p>val owningClassName: String</p>"},{"location":"api/shark/-leak-trace-reference/owning-class-simple-name/","title":"Owning class simple name","text":"<p>//leakcanary/shark/LeakTraceReference/owningClassSimpleName</p>"},{"location":"api/shark/-leak-trace-reference/owning-class-simple-name/#owningclasssimplename","title":"owningClassSimpleName","text":"<p>val owningClassSimpleName: String</p> <p>Returns {@link #className} without the package, ie stripped of any string content before the last period (included).</p>"},{"location":"api/shark/-leak-trace-reference/reference-display-name/","title":"Reference display name","text":"<p>//leakcanary/shark/LeakTraceReference/referenceDisplayName</p>"},{"location":"api/shark/-leak-trace-reference/reference-display-name/#referencedisplayname","title":"referenceDisplayName","text":"<p>val referenceDisplayName: String</p>"},{"location":"api/shark/-leak-trace-reference/reference-generic-name/","title":"Reference generic name","text":"<p>//leakcanary/shark/LeakTraceReference/referenceGenericName</p>"},{"location":"api/shark/-leak-trace-reference/reference-generic-name/#referencegenericname","title":"referenceGenericName","text":"<p>val referenceGenericName: String</p>"},{"location":"api/shark/-leak-trace-reference/reference-name/","title":"Reference name","text":"<p>//leakcanary/shark/LeakTraceReference/referenceName</p>"},{"location":"api/shark/-leak-trace-reference/reference-name/#referencename","title":"referenceName","text":"<p>val referenceName: String</p>"},{"location":"api/shark/-leak-trace-reference/reference-type/","title":"Reference type","text":"<p>//leakcanary/shark/LeakTraceReference/referenceType</p>"},{"location":"api/shark/-leak-trace-reference/reference-type/#referencetype","title":"referenceType","text":"<p>val referenceType: LeakTraceReference.ReferenceType</p>"},{"location":"api/shark/-leak-trace-reference/-companion/","title":"Index","text":"<p>//leakcanary/shark/LeakTraceReference/Companion</p>"},{"location":"api/shark/-leak-trace-reference/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-leak-trace-reference/-reference-type/","title":"Index","text":"<p>//leakcanary/shark/LeakTraceReference/ReferenceType</p>"},{"location":"api/shark/-leak-trace-reference/-reference-type/#referencetype","title":"ReferenceType","text":"<p>enum ReferenceType : Enum&lt;LeakTraceReference.ReferenceType&gt;</p>"},{"location":"api/shark/-leak-trace-reference/-reference-type/#entries","title":"Entries","text":"ARRAY_ENTRY ARRAY_ENTRY() LOCAL LOCAL() STATIC_FIELD STATIC_FIELD() INSTANCE_FIELD INSTANCE_FIELD()"},{"location":"api/shark/-leak-trace-reference/-reference-type/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace-reference/-reference-type/-a-r-r-a-y_-e-n-t-r-y/","title":"Index","text":"<p>//leakcanary/shark/LeakTraceReference/ReferenceType/ARRAY_ENTRY</p>"},{"location":"api/shark/-leak-trace-reference/-reference-type/-a-r-r-a-y_-e-n-t-r-y/#array_entry","title":"ARRAY_ENTRY","text":"<p>ARRAY_ENTRY()</p>"},{"location":"api/shark/-leak-trace-reference/-reference-type/-a-r-r-a-y_-e-n-t-r-y/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace-reference/-reference-type/-i-n-s-t-a-n-c-e_-f-i-e-l-d/","title":"Index","text":"<p>//leakcanary/shark/LeakTraceReference/ReferenceType/INSTANCE_FIELD</p>"},{"location":"api/shark/-leak-trace-reference/-reference-type/-i-n-s-t-a-n-c-e_-f-i-e-l-d/#instance_field","title":"INSTANCE_FIELD","text":"<p>INSTANCE_FIELD()</p>"},{"location":"api/shark/-leak-trace-reference/-reference-type/-i-n-s-t-a-n-c-e_-f-i-e-l-d/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace-reference/-reference-type/-l-o-c-a-l/","title":"Index","text":"<p>//leakcanary/shark/LeakTraceReference/ReferenceType/LOCAL</p>"},{"location":"api/shark/-leak-trace-reference/-reference-type/-l-o-c-a-l/#local","title":"LOCAL","text":"<p>LOCAL()</p>"},{"location":"api/shark/-leak-trace-reference/-reference-type/-l-o-c-a-l/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leak-trace-reference/-reference-type/-s-t-a-t-i-c_-f-i-e-l-d/","title":"Index","text":"<p>//leakcanary/shark/LeakTraceReference/ReferenceType/STATIC_FIELD</p>"},{"location":"api/shark/-leak-trace-reference/-reference-type/-s-t-a-t-i-c_-f-i-e-l-d/#static_field","title":"STATIC_FIELD","text":"<p>STATIC_FIELD()</p>"},{"location":"api/shark/-leak-trace-reference/-reference-type/-s-t-a-t-i-c_-f-i-e-l-d/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-leaking-object-finder/","title":"Index","text":"<p>//leakcanary/shark/LeakingObjectFinder</p>"},{"location":"api/shark/-leaking-object-finder/#leakingobjectfinder","title":"LeakingObjectFinder","text":"<p>fun interface LeakingObjectFinder</p> <p>Finds the objects that are leaking, for which Shark will compute leak traces.</p> <p>This is a functional interface with which you can create a LeakingObjectFinder from a lambda.</p>"},{"location":"api/shark/-leaking-object-finder/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-leaking-object-finder/#functions","title":"Functions","text":"Name Summary findLeakingObjectIds abstract fun findLeakingObjectIds(graph: HeapGraph): Set&lt;Long&gt;For a given heap graph, returns a set of object ids for the objects that are leaking."},{"location":"api/shark/-leaking-object-finder/#inheritors","title":"Inheritors","text":"Name FilteringLeakingObjectFinder KeyedWeakReferenceFinder"},{"location":"api/shark/-leaking-object-finder/find-leaking-object-ids/","title":"Find leaking object ids","text":"<p>//leakcanary/shark/LeakingObjectFinder/findLeakingObjectIds</p>"},{"location":"api/shark/-leaking-object-finder/find-leaking-object-ids/#findleakingobjectids","title":"findLeakingObjectIds","text":"<p>abstract fun findLeakingObjectIds(graph: HeapGraph): Set&lt;Long&gt;</p> <p>For a given heap graph, returns a set of object ids for the objects that are leaking.</p>"},{"location":"api/shark/-leaking-object-finder/-companion/","title":"Index","text":"<p>//leakcanary/shark/LeakingObjectFinder/Companion</p>"},{"location":"api/shark/-leaking-object-finder/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-leaking-object-finder/-companion/#functions","title":"Functions","text":"Name Summary invoke inline operator fun invoke(crossinline block: (HeapGraph) -&gt; Set&lt;Long&gt;): LeakingObjectFinderUtility function to create a LeakingObjectFinder from the passed in block lambda instead of using the anonymous object : LeakingObjectFinder syntax."},{"location":"api/shark/-leaking-object-finder/-companion/invoke/","title":"Invoke","text":"<p>//leakcanary/shark/LeakingObjectFinder/Companion/invoke</p>"},{"location":"api/shark/-leaking-object-finder/-companion/invoke/#invoke","title":"invoke","text":"<p>inline operator fun invoke(crossinline block: (HeapGraph) -&gt; Set&lt;Long&gt;): LeakingObjectFinder</p> <p>Utility function to create a LeakingObjectFinder from the passed in block lambda instead of using the anonymous object : LeakingObjectFinder syntax.</p> <p>Usage:</p> <p>val listener = LeakingObjectFinder {\\ \\ }</p>"},{"location":"api/shark/-library-leak/","title":"Index","text":"<p>//leakcanary/shark/LibraryLeak</p>"},{"location":"api/shark/-library-leak/#libraryleak","title":"LibraryLeak","text":"<p>data class LibraryLeak(val leakTraces: List&lt;LeakTrace&gt;, val pattern: ReferencePattern, val description: String) : Leak</p> <p>A leak found by HeapAnalyzer, where the only path to the leaking object required going through a reference matched by pattern, as provided to a LibraryLeakReferenceMatcher instance. This is a known leak in library code that is beyond your control.</p>"},{"location":"api/shark/-library-leak/#constructors","title":"Constructors","text":"LibraryLeak fun LibraryLeak(leakTraces: List&lt;LeakTrace&gt;, pattern: ReferencePattern, description: String)"},{"location":"api/shark/-library-leak/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-library-leak/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-library-leak/#properties","title":"Properties","text":"Name Summary description val description: StringA description that conveys what we know about this library leak. leakTraces open override val leakTraces: List&lt;LeakTrace&gt;Group of leak traces which share the same leak signature. pattern val pattern: ReferencePatternThe pattern that matched one of the references in each of leakTraces, as provided to a LibraryLeakReferenceMatcher instance. shortDescription open override val shortDescription: String signature open override val signature: StringA unique SHA1 hash that represents this group of leak traces. totalRetainedHeapByteSize val totalRetainedHeapByteSize: Int?Sum of LeakTrace.retainedHeapByteSize for all elements in leakTraces. Null if the retained heap size was not computed. totalRetainedObjectCount val totalRetainedObjectCount: Int?Sum of LeakTrace.retainedObjectCount for all elements in leakTraces. Null if the retained heap size was not computed."},{"location":"api/shark/-library-leak/-library-leak/","title":"library leak","text":"<p>//leakcanary/shark/LibraryLeak/LibraryLeak</p>"},{"location":"api/shark/-library-leak/-library-leak/#libraryleak","title":"LibraryLeak","text":"<p>fun LibraryLeak(leakTraces: List&lt;LeakTrace&gt;, pattern: ReferencePattern, description: String)</p>"},{"location":"api/shark/-library-leak/description/","title":"Description","text":"<p>//leakcanary/shark/LibraryLeak/description</p>"},{"location":"api/shark/-library-leak/description/#description","title":"description","text":"<p>val description: String</p> <p>A description that conveys what we know about this library leak.</p>"},{"location":"api/shark/-library-leak/leak-traces/","title":"Leak traces","text":"<p>//leakcanary/shark/LibraryLeak/leakTraces</p>"},{"location":"api/shark/-library-leak/leak-traces/#leaktraces","title":"leakTraces","text":"<p>open override val leakTraces: List&lt;LeakTrace&gt;</p> <p>Group of leak traces which share the same leak signature.</p>"},{"location":"api/shark/-library-leak/pattern/","title":"Pattern","text":"<p>//leakcanary/shark/LibraryLeak/pattern</p>"},{"location":"api/shark/-library-leak/pattern/#pattern","title":"pattern","text":"<p>val pattern: ReferencePattern</p> <p>The pattern that matched one of the references in each of leakTraces, as provided to a LibraryLeakReferenceMatcher instance.</p>"},{"location":"api/shark/-library-leak/short-description/","title":"Short description","text":"<p>//leakcanary/shark/LibraryLeak/shortDescription</p>"},{"location":"api/shark/-library-leak/short-description/#shortdescription","title":"shortDescription","text":"<p>open override val shortDescription: String</p>"},{"location":"api/shark/-library-leak/signature/","title":"Signature","text":"<p>//leakcanary/shark/LibraryLeak/signature</p>"},{"location":"api/shark/-library-leak/signature/#signature","title":"signature","text":"<p>open override val signature: String</p> <p>A unique SHA1 hash that represents this group of leak traces.</p> <p>For ApplicationLeak this is based on LeakTrace.signature and for LibraryLeak this is based on LibraryLeak.pattern.</p>"},{"location":"api/shark/-library-leak/to-string/","title":"To string","text":"<p>//leakcanary/shark/LibraryLeak/toString</p>"},{"location":"api/shark/-library-leak/to-string/#tostring","title":"toString","text":"<p>open override fun toString(): String</p>"},{"location":"api/shark/-library-leak/-companion/","title":"Index","text":"<p>//leakcanary/shark/LibraryLeak/Companion</p>"},{"location":"api/shark/-library-leak/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-library-leak-reference-matcher/","title":"Index","text":"<p>//leakcanary/shark/LibraryLeakReferenceMatcher</p>"},{"location":"api/shark/-library-leak-reference-matcher/#libraryleakreferencematcher","title":"LibraryLeakReferenceMatcher","text":"<p>data class LibraryLeakReferenceMatcher(val pattern: ReferencePattern, val description: String = \"\", val patternApplies: (HeapGraph) -&gt; Boolean = { true }) : ReferenceMatcher</p> <p>LibraryLeakReferenceMatcher should be used to match references in library code that are known to create leaks and are beyond your control. The shortest path finder will only go through matching references after it has exhausted references that don\u2019t match, prioritizing finding an application leak over a known library leak. Library leaks will be reported as LibraryLeak instead of ApplicationLeak.</p>"},{"location":"api/shark/-library-leak-reference-matcher/#constructors","title":"Constructors","text":"LibraryLeakReferenceMatcher fun LibraryLeakReferenceMatcher(pattern: ReferencePattern, description: String = \"\", patternApplies: (HeapGraph) -&gt; Boolean = { true })"},{"location":"api/shark/-library-leak-reference-matcher/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-library-leak-reference-matcher/#properties","title":"Properties","text":"Name Summary description val description: StringA description that conveys what we know about this library leak. pattern open override val pattern: ReferencePatternThe pattern that references will be matched against. patternApplies val patternApplies: (HeapGraph) -&gt; BooleanWhether the identified leak may exist in the provided HeapGraph. Defaults to true. If the heap dump comes from a VM that runs a different version of the library that doesn\u2019t have the leak, then this should return false."},{"location":"api/shark/-library-leak-reference-matcher/-library-leak-reference-matcher/","title":"library leak reference matcher","text":"<p>//leakcanary/shark/LibraryLeakReferenceMatcher/LibraryLeakReferenceMatcher</p>"},{"location":"api/shark/-library-leak-reference-matcher/-library-leak-reference-matcher/#libraryleakreferencematcher","title":"LibraryLeakReferenceMatcher","text":"<p>fun LibraryLeakReferenceMatcher(pattern: ReferencePattern, description: String = \"\", patternApplies: (HeapGraph) -&gt; Boolean = { true })</p>"},{"location":"api/shark/-library-leak-reference-matcher/description/","title":"Description","text":"<p>//leakcanary/shark/LibraryLeakReferenceMatcher/description</p>"},{"location":"api/shark/-library-leak-reference-matcher/description/#description","title":"description","text":"<p>val description: String</p> <p>A description that conveys what we know about this library leak.</p>"},{"location":"api/shark/-library-leak-reference-matcher/pattern-applies/","title":"Pattern applies","text":"<p>//leakcanary/shark/LibraryLeakReferenceMatcher/patternApplies</p>"},{"location":"api/shark/-library-leak-reference-matcher/pattern-applies/#patternapplies","title":"patternApplies","text":"<p>val patternApplies: (HeapGraph) -&gt; Boolean</p> <p>Whether the identified leak may exist in the provided HeapGraph. Defaults to true. If the heap dump comes from a VM that runs a different version of the library that doesn\u2019t have the leak, then this should return false.</p>"},{"location":"api/shark/-library-leak-reference-matcher/pattern/","title":"Pattern","text":"<p>//leakcanary/shark/LibraryLeakReferenceMatcher/pattern</p>"},{"location":"api/shark/-library-leak-reference-matcher/pattern/#pattern","title":"pattern","text":"<p>open override val pattern: ReferencePattern</p> <p>The pattern that references will be matched against.</p>"},{"location":"api/shark/-library-leak-reference-matcher/to-string/","title":"To string","text":"<p>//leakcanary/shark/LibraryLeakReferenceMatcher/toString</p>"},{"location":"api/shark/-library-leak-reference-matcher/to-string/#tostring","title":"toString","text":"<p>open override fun toString(): String</p>"},{"location":"api/shark/-metadata-extractor/","title":"Index","text":"<p>//leakcanary/shark/MetadataExtractor</p>"},{"location":"api/shark/-metadata-extractor/#metadataextractor","title":"MetadataExtractor","text":"<p>fun interface MetadataExtractor</p> <p>Extracts metadata from a hprof to be reported in HeapAnalysisSuccess.metadata.</p> <p>This is a functional interface with which you can create a MetadataExtractor from a lambda.</p>"},{"location":"api/shark/-metadata-extractor/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-metadata-extractor/#functions","title":"Functions","text":"Name Summary extractMetadata abstract fun extractMetadata(graph: HeapGraph): Map&lt;String, String&gt;"},{"location":"api/shark/-metadata-extractor/#inheritors","title":"Inheritors","text":"Name AndroidMetadataExtractor"},{"location":"api/shark/-metadata-extractor/extract-metadata/","title":"Extract metadata","text":"<p>//leakcanary/shark/MetadataExtractor/extractMetadata</p>"},{"location":"api/shark/-metadata-extractor/extract-metadata/#extractmetadata","title":"extractMetadata","text":"<p>abstract fun extractMetadata(graph: HeapGraph): Map&lt;String, String&gt;</p>"},{"location":"api/shark/-metadata-extractor/-companion/","title":"Index","text":"<p>//leakcanary/shark/MetadataExtractor/Companion</p>"},{"location":"api/shark/-metadata-extractor/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-metadata-extractor/-companion/#functions","title":"Functions","text":"Name Summary invoke inline operator fun invoke(crossinline block: (HeapGraph) -&gt; Map&lt;String, String&gt;): MetadataExtractorUtility function to create a MetadataExtractor from the passed in block lambda instead of using the anonymous object : MetadataExtractor syntax."},{"location":"api/shark/-metadata-extractor/-companion/#properties","title":"Properties","text":"Name Summary NO_OP val NO_OP: MetadataExtractorA no-op MetadataExtractor"},{"location":"api/shark/-metadata-extractor/-companion/-n-o_-o-p/","title":"n o  o p","text":"<p>//leakcanary/shark/MetadataExtractor/Companion/NO_OP</p>"},{"location":"api/shark/-metadata-extractor/-companion/-n-o_-o-p/#no_op","title":"NO_OP","text":"<p>val NO_OP: MetadataExtractor</p> <p>A no-op MetadataExtractor</p>"},{"location":"api/shark/-metadata-extractor/-companion/invoke/","title":"Invoke","text":"<p>//leakcanary/shark/MetadataExtractor/Companion/invoke</p>"},{"location":"api/shark/-metadata-extractor/-companion/invoke/#invoke","title":"invoke","text":"<p>inline operator fun invoke(crossinline block: (HeapGraph) -&gt; Map&lt;String, String&gt;): MetadataExtractor</p> <p>Utility function to create a MetadataExtractor from the passed in block lambda instead of using the anonymous object : MetadataExtractor syntax.</p> <p>Usage:</p> <p>val inspector = MetadataExtractor { graph -&gt;\\ \\ }</p>"},{"location":"api/shark/-neo4-j-command/","title":"Index","text":"<p>//leakcanary/shark/Neo4JCommand</p>"},{"location":"api/shark/-neo4-j-command/#neo4jcommand","title":"Neo4JCommand","text":"<p>class Neo4JCommand : CliktCommand</p> <p>Example commands:</p> <p>MATCH (roots: GcRoots) RETURN roots</p> <p>MATCH (activity: Instance) -:CLASS|SUPER*1..-&gt; (c:Class {className: \"android.app.Activity\"}) RETURN activity</p> <p>MATCH (activity: Instance) -:CLASS|SUPER*1..-&gt; (c:Class {className: \"android.app.Activity\"}) WHERE \"android.app.Activity.mDestroyed = true\" in activity.fields RETURN activity</p> <p>MATCH (roots: GcRoots) MATCH (activity: Instance) -:CLASS|SUPER*1..-&gt;(c:Class {className: \"android.app.Activity\"}) WHERE \"android.app.Activity.mDestroyed = true\" in activity.fields RETURN shortestPath((roots)-:ROOT|REF*-&gt;(activity))</p>"},{"location":"api/shark/-neo4-j-command/#constructors","title":"Constructors","text":"Neo4JCommand fun Neo4JCommand()"},{"location":"api/shark/-neo4-j-command/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-neo4-j-command/#functions","title":"Functions","text":"Name Summary aliases open fun aliases(): Map&lt;String, List&lt;String&gt;&gt; getFormattedHelp open fun getFormattedHelp(): String getFormattedUsage open fun getFormattedUsage(): String issueMessage fun issueMessage(message: String) main fun main(argv: Array&lt;String&gt;)fun main(argv: List&lt;String&gt;) parse fun parse(argv: Array&lt;String&gt;, parentContext: Context?)fun parse(argv: List&lt;String&gt;, parentContext: Context?) registerArgument fun registerArgument(argument: Argument) registeredSubcommandNames fun registeredSubcommandNames(): List&lt;String&gt; registerOption open override fun registerOption(option: GroupableOption)fun registerOption(option: Option) registerOptionGroup fun registerOptionGroup(group: ParameterGroup) run open override fun run() toString open override fun toString(): String"},{"location":"api/shark/-neo4-j-command/#properties","title":"Properties","text":"Name Summary commandHelp val commandHelp: String commandHelpEpilog val commandHelpEpilog: String commandName val commandName: String context val context: Context helpTags val helpTags: Map&lt;String, String&gt; invokeWithoutSubcommand val invokeWithoutSubcommand: Boolean messages val messages: List&lt;String&gt; printHelpOnEmptyArgs val printHelpOnEmptyArgs: Boolean"},{"location":"api/shark/-neo4-j-command/-neo4-j-command/","title":"neo4 j command","text":"<p>//leakcanary/shark/Neo4JCommand/Neo4JCommand</p>"},{"location":"api/shark/-neo4-j-command/-neo4-j-command/#neo4jcommand","title":"Neo4JCommand","text":"<p>fun Neo4JCommand()</p>"},{"location":"api/shark/-neo4-j-command/run/","title":"Run","text":"<p>//leakcanary/shark/Neo4JCommand/run</p>"},{"location":"api/shark/-neo4-j-command/run/#run","title":"run","text":"<p>open override fun run()</p>"},{"location":"api/shark/-neo4-j-command/-companion/","title":"Index","text":"<p>//leakcanary/shark/Neo4JCommand/Companion</p>"},{"location":"api/shark/-neo4-j-command/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-neo4-j-command/-companion/#functions","title":"Functions","text":"Name Summary dump fun CliktCommand.dump(heapDumpFile: File, dbParentFolder: File, proguardMappingFile: File?) heapValueAsString fun HeapValue.heapValueAsString(): String"},{"location":"api/shark/-neo4-j-command/-companion/#properties","title":"Properties","text":"Name Summary PHANTOM_REFERENCE val PHANTOM_REFERENCE: String REFERENCE val REFERENCE: String SOFT_REFERENCE val SOFT_REFERENCE: String WEAK_REFERENCE val WEAK_REFERENCE: String"},{"location":"api/shark/-neo4-j-command/-companion/-p-h-a-n-t-o-m_-r-e-f-e-r-e-n-c-e/","title":"p h a n t o m  r e f e r e n c e","text":"<p>//leakcanary/shark/Neo4JCommand/Companion/PHANTOM_REFERENCE</p>"},{"location":"api/shark/-neo4-j-command/-companion/-p-h-a-n-t-o-m_-r-e-f-e-r-e-n-c-e/#phantom_reference","title":"PHANTOM_REFERENCE","text":"<p>val PHANTOM_REFERENCE: String</p>"},{"location":"api/shark/-neo4-j-command/-companion/-r-e-f-e-r-e-n-c-e/","title":"r e f e r e n c e","text":"<p>//leakcanary/shark/Neo4JCommand/Companion/REFERENCE</p>"},{"location":"api/shark/-neo4-j-command/-companion/-r-e-f-e-r-e-n-c-e/#reference","title":"REFERENCE","text":"<p>val REFERENCE: String</p>"},{"location":"api/shark/-neo4-j-command/-companion/-s-o-f-t_-r-e-f-e-r-e-n-c-e/","title":"s o f t  r e f e r e n c e","text":"<p>//leakcanary/shark/Neo4JCommand/Companion/SOFT_REFERENCE</p>"},{"location":"api/shark/-neo4-j-command/-companion/-s-o-f-t_-r-e-f-e-r-e-n-c-e/#soft_reference","title":"SOFT_REFERENCE","text":"<p>val SOFT_REFERENCE: String</p>"},{"location":"api/shark/-neo4-j-command/-companion/-w-e-a-k_-r-e-f-e-r-e-n-c-e/","title":"w e a k  r e f e r e n c e","text":"<p>//leakcanary/shark/Neo4JCommand/Companion/WEAK_REFERENCE</p>"},{"location":"api/shark/-neo4-j-command/-companion/-w-e-a-k_-r-e-f-e-r-e-n-c-e/#weak_reference","title":"WEAK_REFERENCE","text":"<p>val WEAK_REFERENCE: String</p>"},{"location":"api/shark/-neo4-j-command/-companion/dump/","title":"Dump","text":"<p>//leakcanary/shark/Neo4JCommand/Companion/dump</p>"},{"location":"api/shark/-neo4-j-command/-companion/dump/#dump","title":"dump","text":"<p>fun CliktCommand.dump(heapDumpFile: File, dbParentFolder: File, proguardMappingFile: File?)</p>"},{"location":"api/shark/-neo4-j-command/-companion/heap-value-as-string/","title":"Heap value as string","text":"<p>//leakcanary/shark/Neo4JCommand/Companion/heapValueAsString</p>"},{"location":"api/shark/-neo4-j-command/-companion/heap-value-as-string/#heapvalueasstring","title":"heapValueAsString","text":"<p>fun HeapValue.heapValueAsString(): String</p>"},{"location":"api/shark/-object-inspector/","title":"Index","text":"<p>//leakcanary/shark/ObjectInspector</p>"},{"location":"api/shark/-object-inspector/#objectinspector","title":"ObjectInspector","text":"<p>fun interface ObjectInspector</p> <p>Provides LeakCanary with insights about objects (classes, instances and arrays) found in the heap. inspect will be called for each object that LeakCanary wants to know more about. The implementation can then use the provided ObjectReporter to provide insights for that object.</p> <p>This is a functional interface with which you can create a ObjectInspector from a lambda.</p>"},{"location":"api/shark/-object-inspector/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-object-inspector/#functions","title":"Functions","text":"Name Summary inspect abstract fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-object-inspector/#inheritors","title":"Inheritors","text":"Name AppSingletonInspector ObjectInspectors AndroidObjectInspectors"},{"location":"api/shark/-object-inspector/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/ObjectInspector/inspect</p>"},{"location":"api/shark/-object-inspector/inspect/#inspect","title":"inspect","text":"<p>abstract fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-object-inspector/inspect/#see-also","title":"See also","text":"<p>main</p> shark.ObjectInspector"},{"location":"api/shark/-object-inspector/-companion/","title":"Index","text":"<p>//leakcanary/shark/ObjectInspector/Companion</p>"},{"location":"api/shark/-object-inspector/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-object-inspector/-companion/#functions","title":"Functions","text":"Name Summary invoke inline operator fun invoke(crossinline block: (ObjectReporter) -&gt; Unit): ObjectInspectorUtility function to create a ObjectInspector from the passed in block lambda instead of using the anonymous object : OnHeapAnalyzedListener syntax."},{"location":"api/shark/-object-inspector/-companion/invoke/","title":"Invoke","text":"<p>//leakcanary/shark/ObjectInspector/Companion/invoke</p>"},{"location":"api/shark/-object-inspector/-companion/invoke/#invoke","title":"invoke","text":"<p>inline operator fun invoke(crossinline block: (ObjectReporter) -&gt; Unit): ObjectInspector</p> <p>Utility function to create a ObjectInspector from the passed in block lambda instead of using the anonymous object : OnHeapAnalyzedListener syntax.</p> <p>Usage:</p> <p>val inspector = ObjectInspector { reporter -&gt;\\ \\ }</p>"},{"location":"api/shark/-object-inspectors/","title":"Index","text":"<p>//leakcanary/shark/ObjectInspectors</p>"},{"location":"api/shark/-object-inspectors/#objectinspectors","title":"ObjectInspectors","text":"<p>enum ObjectInspectors : Enum&lt;ObjectInspectors&gt; , ObjectInspector</p> <p>A set of default ObjectInspectors that knows about common JDK objects.</p>"},{"location":"api/shark/-object-inspectors/#entries","title":"Entries","text":"THREAD THREAD() ANONYMOUS_CLASS ANONYMOUS_CLASS() CLASS CLASS() CLASSLOADER CLASSLOADER() KEYED_WEAK_REFERENCE KEYED_WEAK_REFERENCE()"},{"location":"api/shark/-object-inspectors/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-object-inspectors/#functions","title":"Functions","text":"Name Summary inspect abstract fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-object-inspectors/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-object-inspectors/-a-n-o-n-y-m-o-u-s_-c-l-a-s-s/","title":"Index","text":"<p>//leakcanary/shark/ObjectInspectors/ANONYMOUS_CLASS</p>"},{"location":"api/shark/-object-inspectors/-a-n-o-n-y-m-o-u-s_-c-l-a-s-s/#anonymous_class","title":"ANONYMOUS_CLASS","text":"<p>ANONYMOUS_CLASS()</p>"},{"location":"api/shark/-object-inspectors/-a-n-o-n-y-m-o-u-s_-c-l-a-s-s/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-object-inspectors/-a-n-o-n-y-m-o-u-s_-c-l-a-s-s/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-object-inspectors/-a-n-o-n-y-m-o-u-s_-c-l-a-s-s/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/ObjectInspectors/ANONYMOUS_CLASS/inspect</p>"},{"location":"api/shark/-object-inspectors/-a-n-o-n-y-m-o-u-s_-c-l-a-s-s/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-object-inspectors/-a-n-o-n-y-m-o-u-s_-c-l-a-s-s/inspect/#see-also","title":"See also","text":"<p>main</p> shark.ObjectInspector"},{"location":"api/shark/-object-inspectors/-c-l-a-s-s/","title":"Index","text":"<p>//leakcanary/shark/ObjectInspectors/CLASS</p>"},{"location":"api/shark/-object-inspectors/-c-l-a-s-s/#class","title":"CLASS","text":"<p>CLASS()</p>"},{"location":"api/shark/-object-inspectors/-c-l-a-s-s/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-object-inspectors/-c-l-a-s-s/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-object-inspectors/-c-l-a-s-s/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/ObjectInspectors/CLASS/inspect</p>"},{"location":"api/shark/-object-inspectors/-c-l-a-s-s/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-object-inspectors/-c-l-a-s-s/inspect/#see-also","title":"See also","text":"<p>main</p> shark.ObjectInspector"},{"location":"api/shark/-object-inspectors/-c-l-a-s-s-l-o-a-d-e-r/","title":"Index","text":"<p>//leakcanary/shark/ObjectInspectors/CLASSLOADER</p>"},{"location":"api/shark/-object-inspectors/-c-l-a-s-s-l-o-a-d-e-r/#classloader","title":"CLASSLOADER","text":"<p>CLASSLOADER()</p>"},{"location":"api/shark/-object-inspectors/-c-l-a-s-s-l-o-a-d-e-r/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-object-inspectors/-c-l-a-s-s-l-o-a-d-e-r/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-object-inspectors/-c-l-a-s-s-l-o-a-d-e-r/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/ObjectInspectors/CLASSLOADER/inspect</p>"},{"location":"api/shark/-object-inspectors/-c-l-a-s-s-l-o-a-d-e-r/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-object-inspectors/-c-l-a-s-s-l-o-a-d-e-r/inspect/#see-also","title":"See also","text":"<p>main</p> shark.ObjectInspector"},{"location":"api/shark/-object-inspectors/-companion/","title":"Index","text":"<p>//leakcanary/shark/ObjectInspectors/Companion</p>"},{"location":"api/shark/-object-inspectors/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-object-inspectors/-companion/#functions","title":"Functions","text":"Name Summary createLeakingObjectFilters fun createLeakingObjectFilters(inspectors: Set&lt;ObjectInspectors&gt;): List&lt;FilteringLeakingObjectFinder.LeakingObjectFilter&gt;Creates a list of LeakingObjectFilter based on the passed in ObjectInspectors."},{"location":"api/shark/-object-inspectors/-companion/#properties","title":"Properties","text":"Name Summary jdkDefaults val jdkDefaults: List&lt;ObjectInspector&gt; jdkLeakingObjectFilters val jdkLeakingObjectFilters: List&lt;FilteringLeakingObjectFinder.LeakingObjectFilter&gt;Returns a list of LeakingObjectFilter suitable for common JDK projects."},{"location":"api/shark/-object-inspectors/-companion/create-leaking-object-filters/","title":"Create leaking object filters","text":"<p>//leakcanary/shark/ObjectInspectors/Companion/createLeakingObjectFilters</p>"},{"location":"api/shark/-object-inspectors/-companion/create-leaking-object-filters/#createleakingobjectfilters","title":"createLeakingObjectFilters","text":"<p>fun createLeakingObjectFilters(inspectors: Set&lt;ObjectInspectors&gt;): List&lt;FilteringLeakingObjectFinder.LeakingObjectFilter&gt;</p> <p>Creates a list of LeakingObjectFilter based on the passed in ObjectInspectors.</p>"},{"location":"api/shark/-object-inspectors/-companion/jdk-defaults/","title":"Jdk defaults","text":"<p>//leakcanary/shark/ObjectInspectors/Companion/jdkDefaults</p>"},{"location":"api/shark/-object-inspectors/-companion/jdk-defaults/#jdkdefaults","title":"jdkDefaults","text":"<p>val jdkDefaults: List&lt;ObjectInspector&gt;</p>"},{"location":"api/shark/-object-inspectors/-companion/jdk-defaults/#see-also","title":"See also","text":"<p>main</p> shark.ObjectInspectors"},{"location":"api/shark/-object-inspectors/-companion/jdk-leaking-object-filters/","title":"Jdk leaking object filters","text":"<p>//leakcanary/shark/ObjectInspectors/Companion/jdkLeakingObjectFilters</p>"},{"location":"api/shark/-object-inspectors/-companion/jdk-leaking-object-filters/#jdkleakingobjectfilters","title":"jdkLeakingObjectFilters","text":"<p>val jdkLeakingObjectFilters: List&lt;FilteringLeakingObjectFinder.LeakingObjectFilter&gt;</p> <p>Returns a list of LeakingObjectFilter suitable for common JDK projects.</p>"},{"location":"api/shark/-object-inspectors/-k-e-y-e-d_-w-e-a-k_-r-e-f-e-r-e-n-c-e/","title":"Index","text":"<p>//leakcanary/shark/ObjectInspectors/KEYED_WEAK_REFERENCE</p>"},{"location":"api/shark/-object-inspectors/-k-e-y-e-d_-w-e-a-k_-r-e-f-e-r-e-n-c-e/#keyed_weak_reference","title":"KEYED_WEAK_REFERENCE","text":"<p>KEYED_WEAK_REFERENCE()</p>"},{"location":"api/shark/-object-inspectors/-k-e-y-e-d_-w-e-a-k_-r-e-f-e-r-e-n-c-e/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-object-inspectors/-k-e-y-e-d_-w-e-a-k_-r-e-f-e-r-e-n-c-e/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-object-inspectors/-k-e-y-e-d_-w-e-a-k_-r-e-f-e-r-e-n-c-e/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/ObjectInspectors/KEYED_WEAK_REFERENCE/inspect</p>"},{"location":"api/shark/-object-inspectors/-k-e-y-e-d_-w-e-a-k_-r-e-f-e-r-e-n-c-e/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-object-inspectors/-k-e-y-e-d_-w-e-a-k_-r-e-f-e-r-e-n-c-e/inspect/#see-also","title":"See also","text":"<p>main</p> shark.ObjectInspector"},{"location":"api/shark/-object-inspectors/-t-h-r-e-a-d/","title":"Index","text":"<p>//leakcanary/shark/ObjectInspectors/THREAD</p>"},{"location":"api/shark/-object-inspectors/-t-h-r-e-a-d/#thread","title":"THREAD","text":"<p>THREAD()</p>"},{"location":"api/shark/-object-inspectors/-t-h-r-e-a-d/#functions","title":"Functions","text":"Name Summary inspect open override fun inspect(reporter: ObjectReporter)"},{"location":"api/shark/-object-inspectors/-t-h-r-e-a-d/#properties","title":"Properties","text":"Name Summary name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-object-inspectors/-t-h-r-e-a-d/inspect/","title":"Inspect","text":"<p>//leakcanary/shark/ObjectInspectors/THREAD/inspect</p>"},{"location":"api/shark/-object-inspectors/-t-h-r-e-a-d/inspect/#inspect","title":"inspect","text":"<p>open override fun inspect(reporter: ObjectReporter)</p>"},{"location":"api/shark/-object-inspectors/-t-h-r-e-a-d/inspect/#see-also","title":"See also","text":"<p>main</p> shark.ObjectInspector"},{"location":"api/shark/-object-reporter/","title":"Index","text":"<p>//leakcanary/shark/ObjectReporter</p>"},{"location":"api/shark/-object-reporter/#objectreporter","title":"ObjectReporter","text":"<p>class ObjectReporter(val heapObject: HeapObject)</p> <p>Enables ObjectInspector implementations to provide insights on heapObject, which is an object (class, instance or array) found in the heap.</p> <p>A given ObjectReporter only maps to one object in the heap, but is shared to many ObjectInspector implementations and accumulates insights.</p>"},{"location":"api/shark/-object-reporter/#constructors","title":"Constructors","text":"ObjectReporter fun ObjectReporter(heapObject: HeapObject)"},{"location":"api/shark/-object-reporter/#functions","title":"Functions","text":"Name Summary whenInstanceOf fun whenInstanceOf(expectedClassName: String, block: ObjectReporter.(HeapObject.HeapInstance) -&gt; Unit)Runs block if ObjectReporter.heapObject is an instance of expectedClassName.fun whenInstanceOf(expectedClass: KClass&lt;out Any&gt;, block: ObjectReporter.(HeapObject.HeapInstance) -&gt; Unit)Runs block if ObjectReporter.heapObject is an instance of expectedClass."},{"location":"api/shark/-object-reporter/#properties","title":"Properties","text":"Name Summary heapObject val heapObject: HeapObject labels val labels: LinkedHashSet&lt;String&gt;Labels that will be visible on the corresponding heapObject in the leak trace. leakingReasons val leakingReasons: MutableSet&lt;String&gt;Reasons for which this object is expected to be unreachable (ie it\u2019s leaking). notLeakingReasons val notLeakingReasons: MutableSet&lt;String&gt;Reasons for which this object is expected to be reachable (ie it\u2019s not leaking)."},{"location":"api/shark/-object-reporter/-object-reporter/","title":"object reporter","text":"<p>//leakcanary/shark/ObjectReporter/ObjectReporter</p>"},{"location":"api/shark/-object-reporter/-object-reporter/#objectreporter","title":"ObjectReporter","text":"<p>fun ObjectReporter(heapObject: HeapObject)</p>"},{"location":"api/shark/-object-reporter/heap-object/","title":"Heap object","text":"<p>//leakcanary/shark/ObjectReporter/heapObject</p>"},{"location":"api/shark/-object-reporter/heap-object/#heapobject","title":"heapObject","text":"<p>val heapObject: HeapObject</p>"},{"location":"api/shark/-object-reporter/labels/","title":"Labels","text":"<p>//leakcanary/shark/ObjectReporter/labels</p>"},{"location":"api/shark/-object-reporter/labels/#labels","title":"labels","text":"<p>val labels: LinkedHashSet&lt;String&gt;</p> <p>Labels that will be visible on the corresponding heapObject in the leak trace.</p>"},{"location":"api/shark/-object-reporter/leaking-reasons/","title":"Leaking reasons","text":"<p>//leakcanary/shark/ObjectReporter/leakingReasons</p>"},{"location":"api/shark/-object-reporter/leaking-reasons/#leakingreasons","title":"leakingReasons","text":"<p>val leakingReasons: MutableSet&lt;String&gt;</p> <p>Reasons for which this object is expected to be unreachable (ie it\u2019s leaking).</p>"},{"location":"api/shark/-object-reporter/not-leaking-reasons/","title":"Not leaking reasons","text":"<p>//leakcanary/shark/ObjectReporter/notLeakingReasons</p>"},{"location":"api/shark/-object-reporter/not-leaking-reasons/#notleakingreasons","title":"notLeakingReasons","text":"<p>val notLeakingReasons: MutableSet&lt;String&gt;</p> <p>Reasons for which this object is expected to be reachable (ie it\u2019s not leaking).</p>"},{"location":"api/shark/-object-reporter/when-instance-of/","title":"When instance of","text":"<p>//leakcanary/shark/ObjectReporter/whenInstanceOf</p>"},{"location":"api/shark/-object-reporter/when-instance-of/#wheninstanceof","title":"whenInstanceOf","text":"<p>fun whenInstanceOf(expectedClass: KClass&lt;out Any&gt;, block: ObjectReporter.(HeapObject.HeapInstance) -&gt; Unit)</p> <p>Runs block if ObjectReporter.heapObject is an instance of expectedClass.</p> <p>fun whenInstanceOf(expectedClassName: String, block: ObjectReporter.(HeapObject.HeapInstance) -&gt; Unit)</p> <p>Runs block if ObjectReporter.heapObject is an instance of expectedClassName.</p>"},{"location":"api/shark/-on-analysis-progress-listener/","title":"Index","text":"<p>//leakcanary/shark/OnAnalysisProgressListener</p>"},{"location":"api/shark/-on-analysis-progress-listener/#onanalysisprogresslistener","title":"OnAnalysisProgressListener","text":"<p>fun interface OnAnalysisProgressListener</p> <p>Reports progress from the HeapAnalyzer as they occur, as Step values.</p> <p>This is a functional interface with which you can create a OnAnalysisProgressListener from a lambda.</p>"},{"location":"api/shark/-on-analysis-progress-listener/#types","title":"Types","text":"Name Summary Companion object Companion Step enum Step : Enum&lt;OnAnalysisProgressListener.Step&gt;"},{"location":"api/shark/-on-analysis-progress-listener/#functions","title":"Functions","text":"Name Summary onAnalysisProgress abstract fun onAnalysisProgress(step: OnAnalysisProgressListener.Step)"},{"location":"api/shark/-on-analysis-progress-listener/on-analysis-progress/","title":"On analysis progress","text":"<p>//leakcanary/shark/OnAnalysisProgressListener/onAnalysisProgress</p>"},{"location":"api/shark/-on-analysis-progress-listener/on-analysis-progress/#onanalysisprogress","title":"onAnalysisProgress","text":"<p>abstract fun onAnalysisProgress(step: OnAnalysisProgressListener.Step)</p>"},{"location":"api/shark/-on-analysis-progress-listener/-companion/","title":"Index","text":"<p>//leakcanary/shark/OnAnalysisProgressListener/Companion</p>"},{"location":"api/shark/-on-analysis-progress-listener/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-on-analysis-progress-listener/-companion/#functions","title":"Functions","text":"Name Summary invoke inline operator fun invoke(crossinline block: (OnAnalysisProgressListener.Step) -&gt; Unit): OnAnalysisProgressListenerUtility function to create a OnAnalysisProgressListener from the passed in block lambda instead of using the anonymous object : OnAnalysisProgressListener syntax."},{"location":"api/shark/-on-analysis-progress-listener/-companion/#properties","title":"Properties","text":"Name Summary NO_OP val NO_OP: OnAnalysisProgressListenerA no-op OnAnalysisProgressListener"},{"location":"api/shark/-on-analysis-progress-listener/-companion/-n-o_-o-p/","title":"n o  o p","text":"<p>//leakcanary/shark/OnAnalysisProgressListener/Companion/NO_OP</p>"},{"location":"api/shark/-on-analysis-progress-listener/-companion/-n-o_-o-p/#no_op","title":"NO_OP","text":"<p>val NO_OP: OnAnalysisProgressListener</p> <p>A no-op OnAnalysisProgressListener</p>"},{"location":"api/shark/-on-analysis-progress-listener/-companion/invoke/","title":"Invoke","text":"<p>//leakcanary/shark/OnAnalysisProgressListener/Companion/invoke</p>"},{"location":"api/shark/-on-analysis-progress-listener/-companion/invoke/#invoke","title":"invoke","text":"<p>inline operator fun invoke(crossinline block: (OnAnalysisProgressListener.Step) -&gt; Unit): OnAnalysisProgressListener</p> <p>Utility function to create a OnAnalysisProgressListener from the passed in block lambda instead of using the anonymous object : OnAnalysisProgressListener syntax.</p> <p>Usage:</p> <p>val listener = OnAnalysisProgressListener {\\ \\ }</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/","title":"Index","text":"<p>//leakcanary/shark/OnAnalysisProgressListener/Step</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/#step","title":"Step","text":"<p>enum Step : Enum&lt;OnAnalysisProgressListener.Step&gt;</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/#entries","title":"Entries","text":"REPORTING_HEAP_ANALYSIS REPORTING_HEAP_ANALYSIS() BUILDING_LEAK_TRACES BUILDING_LEAK_TRACES() COMPUTING_RETAINED_SIZE COMPUTING_RETAINED_SIZE() COMPUTING_NATIVE_RETAINED_SIZE COMPUTING_NATIVE_RETAINED_SIZE() INSPECTING_OBJECTS INSPECTING_OBJECTS() FINDING_DOMINATORS FINDING_DOMINATORS() FINDING_PATHS_TO_RETAINED_OBJECTS FINDING_PATHS_TO_RETAINED_OBJECTS() FINDING_RETAINED_OBJECTS FINDING_RETAINED_OBJECTS() EXTRACTING_METADATA EXTRACTING_METADATA() PARSING_HEAP_DUMP PARSING_HEAP_DUMP()"},{"location":"api/shark/-on-analysis-progress-listener/-step/#properties","title":"Properties","text":"Name Summary humanReadableName val humanReadableName: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-on-analysis-progress-listener/-step/human-readable-name/","title":"Human readable name","text":"<p>//leakcanary/shark/OnAnalysisProgressListener/Step/humanReadableName</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/human-readable-name/#humanreadablename","title":"humanReadableName","text":"<p>val humanReadableName: String</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-b-u-i-l-d-i-n-g_-l-e-a-k_-t-r-a-c-e-s/","title":"Index","text":"<p>//leakcanary/shark/OnAnalysisProgressListener/Step/BUILDING_LEAK_TRACES</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-b-u-i-l-d-i-n-g_-l-e-a-k_-t-r-a-c-e-s/#building_leak_traces","title":"BUILDING_LEAK_TRACES","text":"<p>BUILDING_LEAK_TRACES()</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-b-u-i-l-d-i-n-g_-l-e-a-k_-t-r-a-c-e-s/#properties","title":"Properties","text":"Name Summary humanReadableName val humanReadableName: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-on-analysis-progress-listener/-step/-c-o-m-p-u-t-i-n-g_-n-a-t-i-v-e_-r-e-t-a-i-n-e-d_-s-i-z-e/","title":"Index","text":"<p>//leakcanary/shark/OnAnalysisProgressListener/Step/COMPUTING_NATIVE_RETAINED_SIZE</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-c-o-m-p-u-t-i-n-g_-n-a-t-i-v-e_-r-e-t-a-i-n-e-d_-s-i-z-e/#computing_native_retained_size","title":"COMPUTING_NATIVE_RETAINED_SIZE","text":"<p>COMPUTING_NATIVE_RETAINED_SIZE()</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-c-o-m-p-u-t-i-n-g_-n-a-t-i-v-e_-r-e-t-a-i-n-e-d_-s-i-z-e/#properties","title":"Properties","text":"Name Summary humanReadableName val humanReadableName: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-on-analysis-progress-listener/-step/-c-o-m-p-u-t-i-n-g_-r-e-t-a-i-n-e-d_-s-i-z-e/","title":"Index","text":"<p>//leakcanary/shark/OnAnalysisProgressListener/Step/COMPUTING_RETAINED_SIZE</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-c-o-m-p-u-t-i-n-g_-r-e-t-a-i-n-e-d_-s-i-z-e/#computing_retained_size","title":"COMPUTING_RETAINED_SIZE","text":"<p>COMPUTING_RETAINED_SIZE()</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-c-o-m-p-u-t-i-n-g_-r-e-t-a-i-n-e-d_-s-i-z-e/#properties","title":"Properties","text":"Name Summary humanReadableName val humanReadableName: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-on-analysis-progress-listener/-step/-e-x-t-r-a-c-t-i-n-g_-m-e-t-a-d-a-t-a/","title":"Index","text":"<p>//leakcanary/shark/OnAnalysisProgressListener/Step/EXTRACTING_METADATA</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-e-x-t-r-a-c-t-i-n-g_-m-e-t-a-d-a-t-a/#extracting_metadata","title":"EXTRACTING_METADATA","text":"<p>EXTRACTING_METADATA()</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-e-x-t-r-a-c-t-i-n-g_-m-e-t-a-d-a-t-a/#properties","title":"Properties","text":"Name Summary humanReadableName val humanReadableName: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-on-analysis-progress-listener/-step/-f-i-n-d-i-n-g_-d-o-m-i-n-a-t-o-r-s/","title":"Index","text":"<p>//leakcanary/shark/OnAnalysisProgressListener/Step/FINDING_DOMINATORS</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-f-i-n-d-i-n-g_-d-o-m-i-n-a-t-o-r-s/#finding_dominators","title":"FINDING_DOMINATORS","text":"<p>FINDING_DOMINATORS()</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-f-i-n-d-i-n-g_-d-o-m-i-n-a-t-o-r-s/#properties","title":"Properties","text":"Name Summary humanReadableName val humanReadableName: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-on-analysis-progress-listener/-step/-f-i-n-d-i-n-g_-p-a-t-h-s_-t-o_-r-e-t-a-i-n-e-d_-o-b-j-e-c-t-s/","title":"Index","text":"<p>//leakcanary/shark/OnAnalysisProgressListener/Step/FINDING_PATHS_TO_RETAINED_OBJECTS</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-f-i-n-d-i-n-g_-p-a-t-h-s_-t-o_-r-e-t-a-i-n-e-d_-o-b-j-e-c-t-s/#finding_paths_to_retained_objects","title":"FINDING_PATHS_TO_RETAINED_OBJECTS","text":"<p>FINDING_PATHS_TO_RETAINED_OBJECTS()</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-f-i-n-d-i-n-g_-p-a-t-h-s_-t-o_-r-e-t-a-i-n-e-d_-o-b-j-e-c-t-s/#properties","title":"Properties","text":"Name Summary humanReadableName val humanReadableName: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-on-analysis-progress-listener/-step/-f-i-n-d-i-n-g_-r-e-t-a-i-n-e-d_-o-b-j-e-c-t-s/","title":"Index","text":"<p>//leakcanary/shark/OnAnalysisProgressListener/Step/FINDING_RETAINED_OBJECTS</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-f-i-n-d-i-n-g_-r-e-t-a-i-n-e-d_-o-b-j-e-c-t-s/#finding_retained_objects","title":"FINDING_RETAINED_OBJECTS","text":"<p>FINDING_RETAINED_OBJECTS()</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-f-i-n-d-i-n-g_-r-e-t-a-i-n-e-d_-o-b-j-e-c-t-s/#properties","title":"Properties","text":"Name Summary humanReadableName val humanReadableName: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-on-analysis-progress-listener/-step/-i-n-s-p-e-c-t-i-n-g_-o-b-j-e-c-t-s/","title":"Index","text":"<p>//leakcanary/shark/OnAnalysisProgressListener/Step/INSPECTING_OBJECTS</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-i-n-s-p-e-c-t-i-n-g_-o-b-j-e-c-t-s/#inspecting_objects","title":"INSPECTING_OBJECTS","text":"<p>INSPECTING_OBJECTS()</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-i-n-s-p-e-c-t-i-n-g_-o-b-j-e-c-t-s/#properties","title":"Properties","text":"Name Summary humanReadableName val humanReadableName: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-on-analysis-progress-listener/-step/-p-a-r-s-i-n-g_-h-e-a-p_-d-u-m-p/","title":"Index","text":"<p>//leakcanary/shark/OnAnalysisProgressListener/Step/PARSING_HEAP_DUMP</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-p-a-r-s-i-n-g_-h-e-a-p_-d-u-m-p/#parsing_heap_dump","title":"PARSING_HEAP_DUMP","text":"<p>PARSING_HEAP_DUMP()</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-p-a-r-s-i-n-g_-h-e-a-p_-d-u-m-p/#properties","title":"Properties","text":"Name Summary humanReadableName val humanReadableName: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-on-analysis-progress-listener/-step/-r-e-p-o-r-t-i-n-g_-h-e-a-p_-a-n-a-l-y-s-i-s/","title":"Index","text":"<p>//leakcanary/shark/OnAnalysisProgressListener/Step/REPORTING_HEAP_ANALYSIS</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-r-e-p-o-r-t-i-n-g_-h-e-a-p_-a-n-a-l-y-s-i-s/#reporting_heap_analysis","title":"REPORTING_HEAP_ANALYSIS","text":"<p>REPORTING_HEAP_ANALYSIS()</p>"},{"location":"api/shark/-on-analysis-progress-listener/-step/-r-e-p-o-r-t-i-n-g_-h-e-a-p_-a-n-a-l-y-s-i-s/#properties","title":"Properties","text":"Name Summary humanReadableName val humanReadableName: String name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-on-hprof-record-listener/","title":"Index","text":"<p>//leakcanary/shark/OnHprofRecordListener</p>"},{"location":"api/shark/-on-hprof-record-listener/#onhprofrecordlistener","title":"OnHprofRecordListener","text":"<p>fun interface OnHprofRecordListener</p> <p>Listener passed in to StreamingHprofReader.readRecords, gets notified for each HprofRecord found in the heap dump which types is in the set of the recordTypes parameter passed to StreamingHprofReader.readRecords.</p> <p>This is a functional interface with which you can create a OnHprofRecordListener from a lambda.</p>"},{"location":"api/shark/-on-hprof-record-listener/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-on-hprof-record-listener/#functions","title":"Functions","text":"Name Summary onHprofRecord abstract fun onHprofRecord(position: Long, record: HprofRecord)"},{"location":"api/shark/-on-hprof-record-listener/on-hprof-record/","title":"On hprof record","text":"<p>//leakcanary/shark/OnHprofRecordListener/onHprofRecord</p>"},{"location":"api/shark/-on-hprof-record-listener/on-hprof-record/#onhprofrecord","title":"onHprofRecord","text":"<p>abstract fun onHprofRecord(position: Long, record: HprofRecord)</p>"},{"location":"api/shark/-on-hprof-record-listener/-companion/","title":"Index","text":"<p>//leakcanary/shark/OnHprofRecordListener/Companion</p>"},{"location":"api/shark/-on-hprof-record-listener/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-on-hprof-record-listener/-companion/#functions","title":"Functions","text":"Name Summary invoke inline operator fun invoke(crossinline block: (Long, HprofRecord) -&gt; Unit): OnHprofRecordListenerUtility function to create a OnHprofRecordListener from the passed in block lambda instead of using the anonymous object : OnHprofRecordListener syntax."},{"location":"api/shark/-on-hprof-record-listener/-companion/invoke/","title":"Invoke","text":"<p>//leakcanary/shark/OnHprofRecordListener/Companion/invoke</p>"},{"location":"api/shark/-on-hprof-record-listener/-companion/invoke/#invoke","title":"invoke","text":"<p>inline operator fun invoke(crossinline block: (Long, HprofRecord) -&gt; Unit): OnHprofRecordListener</p> <p>Utility function to create a OnHprofRecordListener from the passed in block lambda instead of using the anonymous object : OnHprofRecordListener syntax.</p> <p>Usage:</p> <p>val listener = OnHprofRecordListener { position, record -&gt;\\ \\ }</p>"},{"location":"api/shark/-on-hprof-record-tag-listener/","title":"Index","text":"<p>//leakcanary/shark/OnHprofRecordTagListener</p>"},{"location":"api/shark/-on-hprof-record-tag-listener/#onhprofrecordtaglistener","title":"OnHprofRecordTagListener","text":"<p>fun interface OnHprofRecordTagListener</p> <p>Listener passed in to StreamingHprofReader.readRecords, gets notified for each HprofRecordTag found in the heap dump.</p> <p>Listener implementations are expected to read all bytes corresponding to a given tag from the provided reader before returning.</p>"},{"location":"api/shark/-on-hprof-record-tag-listener/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-on-hprof-record-tag-listener/#functions","title":"Functions","text":"Name Summary onHprofRecord abstract fun onHprofRecord(tag: HprofRecordTag, length: Long, reader: HprofRecordReader)"},{"location":"api/shark/-on-hprof-record-tag-listener/on-hprof-record/","title":"On hprof record","text":"<p>//leakcanary/shark/OnHprofRecordTagListener/onHprofRecord</p>"},{"location":"api/shark/-on-hprof-record-tag-listener/on-hprof-record/#onhprofrecord","title":"onHprofRecord","text":"<p>abstract fun onHprofRecord(tag: HprofRecordTag, length: Long, reader: HprofRecordReader)</p>"},{"location":"api/shark/-on-hprof-record-tag-listener/-companion/","title":"Index","text":"<p>//leakcanary/shark/OnHprofRecordTagListener/Companion</p>"},{"location":"api/shark/-on-hprof-record-tag-listener/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-on-hprof-record-tag-listener/-companion/#functions","title":"Functions","text":"Name Summary invoke inline operator fun invoke(crossinline block: (HprofRecordTag, Long, HprofRecordReader) -&gt; Unit): OnHprofRecordTagListenerUtility function to create a OnHprofRecordTagListener from the passed in block lambda instead of using the anonymous object : OnHprofRecordTagListener syntax."},{"location":"api/shark/-on-hprof-record-tag-listener/-companion/invoke/","title":"Invoke","text":"<p>//leakcanary/shark/OnHprofRecordTagListener/Companion/invoke</p>"},{"location":"api/shark/-on-hprof-record-tag-listener/-companion/invoke/#invoke","title":"invoke","text":"<p>inline operator fun invoke(crossinline block: (HprofRecordTag, Long, HprofRecordReader) -&gt; Unit): OnHprofRecordTagListener</p> <p>Utility function to create a OnHprofRecordTagListener from the passed in block lambda instead of using the anonymous object : OnHprofRecordTagListener syntax.</p> <p>Usage:</p> <p>val listener = OnHprofRecordTagListener { tag, length, reader -&gt;\\ \\ }</p>"},{"location":"api/shark/-primitive-type/","title":"Index","text":"<p>//leakcanary/shark/PrimitiveType</p>"},{"location":"api/shark/-primitive-type/#primitivetype","title":"PrimitiveType","text":"<p>enum PrimitiveType : Enum&lt;PrimitiveType&gt; </p> <p>A primitive type in the prof.</p>"},{"location":"api/shark/-primitive-type/#entries","title":"Entries","text":"LONG LONG(11, 8) INT INT(10, 4) SHORT SHORT(9, 2) BYTE BYTE(8, 1) DOUBLE DOUBLE(7, 8) FLOAT FLOAT(6, 4) CHAR CHAR(5, 2) BOOLEAN BOOLEAN(4, 1)"},{"location":"api/shark/-primitive-type/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-primitive-type/#properties","title":"Properties","text":"Name Summary byteSize val byteSize: IntThe size in bytes for each value of that type. hprofType val hprofType: IntThe hprof defined \"basic type\". name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-primitive-type/byte-size/","title":"Byte size","text":"<p>//leakcanary/shark/PrimitiveType/byteSize</p>"},{"location":"api/shark/-primitive-type/byte-size/#bytesize","title":"byteSize","text":"<p>val byteSize: Int</p> <p>The size in bytes for each value of that type.</p>"},{"location":"api/shark/-primitive-type/hprof-type/","title":"Hprof type","text":"<p>//leakcanary/shark/PrimitiveType/hprofType</p>"},{"location":"api/shark/-primitive-type/hprof-type/#hproftype","title":"hprofType","text":"<p>val hprofType: Int</p> <p>The hprof defined \"basic type\".</p>"},{"location":"api/shark/-primitive-type/-b-o-o-l-e-a-n/","title":"Index","text":"<p>//leakcanary/shark/PrimitiveType/BOOLEAN</p>"},{"location":"api/shark/-primitive-type/-b-o-o-l-e-a-n/#boolean","title":"BOOLEAN","text":"<p>BOOLEAN(4, 1)</p>"},{"location":"api/shark/-primitive-type/-b-o-o-l-e-a-n/#properties","title":"Properties","text":"Name Summary byteSize val byteSize: IntThe size in bytes for each value of that type. hprofType val hprofType: IntThe hprof defined \"basic type\". name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-primitive-type/-b-y-t-e/","title":"Index","text":"<p>//leakcanary/shark/PrimitiveType/BYTE</p>"},{"location":"api/shark/-primitive-type/-b-y-t-e/#byte","title":"BYTE","text":"<p>BYTE(8, 1)</p>"},{"location":"api/shark/-primitive-type/-b-y-t-e/#properties","title":"Properties","text":"Name Summary byteSize val byteSize: IntThe size in bytes for each value of that type. hprofType val hprofType: IntThe hprof defined \"basic type\". name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-primitive-type/-c-h-a-r/","title":"Index","text":"<p>//leakcanary/shark/PrimitiveType/CHAR</p>"},{"location":"api/shark/-primitive-type/-c-h-a-r/#char","title":"CHAR","text":"<p>CHAR(5, 2)</p>"},{"location":"api/shark/-primitive-type/-c-h-a-r/#properties","title":"Properties","text":"Name Summary byteSize val byteSize: IntThe size in bytes for each value of that type. hprofType val hprofType: IntThe hprof defined \"basic type\". name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-primitive-type/-companion/","title":"Index","text":"<p>//leakcanary/shark/PrimitiveType/Companion</p>"},{"location":"api/shark/-primitive-type/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-primitive-type/-companion/#properties","title":"Properties","text":"Name Summary byteSizeByHprofType val byteSizeByHprofType: Map&lt;Int, Int&gt; primitiveTypeByHprofType val primitiveTypeByHprofType: Map&lt;Int, PrimitiveType&gt; REFERENCE_HPROF_TYPE const val REFERENCE_HPROF_TYPE: Int = 2The hprof defined \"basic type\" for references."},{"location":"api/shark/-primitive-type/-companion/-r-e-f-e-r-e-n-c-e_-h-p-r-o-f_-t-y-p-e/","title":"r e f e r e n c e  h p r o f  t y p e","text":"<p>//leakcanary/shark/PrimitiveType/Companion/REFERENCE_HPROF_TYPE</p>"},{"location":"api/shark/-primitive-type/-companion/-r-e-f-e-r-e-n-c-e_-h-p-r-o-f_-t-y-p-e/#reference_hprof_type","title":"REFERENCE_HPROF_TYPE","text":"<p>const val REFERENCE_HPROF_TYPE: Int = 2</p> <p>The hprof defined \"basic type\" for references.</p>"},{"location":"api/shark/-primitive-type/-companion/byte-size-by-hprof-type/","title":"Byte size by hprof type","text":"<p>//leakcanary/shark/PrimitiveType/Companion/byteSizeByHprofType</p>"},{"location":"api/shark/-primitive-type/-companion/byte-size-by-hprof-type/#bytesizebyhproftype","title":"byteSizeByHprofType","text":"<p>val byteSizeByHprofType: Map&lt;Int, Int&gt;</p>"},{"location":"api/shark/-primitive-type/-companion/primitive-type-by-hprof-type/","title":"Primitive type by hprof type","text":"<p>//leakcanary/shark/PrimitiveType/Companion/primitiveTypeByHprofType</p>"},{"location":"api/shark/-primitive-type/-companion/primitive-type-by-hprof-type/#primitivetypebyhproftype","title":"primitiveTypeByHprofType","text":"<p>val primitiveTypeByHprofType: Map&lt;Int, PrimitiveType&gt;</p>"},{"location":"api/shark/-primitive-type/-d-o-u-b-l-e/","title":"Index","text":"<p>//leakcanary/shark/PrimitiveType/DOUBLE</p>"},{"location":"api/shark/-primitive-type/-d-o-u-b-l-e/#double","title":"DOUBLE","text":"<p>DOUBLE(7, 8)</p>"},{"location":"api/shark/-primitive-type/-d-o-u-b-l-e/#properties","title":"Properties","text":"Name Summary byteSize val byteSize: IntThe size in bytes for each value of that type. hprofType val hprofType: IntThe hprof defined \"basic type\". name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-primitive-type/-f-l-o-a-t/","title":"Index","text":"<p>//leakcanary/shark/PrimitiveType/FLOAT</p>"},{"location":"api/shark/-primitive-type/-f-l-o-a-t/#float","title":"FLOAT","text":"<p>FLOAT(6, 4)</p>"},{"location":"api/shark/-primitive-type/-f-l-o-a-t/#properties","title":"Properties","text":"Name Summary byteSize val byteSize: IntThe size in bytes for each value of that type. hprofType val hprofType: IntThe hprof defined \"basic type\". name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-primitive-type/-i-n-t/","title":"Index","text":"<p>//leakcanary/shark/PrimitiveType/INT</p>"},{"location":"api/shark/-primitive-type/-i-n-t/#int","title":"INT","text":"<p>INT(10, 4)</p>"},{"location":"api/shark/-primitive-type/-i-n-t/#properties","title":"Properties","text":"Name Summary byteSize val byteSize: IntThe size in bytes for each value of that type. hprofType val hprofType: IntThe hprof defined \"basic type\". name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-primitive-type/-l-o-n-g/","title":"Index","text":"<p>//leakcanary/shark/PrimitiveType/LONG</p>"},{"location":"api/shark/-primitive-type/-l-o-n-g/#long","title":"LONG","text":"<p>LONG(11, 8)</p>"},{"location":"api/shark/-primitive-type/-l-o-n-g/#properties","title":"Properties","text":"Name Summary byteSize val byteSize: IntThe size in bytes for each value of that type. hprofType val hprofType: IntThe hprof defined \"basic type\". name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-primitive-type/-s-h-o-r-t/","title":"Index","text":"<p>//leakcanary/shark/PrimitiveType/SHORT</p>"},{"location":"api/shark/-primitive-type/-s-h-o-r-t/#short","title":"SHORT","text":"<p>SHORT(9, 2)</p>"},{"location":"api/shark/-primitive-type/-s-h-o-r-t/#properties","title":"Properties","text":"Name Summary byteSize val byteSize: IntThe size in bytes for each value of that type. hprofType val hprofType: IntThe hprof defined \"basic type\". name val name: String ordinal val ordinal: Int"},{"location":"api/shark/-proguard-mapping/","title":"Index","text":"<p>//leakcanary/shark/ProguardMapping</p>"},{"location":"api/shark/-proguard-mapping/#proguardmapping","title":"ProguardMapping","text":"<p>class ProguardMapping</p>"},{"location":"api/shark/-proguard-mapping/#constructors","title":"Constructors","text":"ProguardMapping fun ProguardMapping()"},{"location":"api/shark/-proguard-mapping/#functions","title":"Functions","text":"Name Summary addMapping fun addMapping(obfuscatedName: String, clearName: String)Adds entry to the obfuscatedToClearNamesMap map. deobfuscateClassName fun deobfuscateClassName(obfuscatedClassName: String): StringReturns deobfuscated class name or original string if there is no mapping for given obfuscated name. deobfuscateFieldName fun deobfuscateFieldName(obfuscatedClass: String, obfuscatedField: String): StringReturns deobfuscated field name or original string if there is no mapping for given obfuscated name."},{"location":"api/shark/-proguard-mapping/#extensions","title":"Extensions","text":"Name Summary create fun ProguardMapping.create(block: ProguardMappingHelper.() -&gt; Unit): ProguardMapping"},{"location":"api/shark/-proguard-mapping/-proguard-mapping/","title":"proguard mapping","text":"<p>//leakcanary/shark/ProguardMapping/ProguardMapping</p>"},{"location":"api/shark/-proguard-mapping/-proguard-mapping/#proguardmapping","title":"ProguardMapping","text":"<p>fun ProguardMapping()</p>"},{"location":"api/shark/-proguard-mapping/add-mapping/","title":"Add mapping","text":"<p>//leakcanary/shark/ProguardMapping/addMapping</p>"},{"location":"api/shark/-proguard-mapping/add-mapping/#addmapping","title":"addMapping","text":"<p>fun addMapping(obfuscatedName: String, clearName: String)</p> <p>Adds entry to the obfuscatedToClearNamesMap map.</p>"},{"location":"api/shark/-proguard-mapping/deobfuscate-class-name/","title":"Deobfuscate class name","text":"<p>//leakcanary/shark/ProguardMapping/deobfuscateClassName</p>"},{"location":"api/shark/-proguard-mapping/deobfuscate-class-name/#deobfuscateclassname","title":"deobfuscateClassName","text":"<p>fun deobfuscateClassName(obfuscatedClassName: String): String</p> <p>Returns deobfuscated class name or original string if there is no mapping for given obfuscated name.</p>"},{"location":"api/shark/-proguard-mapping/deobfuscate-field-name/","title":"Deobfuscate field name","text":"<p>//leakcanary/shark/ProguardMapping/deobfuscateFieldName</p>"},{"location":"api/shark/-proguard-mapping/deobfuscate-field-name/#deobfuscatefieldname","title":"deobfuscateFieldName","text":"<p>fun deobfuscateFieldName(obfuscatedClass: String, obfuscatedField: String): String</p> <p>Returns deobfuscated field name or original string if there is no mapping for given obfuscated name.</p>"},{"location":"api/shark/-proguard-mapping-helper/","title":"Index","text":"<p>//leakcanary/shark/ProguardMappingHelper</p>"},{"location":"api/shark/-proguard-mapping-helper/#proguardmappinghelper","title":"ProguardMappingHelper","text":"<p>class ProguardMappingHelper(proguardMapping: ProguardMapping)</p>"},{"location":"api/shark/-proguard-mapping-helper/#constructors","title":"Constructors","text":"ProguardMappingHelper fun ProguardMappingHelper(proguardMapping: ProguardMapping)"},{"location":"api/shark/-proguard-mapping-helper/#types","title":"Types","text":"Name Summary Class inner class Class(val nameMapping: Pair&lt;String, String&gt;)"},{"location":"api/shark/-proguard-mapping-helper/#functions","title":"Functions","text":"Name Summary clazz fun clazz(className: Pair&lt;String, String&gt;, fieldsBlock: ProguardMappingHelper.Class.() -&gt; Unit = {}) field fun ProguardMappingHelper.Class.field(block: () -&gt; Pair&lt;String, String&gt;)"},{"location":"api/shark/-proguard-mapping-helper/-proguard-mapping-helper/","title":"proguard mapping helper","text":"<p>//leakcanary/shark/ProguardMappingHelper/ProguardMappingHelper</p>"},{"location":"api/shark/-proguard-mapping-helper/-proguard-mapping-helper/#proguardmappinghelper","title":"ProguardMappingHelper","text":"<p>fun ProguardMappingHelper(proguardMapping: ProguardMapping)</p>"},{"location":"api/shark/-proguard-mapping-helper/clazz/","title":"Clazz","text":"<p>//leakcanary/shark/ProguardMappingHelper/clazz</p>"},{"location":"api/shark/-proguard-mapping-helper/clazz/#clazz","title":"clazz","text":"<p>fun clazz(className: Pair&lt;String, String&gt;, fieldsBlock: ProguardMappingHelper.Class.() -&gt; Unit = {})</p>"},{"location":"api/shark/-proguard-mapping-helper/field/","title":"Field","text":"<p>//leakcanary/shark/ProguardMappingHelper/field</p>"},{"location":"api/shark/-proguard-mapping-helper/field/#field","title":"field","text":"<p>fun ProguardMappingHelper.Class.field(block: () -&gt; Pair&lt;String, String&gt;)</p>"},{"location":"api/shark/-proguard-mapping-helper/-class/","title":"Index","text":"<p>//leakcanary/shark/ProguardMappingHelper/Class</p>"},{"location":"api/shark/-proguard-mapping-helper/-class/#class","title":"Class","text":"<p>inner class Class(val nameMapping: Pair&lt;String, String&gt;)</p>"},{"location":"api/shark/-proguard-mapping-helper/-class/#constructors","title":"Constructors","text":"Class fun Class(nameMapping: Pair&lt;String, String&gt;)"},{"location":"api/shark/-proguard-mapping-helper/-class/#properties","title":"Properties","text":"Name Summary fieldMappings val fieldMappings: MutableSet&lt;Pair&lt;String, String&gt;&gt; nameMapping val nameMapping: Pair&lt;String, String&gt;"},{"location":"api/shark/-proguard-mapping-helper/-class/-class/","title":"class","text":"<p>//leakcanary/shark/ProguardMappingHelper/Class/Class</p>"},{"location":"api/shark/-proguard-mapping-helper/-class/-class/#class","title":"Class","text":"<p>fun Class(nameMapping: Pair&lt;String, String&gt;)</p>"},{"location":"api/shark/-proguard-mapping-helper/-class/field-mappings/","title":"Field mappings","text":"<p>//leakcanary/shark/ProguardMappingHelper/Class/fieldMappings</p>"},{"location":"api/shark/-proguard-mapping-helper/-class/field-mappings/#fieldmappings","title":"fieldMappings","text":"<p>val fieldMappings: MutableSet&lt;Pair&lt;String, String&gt;&gt;</p>"},{"location":"api/shark/-proguard-mapping-helper/-class/name-mapping/","title":"Name mapping","text":"<p>//leakcanary/shark/ProguardMappingHelper/Class/nameMapping</p>"},{"location":"api/shark/-proguard-mapping-helper/-class/name-mapping/#namemapping","title":"nameMapping","text":"<p>val nameMapping: Pair&lt;String, String&gt;</p>"},{"location":"api/shark/-proguard-mapping-reader/","title":"Index","text":"<p>//leakcanary/shark/ProguardMappingReader</p>"},{"location":"api/shark/-proguard-mapping-reader/#proguardmappingreader","title":"ProguardMappingReader","text":"<p>class ProguardMappingReader(proguardMappingInputStream: InputStream)</p>"},{"location":"api/shark/-proguard-mapping-reader/#constructors","title":"Constructors","text":"ProguardMappingReader fun ProguardMappingReader(proguardMappingInputStream: InputStream)"},{"location":"api/shark/-proguard-mapping-reader/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-proguard-mapping-reader/#functions","title":"Functions","text":"Name Summary readProguardMapping fun readProguardMapping(): ProguardMapping"},{"location":"api/shark/-proguard-mapping-reader/-proguard-mapping-reader/","title":"proguard mapping reader","text":"<p>//leakcanary/shark/ProguardMappingReader/ProguardMappingReader</p>"},{"location":"api/shark/-proguard-mapping-reader/-proguard-mapping-reader/#proguardmappingreader","title":"ProguardMappingReader","text":"<p>fun ProguardMappingReader(proguardMappingInputStream: InputStream)</p>"},{"location":"api/shark/-proguard-mapping-reader/read-proguard-mapping/","title":"Read proguard mapping","text":"<p>//leakcanary/shark/ProguardMappingReader/readProguardMapping</p>"},{"location":"api/shark/-proguard-mapping-reader/read-proguard-mapping/#readproguardmapping","title":"readProguardMapping","text":"<p>fun readProguardMapping(): ProguardMapping</p>"},{"location":"api/shark/-proguard-mapping-reader/-companion/","title":"Index","text":"<p>//leakcanary/shark/ProguardMappingReader/Companion</p>"},{"location":"api/shark/-proguard-mapping-reader/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-random-access-hprof-reader/","title":"Index","text":"<p>//leakcanary/shark/RandomAccessHprofReader</p>"},{"location":"api/shark/-random-access-hprof-reader/#randomaccesshprofreader","title":"RandomAccessHprofReader","text":"<p>class RandomAccessHprofReader : Closeable</p> <p>Reads records in a Hprof source, one at a time with a specific position and size. Call openReaderFor to obtain a new instance.</p>"},{"location":"api/shark/-random-access-hprof-reader/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-random-access-hprof-reader/#functions","title":"Functions","text":"Name Summary close open override fun close() readRecord fun &lt;T&gt; readRecord(recordPosition: Long, recordSize: Long, withRecordReader: HprofRecordReader.() -&gt; T): TLoads recordSize bytes at recordPosition into the buffer that backs HprofRecordReader then calls withRecordReader with that reader as a receiver. withRecordReader is expected to use the receiver reader to read one record of exactly recordSize bytes."},{"location":"api/shark/-random-access-hprof-reader/close/","title":"Close","text":"<p>//leakcanary/shark/RandomAccessHprofReader/close</p>"},{"location":"api/shark/-random-access-hprof-reader/close/#close","title":"close","text":"<p>open override fun close()</p>"},{"location":"api/shark/-random-access-hprof-reader/read-record/","title":"Read record","text":"<p>//leakcanary/shark/RandomAccessHprofReader/readRecord</p>"},{"location":"api/shark/-random-access-hprof-reader/read-record/#readrecord","title":"readRecord","text":"<p>fun &lt;T&gt; readRecord(recordPosition: Long, recordSize: Long, withRecordReader: HprofRecordReader.() -&gt; T): T</p> <p>Loads recordSize bytes at recordPosition into the buffer that backs HprofRecordReader then calls withRecordReader with that reader as a receiver. withRecordReader is expected to use the receiver reader to read one record of exactly recordSize bytes.</p>"},{"location":"api/shark/-random-access-hprof-reader/read-record/#return","title":"Return","text":"<p>the results from withRecordReader</p>"},{"location":"api/shark/-random-access-hprof-reader/-companion/","title":"Index","text":"<p>//leakcanary/shark/RandomAccessHprofReader/Companion</p>"},{"location":"api/shark/-random-access-hprof-reader/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-random-access-hprof-reader/-companion/#functions","title":"Functions","text":"Name Summary openReaderFor fun openReaderFor(hprofFile: File, hprofHeader: HprofHeader = HprofHeader.parseHeaderOf(hprofFile)): RandomAccessHprofReaderfun openReaderFor(hprofSourceProvider: RandomAccessSourceProvider, hprofHeader: HprofHeader = hprofSourceProvider.openRandomAccessSource()         .use { HprofHeader.parseHeaderOf(it.asStreamingSource()) }): RandomAccessHprofReader"},{"location":"api/shark/-random-access-hprof-reader/-companion/open-reader-for/","title":"Open reader for","text":"<p>//leakcanary/shark/RandomAccessHprofReader/Companion/openReaderFor</p>"},{"location":"api/shark/-random-access-hprof-reader/-companion/open-reader-for/#openreaderfor","title":"openReaderFor","text":"<p>fun openReaderFor(hprofFile: File, hprofHeader: HprofHeader = HprofHeader.parseHeaderOf(hprofFile)): RandomAccessHprofReader</p> <p>fun openReaderFor(hprofSourceProvider: RandomAccessSourceProvider, hprofHeader: HprofHeader = hprofSourceProvider.openRandomAccessSource()         .use { HprofHeader.parseHeaderOf(it.asStreamingSource()) }): RandomAccessHprofReader</p>"},{"location":"api/shark/-random-access-source/","title":"Index","text":"<p>//leakcanary/shark/RandomAccessSource</p>"},{"location":"api/shark/-random-access-source/#randomaccesssource","title":"RandomAccessSource","text":"<p>interface RandomAccessSource : Closeable</p>"},{"location":"api/shark/-random-access-source/#functions","title":"Functions","text":"Name Summary asStreamingSource open fun asStreamingSource(): BufferedSource close abstract override fun close() read abstract fun read(sink: Buffer, position: Long, byteCount: Long): Long"},{"location":"api/shark/-random-access-source/as-streaming-source/","title":"As streaming source","text":"<p>//leakcanary/shark/RandomAccessSource/asStreamingSource</p>"},{"location":"api/shark/-random-access-source/as-streaming-source/#asstreamingsource","title":"asStreamingSource","text":"<p>open fun asStreamingSource(): BufferedSource</p>"},{"location":"api/shark/-random-access-source/read/","title":"Read","text":"<p>//leakcanary/shark/RandomAccessSource/read</p>"},{"location":"api/shark/-random-access-source/read/#read","title":"read","text":"<p>abstract fun read(sink: Buffer, position: Long, byteCount: Long): Long</p>"},{"location":"api/shark/-random-access-source-provider/","title":"Index","text":"<p>//leakcanary/shark/RandomAccessSourceProvider</p>"},{"location":"api/shark/-random-access-source-provider/#randomaccesssourceprovider","title":"RandomAccessSourceProvider","text":"<p>fun interface RandomAccessSourceProvider</p> <p>Can open RandomAccessSource instances.</p>"},{"location":"api/shark/-random-access-source-provider/#functions","title":"Functions","text":"Name Summary openRandomAccessSource abstract fun openRandomAccessSource(): RandomAccessSource"},{"location":"api/shark/-random-access-source-provider/#inheritors","title":"Inheritors","text":"Name DualSourceProvider"},{"location":"api/shark/-random-access-source-provider/open-random-access-source/","title":"Open random access source","text":"<p>//leakcanary/shark/RandomAccessSourceProvider/openRandomAccessSource</p>"},{"location":"api/shark/-random-access-source-provider/open-random-access-source/#openrandomaccesssource","title":"openRandomAccessSource","text":"<p>abstract fun openRandomAccessSource(): RandomAccessSource</p>"},{"location":"api/shark/-reference-matcher/","title":"Index","text":"<p>//leakcanary/shark/ReferenceMatcher</p>"},{"location":"api/shark/-reference-matcher/#referencematcher","title":"ReferenceMatcher","text":"<p>sealed class ReferenceMatcher</p> <p>Used to pattern match known patterns of references in the heap, either to ignore them (IgnoredReferenceMatcher) or to mark them as library leaks (LibraryLeakReferenceMatcher).</p>"},{"location":"api/shark/-reference-matcher/#properties","title":"Properties","text":"Name Summary pattern abstract val pattern: ReferencePatternThe pattern that references will be matched against."},{"location":"api/shark/-reference-matcher/#inheritors","title":"Inheritors","text":"Name LibraryLeakReferenceMatcher IgnoredReferenceMatcher"},{"location":"api/shark/-reference-matcher/pattern/","title":"Pattern","text":"<p>//leakcanary/shark/ReferenceMatcher/pattern</p>"},{"location":"api/shark/-reference-matcher/pattern/#pattern","title":"pattern","text":"<p>abstract val pattern: ReferencePattern</p> <p>The pattern that references will be matched against.</p>"},{"location":"api/shark/-reference-pattern/","title":"Index","text":"<p>//leakcanary/shark/ReferencePattern</p>"},{"location":"api/shark/-reference-pattern/#referencepattern","title":"ReferencePattern","text":"<p>sealed class ReferencePattern : Serializable</p> <p>A pattern that will match references for a given ReferenceMatcher.</p>"},{"location":"api/shark/-reference-pattern/#types","title":"Types","text":"Name Summary Companion object Companion InstanceFieldPattern data class InstanceFieldPattern(val className: String, val fieldName: String) : ReferencePatternMatches instances field references, identified by className and fieldName. JavaLocalPattern data class JavaLocalPattern(val threadName: String) : ReferencePatternMatches local references held in the stack of frames of a given thread, identified by its name. NativeGlobalVariablePattern data class NativeGlobalVariablePattern(val className: String) : ReferencePatternMatches native global variables (also known as jni global gc roots) that reference Java objects. The class name will match against classes, instances and object arrays with a matching class name. StaticFieldPattern data class StaticFieldPattern(val className: String, val fieldName: String) : ReferencePatternMatches static field references, identified by className and fieldName."},{"location":"api/shark/-reference-pattern/#inheritors","title":"Inheritors","text":"Name JavaLocalPattern StaticFieldPattern InstanceFieldPattern NativeGlobalVariablePattern"},{"location":"api/shark/-reference-pattern/-companion/","title":"Index","text":"<p>//leakcanary/shark/ReferencePattern/Companion</p>"},{"location":"api/shark/-reference-pattern/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-reference-pattern/-instance-field-pattern/","title":"Index","text":"<p>//leakcanary/shark/ReferencePattern/InstanceFieldPattern</p>"},{"location":"api/shark/-reference-pattern/-instance-field-pattern/#instancefieldpattern","title":"InstanceFieldPattern","text":"<p>data class InstanceFieldPattern(val className: String, val fieldName: String) : ReferencePattern</p> <p>Matches instances field references, identified by className and fieldName.</p> <p>Note: If fieldName is declared in a superclass it will still match for subclasses. This is to support overriding of rules for specific cases. If two ReferenceMatcher match for the same fieldName but for different className in a class hierarchy, then the closest class in the hierarchy wins.</p>"},{"location":"api/shark/-reference-pattern/-instance-field-pattern/#constructors","title":"Constructors","text":"InstanceFieldPattern fun InstanceFieldPattern(className: String, fieldName: String)"},{"location":"api/shark/-reference-pattern/-instance-field-pattern/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-reference-pattern/-instance-field-pattern/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-reference-pattern/-instance-field-pattern/#properties","title":"Properties","text":"Name Summary className val className: String fieldName val fieldName: String"},{"location":"api/shark/-reference-pattern/-instance-field-pattern/-instance-field-pattern/","title":"instance field pattern","text":"<p>//leakcanary/shark/ReferencePattern/InstanceFieldPattern/InstanceFieldPattern</p>"},{"location":"api/shark/-reference-pattern/-instance-field-pattern/-instance-field-pattern/#instancefieldpattern","title":"InstanceFieldPattern","text":"<p>fun InstanceFieldPattern(className: String, fieldName: String)</p>"},{"location":"api/shark/-reference-pattern/-instance-field-pattern/class-name/","title":"Class name","text":"<p>//leakcanary/shark/ReferencePattern/InstanceFieldPattern/className</p>"},{"location":"api/shark/-reference-pattern/-instance-field-pattern/class-name/#classname","title":"className","text":"<p>val className: String</p>"},{"location":"api/shark/-reference-pattern/-instance-field-pattern/field-name/","title":"Field name","text":"<p>//leakcanary/shark/ReferencePattern/InstanceFieldPattern/fieldName</p>"},{"location":"api/shark/-reference-pattern/-instance-field-pattern/field-name/#fieldname","title":"fieldName","text":"<p>val fieldName: String</p>"},{"location":"api/shark/-reference-pattern/-instance-field-pattern/to-string/","title":"To string","text":"<p>//leakcanary/shark/ReferencePattern/InstanceFieldPattern/toString</p>"},{"location":"api/shark/-reference-pattern/-instance-field-pattern/to-string/#tostring","title":"toString","text":"<p>open override fun toString(): String</p>"},{"location":"api/shark/-reference-pattern/-instance-field-pattern/-companion/","title":"Index","text":"<p>//leakcanary/shark/ReferencePattern/InstanceFieldPattern/Companion</p>"},{"location":"api/shark/-reference-pattern/-instance-field-pattern/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-reference-pattern/-java-local-pattern/","title":"Index","text":"<p>//leakcanary/shark/ReferencePattern/JavaLocalPattern</p>"},{"location":"api/shark/-reference-pattern/-java-local-pattern/#javalocalpattern","title":"JavaLocalPattern","text":"<p>data class JavaLocalPattern(val threadName: String) : ReferencePattern</p> <p>Matches local references held in the stack of frames of a given thread, identified by its name.</p>"},{"location":"api/shark/-reference-pattern/-java-local-pattern/#constructors","title":"Constructors","text":"JavaLocalPattern fun JavaLocalPattern(threadName: String)"},{"location":"api/shark/-reference-pattern/-java-local-pattern/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-reference-pattern/-java-local-pattern/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-reference-pattern/-java-local-pattern/#properties","title":"Properties","text":"Name Summary threadName val threadName: String"},{"location":"api/shark/-reference-pattern/-java-local-pattern/-java-local-pattern/","title":"java local pattern","text":"<p>//leakcanary/shark/ReferencePattern/JavaLocalPattern/JavaLocalPattern</p>"},{"location":"api/shark/-reference-pattern/-java-local-pattern/-java-local-pattern/#javalocalpattern","title":"JavaLocalPattern","text":"<p>fun JavaLocalPattern(threadName: String)</p>"},{"location":"api/shark/-reference-pattern/-java-local-pattern/thread-name/","title":"Thread name","text":"<p>//leakcanary/shark/ReferencePattern/JavaLocalPattern/threadName</p>"},{"location":"api/shark/-reference-pattern/-java-local-pattern/thread-name/#threadname","title":"threadName","text":"<p>val threadName: String</p>"},{"location":"api/shark/-reference-pattern/-java-local-pattern/to-string/","title":"To string","text":"<p>//leakcanary/shark/ReferencePattern/JavaLocalPattern/toString</p>"},{"location":"api/shark/-reference-pattern/-java-local-pattern/to-string/#tostring","title":"toString","text":"<p>open override fun toString(): String</p>"},{"location":"api/shark/-reference-pattern/-java-local-pattern/-companion/","title":"Index","text":"<p>//leakcanary/shark/ReferencePattern/JavaLocalPattern/Companion</p>"},{"location":"api/shark/-reference-pattern/-java-local-pattern/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-reference-pattern/-native-global-variable-pattern/","title":"Index","text":"<p>//leakcanary/shark/ReferencePattern/NativeGlobalVariablePattern</p>"},{"location":"api/shark/-reference-pattern/-native-global-variable-pattern/#nativeglobalvariablepattern","title":"NativeGlobalVariablePattern","text":"<p>data class NativeGlobalVariablePattern(val className: String) : ReferencePattern</p> <p>Matches native global variables (also known as jni global gc roots) that reference Java objects. The class name will match against classes, instances and object arrays with a matching class name.</p>"},{"location":"api/shark/-reference-pattern/-native-global-variable-pattern/#constructors","title":"Constructors","text":"NativeGlobalVariablePattern fun NativeGlobalVariablePattern(className: String)"},{"location":"api/shark/-reference-pattern/-native-global-variable-pattern/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-reference-pattern/-native-global-variable-pattern/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-reference-pattern/-native-global-variable-pattern/#properties","title":"Properties","text":"Name Summary className val className: String"},{"location":"api/shark/-reference-pattern/-native-global-variable-pattern/-native-global-variable-pattern/","title":"native global variable pattern","text":"<p>//leakcanary/shark/ReferencePattern/NativeGlobalVariablePattern/NativeGlobalVariablePattern</p>"},{"location":"api/shark/-reference-pattern/-native-global-variable-pattern/-native-global-variable-pattern/#nativeglobalvariablepattern","title":"NativeGlobalVariablePattern","text":"<p>fun NativeGlobalVariablePattern(className: String)</p>"},{"location":"api/shark/-reference-pattern/-native-global-variable-pattern/class-name/","title":"Class name","text":"<p>//leakcanary/shark/ReferencePattern/NativeGlobalVariablePattern/className</p>"},{"location":"api/shark/-reference-pattern/-native-global-variable-pattern/class-name/#classname","title":"className","text":"<p>val className: String</p>"},{"location":"api/shark/-reference-pattern/-native-global-variable-pattern/to-string/","title":"To string","text":"<p>//leakcanary/shark/ReferencePattern/NativeGlobalVariablePattern/toString</p>"},{"location":"api/shark/-reference-pattern/-native-global-variable-pattern/to-string/#tostring","title":"toString","text":"<p>open override fun toString(): String</p>"},{"location":"api/shark/-reference-pattern/-native-global-variable-pattern/-companion/","title":"Index","text":"<p>//leakcanary/shark/ReferencePattern/NativeGlobalVariablePattern/Companion</p>"},{"location":"api/shark/-reference-pattern/-native-global-variable-pattern/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-reference-pattern/-static-field-pattern/","title":"Index","text":"<p>//leakcanary/shark/ReferencePattern/StaticFieldPattern</p>"},{"location":"api/shark/-reference-pattern/-static-field-pattern/#staticfieldpattern","title":"StaticFieldPattern","text":"<p>data class StaticFieldPattern(val className: String, val fieldName: String) : ReferencePattern</p> <p>Matches static field references, identified by className and fieldName.</p>"},{"location":"api/shark/-reference-pattern/-static-field-pattern/#constructors","title":"Constructors","text":"StaticFieldPattern fun StaticFieldPattern(className: String, fieldName: String)"},{"location":"api/shark/-reference-pattern/-static-field-pattern/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-reference-pattern/-static-field-pattern/#functions","title":"Functions","text":"Name Summary toString open override fun toString(): String"},{"location":"api/shark/-reference-pattern/-static-field-pattern/#properties","title":"Properties","text":"Name Summary className val className: String fieldName val fieldName: String"},{"location":"api/shark/-reference-pattern/-static-field-pattern/-static-field-pattern/","title":"static field pattern","text":"<p>//leakcanary/shark/ReferencePattern/StaticFieldPattern/StaticFieldPattern</p>"},{"location":"api/shark/-reference-pattern/-static-field-pattern/-static-field-pattern/#staticfieldpattern","title":"StaticFieldPattern","text":"<p>fun StaticFieldPattern(className: String, fieldName: String)</p>"},{"location":"api/shark/-reference-pattern/-static-field-pattern/class-name/","title":"Class name","text":"<p>//leakcanary/shark/ReferencePattern/StaticFieldPattern/className</p>"},{"location":"api/shark/-reference-pattern/-static-field-pattern/class-name/#classname","title":"className","text":"<p>val className: String</p>"},{"location":"api/shark/-reference-pattern/-static-field-pattern/field-name/","title":"Field name","text":"<p>//leakcanary/shark/ReferencePattern/StaticFieldPattern/fieldName</p>"},{"location":"api/shark/-reference-pattern/-static-field-pattern/field-name/#fieldname","title":"fieldName","text":"<p>val fieldName: String</p>"},{"location":"api/shark/-reference-pattern/-static-field-pattern/to-string/","title":"To string","text":"<p>//leakcanary/shark/ReferencePattern/StaticFieldPattern/toString</p>"},{"location":"api/shark/-reference-pattern/-static-field-pattern/to-string/#tostring","title":"toString","text":"<p>open override fun toString(): String</p>"},{"location":"api/shark/-reference-pattern/-static-field-pattern/-companion/","title":"Index","text":"<p>//leakcanary/shark/ReferencePattern/StaticFieldPattern/Companion</p>"},{"location":"api/shark/-reference-pattern/-static-field-pattern/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-shark-cli-command/","title":"Index","text":"<p>//leakcanary/shark/SharkCliCommand</p>"},{"location":"api/shark/-shark-cli-command/#sharkclicommand","title":"SharkCliCommand","text":"<p>class SharkCliCommand : CliktCommand</p>"},{"location":"api/shark/-shark-cli-command/#constructors","title":"Constructors","text":"SharkCliCommand fun SharkCliCommand()"},{"location":"api/shark/-shark-cli-command/#types","title":"Types","text":"Name Summary CommandParams class CommandParams(val source: SharkCliCommand.HeapDumpSource, val obfuscationMappingPath: File?) Companion object Companion HeapDumpSource sealed class HeapDumpSource"},{"location":"api/shark/-shark-cli-command/#functions","title":"Functions","text":"Name Summary aliases open fun aliases(): Map&lt;String, List&lt;String&gt;&gt; getFormattedHelp open fun getFormattedHelp(): String getFormattedUsage open fun getFormattedUsage(): String issueMessage fun issueMessage(message: String) main fun main(argv: Array&lt;String&gt;)fun main(argv: List&lt;String&gt;) parse fun parse(argv: Array&lt;String&gt;, parentContext: Context?)fun parse(argv: List&lt;String&gt;, parentContext: Context?) registerArgument fun registerArgument(argument: Argument) registeredSubcommandNames fun registeredSubcommandNames(): List&lt;String&gt; registerOption open override fun registerOption(option: GroupableOption)fun registerOption(option: Option) registerOptionGroup fun registerOptionGroup(group: ParameterGroup) run open override fun run() toString open override fun toString(): String"},{"location":"api/shark/-shark-cli-command/#properties","title":"Properties","text":"Name Summary commandHelp val commandHelp: String commandHelpEpilog val commandHelpEpilog: String commandName val commandName: String context val context: Context helpTags val helpTags: Map&lt;String, String&gt; invokeWithoutSubcommand val invokeWithoutSubcommand: Boolean messages val messages: List&lt;String&gt; printHelpOnEmptyArgs val printHelpOnEmptyArgs: Boolean"},{"location":"api/shark/-shark-cli-command/-shark-cli-command/","title":"shark cli command","text":"<p>//leakcanary/shark/SharkCliCommand/SharkCliCommand</p>"},{"location":"api/shark/-shark-cli-command/-shark-cli-command/#sharkclicommand","title":"SharkCliCommand","text":"<p>fun SharkCliCommand()</p>"},{"location":"api/shark/-shark-cli-command/run/","title":"Run","text":"<p>//leakcanary/shark/SharkCliCommand/run</p>"},{"location":"api/shark/-shark-cli-command/run/#run","title":"run","text":"<p>open override fun run()</p>"},{"location":"api/shark/-shark-cli-command/-command-params/","title":"Index","text":"<p>//leakcanary/shark/SharkCliCommand/CommandParams</p>"},{"location":"api/shark/-shark-cli-command/-command-params/#commandparams","title":"CommandParams","text":"<p>class CommandParams(val source: SharkCliCommand.HeapDumpSource, val obfuscationMappingPath: File?)</p>"},{"location":"api/shark/-shark-cli-command/-command-params/#constructors","title":"Constructors","text":"CommandParams fun CommandParams(source: SharkCliCommand.HeapDumpSource, obfuscationMappingPath: File?)"},{"location":"api/shark/-shark-cli-command/-command-params/#properties","title":"Properties","text":"Name Summary obfuscationMappingPath val obfuscationMappingPath: File? source val source: SharkCliCommand.HeapDumpSource"},{"location":"api/shark/-shark-cli-command/-command-params/-command-params/","title":"command params","text":"<p>//leakcanary/shark/SharkCliCommand/CommandParams/CommandParams</p>"},{"location":"api/shark/-shark-cli-command/-command-params/-command-params/#commandparams","title":"CommandParams","text":"<p>fun CommandParams(source: SharkCliCommand.HeapDumpSource, obfuscationMappingPath: File?)</p>"},{"location":"api/shark/-shark-cli-command/-command-params/obfuscation-mapping-path/","title":"Obfuscation mapping path","text":"<p>//leakcanary/shark/SharkCliCommand/CommandParams/obfuscationMappingPath</p>"},{"location":"api/shark/-shark-cli-command/-command-params/obfuscation-mapping-path/#obfuscationmappingpath","title":"obfuscationMappingPath","text":"<p>val obfuscationMappingPath: File?</p>"},{"location":"api/shark/-shark-cli-command/-command-params/source/","title":"Source","text":"<p>//leakcanary/shark/SharkCliCommand/CommandParams/source</p>"},{"location":"api/shark/-shark-cli-command/-command-params/source/#source","title":"source","text":"<p>val source: SharkCliCommand.HeapDumpSource</p>"},{"location":"api/shark/-shark-cli-command/-companion/","title":"Index","text":"<p>//leakcanary/shark/SharkCliCommand/Companion</p>"},{"location":"api/shark/-shark-cli-command/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-shark-cli-command/-companion/#functions","title":"Functions","text":"Name Summary echo fun CliktCommand.echo(message: Any?, trailingNewline: Boolean = true, err: Boolean = false, lineSeparator: String = context.console.lineSeparator)Copy of CliktCommand.echo to make it publicly visible and therefore accessible from CliktCommand extension functions echoNewline fun CliktCommand.echoNewline() retrieveHeapDumpFile fun CliktCommand.retrieveHeapDumpFile(params: SharkCliCommand.CommandParams): File runCommand fun runCommand(directory: File, vararg arguments: String): String"},{"location":"api/shark/-shark-cli-command/-companion/#properties","title":"Properties","text":"Name Summary sharkCliParams var Context.sharkCliParams: SharkCliCommand.CommandParams"},{"location":"api/shark/-shark-cli-command/-companion/echo-newline/","title":"Echo newline","text":"<p>//leakcanary/shark/SharkCliCommand/Companion/echoNewline</p>"},{"location":"api/shark/-shark-cli-command/-companion/echo-newline/#echonewline","title":"echoNewline","text":"<p>fun CliktCommand.echoNewline()</p>"},{"location":"api/shark/-shark-cli-command/-companion/echo/","title":"Echo","text":"<p>//leakcanary/shark/SharkCliCommand/Companion/echo</p>"},{"location":"api/shark/-shark-cli-command/-companion/echo/#echo","title":"echo","text":"<p>fun CliktCommand.echo(message: Any?, trailingNewline: Boolean = true, err: Boolean = false, lineSeparator: String = context.console.lineSeparator)</p> <p>Copy of CliktCommand.echo to make it publicly visible and therefore accessible from CliktCommand extension functions</p>"},{"location":"api/shark/-shark-cli-command/-companion/retrieve-heap-dump-file/","title":"Retrieve heap dump file","text":"<p>//leakcanary/shark/SharkCliCommand/Companion/retrieveHeapDumpFile</p>"},{"location":"api/shark/-shark-cli-command/-companion/retrieve-heap-dump-file/#retrieveheapdumpfile","title":"retrieveHeapDumpFile","text":"<p>fun CliktCommand.retrieveHeapDumpFile(params: SharkCliCommand.CommandParams): File</p>"},{"location":"api/shark/-shark-cli-command/-companion/run-command/","title":"Run command","text":"<p>//leakcanary/shark/SharkCliCommand/Companion/runCommand</p>"},{"location":"api/shark/-shark-cli-command/-companion/run-command/#runcommand","title":"runCommand","text":"<p>fun runCommand(directory: File, vararg arguments: String): String</p>"},{"location":"api/shark/-shark-cli-command/-companion/shark-cli-params/","title":"Shark cli params","text":"<p>//leakcanary/shark/SharkCliCommand/Companion/sharkCliParams</p>"},{"location":"api/shark/-shark-cli-command/-companion/shark-cli-params/#sharkcliparams","title":"sharkCliParams","text":"<p>var Context.sharkCliParams: SharkCliCommand.CommandParams</p>"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/","title":"Index","text":"<p>//leakcanary/shark/SharkCliCommand/HeapDumpSource</p>"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/#heapdumpsource","title":"HeapDumpSource","text":"<p>sealed class HeapDumpSource</p>"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/#types","title":"Types","text":"Name Summary HprofFileSource class HprofFileSource(val file: File) : SharkCliCommand.HeapDumpSource ProcessSource class ProcessSource(val processName: String, val deviceId: String?) : SharkCliCommand.HeapDumpSource"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/#inheritors","title":"Inheritors","text":"Name HprofFileSource ProcessSource"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/-hprof-file-source/","title":"Index","text":"<p>//leakcanary/shark/SharkCliCommand/HeapDumpSource/HprofFileSource</p>"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/-hprof-file-source/#hproffilesource","title":"HprofFileSource","text":"<p>class HprofFileSource(val file: File) : SharkCliCommand.HeapDumpSource</p>"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/-hprof-file-source/#constructors","title":"Constructors","text":"HprofFileSource fun HprofFileSource(file: File)"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/-hprof-file-source/#properties","title":"Properties","text":"Name Summary file val file: File"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/-hprof-file-source/-hprof-file-source/","title":"hprof file source","text":"<p>//leakcanary/shark/SharkCliCommand/HeapDumpSource/HprofFileSource/HprofFileSource</p>"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/-hprof-file-source/-hprof-file-source/#hproffilesource","title":"HprofFileSource","text":"<p>fun HprofFileSource(file: File)</p>"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/-hprof-file-source/file/","title":"File","text":"<p>//leakcanary/shark/SharkCliCommand/HeapDumpSource/HprofFileSource/file</p>"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/-hprof-file-source/file/#file","title":"file","text":"<p>val file: File</p>"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/-process-source/","title":"Index","text":"<p>//leakcanary/shark/SharkCliCommand/HeapDumpSource/ProcessSource</p>"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/-process-source/#processsource","title":"ProcessSource","text":"<p>class ProcessSource(val processName: String, val deviceId: String?) : SharkCliCommand.HeapDumpSource</p>"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/-process-source/#constructors","title":"Constructors","text":"ProcessSource fun ProcessSource(processName: String, deviceId: String?)"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/-process-source/#properties","title":"Properties","text":"Name Summary deviceId val deviceId: String? processName val processName: String"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/-process-source/-process-source/","title":"process source","text":"<p>//leakcanary/shark/SharkCliCommand/HeapDumpSource/ProcessSource/ProcessSource</p>"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/-process-source/-process-source/#processsource","title":"ProcessSource","text":"<p>fun ProcessSource(processName: String, deviceId: String?)</p>"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/-process-source/device-id/","title":"Device id","text":"<p>//leakcanary/shark/SharkCliCommand/HeapDumpSource/ProcessSource/deviceId</p>"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/-process-source/device-id/#deviceid","title":"deviceId","text":"<p>val deviceId: String?</p>"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/-process-source/process-name/","title":"Process name","text":"<p>//leakcanary/shark/SharkCliCommand/HeapDumpSource/ProcessSource/processName</p>"},{"location":"api/shark/-shark-cli-command/-heap-dump-source/-process-source/process-name/#processname","title":"processName","text":"<p>val processName: String</p>"},{"location":"api/shark/-shark-log/","title":"Index","text":"<p>//leakcanary/shark/SharkLog</p>"},{"location":"api/shark/-shark-log/#sharklog","title":"SharkLog","text":"<p>object SharkLog</p> <p>Central Logger for all Shark artifacts. Set logger to change where these logs go.</p>"},{"location":"api/shark/-shark-log/#types","title":"Types","text":"Name Summary Logger interface Logger"},{"location":"api/shark/-shark-log/#functions","title":"Functions","text":"Name Summary d inline fun d(message: () -&gt; String)inline fun d(throwable: Throwable, message: () -&gt; String)"},{"location":"api/shark/-shark-log/#properties","title":"Properties","text":"Name Summary logger @Volatilevar logger: SharkLog.Logger? = null"},{"location":"api/shark/-shark-log/d/","title":"D","text":"<p>//leakcanary/shark/SharkLog/d</p>"},{"location":"api/shark/-shark-log/d/#d","title":"d","text":"<p>inline fun d(message: () -&gt; String)</p> <p>inline fun d(throwable: Throwable, message: () -&gt; String)</p>"},{"location":"api/shark/-shark-log/d/#see-also","title":"See also","text":"<p>main</p> shark.SharkLog.Logger"},{"location":"api/shark/-shark-log/logger/","title":"Logger","text":"<p>//leakcanary/shark/SharkLog/logger</p>"},{"location":"api/shark/-shark-log/logger/#logger","title":"logger","text":"<p>@Volatile</p> <p>var logger: SharkLog.Logger? = null</p>"},{"location":"api/shark/-shark-log/-logger/","title":"Index","text":"<p>//leakcanary/shark/SharkLog/Logger</p>"},{"location":"api/shark/-shark-log/-logger/#logger","title":"Logger","text":"<p>interface Logger</p>"},{"location":"api/shark/-shark-log/-logger/#see-also","title":"See also","text":"<p>main</p> shark.SharkLog"},{"location":"api/shark/-shark-log/-logger/#functions","title":"Functions","text":"Name Summary d abstract fun d(message: String)Logs a debug message formatted with the passed in arguments.abstract fun d(throwable: Throwable, message: String)Logs a Throwable and debug message formatted with the passed in arguments."},{"location":"api/shark/-shark-log/-logger/#inheritors","title":"Inheritors","text":"Name LogcatSharkLog"},{"location":"api/shark/-shark-log/-logger/d/","title":"D","text":"<p>//leakcanary/shark/SharkLog/Logger/d</p>"},{"location":"api/shark/-shark-log/-logger/d/#d","title":"d","text":"<p>abstract fun d(message: String)</p> <p>Logs a debug message formatted with the passed in arguments.</p> <p>abstract fun d(throwable: Throwable, message: String)</p> <p>Logs a Throwable and debug message formatted with the passed in arguments.</p>"},{"location":"api/shark/-streaming-hprof-reader/","title":"Index","text":"<p>//leakcanary/shark/StreamingHprofReader</p>"},{"location":"api/shark/-streaming-hprof-reader/#streaminghprofreader","title":"StreamingHprofReader","text":"<p>class StreamingHprofReader</p> <p>Reads the entire content of a Hprof source in one fell swoop. Call readerFor to obtain a new instance.</p>"},{"location":"api/shark/-streaming-hprof-reader/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-streaming-hprof-reader/#functions","title":"Functions","text":"Name Summary readRecords fun readRecords(recordTags: Set&lt;HprofRecordTag&gt;, listener: OnHprofRecordTagListener): LongObtains a new source to read all hprof records from and calls listener back for each record that matches one of the provided recordTags."},{"location":"api/shark/-streaming-hprof-reader/#extensions","title":"Extensions","text":"Name Summary asStreamingRecordReader fun StreamingHprofReader.asStreamingRecordReader(): StreamingRecordReaderAdapter"},{"location":"api/shark/-streaming-hprof-reader/read-records/","title":"Read records","text":"<p>//leakcanary/shark/StreamingHprofReader/readRecords</p>"},{"location":"api/shark/-streaming-hprof-reader/read-records/#readrecords","title":"readRecords","text":"<p>fun readRecords(recordTags: Set&lt;HprofRecordTag&gt;, listener: OnHprofRecordTagListener): Long</p> <p>Obtains a new source to read all hprof records from and calls listener back for each record that matches one of the provided recordTags.</p>"},{"location":"api/shark/-streaming-hprof-reader/read-records/#return","title":"Return","text":"<p>the number of bytes read from the source</p>"},{"location":"api/shark/-streaming-hprof-reader/-companion/","title":"Index","text":"<p>//leakcanary/shark/StreamingHprofReader/Companion</p>"},{"location":"api/shark/-streaming-hprof-reader/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-streaming-hprof-reader/-companion/#functions","title":"Functions","text":"Name Summary readerFor fun readerFor(hprofFile: File, hprofHeader: HprofHeader = HprofHeader.parseHeaderOf(hprofFile)): StreamingHprofReaderCreates a StreamingHprofReader for the provided hprofFile. hprofHeader will be read from hprofFile unless you provide it.fun readerFor(hprofSourceProvider: StreamingSourceProvider, hprofHeader: HprofHeader = hprofSourceProvider.openStreamingSource()         .use { HprofHeader.parseHeaderOf(it) }): StreamingHprofReaderCreates a StreamingHprofReader that will call StreamingSourceProvider.openStreamingSource on every readRecords to obtain a Source to read the hprof data from. Before reading the hprof records, StreamingHprofReader will skip HprofHeader.recordsPosition bytes."},{"location":"api/shark/-streaming-hprof-reader/-companion/reader-for/","title":"Reader for","text":"<p>//leakcanary/shark/StreamingHprofReader/Companion/readerFor</p>"},{"location":"api/shark/-streaming-hprof-reader/-companion/reader-for/#readerfor","title":"readerFor","text":"<p>fun readerFor(hprofFile: File, hprofHeader: HprofHeader = HprofHeader.parseHeaderOf(hprofFile)): StreamingHprofReader</p> <p>Creates a StreamingHprofReader for the provided hprofFile. hprofHeader will be read from hprofFile unless you provide it.</p> <p>fun readerFor(hprofSourceProvider: StreamingSourceProvider, hprofHeader: HprofHeader = hprofSourceProvider.openStreamingSource()         .use { HprofHeader.parseHeaderOf(it) }): StreamingHprofReader</p> <p>Creates a StreamingHprofReader that will call StreamingSourceProvider.openStreamingSource on every readRecords to obtain a Source to read the hprof data from. Before reading the hprof records, StreamingHprofReader will skip HprofHeader.recordsPosition bytes.</p>"},{"location":"api/shark/-streaming-record-reader-adapter/","title":"Index","text":"<p>//leakcanary/shark/StreamingRecordReaderAdapter</p>"},{"location":"api/shark/-streaming-record-reader-adapter/#streamingrecordreaderadapter","title":"StreamingRecordReaderAdapter","text":"<p>class StreamingRecordReaderAdapter(streamingHprofReader: StreamingHprofReader)</p> <p>Wraps a StreamingHprofReader to provide a higher level API that streams HprofRecord instances.</p>"},{"location":"api/shark/-streaming-record-reader-adapter/#constructors","title":"Constructors","text":"StreamingRecordReaderAdapter fun StreamingRecordReaderAdapter(streamingHprofReader: StreamingHprofReader)"},{"location":"api/shark/-streaming-record-reader-adapter/#types","title":"Types","text":"Name Summary Companion object Companion"},{"location":"api/shark/-streaming-record-reader-adapter/#functions","title":"Functions","text":"Name Summary readRecords fun readRecords(recordTypes: Set&lt;KClass&lt;out HprofRecord&gt;&gt;, listener: OnHprofRecordListener): LongObtains a new source to read all hprof records from and calls listener back for each record that matches one of the provided recordTypes."},{"location":"api/shark/-streaming-record-reader-adapter/-streaming-record-reader-adapter/","title":"streaming record reader adapter","text":"<p>//leakcanary/shark/StreamingRecordReaderAdapter/StreamingRecordReaderAdapter</p>"},{"location":"api/shark/-streaming-record-reader-adapter/-streaming-record-reader-adapter/#streamingrecordreaderadapter","title":"StreamingRecordReaderAdapter","text":"<p>fun StreamingRecordReaderAdapter(streamingHprofReader: StreamingHprofReader)</p>"},{"location":"api/shark/-streaming-record-reader-adapter/read-records/","title":"Read records","text":"<p>//leakcanary/shark/StreamingRecordReaderAdapter/readRecords</p>"},{"location":"api/shark/-streaming-record-reader-adapter/read-records/#readrecords","title":"readRecords","text":"<p>fun readRecords(recordTypes: Set&lt;KClass&lt;out HprofRecord&gt;&gt;, listener: OnHprofRecordListener): Long</p> <p>Obtains a new source to read all hprof records from and calls listener back for each record that matches one of the provided recordTypes.</p>"},{"location":"api/shark/-streaming-record-reader-adapter/read-records/#return","title":"Return","text":"<p>the number of bytes read from the source</p>"},{"location":"api/shark/-streaming-record-reader-adapter/-companion/","title":"Index","text":"<p>//leakcanary/shark/StreamingRecordReaderAdapter/Companion</p>"},{"location":"api/shark/-streaming-record-reader-adapter/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-streaming-record-reader-adapter/-companion/#functions","title":"Functions","text":"Name Summary asHprofTags fun Set&lt;KClass&lt;out HprofRecord&gt;&gt;.asHprofTags(): EnumSet&lt;HprofRecordTag&gt; asStreamingRecordReader fun StreamingHprofReader.asStreamingRecordReader(): StreamingRecordReaderAdapter"},{"location":"api/shark/-streaming-record-reader-adapter/-companion/as-hprof-tags/","title":"As hprof tags","text":"<p>//leakcanary/shark/StreamingRecordReaderAdapter/Companion/asHprofTags</p>"},{"location":"api/shark/-streaming-record-reader-adapter/-companion/as-hprof-tags/#ashproftags","title":"asHprofTags","text":"<p>fun Set&lt;KClass&lt;out HprofRecord&gt;&gt;.asHprofTags(): EnumSet&lt;HprofRecordTag&gt;</p>"},{"location":"api/shark/-streaming-record-reader-adapter/-companion/as-streaming-record-reader/","title":"As streaming record reader","text":"<p>//leakcanary/shark/StreamingRecordReaderAdapter/Companion/asStreamingRecordReader</p>"},{"location":"api/shark/-streaming-record-reader-adapter/-companion/as-streaming-record-reader/#asstreamingrecordreader","title":"asStreamingRecordReader","text":"<p>fun StreamingHprofReader.asStreamingRecordReader(): StreamingRecordReaderAdapter</p>"},{"location":"api/shark/-streaming-source-provider/","title":"Index","text":"<p>//leakcanary/shark/StreamingSourceProvider</p>"},{"location":"api/shark/-streaming-source-provider/#streamingsourceprovider","title":"StreamingSourceProvider","text":"<p>fun interface StreamingSourceProvider</p> <p>Can open Source instances.</p>"},{"location":"api/shark/-streaming-source-provider/#functions","title":"Functions","text":"Name Summary openStreamingSource abstract fun openStreamingSource(): BufferedSource"},{"location":"api/shark/-streaming-source-provider/#inheritors","title":"Inheritors","text":"Name DualSourceProvider"},{"location":"api/shark/-streaming-source-provider/open-streaming-source/","title":"Open streaming source","text":"<p>//leakcanary/shark/StreamingSourceProvider/openStreamingSource</p>"},{"location":"api/shark/-streaming-source-provider/open-streaming-source/#openstreamingsource","title":"openStreamingSource","text":"<p>abstract fun openStreamingSource(): BufferedSource</p>"},{"location":"api/shark/-strip-hprof-command/","title":"Index","text":"<p>//leakcanary/shark/StripHprofCommand</p>"},{"location":"api/shark/-strip-hprof-command/#striphprofcommand","title":"StripHprofCommand","text":"<p>class StripHprofCommand : CliktCommand</p>"},{"location":"api/shark/-strip-hprof-command/#constructors","title":"Constructors","text":"StripHprofCommand fun StripHprofCommand()"},{"location":"api/shark/-strip-hprof-command/#functions","title":"Functions","text":"Name Summary aliases open fun aliases(): Map&lt;String, List&lt;String&gt;&gt; getFormattedHelp open fun getFormattedHelp(): String getFormattedUsage open fun getFormattedUsage(): String issueMessage fun issueMessage(message: String) main fun main(argv: Array&lt;String&gt;)fun main(argv: List&lt;String&gt;) parse fun parse(argv: Array&lt;String&gt;, parentContext: Context?)fun parse(argv: List&lt;String&gt;, parentContext: Context?) registerArgument fun registerArgument(argument: Argument) registeredSubcommandNames fun registeredSubcommandNames(): List&lt;String&gt; registerOption open override fun registerOption(option: GroupableOption)fun registerOption(option: Option) registerOptionGroup fun registerOptionGroup(group: ParameterGroup) run open override fun run() toString open override fun toString(): String"},{"location":"api/shark/-strip-hprof-command/#properties","title":"Properties","text":"Name Summary commandHelp val commandHelp: String commandHelpEpilog val commandHelpEpilog: String commandName val commandName: String context val context: Context helpTags val helpTags: Map&lt;String, String&gt; invokeWithoutSubcommand val invokeWithoutSubcommand: Boolean messages val messages: List&lt;String&gt; printHelpOnEmptyArgs val printHelpOnEmptyArgs: Boolean"},{"location":"api/shark/-strip-hprof-command/-strip-hprof-command/","title":"strip hprof command","text":"<p>//leakcanary/shark/StripHprofCommand/StripHprofCommand</p>"},{"location":"api/shark/-strip-hprof-command/-strip-hprof-command/#striphprofcommand","title":"StripHprofCommand","text":"<p>fun StripHprofCommand()</p>"},{"location":"api/shark/-strip-hprof-command/run/","title":"Run","text":"<p>//leakcanary/shark/StripHprofCommand/run</p>"},{"location":"api/shark/-strip-hprof-command/run/#run","title":"run","text":"<p>open override fun run()</p>"},{"location":"api/shark/-throwing-cancelable-file-source-provider/","title":"Index","text":"<p>//leakcanary/shark/ThrowingCancelableFileSourceProvider</p>"},{"location":"api/shark/-throwing-cancelable-file-source-provider/#throwingcancelablefilesourceprovider","title":"ThrowingCancelableFileSourceProvider","text":"<p>class ThrowingCancelableFileSourceProvider(file: File, throwIfCanceled: Runnable) : DualSourceProvider</p> <p>A DualSourceProvider that invokes throwIfCanceled before every read, allowing cancellation of IO based work built on top by throwing an exception.</p>"},{"location":"api/shark/-throwing-cancelable-file-source-provider/#constructors","title":"Constructors","text":"ThrowingCancelableFileSourceProvider fun ThrowingCancelableFileSourceProvider(file: File, throwIfCanceled: Runnable)"},{"location":"api/shark/-throwing-cancelable-file-source-provider/#functions","title":"Functions","text":"Name Summary openRandomAccessSource open override fun openRandomAccessSource(): RandomAccessSource openStreamingSource open override fun openStreamingSource(): BufferedSource"},{"location":"api/shark/-throwing-cancelable-file-source-provider/-throwing-cancelable-file-source-provider/","title":"throwing cancelable file source provider","text":"<p>//leakcanary/shark/ThrowingCancelableFileSourceProvider/ThrowingCancelableFileSourceProvider</p>"},{"location":"api/shark/-throwing-cancelable-file-source-provider/-throwing-cancelable-file-source-provider/#throwingcancelablefilesourceprovider","title":"ThrowingCancelableFileSourceProvider","text":"<p>fun ThrowingCancelableFileSourceProvider(file: File, throwIfCanceled: Runnable)</p>"},{"location":"api/shark/-throwing-cancelable-file-source-provider/open-random-access-source/","title":"Open random access source","text":"<p>//leakcanary/shark/ThrowingCancelableFileSourceProvider/openRandomAccessSource</p>"},{"location":"api/shark/-throwing-cancelable-file-source-provider/open-random-access-source/#openrandomaccesssource","title":"openRandomAccessSource","text":"<p>open override fun openRandomAccessSource(): RandomAccessSource</p>"},{"location":"api/shark/-throwing-cancelable-file-source-provider/open-streaming-source/","title":"Open streaming source","text":"<p>//leakcanary/shark/ThrowingCancelableFileSourceProvider/openStreamingSource</p>"},{"location":"api/shark/-throwing-cancelable-file-source-provider/open-streaming-source/#openstreamingsource","title":"openStreamingSource","text":"<p>open override fun openStreamingSource(): BufferedSource</p>"},{"location":"api/shark/-value-holder/","title":"Index","text":"<p>//leakcanary/shark/ValueHolder</p>"},{"location":"api/shark/-value-holder/#valueholder","title":"ValueHolder","text":"<p>sealed class ValueHolder</p> <p>A value in the heap dump, which can be a ReferenceHolder or a primitive type.</p>"},{"location":"api/shark/-value-holder/#types","title":"Types","text":"Name Summary BooleanHolder data class BooleanHolder(val value: Boolean) : ValueHolder ByteHolder data class ByteHolder(val value: Byte) : ValueHolder CharHolder data class CharHolder(val value: Char) : ValueHolder Companion object Companion DoubleHolder data class DoubleHolder(val value: Double) : ValueHolder FloatHolder data class FloatHolder(val value: Float) : ValueHolder IntHolder data class IntHolder(val value: Int) : ValueHolder LongHolder data class LongHolder(val value: Long) : ValueHolder ReferenceHolder data class ReferenceHolder(val value: Long) : ValueHolder ShortHolder data class ShortHolder(val value: Short) : ValueHolder"},{"location":"api/shark/-value-holder/#inheritors","title":"Inheritors","text":"Name ReferenceHolder BooleanHolder CharHolder FloatHolder DoubleHolder ByteHolder ShortHolder IntHolder LongHolder"},{"location":"api/shark/-value-holder/-boolean-holder/","title":"Index","text":"<p>//leakcanary/shark/ValueHolder/BooleanHolder</p>"},{"location":"api/shark/-value-holder/-boolean-holder/#booleanholder","title":"BooleanHolder","text":"<p>data class BooleanHolder(val value: Boolean) : ValueHolder</p>"},{"location":"api/shark/-value-holder/-boolean-holder/#constructors","title":"Constructors","text":"BooleanHolder fun BooleanHolder(value: Boolean)"},{"location":"api/shark/-value-holder/-boolean-holder/#properties","title":"Properties","text":"Name Summary value val value: Boolean"},{"location":"api/shark/-value-holder/-boolean-holder/-boolean-holder/","title":"boolean holder","text":"<p>//leakcanary/shark/ValueHolder/BooleanHolder/BooleanHolder</p>"},{"location":"api/shark/-value-holder/-boolean-holder/-boolean-holder/#booleanholder","title":"BooleanHolder","text":"<p>fun BooleanHolder(value: Boolean)</p>"},{"location":"api/shark/-value-holder/-boolean-holder/value/","title":"Value","text":"<p>//leakcanary/shark/ValueHolder/BooleanHolder/value</p>"},{"location":"api/shark/-value-holder/-boolean-holder/value/#value","title":"value","text":"<p>val value: Boolean</p>"},{"location":"api/shark/-value-holder/-byte-holder/","title":"Index","text":"<p>//leakcanary/shark/ValueHolder/ByteHolder</p>"},{"location":"api/shark/-value-holder/-byte-holder/#byteholder","title":"ByteHolder","text":"<p>data class ByteHolder(val value: Byte) : ValueHolder</p>"},{"location":"api/shark/-value-holder/-byte-holder/#constructors","title":"Constructors","text":"ByteHolder fun ByteHolder(value: Byte)"},{"location":"api/shark/-value-holder/-byte-holder/#properties","title":"Properties","text":"Name Summary value val value: Byte"},{"location":"api/shark/-value-holder/-byte-holder/-byte-holder/","title":"byte holder","text":"<p>//leakcanary/shark/ValueHolder/ByteHolder/ByteHolder</p>"},{"location":"api/shark/-value-holder/-byte-holder/-byte-holder/#byteholder","title":"ByteHolder","text":"<p>fun ByteHolder(value: Byte)</p>"},{"location":"api/shark/-value-holder/-byte-holder/value/","title":"Value","text":"<p>//leakcanary/shark/ValueHolder/ByteHolder/value</p>"},{"location":"api/shark/-value-holder/-byte-holder/value/#value","title":"value","text":"<p>val value: Byte</p>"},{"location":"api/shark/-value-holder/-char-holder/","title":"Index","text":"<p>//leakcanary/shark/ValueHolder/CharHolder</p>"},{"location":"api/shark/-value-holder/-char-holder/#charholder","title":"CharHolder","text":"<p>data class CharHolder(val value: Char) : ValueHolder</p>"},{"location":"api/shark/-value-holder/-char-holder/#constructors","title":"Constructors","text":"CharHolder fun CharHolder(value: Char)"},{"location":"api/shark/-value-holder/-char-holder/#properties","title":"Properties","text":"Name Summary value val value: Char"},{"location":"api/shark/-value-holder/-char-holder/-char-holder/","title":"char holder","text":"<p>//leakcanary/shark/ValueHolder/CharHolder/CharHolder</p>"},{"location":"api/shark/-value-holder/-char-holder/-char-holder/#charholder","title":"CharHolder","text":"<p>fun CharHolder(value: Char)</p>"},{"location":"api/shark/-value-holder/-char-holder/value/","title":"Value","text":"<p>//leakcanary/shark/ValueHolder/CharHolder/value</p>"},{"location":"api/shark/-value-holder/-char-holder/value/#value","title":"value","text":"<p>val value: Char</p>"},{"location":"api/shark/-value-holder/-companion/","title":"Index","text":"<p>//leakcanary/shark/ValueHolder/Companion</p>"},{"location":"api/shark/-value-holder/-companion/#companion","title":"Companion","text":"<p>object Companion</p>"},{"location":"api/shark/-value-holder/-companion/#properties","title":"Properties","text":"Name Summary NULL_REFERENCE const val NULL_REFERENCE: Long = 0"},{"location":"api/shark/-value-holder/-companion/-n-u-l-l_-r-e-f-e-r-e-n-c-e/","title":"n u l l  r e f e r e n c e","text":"<p>//leakcanary/shark/ValueHolder/Companion/NULL_REFERENCE</p>"},{"location":"api/shark/-value-holder/-companion/-n-u-l-l_-r-e-f-e-r-e-n-c-e/#null_reference","title":"NULL_REFERENCE","text":"<p>const val NULL_REFERENCE: Long = 0</p>"},{"location":"api/shark/-value-holder/-double-holder/","title":"Index","text":"<p>//leakcanary/shark/ValueHolder/DoubleHolder</p>"},{"location":"api/shark/-value-holder/-double-holder/#doubleholder","title":"DoubleHolder","text":"<p>data class DoubleHolder(val value: Double) : ValueHolder</p>"},{"location":"api/shark/-value-holder/-double-holder/#constructors","title":"Constructors","text":"DoubleHolder fun DoubleHolder(value: Double)"},{"location":"api/shark/-value-holder/-double-holder/#properties","title":"Properties","text":"Name Summary value val value: Double"},{"location":"api/shark/-value-holder/-double-holder/-double-holder/","title":"double holder","text":"<p>//leakcanary/shark/ValueHolder/DoubleHolder/DoubleHolder</p>"},{"location":"api/shark/-value-holder/-double-holder/-double-holder/#doubleholder","title":"DoubleHolder","text":"<p>fun DoubleHolder(value: Double)</p>"},{"location":"api/shark/-value-holder/-double-holder/value/","title":"Value","text":"<p>//leakcanary/shark/ValueHolder/DoubleHolder/value</p>"},{"location":"api/shark/-value-holder/-double-holder/value/#value","title":"value","text":"<p>val value: Double</p>"},{"location":"api/shark/-value-holder/-float-holder/","title":"Index","text":"<p>//leakcanary/shark/ValueHolder/FloatHolder</p>"},{"location":"api/shark/-value-holder/-float-holder/#floatholder","title":"FloatHolder","text":"<p>data class FloatHolder(val value: Float) : ValueHolder</p>"},{"location":"api/shark/-value-holder/-float-holder/#constructors","title":"Constructors","text":"FloatHolder fun FloatHolder(value: Float)"},{"location":"api/shark/-value-holder/-float-holder/#properties","title":"Properties","text":"Name Summary value val value: Float"},{"location":"api/shark/-value-holder/-float-holder/-float-holder/","title":"float holder","text":"<p>//leakcanary/shark/ValueHolder/FloatHolder/FloatHolder</p>"},{"location":"api/shark/-value-holder/-float-holder/-float-holder/#floatholder","title":"FloatHolder","text":"<p>fun FloatHolder(value: Float)</p>"},{"location":"api/shark/-value-holder/-float-holder/value/","title":"Value","text":"<p>//leakcanary/shark/ValueHolder/FloatHolder/value</p>"},{"location":"api/shark/-value-holder/-float-holder/value/#value","title":"value","text":"<p>val value: Float</p>"},{"location":"api/shark/-value-holder/-int-holder/","title":"Index","text":"<p>//leakcanary/shark/ValueHolder/IntHolder</p>"},{"location":"api/shark/-value-holder/-int-holder/#intholder","title":"IntHolder","text":"<p>data class IntHolder(val value: Int) : ValueHolder</p>"},{"location":"api/shark/-value-holder/-int-holder/#constructors","title":"Constructors","text":"IntHolder fun IntHolder(value: Int)"},{"location":"api/shark/-value-holder/-int-holder/#properties","title":"Properties","text":"Name Summary value val value: Int"},{"location":"api/shark/-value-holder/-int-holder/-int-holder/","title":"int holder","text":"<p>//leakcanary/shark/ValueHolder/IntHolder/IntHolder</p>"},{"location":"api/shark/-value-holder/-int-holder/-int-holder/#intholder","title":"IntHolder","text":"<p>fun IntHolder(value: Int)</p>"},{"location":"api/shark/-value-holder/-int-holder/value/","title":"Value","text":"<p>//leakcanary/shark/ValueHolder/IntHolder/value</p>"},{"location":"api/shark/-value-holder/-int-holder/value/#value","title":"value","text":"<p>val value: Int</p>"},{"location":"api/shark/-value-holder/-long-holder/","title":"Index","text":"<p>//leakcanary/shark/ValueHolder/LongHolder</p>"},{"location":"api/shark/-value-holder/-long-holder/#longholder","title":"LongHolder","text":"<p>data class LongHolder(val value: Long) : ValueHolder</p>"},{"location":"api/shark/-value-holder/-long-holder/#constructors","title":"Constructors","text":"LongHolder fun LongHolder(value: Long)"},{"location":"api/shark/-value-holder/-long-holder/#properties","title":"Properties","text":"Name Summary value val value: Long"},{"location":"api/shark/-value-holder/-long-holder/-long-holder/","title":"long holder","text":"<p>//leakcanary/shark/ValueHolder/LongHolder/LongHolder</p>"},{"location":"api/shark/-value-holder/-long-holder/-long-holder/#longholder","title":"LongHolder","text":"<p>fun LongHolder(value: Long)</p>"},{"location":"api/shark/-value-holder/-long-holder/value/","title":"Value","text":"<p>//leakcanary/shark/ValueHolder/LongHolder/value</p>"},{"location":"api/shark/-value-holder/-long-holder/value/#value","title":"value","text":"<p>val value: Long</p>"},{"location":"api/shark/-value-holder/-reference-holder/","title":"Index","text":"<p>//leakcanary/shark/ValueHolder/ReferenceHolder</p>"},{"location":"api/shark/-value-holder/-reference-holder/#referenceholder","title":"ReferenceHolder","text":"<p>data class ReferenceHolder(val value: Long) : ValueHolder</p>"},{"location":"api/shark/-value-holder/-reference-holder/#constructors","title":"Constructors","text":"ReferenceHolder fun ReferenceHolder(value: Long)"},{"location":"api/shark/-value-holder/-reference-holder/#properties","title":"Properties","text":"Name Summary isNull val isNull: Boolean value val value: Long"},{"location":"api/shark/-value-holder/-reference-holder/-reference-holder/","title":"reference holder","text":"<p>//leakcanary/shark/ValueHolder/ReferenceHolder/ReferenceHolder</p>"},{"location":"api/shark/-value-holder/-reference-holder/-reference-holder/#referenceholder","title":"ReferenceHolder","text":"<p>fun ReferenceHolder(value: Long)</p>"},{"location":"api/shark/-value-holder/-reference-holder/is-null/","title":"Is null","text":"<p>//leakcanary/shark/ValueHolder/ReferenceHolder/isNull</p>"},{"location":"api/shark/-value-holder/-reference-holder/is-null/#isnull","title":"isNull","text":"<p>val isNull: Boolean</p>"},{"location":"api/shark/-value-holder/-reference-holder/value/","title":"Value","text":"<p>//leakcanary/shark/ValueHolder/ReferenceHolder/value</p>"},{"location":"api/shark/-value-holder/-reference-holder/value/#value","title":"value","text":"<p>val value: Long</p>"},{"location":"api/shark/-value-holder/-short-holder/","title":"Index","text":"<p>//leakcanary/shark/ValueHolder/ShortHolder</p>"},{"location":"api/shark/-value-holder/-short-holder/#shortholder","title":"ShortHolder","text":"<p>data class ShortHolder(val value: Short) : ValueHolder</p>"},{"location":"api/shark/-value-holder/-short-holder/#constructors","title":"Constructors","text":"ShortHolder fun ShortHolder(value: Short)"},{"location":"api/shark/-value-holder/-short-holder/#properties","title":"Properties","text":"Name Summary value val value: Short"},{"location":"api/shark/-value-holder/-short-holder/-short-holder/","title":"short holder","text":"<p>//leakcanary/shark/ValueHolder/ShortHolder/ShortHolder</p>"},{"location":"api/shark/-value-holder/-short-holder/-short-holder/#shortholder","title":"ShortHolder","text":"<p>fun ShortHolder(value: Short)</p>"},{"location":"api/shark/-value-holder/-short-holder/value/","title":"Value","text":"<p>//leakcanary/shark/ValueHolder/ShortHolder/value</p>"},{"location":"api/shark/-value-holder/-short-holder/value/#value","title":"value","text":"<p>val value: Short</p>"},{"location":"snippets/bugsnag-uploader/","title":"Bugsnag uploader","text":"<pre><code>import android.app.Application\nimport com.bugsnag.android.Bugsnag\nimport com.bugsnag.android.Configuration\nimport com.bugsnag.android.ErrorTypes\nimport com.bugsnag.android.Event\nimport com.bugsnag.android.ThreadSendPolicy\nimport shark.HeapAnalysis\nimport shark.HeapAnalysisFailure\nimport shark.HeapAnalysisSuccess\nimport shark.Leak\nimport shark.LeakTrace\nimport shark.LeakTraceReference\nimport shark.LibraryLeak\n\nclass BugsnagLeakUploader(applicationContext: Application) {\n\nprivate val bugsnagClient = Bugsnag.start(\napplicationContext,\nConfiguration(\"YOUR_BUGSNAG_API_KEY\").apply {\nenabledErrorTypes = ErrorTypes(\nanrs = false,\nndkCrashes = false,\nunhandledExceptions = false,\nunhandledRejections = false\n)\nsendThreads = ThreadSendPolicy.NEVER\n}\n)\n\nfun upload(heapAnalysis: HeapAnalysis) {\nwhen (heapAnalysis) {\nis HeapAnalysisSuccess -&gt; {\nval allLeakTraces = heapAnalysis\n.allLeaks\n.toList()\n.flatMap { leak -&gt;\nleak.leakTraces.map { leakTrace -&gt; leak to leakTrace }\n}\nif (allLeakTraces.isEmpty()) {\n// Track how often we perform a heap analysis that yields no result.\nbugsnagClient.notify(NoLeakException()) { event -&gt;\nevent.addHeapAnalysis(heapAnalysis)\ntrue\n}\n} else {\nallLeakTraces.forEach { (leak, leakTrace) -&gt;\nval message = \"Memory leak: ${leak.shortDescription}. See LEAK tab.\"\nval exception = leakTrace.asFakeException(message)\nbugsnagClient.notify(exception) { event -&gt;\nevent.addHeapAnalysis(heapAnalysis)\nevent.addLeak(leak)\nevent.addLeakTrace(leakTrace)\nevent.groupingHash = leak.signature\ntrue\n}\n}\n}\n}\nis HeapAnalysisFailure -&gt; {\n// Please file any reported failure to\n// https://github.com/square/leakcanary/issues\nbugsnagClient.notify(heapAnalysis.exception)\n}\n}\n}\n\nclass NoLeakException : RuntimeException()\n\nprivate fun Event.addHeapAnalysis(heapAnalysis: HeapAnalysisSuccess) {\naddMetadata(\"Leak\", \"heapDumpPath\", heapAnalysis.heapDumpFile.absolutePath)\nheapAnalysis.metadata.forEach { (key, value) -&gt;\naddMetadata(\"Leak\", key, value)\n}\naddMetadata(\"Leak\", \"analysisDurationMs\", heapAnalysis.analysisDurationMillis)\n}\n\nprivate fun Event.addLeak(leak: Leak) {\naddMetadata(\"Leak\", \"libraryLeak\", leak is LibraryLeak)\nif (leak is LibraryLeak) {\naddMetadata(\"Leak\", \"libraryLeakPattern\", leak.pattern.toString())\naddMetadata(\"Leak\", \"libraryLeakDescription\", leak.description)\n}\n}\n\nprivate fun Event.addLeakTrace(leakTrace: LeakTrace) {\naddMetadata(\"Leak\", \"retainedHeapByteSize\", leakTrace.retainedHeapByteSize)\naddMetadata(\"Leak\", \"signature\", leakTrace.signature)\naddMetadata(\"Leak\", \"leakTrace\", leakTrace.toString())\n}\n\nprivate fun LeakTrace.asFakeException(message: String): RuntimeException {\nval exception = RuntimeException(message)\nval stackTrace = mutableListOf&lt;StackTraceElement&gt;()\nstackTrace.add(StackTraceElement(\"GcRoot\", gcRootType.name, \"GcRoot.kt\", 42))\nfor (cause in referencePath) {\nstackTrace.add(buildStackTraceElement(cause))\n}\nexception.stackTrace = stackTrace.toTypedArray()\nreturn exception\n}\n\nprivate fun buildStackTraceElement(reference: LeakTraceReference): StackTraceElement {\nval file = reference.owningClassName.substringAfterLast(\".\") + \".kt\"\nreturn StackTraceElement(reference.owningClassName, reference.referenceDisplayName, file, 42)\n}\n}\n</code></pre>"}]}
\ No newline at end of file
diff --git a/shark/index.html b/shark/index.html
index 88aa54f..0b99c70 100644
--- a/shark/index.html
+++ b/shark/index.html
@@ -84,7 +84,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
@@ -931,7 +931,7 @@
 <p>Install it via <a href="https://brew.sh/">Homebrew</a>:</p>
 <div class="highlight"><pre><span></span><code>brew<span class="w"> </span>install<span class="w"> </span>leakcanary-shark
 </code></pre></div>
-<p>You can also download it <a href="https://github.com/square/leakcanary/releases/download/v2.13/shark-cli-2.13.zip">here</a>.</p>
+<p>You can also download it <a href="https://github.com/square/leakcanary/releases/download/v2.14/shark-cli-2.14.zip">here</a>.</p>
 <p>You can then look for leaks in apps on any connected device, for example: </p>
 <div class="highlight"><pre><span></span><code>$ shark-cli --device emulator-5554 --process com.example.app.debug analyze
 </code></pre></div>
diff --git a/sitemap.xml b/sitemap.xml
index 8bd6136..0926e01 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -2,7337 +2,7357 @@
 <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
     <url>
          <loc>https://square.github.io/leakcanary/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/blog-articles/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/changelog/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/code_of_conduct/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/dev-env/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/faq/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/fundamentals-fixing-a-memory-leak/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/fundamentals-how-leakcanary-works/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/fundamentals/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/getting_started/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/how_to_help/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/leakcanary-for-releases/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/recipes/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/recorded-presentations/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/releasing/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/shark/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/support/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/ui-tests/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/upgrading-to-leakcanary-2.0/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/uploading/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-activity-watcher/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-activity-watcher/-activity-watcher/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-activity-watcher/install/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-activity-watcher/uninstall/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-android-debug-heap-dumper/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-android-debug-heap-dumper/dump-heap/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-android-detect-leaks-assert/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-android-detect-leaks-assert/-android-detect-leaks-assert/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-android-detect-leaks-assert/assert-no-leaks/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-android-detect-leaks-assert/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-android-detect-leaks-assert/-companion/assertion-tag/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-android-detect-leaks-assert/-companion/total-duration-millis/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-android-detect-leaks-assert/-companion/wait-for-retained-duration-millis/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-android-detect-leaks-interceptor/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-android-detect-leaks-interceptor/-android-detect-leaks-interceptor/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-android-detect-leaks-interceptor/wait-until-ready-for-heap-analysis/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-android-leak-fixes/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-android-leak-fixes/-a-c-c-e-s-s-i-b-i-l-i-t-y_-n-o-d-e_-i-n-f-o/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-android-leak-fixes/-a-c-t-i-v-i-t-y_-m-a-n-a-g-e-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-android-leak-fixes/-b-u-b-b-l-e_-p-o-p-u-p/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-android-leak-fixes/-c-o-n-n-e-c-t-i-v-i-t-y_-m-a-n-a-g-e-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-android-leak-fixes/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-android-leak-fixes/-companion/apply-fixes/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-android-leak-fixes/-f-l-u-s-h_-h-a-n-d-l-e-r_-t-h-r-e-a-d-s/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-android-leak-fixes/-i-m-m_-c-u-r_-r-o-o-t_-v-i-e-w/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-android-leak-fixes/-i-m-m_-f-o-c-u-s-e-d_-v-i-e-w/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-android-leak-fixes/-l-a-s-t_-h-o-v-e-r-e-d_-v-i-e-w/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-android-leak-fixes/-m-e-d-i-a_-s-e-s-s-i-o-n_-l-e-g-a-c-y_-h-e-l-p-e-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
+         <changefreq>daily</changefreq>
+    </url>
+    <url>
+         <loc>https://square.github.io/leakcanary/api/leakcanary/-android-leak-fixes/-p-e-r-m-i-s-s-i-o-n_-c-o-n-t-r-o-l-l-e-r_-m-a-n-a-g-e-r/</loc>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-android-leak-fixes/-s-a-m-s-u-n-g_-c-l-i-p-b-o-a-r-d_-m-a-n-a-g-e-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-android-leak-fixes/-s-p-e-l-l_-c-h-e-c-k-e-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-android-leak-fixes/-t-e-x-t_-l-i-n-e_-p-o-o-l/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-android-leak-fixes/-u-s-e-r_-m-a-n-a-g-e-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-android-leak-fixes/-v-i-e-w_-l-o-c-a-t-i-o-n_-h-o-l-d-e-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-app-watcher/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-app-watcher/app-default-watchers/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-app-watcher/is-installed/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-app-watcher/manual-install/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-app-watcher/object-watcher/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-app-watcher/retained-delay-millis/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-app-watcher-startup-initializer/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-app-watcher-startup-initializer/-app-watcher-startup-initializer/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-app-watcher-startup-initializer/create/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-app-watcher-startup-initializer/dependencies/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-background-thread-heap-analyzer/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-background-thread-heap-analyzer/on-event/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-background-trigger/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-background-trigger/-background-trigger/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-background-trigger/start/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-background-trigger/stop/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-clock/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-clock/uptime-millis/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-clock/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-clock/-companion/invoke/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-conditional-interceptor/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-conditional-interceptor/-conditional-interceptor/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-conditional-interceptor/intercept/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-detect-leaks-after-test-success/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-detect-leaks-after-test-success/-detect-leaks-after-test-success/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-detect-leaks-after-test-success/apply/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-detect-leaks-after-test-success/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-detect-leaks-after-test-success/-companion/detect-leaks-after-test-success-wrapping/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-detect-leaks-assert/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-detect-leaks-assert/assert-no-leaks/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-detect-leaks-assert/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-detect-leaks-assert/-companion/update/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-detect-leaks-interceptor/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-detect-leaks-interceptor/wait-until-ready-for-heap-analysis/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-event-listener/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-event-listener/on-event/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-event-listener/-event/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-event-listener/-event/unique-id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-event-listener/-event/-dumping-heap/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-event-listener/-event/-dumping-heap/-dumping-heap/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-event-listener/-event/-heap-analysis-done/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-event-listener/-event/-heap-analysis-done/heap-analysis/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-event-listener/-event/-heap-analysis-done/show-intent/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-failed/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-failed/-heap-analysis-failed/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-succeeded/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-succeeded/-heap-analysis-succeeded/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-event-listener/-event/-heap-analysis-done/-heap-analysis-succeeded/unread-leak-signatures/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-event-listener/-event/-heap-analysis-progress/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-event-listener/-event/-heap-analysis-progress/-heap-analysis-progress/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-event-listener/-event/-heap-analysis-progress/progress-percent/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-event-listener/-event/-heap-analysis-progress/step/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-event-listener/-event/-heap-dump/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-event-listener/-event/-heap-dump/-heap-dump/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-event-listener/-event/-heap-dump/duration-millis/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-event-listener/-event/-heap-dump/file/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-event-listener/-event/-heap-dump/reason/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-event-listener/-event/-heap-dump-failed/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-event-listener/-event/-heap-dump-failed/-heap-dump-failed/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-event-listener/-event/-heap-dump-failed/exception/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-event-listener/-event/-heap-dump-failed/will-retry-later/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-fragment-and-view-model-watcher/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-fragment-and-view-model-watcher/-fragment-and-view-model-watcher/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-fragment-and-view-model-watcher/install/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-fragment-and-view-model-watcher/uninstall/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-fragment-and-view-model-watcher/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-gc-trigger/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-gc-trigger/run-gc/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-gc-trigger/-default/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-gc-trigger/-default/run-gc/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-good-android-version-interceptor/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-good-android-version-interceptor/-good-android-version-interceptor/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-good-android-version-interceptor/intercept/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-client/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-client/-heap-analysis-client/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-client/delete-heap-dump-files/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-client/new-job/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-client/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-client/-companion/default-interceptors/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-config/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-config/-heap-analysis-config/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-config/compute-retained-heap-size/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-config/leaking-object-finder/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-config/metadata-extractor/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-config/object-inspectors/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
+         <changefreq>daily</changefreq>
+    </url>
+    <url>
+         <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-config/proguard-mapping-provider/</loc>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-config/reference-matchers/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-config/strip-heap-dump/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-decision/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-decision/-analyze-heap/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-decision/-no-heap-analysis/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-decision/-no-heap-analysis/-no-heap-analysis/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-decision/-no-heap-analysis/reason/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-interceptor/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-interceptor/intercept/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-interceptor/-chain/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-interceptor/-chain/job/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-interceptor/-chain/proceed/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-job/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-job/cancel/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-job/canceled/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-job/context/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-job/execute/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-job/executed/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-job/-result/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-job/-result/-canceled/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-job/-result/-canceled/-canceled/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-job/-result/-canceled/cancel-reason/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-job/-result/-done/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-job/-result/-done/-done/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-job/-result/-done/analysis/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-job/-result/-done/strip-heap-dump-duration-millis/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-reporter/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-analysis-reporter/report-heap-analysis/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-dumper/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-heap-dumper/dump-heap/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-installable-watcher/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-installable-watcher/install/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-installable-watcher/uninstall/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-job-context/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-job-context/-job-context/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-job-context/contains/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-job-context/get-or-put/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-job-context/get/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-job-context/minus-assign/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-job-context/set/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-job-context/starter/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-keyed-weak-reference/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-keyed-weak-reference/-keyed-weak-reference/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-keyed-weak-reference/clear/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-keyed-weak-reference/description/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-keyed-weak-reference/key/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-keyed-weak-reference/retained-uptime-millis/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-keyed-weak-reference/watch-uptime-millis/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-keyed-weak-reference/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-keyed-weak-reference/-companion/heap-dump-uptime-millis/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-lazy-forwarding-event-listener/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-lazy-forwarding-event-listener/-lazy-forwarding-event-listener/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-lazy-forwarding-event-listener/on-event/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-leak-assertions/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-leak-assertions/-n-o_-t-a-g/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-leak-assertions/assert-no-leaks/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-leak-canary/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-leak-canary/config/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-leak-canary/dump-heap/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-leak-canary/new-leak-display-activity-intent/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-leak-canary/show-leak-display-activity-launcher-icon/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-leak-canary/-config/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-leak-canary/-config/-config/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-leak-canary/-config/compute-retained-heap-size/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-leak-canary/-config/dump-heap-when-debugging/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-leak-canary/-config/dump-heap/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-leak-canary/-config/event-listeners/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-leak-canary/-config/heap-dumper/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-leak-canary/-config/leaking-object-finder/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-leak-canary/-config/max-stored-heap-dumps/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-leak-canary/-config/metadata-extractor/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-leak-canary/-config/new-builder/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-leak-canary/-config/object-inspectors/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-leak-canary/-config/reference-matchers/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-leak-canary/-config/request-write-external-storage-permission/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-leak-canary/-config/retained-visible-threshold/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-leak-canary/-config/show-notifications/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-leak-canary/-config/-builder/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-leak-canary/-config/-builder/build/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-leak-canary/-config/-builder/compute-retained-heap-size/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-leak-canary/-config/-builder/dump-heap-when-debugging/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-leak-canary/-config/-builder/dump-heap/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-leak-canary/-config/-builder/event-listeners/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-leak-canary/-config/-builder/heap-dumper/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-leak-canary/-config/-builder/leaking-object-finder/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-leak-canary/-config/-builder/max-stored-heap-dumps/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-leak-canary/-config/-builder/metadata-extractor/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-leak-canary/-config/-builder/object-inspectors/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-leak-canary/-config/-builder/reference-matchers/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-leak-canary/-config/-builder/request-write-external-storage-permission/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-leak-canary/-config/-builder/retained-visible-threshold/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-leak-canary/-config/-builder/show-notifications/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-leak-canary-process/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-leak-canary-process/is-in-analyzer-process/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-logcat-event-listener/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-logcat-event-listener/on-event/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-logcat-shark-log/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-logcat-shark-log/-logcat-shark-log/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-logcat-shark-log/d/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-logcat-shark-log/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-logcat-shark-log/-companion/install/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-minimum-disk-space-interceptor/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-minimum-disk-space-interceptor/-minimum-disk-space-interceptor/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-minimum-disk-space-interceptor/intercept/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-minimum-elapsed-since-start-interceptor/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-minimum-elapsed-since-start-interceptor/-minimum-elapsed-since-start-interceptor/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-minimum-elapsed-since-start-interceptor/intercept/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-minimum-memory-interceptor/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-minimum-memory-interceptor/-minimum-memory-interceptor/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-minimum-memory-interceptor/intercept/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-no-leak-assertion-failed-error/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-no-leak-assertion-failed-error/-no-leak-assertion-failed-error/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-no-leak-assertion-failed-error/heap-analysis/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-no-leak-assertion-failed-error/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-no-leak-assertion-failed-error/-companion/throw-on-application-leaks/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-notification-event-listener/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-notification-event-listener/on-event/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-object-watcher/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-object-watcher/-object-watcher/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-object-watcher/add-on-object-retained-listener/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-object-watcher/clear-objects-watched-before/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-object-watcher/clear-watched-objects/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-object-watcher/expect-weakly-reachable/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-object-watcher/has-retained-objects/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-object-watcher/has-watched-objects/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-object-watcher/remove-on-object-retained-listener/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-object-watcher/retained-object-count/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-object-watcher/retained-objects/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-on-object-retained-listener/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-on-object-retained-listener/on-object-retained/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-on-object-retained-listener/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-on-object-retained-listener/-companion/invoke/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-once-per-period-interceptor/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-once-per-period-interceptor/-once-per-period-interceptor/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-once-per-period-interceptor/forget/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-once-per-period-interceptor/intercept/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-once-per-period-interceptor/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-plumber-startup-initializer/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-plumber-startup-initializer/-plumber-startup-initializer/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-plumber-startup-initializer/create/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-plumber-startup-initializer/dependencies/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-process-info/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-process-info/available-disk-space-bytes/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-process-info/available-ram/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-process-info/elapsed-millis-since-start/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-process-info/is-importance-background/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-process-info/-available-ram/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-process-info/-available-ram/-below-threshold/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-process-info/-available-ram/-low-ram-device/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-process-info/-available-ram/-memory/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-process-info/-available-ram/-memory/-memory/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-process-info/-available-ram/-memory/bytes/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-process-info/-real/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-process-info/-real/available-disk-space-bytes/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-process-info/-real/available-ram/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-process-info/-real/elapsed-millis-since-start/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-process-info/-real/is-importance-background/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-reachability-watcher/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-reachability-watcher/expect-weakly-reachable/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-remote-work-manager-heap-analyzer/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-remote-work-manager-heap-analyzer/on-event/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-root-view-watcher/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-root-view-watcher/-root-view-watcher/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-root-view-watcher/install/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-root-view-watcher/uninstall/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-save-resource-ids-interceptor/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-save-resource-ids-interceptor/-save-resource-ids-interceptor/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-save-resource-ids-interceptor/intercept/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-screen-off-trigger/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-screen-off-trigger/-screen-off-trigger/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-screen-off-trigger/start/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-screen-off-trigger/stop/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-service-watcher/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-service-watcher/-service-watcher/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-service-watcher/install/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-service-watcher/uninstall/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-service-watcher/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-skip-leak-detection/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-skip-leak-detection/-skip-leak-detection/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-skip-leak-detection/assertion-tags/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-skip-leak-detection/message/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-skip-leak-detection/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-skip-leak-detection/-companion/should-skip-test/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-test-description-holder/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-test-description-holder/apply/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-test-description-holder/is-evaluating/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-test-description-holder/test-description/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-test-description-holder/wrap/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-toast-event-listener/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-toast-event-listener/on-event/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-tv-event-listener/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-tv-event-listener/on-event/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-view-location-holder-leak-fix/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-view-location-holder-leak-fix/clear-static-pool/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-work-manager-heap-analyzer/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/leakcanary/-work-manager-heap-analyzer/on-event/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/as-hprof-bytes/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/create/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/dump-to-bytes/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/dump/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/hex-identity-hash-code/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/identity-hash-code/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/main/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-analyze-command/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-analyze-command/-analyze-command/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-analyze-command/run/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-analyze-command/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-analyze-command/-companion/analyze/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-build-mirror/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-build-mirror/-android-build-mirror/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-build-mirror/id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-build-mirror/manufacturer/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-build-mirror/sdk-int/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-build-mirror/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-build-mirror/-companion/from-heap-graph/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-metadata-extractor/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-metadata-extractor/extract-metadata/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y/inspect/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y_-t-h-r-e-a-d/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-a-c-t-i-v-i-t-y_-t-h-r-e-a-d/inspect/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-a-n-d-r-o-i-d-x_-f-r-a-g-m-e-n-t/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-a-n-d-r-o-i-d-x_-f-r-a-g-m-e-n-t/inspect/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-a-n-i-m-a-t-o-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-a-n-i-m-a-t-o-r/inspect/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n/inspect/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n_-p-a-c-k-a-g-e_-m-a-n-a-g-e-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-a-p-p-l-i-c-a-t-i-o-n_-p-a-c-k-a-g-e_-m-a-n-a-g-e-r/inspect/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-c-o-m-p-o-s-i-t-i-o-n_-i-m-p-l/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-c-o-m-p-o-s-i-t-i-o-n_-i-m-p-l/inspect/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-f-i-e-l-d/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-f-i-e-l-d/inspect/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-i-m-p-l/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-i-m-p-l/inspect/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-w-r-a-p-p-e-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-c-o-n-t-e-x-t_-w-r-a-p-p-e-r/inspect/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-c-o-o-r-d-i-n-a-t-o-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-c-o-o-r-d-i-n-a-t-o-r/inspect/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-companion/app-defaults/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-companion/app-leaking-object-filters/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-companion/create-leaking-object-filters/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-d-i-a-l-o-g/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-d-i-a-l-o-g/inspect/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-e-d-i-t-o-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-e-d-i-t-o-r/inspect/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-f-r-a-g-m-e-n-t/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-f-r-a-g-m-e-n-t/inspect/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-i-n-p-u-t_-m-e-t-h-o-d_-m-a-n-a-g-e-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-i-n-p-u-t_-m-e-t-h-o-d_-m-a-n-a-g-e-r/inspect/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-l-i-f-e-c-y-c-l-e_-r-e-g-i-s-t-r-y/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-l-i-f-e-c-y-c-l-e_-r-e-g-i-s-t-r-y/inspect/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-l-o-a-d-e-d_-a-p-k/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-l-o-a-d-e-d_-a-p-k/inspect/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-m-a-i-n_-t-h-r-e-a-d/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-m-a-i-n_-t-h-r-e-a-d/inspect/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-m-e-s-s-a-g-e/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-m-e-s-s-a-g-e/inspect/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-m-e-s-s-a-g-e_-q-u-e-u-e/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-m-e-s-s-a-g-e_-q-u-e-u-e/inspect/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-m-o-r-t-a-r_-p-r-e-s-e-n-t-e-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-m-o-r-t-a-r_-p-r-e-s-e-n-t-e-r/inspect/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-m-o-r-t-a-r_-s-c-o-p-e/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-m-o-r-t-a-r_-s-c-o-p-e/inspect/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-o-b-j-e-c-t_-a-n-i-m-a-t-o-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-o-b-j-e-c-t_-a-n-i-m-a-t-o-r/inspect/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-r-e-c-o-m-p-o-s-e-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-r-e-c-o-m-p-o-s-e-r/inspect/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-s-e-r-v-i-c-e/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-s-e-r-v-i-c-e/inspect/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-s-t-u-b/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-s-t-u-b/inspect/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-s-u-p-p-o-r-t_-f-r-a-g-m-e-n-t/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-s-u-p-p-o-r-t_-f-r-a-g-m-e-n-t/inspect/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-t-o-a-s-t/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-t-o-a-s-t/inspect/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-v-i-e-w/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-v-i-e-w/inspect/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-v-i-e-w_-r-o-o-t_-i-m-p-l/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-v-i-e-w_-r-o-o-t_-i-m-p-l/inspect/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-w-i-n-d-o-w/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-object-inspectors/-w-i-n-d-o-w/inspect/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-a-c-c-e-s-s-i-b-i-l-i-t-y_-i-t-e-r-a-t-o-r-s/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-a-c-c-e-s-s-i-b-i-l-i-t-y_-n-o-d-e_-i-d_-m-a-n-a-g-e-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-a-c-c-e-s-s-i-b-i-l-i-t-y_-n-o-d-e_-i-n-f-o__-m-o-r-i-g-i-n-a-l-t-e-x-t/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-a-c-c-o-u-n-t_-m-a-n-a-g-e-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-a-c-c-o-u-n-t_-m-a-n-a-g-e-r__-a-m-s_-t-a-s-k__-r-e-s-p-o-n-s-e/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-c-h-o-o-s-e_-m-o-d-e-l/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-m-a-n-a-g-e-r_-m-c-o-n-t-e-x-t/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-t-h-r-e-a-d__-m_-n-e-w_-a-c-t-i-v-i-t-i-e-s/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-a-c-t-i-v-i-t-y_-t-r-a-n-s-i-t-i-o-n_-s-t-a-t-e__-m_-e-x-i-t-i-n-g_-t-o_-v-i-e-w/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-a-n-i-m-a-t-i-o-n_-h-a-n-d-l-e-r__-a-n-i-m-a-t-o-r_-r-e-q-u-e-s-t-o-r-s/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-a-p-p-l-i-c-a-t-i-o-n_-p-a-c-k-a-g-e_-m-a-n-a-g-e-r__-h-a-s_-s-y-s-t-e-m_-f-e-a-t-u-r-e_-q-u-e-r-y/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-a-p-p_-o-p-s_-m-a-n-a-g-e-r__-c-a-l-l-b-a-c-k_-s-t-u-b/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-a-p-p_-w-i-d-g-e-t_-h-o-s-t_-c-a-l-l-b-a-c-k-s/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-a-s-s-i-s-t_-s-t-r-u-c-t-u-r-e/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-a-u-d-i-o_-m-a-n-a-g-e-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-a-u-d-i-o_-m-a-n-a-g-e-r__-m-c-o-n-t-e-x-t_-s-t-a-t-i-c/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-a-w_-c-o-n-t-e-n-t-s_-p-o-s-t-e-d_-c-a-l-l-b-a-c-k/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-a-w_-c-o-n-t-e-n-t-s__-a0/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-a-w_-r-e-s-o-u-r-c-e__-s-r-e-s-o-u-r-c-e-s/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-b-a-c-k-d-r-o-p_-f-r-a-m-e_-r-e-n-d-e-r-e-r__-m-d-e-c-o-r-v-i-e-w/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-b-i-o-m-e-t-r-i-c_-p-r-o-m-p-t/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-b-l-o-c-k-i-n-g_-q-u-e-u-e/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-b-u-b-b-l-e_-p-o-p-u-p_-h-e-l-p-e-r__-s-h-e-l-p-e-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-c-l-i-p-b-o-a-r-d_-e-x_-m-a-n-a-g-e-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-c-l-i-p-b-o-a-r-d_-u-i_-m-a-n-a-g-e-r__-s-i-n-s-t-a-n-c-e/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-c-o-m-p-a-n-i-o-n_-d-e-v-i-c-e_-s-e-r-v-i-c-e__-s-t-u-b/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-c-o-n-n-e-c-t-i-v-i-t-y_-m-a-n-a-g-e-r_-c-a-l-l-b-a-c-k_-h-a-n-d-l-e-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-c-o-n-n-e-c-t-i-v-i-t-y_-m-a-n-a-g-e-r__-s-i-n-s-t-a-n-c-e/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-c-o-n-t-r-o-l-l-e-d_-i-n-p-u-t_-c-o-n-n-e-c-t-i-o-n_-w-r-a-p-p-e-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-companion/-h-m-d_-g-l-o-b-a-l/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-companion/-h-u-a-w-e-i/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-companion/-i-n-f-i-n-i-x/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-companion/-l-e-n-o-v-o/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-companion/-l-g/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-companion/-m-e-i-z-u/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-companion/-m-o-t-o-r-o-l-a/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-companion/-n-v-i-d-i-a/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-companion/-o-n-e_-p-l-u-s/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-companion/-r-a-z-e-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-companion/-r-e-a-l-m-e/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-companion/-s-a-m-s-u-n-g/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-companion/-s-h-a-r-p/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-companion/-t-e-s/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-companion/-v-i-v-o/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-companion/-x-i-a-o-m-i/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-companion/app-defaults/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-companion/build-known-references/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-companion/ignored-instance-field/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-companion/ignored-java-local/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-companion/ignored-references-only/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-companion/instance-field-leak/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-companion/native-global-variable-leak/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-companion/static-field-leak/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-d-e-v-i-c-e_-p-o-l-i-c-y_-m-a-n-a-g-e-r__-s-e-t-t-i-n-g-s_-o-b-s-e-r-v-e-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-d-r-e-a-m_-s-e-r-v-i-c-e/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-e-d-i-t-t-e-x-t_-b-l-i-n-k_-m-e-s-s-a-g-e-q-u-e-u-e/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-e-v-e-n-t_-r-e-c-e-i-v-e-r__-m-m-e-s-s-a-g-e_-q-u-e-u-e/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-e-x-t-e-n-d-e-d_-s-t-a-t-u-s_-b-a-r_-m-a-n-a-g-e-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-f-i-n-a-l-i-z-e-r_-w-a-t-c-h-d-o-g_-d-a-e-m-o-n/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-f-l-i-p-p-e-r__-a-p-p-l-i-c-a-t-i-o-n_-d-e-s-c-r-i-p-t-o-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-g-e-s-t-u-r-e_-b-o-o-s-t_-m-a-n-a-g-e-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-h-o-s-t_-a-d-p-u_-s-e-r-v-i-c-e_-m-s-g_-h-a-n-d-l-e-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-i-m-m_-c-u-r-r-e-n-t_-i-n-p-u-t_-c-o-n-n-e-c-t-i-o-n/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-i-m-m_-l-a-s-t_-f-o-c-u-s_-v-i-e-w/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-i-n-p-u-t_-m-a-n-a-g-e-r__-m_-l-a-t-e_-i-n-i-t_-c-o-n-t-e-x-t/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-i-n-p-u-t_-m-e-t-h-o-d_-m-a-n-a-g-e-r_-i-s_-t-e-r-r-i-b-l-e/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-i-n-s-t-r-u-m-e-n-t-a-t-i-o-n_-r-e-c-o-m-m-e-n-d_-a-c-t-i-v-i-t-y/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-i-r-e-q-u-e-s-t_-f-i-n-i-s-h_-c-a-l-l-b-a-c-k/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-j-o-b_-s-e-r-v-i-c-e/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-l-a-y-o-u-t_-t-r-a-n-s-i-t-i-o-n/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-l-e-a-k_-c-a-n-a-r-y_-h-e-a-p_-d-u-m-p-e-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-l-e-a-k_-c-a-n-a-r-y_-i-n-t-e-r-n-a-l/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-l-e-a-k_-c-a-n-a-r-y_-t-h-r-e-a-d/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-l-g-c-o-n-t-e-x-t__-m-c-o-n-t-e-x-t/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-m-a-g-n-i-f-i-e-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-m-a-i-n/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-m-a-p-p-e-r_-c-l-i-e-n-t/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-m-e-d-i-a_-p-r-o-j-e-c-t-i-o-n_-c-a-l-l-b-a-c-k/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-m-e-d-i-a_-s-c-a-n-n-e-r_-c-o-n-n-e-c-t-i-o-n/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-m-e-d-i-a_-s-e-s-s-i-o-n_-l-e-g-a-c-y_-h-e-l-p-e-r__-s-i-n-s-t-a-n-c-e/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-m-u-l-t-i_-w-i-n-d-o-w_-d-e-c-o-r_-s-u-p-p-o-r-t__-m-w-i-n-d-o-w/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-o-e-m_-s-c-e-n-e_-c-a-l-l_-b-l-o-c-k-e-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-p-e-r-f_-m-o-n-i-t-o-r_-l-a-s-t_-c-a-l-l-b-a-c-k/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
+         <changefreq>daily</changefreq>
+    </url>
+    <url>
+         <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-p-e-r-m-i-s-s-i-o-n_-c-o-n-t-r-o-l-l-e-r_-m-a-n-a-g-e-r/</loc>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-p-e-r-s-o-n-a_-m-a-n-a-g-e-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-p-l-a-y-e-r_-b-a-s-e/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-r-a-z-e-r_-t-e-x-t_-k-e-y_-l-i-s-t-e-n-e-r__-m-c-o-n-t-e-x-t/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-r-e-f-e-r-e-n-c-e-s/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-r-e-n-d-e-r_-n-o-d-e_-a-n-i-m-a-t-o-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-r-e-s-o-u-r-c-e-s__-m-c-o-n-t-e-x-t/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-s-e-m_-a-p-p_-i-c-o-n_-s-o-l-u-t-i-o-n/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-s-e-m_-c-l-i-p-b-o-a-r-d_-m-a-n-a-g-e-r__-m-c-o-n-t-e-x-t/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-s-e-m_-e-m-e-r-g-e-n-c-y_-m-a-n-a-g-e-r__-m-c-o-n-t-e-x-t/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-s-e-m_-p-e-r-s-o-n-a_-m-a-n-a-g-e-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-s-m-a-r-t_-c-o-v-e-r_-m-a-n-a-g-e-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-s-p-a-n_-c-o-n-t-r-o-l-l-e-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-s-p-e-e-c-h_-r-e-c-o-g-n-i-z-e-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-s-p-e-l-l_-c-h-e-c-k-e-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-s-p-e-l-l_-c-h-e-c-k-e-r_-s-e-s-s-i-o-n/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-s-p-e-n_-g-e-s-t-u-r-e_-m-a-n-a-g-e-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-s-t-a-t-i-c_-m-t-a-r-g-e-t_-v-i-e-w/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-s-y-s-t-e-m_-s-e-n-s-o-r_-m-a-n-a-g-e-r__-m-a-p-p-c-o-n-t-e-x-t-i-m-p-l/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-t-e-x-t_-l-i-n-e__-s-c-a-c-h-e-d/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-t-e-x-t_-t-o_-s-p-e-e-c-h/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-t-e-x-t_-v-i-e-w__-m-l-a-s-t_-h-o-v-e-r-e-d_-v-i-e-w/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-t-o-a-s-t_-t-n/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
+         <changefreq>daily</changefreq>
+    </url>
+    <url>
+         <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-u-i_-m-o-d-e_-m-a-n-a-g-e-r/</loc>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-u-s-e-r_-m-a-n-a-g-e-r__-s-i-n-s-t-a-n-c-e/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-v-i-e-w-l-o-c-a-t-i-o-n-h-o-l-d-e-r_-r-o-o-t/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-v-i-e-w_-c-o-n-f-i-g-u-r-a-t-i-o-n__-m-c-o-n-t-e-x-t/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-v-i-e-w_-g-r-o-u-p__-m_-c-u-r-r-e-n-t_-d-r-a-g_-c-h-i-l-d/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-v-i-e-w_-g-r-o-u-p__-m_-p-r-e_-s-o-r-t-e-d_-c-h-i-l-d-r-e-n/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-v-i-e-w_-t-o-o-l-t-i-p_-c-a-l-l-b-a-c-k/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-w-i-n-d-o-w_-o-n_-b-a-c-k_-i-n-v-o-k-e-d_-d-i-s-p-a-t-c-h-e-r__-s-t-u-b/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-reference-matchers/-x-i-a-m-i__-r-e-s-o-u-r-c-e-s_-i-m-p-l/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-resource-id-names/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-resource-id-names/get/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-resource-id-names/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-resource-id-names/-companion/read-from-heap/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-resource-id-names/-companion/save-to-memory/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-services/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-android-services/alive-android-service-object-ids/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-app-singleton-inspector/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-app-singleton-inspector/-app-singleton-inspector/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-app-singleton-inspector/inspect/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-application-leak/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-application-leak/-application-leak/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-application-leak/leak-traces/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-application-leak/short-description/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-application-leak/signature/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-application-leak/to-string/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-application-leak/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-byte-array-source-provider/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-byte-array-source-provider/-byte-array-source-provider/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-byte-array-source-provider/open-random-access-source/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-byte-array-source-provider/open-streaming-source/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-closeable-heap-graph/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-constant-memory-metrics-dual-source-provider/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-constant-memory-metrics-dual-source-provider/-constant-memory-metrics-dual-source-provider/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-constant-memory-metrics-dual-source-provider/byte-travel-range/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-constant-memory-metrics-dual-source-provider/open-random-access-source/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-constant-memory-metrics-dual-source-provider/open-streaming-source/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-constant-memory-metrics-dual-source-provider/random-access-byte-reads/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-constant-memory-metrics-dual-source-provider/random-access-byte-travel/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-constant-memory-metrics-dual-source-provider/random-access-read-count/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-decorated-path/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-decorated-path/-decorated-path/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-decorated-path/iterator/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-decorated-path/relationships/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-decorated-path/reverse-relationships/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-deobfuscate-hprof-command/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-deobfuscate-hprof-command/-deobfuscate-hprof-command/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-deobfuscate-hprof-command/run/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-dual-source-provider/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-dump-process-command/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-dump-process-command/-dump-process-command/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-dump-process-command/run/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-dump-process-command/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-dump-process-command/-companion/dump-heap/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-file-source-provider/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-file-source-provider/-file-source-provider/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-file-source-provider/open-random-access-source/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-file-source-provider/open-streaming-source/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-filtering-leaking-object-finder/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-filtering-leaking-object-finder/-filtering-leaking-object-finder/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-filtering-leaking-object-finder/find-leaking-object-ids/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-filtering-leaking-object-finder/-leaking-object-filter/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-filtering-leaking-object-finder/-leaking-object-filter/is-leaking-object/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-find-leak-paths/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-find-leak-paths/-find-leak-paths/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-find-leak-paths/leak-paths/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-find-leak-paths/transaction/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-debugger/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-debugger/-debugger/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-debugger/id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-finalizing/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-finalizing/-finalizing/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-finalizing/id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-interned-string/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-interned-string/-interned-string/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-interned-string/id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-java-frame/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-java-frame/-java-frame/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-java-frame/frame-number/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-java-frame/id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-java-frame/thread-serial-number/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-jni-global/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-jni-global/-jni-global/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-jni-global/id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-jni-global/jni-global-ref-id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-jni-local/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-jni-local/-jni-local/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-jni-local/frame-number/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-jni-local/id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-jni-local/thread-serial-number/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-jni-monitor/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-jni-monitor/-jni-monitor/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-jni-monitor/id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-jni-monitor/stack-depth/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-jni-monitor/stack-trace-serial-number/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-monitor-used/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-monitor-used/-monitor-used/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-monitor-used/id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-native-stack/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-native-stack/-native-stack/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-native-stack/id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-native-stack/thread-serial-number/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-reference-cleanup/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-reference-cleanup/-reference-cleanup/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-reference-cleanup/id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-sticky-class/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-sticky-class/-sticky-class/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-sticky-class/id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-thread-block/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-thread-block/-thread-block/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-thread-block/id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-thread-block/thread-serial-number/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-thread-object/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-thread-object/-thread-object/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-thread-object/id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-thread-object/stack-trace-serial-number/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-thread-object/thread-serial-number/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-unknown/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-unknown/-unknown/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-unknown/id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-unreachable/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-unreachable/-unreachable/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-unreachable/id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-vm-internal/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-vm-internal/-vm-internal/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-gc-root/-vm-internal/id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-graph-context/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-graph-context/-graph-context/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-graph-context/contains/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-graph-context/get-or-put/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-graph-context/get/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-graph-context/minus-assign/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-graph-context/set/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-analysis/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-analysis/analysis-duration-millis/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-analysis/created-at-time-millis/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-analysis/dump-duration-millis/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-analysis/heap-dump-file/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-analysis/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-analysis/-companion/-d-u-m-p_-d-u-r-a-t-i-o-n_-u-n-k-n-o-w-n/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-analysis-exception/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-analysis-exception/-heap-analysis-exception/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-analysis-exception/to-string/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-analysis-exception/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-analysis-failure/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-analysis-failure/-heap-analysis-failure/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-analysis-failure/analysis-duration-millis/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-analysis-failure/created-at-time-millis/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-analysis-failure/dump-duration-millis/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-analysis-failure/exception/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-analysis-failure/heap-dump-file/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-analysis-failure/to-string/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-analysis-failure/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-analysis-success/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-analysis-success/-heap-analysis-success/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-analysis-success/all-leaks/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-analysis-success/analysis-duration-millis/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-analysis-success/application-leaks/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-analysis-success/created-at-time-millis/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-analysis-success/dump-duration-millis/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-analysis-success/heap-dump-file/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-analysis-success/library-leaks/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-analysis-success/metadata/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-analysis-success/to-string/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-analysis-success/unreachable-objects/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-analysis-success/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-analyzer/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-analyzer/-heap-analyzer/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-analyzer/analyze/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-dump-rule/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-dump-rule/-heap-dump-rule/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-dump-rule/dump-heap/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-field/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-field/-heap-field/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-field/declaring-class/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-field/name/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-field/value-as-class/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-field/value-as-instance/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-field/value-as-object-array/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-field/value-as-primitive-array/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-field/value/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-graph/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-graph/class-count/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-graph/classes/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-graph/context/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-graph/find-class-by-name/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-graph/find-heap-dump-index/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-graph/find-object-by-heap-dump-index/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-graph/find-object-by-id-or-null/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-graph/find-object-by-id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-graph/find-object-by-index/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-graph/gc-roots/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-graph/identifier-byte-size/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-graph/instance-count/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-graph/instances/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-graph/object-array-count/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-graph/object-arrays/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-graph/object-count/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-graph/object-exists/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-graph/objects/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-graph/primitive-array-count/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-graph/primitive-arrays/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/as-class/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/as-instance/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/as-object-array/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/as-primitive-array/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/graph/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/object-id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/object-index/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/positive-object-id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/read-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/record-size/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-class/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-class/class-hierarchy/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-class/direct-instances/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-class/get/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-class/graph/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-class/has-reference-instance-fields/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-class/instance-byte-size/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-class/instance-field-name/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-class/instances/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-class/is-array-class/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-class/is-object-array-class/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-class/is-primitive-array-class/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-class/is-primitive-wrapper-class/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-class/name/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-class/object-array-instances/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-class/object-id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-class/object-index/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-class/primitive-array-instances/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-class/read-fields-byte-size/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-class/read-record-fields/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-class/read-record-static-fields/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-class/read-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-class/read-static-field/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-class/read-static-fields/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-class/record-size/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-class/simple-name/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-class/subclass-of/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-class/subclasses/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-class/superclass-of/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-class/superclass/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-class/to-string/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-instance/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-instance/byte-size/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-instance/get/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-instance/graph/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-instance/instance-class-id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-instance/instance-class-name/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-instance/instance-class-simple-name/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-instance/instance-class/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-instance/instance-of/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-instance/is-primitive-wrapper/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-instance/object-id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-instance/object-index/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-instance/read-as-java-string/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-instance/read-field/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-instance/read-fields/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-instance/read-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-instance/record-size/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-instance/to-string/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-object-array/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-object-array/array-class-id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-object-array/array-class-name/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-object-array/array-class-simple-name/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-object-array/array-class/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-object-array/byte-size/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-object-array/graph/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-object-array/object-id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-object-array/object-index/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-object-array/read-elements/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-object-array/read-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-object-array/record-size/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-object-array/to-string/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-primitive-array/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-primitive-array/array-class-name/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-primitive-array/array-class/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-primitive-array/byte-size/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-primitive-array/graph/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-primitive-array/object-id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-primitive-array/object-index/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-primitive-array/primitive-type/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-primitive-array/read-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-primitive-array/record-size/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-object/-heap-primitive-array/to-string/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-value/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-value/-heap-value/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-value/as-boolean/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-value/as-byte/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-value/as-char/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-value/as-double/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-value/as-float/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-value/as-int/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-value/as-long/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-value/as-non-null-object-id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-value/as-object-id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-value/as-object/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-value/as-short/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-value/graph/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-value/holder/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-value/is-non-null-reference/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-value/is-null-reference/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-heap-value/read-as-java-string/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-deobfuscator/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-deobfuscator/-hprof-deobfuscator/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-deobfuscator/deobfuscate/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-header/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-header/-hprof-header/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-header/heap-dump-timestamp/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-header/identifier-byte-size/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-header/records-position/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-header/version/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-header/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-header/-companion/parse-header-of/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-heap-graph/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-heap-graph/class-count/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-heap-graph/classes/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-heap-graph/close/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-heap-graph/context/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-heap-graph/find-class-by-name/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-heap-graph/find-heap-dump-index/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-heap-graph/find-object-by-heap-dump-index/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-heap-graph/find-object-by-id-or-null/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-heap-graph/find-object-by-id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-heap-graph/find-object-by-index/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-heap-graph/gc-roots/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-heap-graph/identifier-byte-size/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-heap-graph/instance-count/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-heap-graph/instances/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-heap-graph/lru-cache-stats/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-heap-graph/object-array-count/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-heap-graph/object-arrays/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-heap-graph/object-count/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-heap-graph/object-exists/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-heap-graph/objects/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-heap-graph/primitive-array-count/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-heap-graph/primitive-arrays/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-heap-graph/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-heap-graph/-companion/-i-n-t-e-r-n-a-l_-l-r-u_-c-a-c-h-e_-s-i-z-e/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-heap-graph/-companion/open-heap-graph/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-index/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-index/open-heap-graph/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-index/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-index/-companion/default-indexed-gc-root-tags/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-index/-companion/index-records-of/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-primitive-array-stripper/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-primitive-array-stripper/-hprof-primitive-array-stripper/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-primitive-array-stripper/strip-primitive-arrays/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-end-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-gc-root-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-gc-root-record/-gc-root-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-gc-root-record/gc-root/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-heap-dump-info-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-heap-dump-info-record/-heap-dump-info-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-heap-dump-info-record/heap-id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-heap-dump-info-record/heap-name-string-id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-class-dump-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/class-loader-id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/fields/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/instance-size/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/protection-domain-id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/signers-id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/stack-trace-serial-number/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/static-fields/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/superclass-id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-field-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-field-record/-field-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-field-record/name-string-id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-field-record/type/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/-static-field-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/name-string-id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/type/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-class-dump-record/-static-field-record/value/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/-instance-dump-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/class-id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/field-values/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-instance-dump-record/stack-trace-serial-number/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/-object-array-dump-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/array-class-id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/element-ids/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-object-array-dump-record/stack-trace-serial-number/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/size/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/stack-trace-serial-number/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/-boolean-array-dump/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/array/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/size/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-boolean-array-dump/stack-trace-serial-number/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/-byte-array-dump/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/array/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/size/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-byte-array-dump/stack-trace-serial-number/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/-char-array-dump/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/array/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/size/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-char-array-dump/stack-trace-serial-number/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/-double-array-dump/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/array/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/size/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-double-array-dump/stack-trace-serial-number/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/-float-array-dump/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/array/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/size/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-float-array-dump/stack-trace-serial-number/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/-int-array-dump/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/array/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/size/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-int-array-dump/stack-trace-serial-number/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/-long-array-dump/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/array/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/size/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-long-array-dump/stack-trace-serial-number/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/-short-array-dump/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/array/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/size/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-heap-dump-record/-object-record/-primitive-array-dump-record/-short-array-dump/stack-trace-serial-number/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-load-class-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-load-class-record/-load-class-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-load-class-record/class-name-string-id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-load-class-record/class-serial-number/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-load-class-record/id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-load-class-record/stack-trace-serial-number/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-stack-frame-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-stack-frame-record/-stack-frame-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-stack-frame-record/class-serial-number/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-stack-frame-record/id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-stack-frame-record/line-number/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-stack-frame-record/method-name-string-id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-stack-frame-record/method-signature-string-id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-stack-frame-record/source-file-name-string-id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-stack-trace-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-stack-trace-record/-stack-trace-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-stack-trace-record/stack-frame-ids/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-stack-trace-record/stack-trace-serial-number/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-stack-trace-record/thread-serial-number/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-string-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-string-record/-string-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-string-record/id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record/-string-record/string/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/bytes-read/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-boolean-array/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-boolean/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-byte-array/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-byte/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-char-array/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-char/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-class-dump-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-debugger-gc-root-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-double-array/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-double/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-finalizing-gc-root-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-float-array/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-float/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-heap-dump-info-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-id-array/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-instance-dump-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-int-array/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-int/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-interned-string-gc-root-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-java-frame-gc-root-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-jni-global-gc-root-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-jni-local-gc-root-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-jni-monitor-gc-root-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-load-class-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-long-array/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-long/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-monitor-used-gc-root-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-native-stack-gc-root-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-object-array-dump-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-primitive-array-dump-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-reference-cleanup-gc-root-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-short-array/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-short/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-stack-frame-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-stack-trace-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-sticky-class-gc-root-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-string-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-string/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-thread-block-gc-root-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-thread-object-gc-root-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-unknown-gc-root-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-unreachable-gc-root-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-unsigned-byte/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-unsigned-int/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-unsigned-short/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-utf8/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-value/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/read-vm-internal-gc-root-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/size-of/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/skip-class-dump-constant-pool/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/skip-class-dump-fields/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/skip-class-dump-header/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/skip-class-dump-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/skip-class-dump-static-fields/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/skip-heap-dump-info-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/skip-id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/skip-instance-dump-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/skip-object-array-dump-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/skip-primitive-array-dump-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/skip/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-reader/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-tag/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-tag/tag/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-tag/-a-l-l-o-c_-s-i-t-e-s/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-tag/-c-l-a-s-s_-d-u-m-p/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-tag/-c-o-n-t-r-o-l_-s-e-t-t-i-n-g-s/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-tag/-c-p-u_-s-a-m-p-l-e-s/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-tag/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-tag/-companion/root-tags/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-tag/-e-n-d_-t-h-r-e-a-d/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p_-e-n-d/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p_-i-n-f-o/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-tag/-h-e-a-p_-d-u-m-p_-s-e-g-m-e-n-t/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-tag/-h-e-a-p_-s-u-m-m-a-r-y/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-tag/-i-n-s-t-a-n-c-e_-d-u-m-p/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-tag/-l-o-a-d_-c-l-a-s-s/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-tag/-o-b-j-e-c-t_-a-r-r-a-y_-d-u-m-p/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-tag/-p-r-i-m-i-t-i-v-e_-a-r-r-a-y_-d-u-m-p/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-tag/-p-r-i-m-i-t-i-v-e_-a-r-r-a-y_-n-o-d-a-t-a/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-tag/-r-o-o-t_-d-e-b-u-g-g-e-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-tag/-r-o-o-t_-f-i-n-a-l-i-z-i-n-g/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-tag/-r-o-o-t_-i-n-t-e-r-n-e-d_-s-t-r-i-n-g/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-tag/-r-o-o-t_-j-a-v-a_-f-r-a-m-e/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-tag/-r-o-o-t_-j-n-i_-g-l-o-b-a-l/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-tag/-r-o-o-t_-j-n-i_-l-o-c-a-l/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-tag/-r-o-o-t_-j-n-i_-m-o-n-i-t-o-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-tag/-r-o-o-t_-m-o-n-i-t-o-r_-u-s-e-d/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-tag/-r-o-o-t_-n-a-t-i-v-e_-s-t-a-c-k/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-tag/-r-o-o-t_-r-e-f-e-r-e-n-c-e_-c-l-e-a-n-u-p/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-tag/-r-o-o-t_-s-t-i-c-k-y_-c-l-a-s-s/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-tag/-r-o-o-t_-t-h-r-e-a-d_-b-l-o-c-k/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-tag/-r-o-o-t_-t-h-r-e-a-d_-o-b-j-e-c-t/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-tag/-r-o-o-t_-u-n-k-n-o-w-n/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-tag/-r-o-o-t_-u-n-r-e-a-c-h-a-b-l-e/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-tag/-r-o-o-t_-v-m_-i-n-t-e-r-n-a-l/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-tag/-s-t-a-c-k_-f-r-a-m-e/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-tag/-s-t-a-c-k_-t-r-a-c-e/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-tag/-s-t-a-r-t_-t-h-r-e-a-d/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-tag/-s-t-r-i-n-g_-i-n_-u-t-f8/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-record-tag/-u-n-l-o-a-d_-c-l-a-s-s/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-version/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-version/version-string/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-version/-a-n-d-r-o-i-d/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-version/-j-d-k1_2_-b-e-t-a3/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-version/-j-d-k1_2_-b-e-t-a4/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-version/-j-d-k_6/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-writer/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-writer/close/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-writer/hprof-header/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-writer/values-to-bytes/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-writer/write/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-writer/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-writer/-companion/open-writer-for/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-writer-helper/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-writer-helper/-hprof-writer-helper/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-writer-helper/array-class/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-writer-helper/char-array-dump/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-writer-helper/clazz/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-writer-helper/close/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-writer-helper/gc-root/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-writer-helper/instance/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-writer-helper/keyed-weak-reference/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-writer-helper/object-array-of/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-writer-helper/object-array/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-writer-helper/primitive-long-array/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-writer-helper/string-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-writer-helper/string/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-writer-helper/watched-instance/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-writer-helper/-class-definition/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-writer-helper/-class-definition/-class-definition/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-writer-helper/-class-definition/static-field/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-writer-helper/-instance-and-class-definition/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-writer-helper/-instance-and-class-definition/-instance-and-class-definition/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-writer-helper/-instance-and-class-definition/field/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-hprof-writer-helper/-instance-and-class-definition/static-field/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-ignored-reference-matcher/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-ignored-reference-matcher/-ignored-reference-matcher/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-ignored-reference-matcher/pattern/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-ignored-reference-matcher/to-string/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-interactive-command/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-interactive-command/-interactive-command/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-interactive-command/run/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-interactive-command/-c-o-m-m-a-n-d/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-interactive-command/-c-o-m-m-a-n-d/command-name/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-interactive-command/-c-o-m-m-a-n-d/help/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-interactive-command/-c-o-m-m-a-n-d/pattern-help/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-interactive-command/-c-o-m-m-a-n-d/pattern/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-interactive-command/-c-o-m-m-a-n-d/suffix/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-interactive-command/-c-o-m-m-a-n-d/to-string/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-interactive-command/-c-o-m-m-a-n-d/-a-n-a-l-y-z-e/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-interactive-command/-c-o-m-m-a-n-d/-a-r-r-a-y/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-interactive-command/-c-o-m-m-a-n-d/-c-l-a-s-s/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-interactive-command/-c-o-m-m-a-n-d/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-interactive-command/-c-o-m-m-a-n-d/-companion/matches-command/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-interactive-command/-c-o-m-m-a-n-d/-d-e-t-a-i-l-e-d_-p-a-t-h_-t-o_-i-n-s-t-a-n-c-e/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-interactive-command/-c-o-m-m-a-n-d/-e-x-i-t/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-interactive-command/-c-o-m-m-a-n-d/-h-e-l-p/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-interactive-command/-c-o-m-m-a-n-d/-i-n-s-t-a-n-c-e/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-interactive-command/-c-o-m-m-a-n-d/-p-a-t-h_-t-o_-i-n-s-t-a-n-c-e/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-jvm-test-heap-dumper/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-jvm-test-heap-dumper/dump-heap/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-keyed-weak-reference-finder/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-keyed-weak-reference-finder/find-leaking-object-ids/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-keyed-weak-reference-finder/heap-dump-uptime-millis/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak/leak-traces/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak/short-description/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak/signature/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak/to-string/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak/total-retained-heap-byte-size/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak/total-retained-object-count/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace/-leak-trace/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace/gc-root-type/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace/leaking-object/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace/reference-path-element-is-suspect/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace/reference-path/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace/retained-heap-byte-size/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace/retained-object-count/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace/signature/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace/suspect-reference-subpath/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace/to-simple-path-string/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace/to-string/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace/-gc-root-type/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace/-gc-root-type/description/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace/-gc-root-type/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace/-gc-root-type/-companion/from-gc-root/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace/-gc-root-type/-j-a-v-a_-f-r-a-m-e/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace/-gc-root-type/-j-n-i_-g-l-o-b-a-l/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace/-gc-root-type/-j-n-i_-l-o-c-a-l/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace/-gc-root-type/-j-n-i_-m-o-n-i-t-o-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace/-gc-root-type/-m-o-n-i-t-o-r_-u-s-e-d/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace/-gc-root-type/-n-a-t-i-v-e_-s-t-a-c-k/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace/-gc-root-type/-s-t-i-c-k-y_-c-l-a-s-s/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace/-gc-root-type/-t-h-r-e-a-d_-b-l-o-c-k/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace/-gc-root-type/-t-h-r-e-a-d_-o-b-j-e-c-t/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace-object/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace-object/-leak-trace-object/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace-object/class-name/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace-object/class-simple-name/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace-object/labels/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace-object/leaking-status-reason/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace-object/leaking-status/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace-object/retained-heap-byte-size/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace-object/retained-object-count/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace-object/to-string/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace-object/type-name/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace-object/type/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace-object/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace-object/-leaking-status/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace-object/-leaking-status/-l-e-a-k-i-n-g/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace-object/-leaking-status/-n-o-t_-l-e-a-k-i-n-g/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace-object/-leaking-status/-u-n-k-n-o-w-n/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace-object/-object-type/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace-object/-object-type/-a-r-r-a-y/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace-object/-object-type/-c-l-a-s-s/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace-object/-object-type/-i-n-s-t-a-n-c-e/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace-reference/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace-reference/-leak-trace-reference/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace-reference/origin-object/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace-reference/owning-class-name/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace-reference/owning-class-simple-name/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace-reference/reference-display-name/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace-reference/reference-generic-name/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace-reference/reference-name/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace-reference/reference-type/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace-reference/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace-reference/-reference-type/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace-reference/-reference-type/-a-r-r-a-y_-e-n-t-r-y/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace-reference/-reference-type/-i-n-s-t-a-n-c-e_-f-i-e-l-d/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace-reference/-reference-type/-l-o-c-a-l/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leak-trace-reference/-reference-type/-s-t-a-t-i-c_-f-i-e-l-d/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leaking-object-finder/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leaking-object-finder/find-leaking-object-ids/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leaking-object-finder/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-leaking-object-finder/-companion/invoke/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-library-leak/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-library-leak/-library-leak/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-library-leak/description/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-library-leak/leak-traces/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-library-leak/pattern/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-library-leak/short-description/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-library-leak/signature/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-library-leak/to-string/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-library-leak/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-library-leak-reference-matcher/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-library-leak-reference-matcher/-library-leak-reference-matcher/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-library-leak-reference-matcher/description/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-library-leak-reference-matcher/pattern-applies/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-library-leak-reference-matcher/pattern/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-library-leak-reference-matcher/to-string/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-metadata-extractor/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-metadata-extractor/extract-metadata/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-metadata-extractor/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-metadata-extractor/-companion/-n-o_-o-p/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-metadata-extractor/-companion/invoke/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-neo4-j-command/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-neo4-j-command/-neo4-j-command/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-neo4-j-command/run/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-neo4-j-command/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-neo4-j-command/-companion/-p-h-a-n-t-o-m_-r-e-f-e-r-e-n-c-e/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-neo4-j-command/-companion/-r-e-f-e-r-e-n-c-e/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-neo4-j-command/-companion/-s-o-f-t_-r-e-f-e-r-e-n-c-e/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-neo4-j-command/-companion/-w-e-a-k_-r-e-f-e-r-e-n-c-e/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-neo4-j-command/-companion/dump/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-neo4-j-command/-companion/heap-value-as-string/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-object-inspector/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-object-inspector/inspect/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-object-inspector/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-object-inspector/-companion/invoke/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-object-inspectors/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-object-inspectors/-a-n-o-n-y-m-o-u-s_-c-l-a-s-s/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-object-inspectors/-a-n-o-n-y-m-o-u-s_-c-l-a-s-s/inspect/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-object-inspectors/-c-l-a-s-s/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-object-inspectors/-c-l-a-s-s/inspect/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-object-inspectors/-c-l-a-s-s-l-o-a-d-e-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-object-inspectors/-c-l-a-s-s-l-o-a-d-e-r/inspect/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-object-inspectors/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-object-inspectors/-companion/create-leaking-object-filters/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-object-inspectors/-companion/jdk-defaults/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-object-inspectors/-companion/jdk-leaking-object-filters/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-object-inspectors/-k-e-y-e-d_-w-e-a-k_-r-e-f-e-r-e-n-c-e/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-object-inspectors/-k-e-y-e-d_-w-e-a-k_-r-e-f-e-r-e-n-c-e/inspect/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-object-inspectors/-t-h-r-e-a-d/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-object-inspectors/-t-h-r-e-a-d/inspect/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-object-reporter/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-object-reporter/-object-reporter/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-object-reporter/heap-object/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-object-reporter/labels/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-object-reporter/leaking-reasons/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-object-reporter/not-leaking-reasons/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-object-reporter/when-instance-of/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-on-analysis-progress-listener/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-on-analysis-progress-listener/on-analysis-progress/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-on-analysis-progress-listener/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-on-analysis-progress-listener/-companion/-n-o_-o-p/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-on-analysis-progress-listener/-companion/invoke/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-on-analysis-progress-listener/-step/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-on-analysis-progress-listener/-step/human-readable-name/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-on-analysis-progress-listener/-step/-b-u-i-l-d-i-n-g_-l-e-a-k_-t-r-a-c-e-s/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-on-analysis-progress-listener/-step/-c-o-m-p-u-t-i-n-g_-n-a-t-i-v-e_-r-e-t-a-i-n-e-d_-s-i-z-e/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-on-analysis-progress-listener/-step/-c-o-m-p-u-t-i-n-g_-r-e-t-a-i-n-e-d_-s-i-z-e/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-on-analysis-progress-listener/-step/-e-x-t-r-a-c-t-i-n-g_-m-e-t-a-d-a-t-a/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-on-analysis-progress-listener/-step/-f-i-n-d-i-n-g_-d-o-m-i-n-a-t-o-r-s/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-on-analysis-progress-listener/-step/-f-i-n-d-i-n-g_-p-a-t-h-s_-t-o_-r-e-t-a-i-n-e-d_-o-b-j-e-c-t-s/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-on-analysis-progress-listener/-step/-f-i-n-d-i-n-g_-r-e-t-a-i-n-e-d_-o-b-j-e-c-t-s/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-on-analysis-progress-listener/-step/-i-n-s-p-e-c-t-i-n-g_-o-b-j-e-c-t-s/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-on-analysis-progress-listener/-step/-p-a-r-s-i-n-g_-h-e-a-p_-d-u-m-p/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-on-analysis-progress-listener/-step/-r-e-p-o-r-t-i-n-g_-h-e-a-p_-a-n-a-l-y-s-i-s/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-on-hprof-record-listener/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-on-hprof-record-listener/on-hprof-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-on-hprof-record-listener/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-on-hprof-record-listener/-companion/invoke/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-on-hprof-record-tag-listener/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-on-hprof-record-tag-listener/on-hprof-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-on-hprof-record-tag-listener/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-on-hprof-record-tag-listener/-companion/invoke/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-primitive-type/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-primitive-type/byte-size/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-primitive-type/hprof-type/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-primitive-type/-b-o-o-l-e-a-n/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-primitive-type/-b-y-t-e/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-primitive-type/-c-h-a-r/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-primitive-type/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-primitive-type/-companion/-r-e-f-e-r-e-n-c-e_-h-p-r-o-f_-t-y-p-e/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-primitive-type/-companion/byte-size-by-hprof-type/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-primitive-type/-companion/primitive-type-by-hprof-type/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-primitive-type/-d-o-u-b-l-e/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-primitive-type/-f-l-o-a-t/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-primitive-type/-i-n-t/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-primitive-type/-l-o-n-g/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-primitive-type/-s-h-o-r-t/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-proguard-mapping/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-proguard-mapping/-proguard-mapping/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-proguard-mapping/add-mapping/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-proguard-mapping/deobfuscate-class-name/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-proguard-mapping/deobfuscate-field-name/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-proguard-mapping-helper/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-proguard-mapping-helper/-proguard-mapping-helper/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-proguard-mapping-helper/clazz/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-proguard-mapping-helper/field/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-proguard-mapping-helper/-class/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-proguard-mapping-helper/-class/-class/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-proguard-mapping-helper/-class/field-mappings/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-proguard-mapping-helper/-class/name-mapping/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-proguard-mapping-reader/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-proguard-mapping-reader/-proguard-mapping-reader/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-proguard-mapping-reader/read-proguard-mapping/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-proguard-mapping-reader/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-random-access-hprof-reader/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-random-access-hprof-reader/close/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-random-access-hprof-reader/read-record/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-random-access-hprof-reader/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-random-access-hprof-reader/-companion/open-reader-for/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-random-access-source/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-random-access-source/as-streaming-source/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-random-access-source/read/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-random-access-source-provider/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-random-access-source-provider/open-random-access-source/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-reference-matcher/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-reference-matcher/pattern/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-reference-pattern/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-reference-pattern/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-reference-pattern/-instance-field-pattern/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-reference-pattern/-instance-field-pattern/-instance-field-pattern/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-reference-pattern/-instance-field-pattern/class-name/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-reference-pattern/-instance-field-pattern/field-name/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-reference-pattern/-instance-field-pattern/to-string/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-reference-pattern/-instance-field-pattern/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-reference-pattern/-java-local-pattern/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-reference-pattern/-java-local-pattern/-java-local-pattern/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-reference-pattern/-java-local-pattern/thread-name/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-reference-pattern/-java-local-pattern/to-string/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-reference-pattern/-java-local-pattern/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-reference-pattern/-native-global-variable-pattern/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-reference-pattern/-native-global-variable-pattern/-native-global-variable-pattern/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-reference-pattern/-native-global-variable-pattern/class-name/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-reference-pattern/-native-global-variable-pattern/to-string/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-reference-pattern/-native-global-variable-pattern/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-reference-pattern/-static-field-pattern/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-reference-pattern/-static-field-pattern/-static-field-pattern/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-reference-pattern/-static-field-pattern/class-name/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-reference-pattern/-static-field-pattern/field-name/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-reference-pattern/-static-field-pattern/to-string/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-reference-pattern/-static-field-pattern/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-shark-cli-command/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-shark-cli-command/-shark-cli-command/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-shark-cli-command/run/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-shark-cli-command/-command-params/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-shark-cli-command/-command-params/-command-params/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-shark-cli-command/-command-params/obfuscation-mapping-path/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-shark-cli-command/-command-params/source/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-shark-cli-command/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-shark-cli-command/-companion/echo-newline/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-shark-cli-command/-companion/echo/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-shark-cli-command/-companion/retrieve-heap-dump-file/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-shark-cli-command/-companion/run-command/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-shark-cli-command/-companion/shark-cli-params/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-shark-cli-command/-heap-dump-source/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-shark-cli-command/-heap-dump-source/-hprof-file-source/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-shark-cli-command/-heap-dump-source/-hprof-file-source/-hprof-file-source/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-shark-cli-command/-heap-dump-source/-hprof-file-source/file/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-shark-cli-command/-heap-dump-source/-process-source/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-shark-cli-command/-heap-dump-source/-process-source/-process-source/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-shark-cli-command/-heap-dump-source/-process-source/device-id/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-shark-cli-command/-heap-dump-source/-process-source/process-name/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-shark-log/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-shark-log/d/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-shark-log/logger/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-shark-log/-logger/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-shark-log/-logger/d/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-streaming-hprof-reader/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-streaming-hprof-reader/read-records/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-streaming-hprof-reader/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-streaming-hprof-reader/-companion/reader-for/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-streaming-record-reader-adapter/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-streaming-record-reader-adapter/-streaming-record-reader-adapter/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-streaming-record-reader-adapter/read-records/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-streaming-record-reader-adapter/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-streaming-record-reader-adapter/-companion/as-hprof-tags/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-streaming-record-reader-adapter/-companion/as-streaming-record-reader/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-streaming-source-provider/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-streaming-source-provider/open-streaming-source/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-strip-hprof-command/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-strip-hprof-command/-strip-hprof-command/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-strip-hprof-command/run/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-throwing-cancelable-file-source-provider/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-throwing-cancelable-file-source-provider/-throwing-cancelable-file-source-provider/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-throwing-cancelable-file-source-provider/open-random-access-source/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-throwing-cancelable-file-source-provider/open-streaming-source/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-value-holder/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-value-holder/-boolean-holder/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-value-holder/-boolean-holder/-boolean-holder/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-value-holder/-boolean-holder/value/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-value-holder/-byte-holder/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-value-holder/-byte-holder/-byte-holder/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-value-holder/-byte-holder/value/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-value-holder/-char-holder/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-value-holder/-char-holder/-char-holder/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-value-holder/-char-holder/value/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-value-holder/-companion/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-value-holder/-companion/-n-u-l-l_-r-e-f-e-r-e-n-c-e/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-value-holder/-double-holder/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-value-holder/-double-holder/-double-holder/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-value-holder/-double-holder/value/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-value-holder/-float-holder/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-value-holder/-float-holder/-float-holder/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-value-holder/-float-holder/value/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-value-holder/-int-holder/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-value-holder/-int-holder/-int-holder/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-value-holder/-int-holder/value/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-value-holder/-long-holder/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-value-holder/-long-holder/-long-holder/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-value-holder/-long-holder/value/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-value-holder/-reference-holder/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-value-holder/-reference-holder/-reference-holder/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-value-holder/-reference-holder/is-null/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-value-holder/-reference-holder/value/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-value-holder/-short-holder/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-value-holder/-short-holder/-short-holder/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/api/shark/-value-holder/-short-holder/value/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
     <url>
          <loc>https://square.github.io/leakcanary/snippets/bugsnag-uploader/</loc>
-         <lastmod>2024-03-26</lastmod>
+         <lastmod>2024-04-18</lastmod>
          <changefreq>daily</changefreq>
     </url>
 </urlset>
\ No newline at end of file
diff --git a/sitemap.xml.gz b/sitemap.xml.gz
index cbc3032..d4b02a3 100644
--- a/sitemap.xml.gz
+++ b/sitemap.xml.gz
Binary files differ
diff --git a/snippets/bugsnag-uploader/index.html b/snippets/bugsnag-uploader/index.html
index b1efa8c..1cb1e66 100644
--- a/snippets/bugsnag-uploader/index.html
+++ b/snippets/bugsnag-uploader/index.html
@@ -75,7 +75,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/support/index.html b/support/index.html
index 465ef90..f91bf09 100644
--- a/support/index.html
+++ b/support/index.html
@@ -84,7 +84,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
diff --git a/ui-tests/index.html b/ui-tests/index.html
index c98413d..441a484 100644
--- a/ui-tests/index.html
+++ b/ui-tests/index.html
@@ -84,7 +84,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
@@ -886,9 +886,9 @@
 </div>
 <h2 id="getting-started">Getting started<a class="headerlink" href="#getting-started" title="Permanent link">&para;</a></h2>
 <p>LeakCanary provides an artifact dedicated to detecting leaks in UI tests:</p>
-<div class="highlight"><pre><span></span><code><span class="n">androidTestImplementation</span><span class="w"> </span><span class="s1">&#39;com.squareup.leakcanary:leakcanary-android-instrumentation:2.13&#39;</span>
+<div class="highlight"><pre><span></span><code><span class="n">androidTestImplementation</span><span class="w"> </span><span class="s1">&#39;com.squareup.leakcanary:leakcanary-android-instrumentation:2.14&#39;</span>
 <span class="c1">// You still need to include the LeakCanary artifact in your app:</span>
-<span class="n">debugImplementation</span><span class="w"> </span><span class="s1">&#39;com.squareup.leakcanary:leakcanary-android:2.13&#39;</span>
+<span class="n">debugImplementation</span><span class="w"> </span><span class="s1">&#39;com.squareup.leakcanary:leakcanary-android:2.14&#39;</span>
 </code></pre></div>
 <p>You can then call <code>LeakAssertions.assertNoLeaks()</code> at any point in your tests to check for leaks:</p>
 <div class="highlight"><pre><span></span><code><span class="kd">class</span><span class="w"> </span><span class="nc">CartTest</span><span class="w"> </span><span class="p">{</span>
diff --git a/upgrading-to-leakcanary-2.0/index.html b/upgrading-to-leakcanary-2.0/index.html
index b51c2d1..e099069 100644
--- a/upgrading-to-leakcanary-2.0/index.html
+++ b/upgrading-to-leakcanary-2.0/index.html
@@ -84,7 +84,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
@@ -1319,7 +1319,7 @@
 </code></pre></div>
 <h3 id="now">Now<a class="headerlink" href="#now" title="Permanent link">&para;</a></h3>
 <div class="highlight"><pre><span></span><code><span class="n">dependencies</span><span class="w"> </span><span class="o">{</span>
-<span class="w">  </span><span class="n">debugImplementation</span><span class="w"> </span><span class="s1">&#39;com.squareup.leakcanary:leakcanary-android:2.13&#39;</span>
+<span class="w">  </span><span class="n">debugImplementation</span><span class="w"> </span><span class="s1">&#39;com.squareup.leakcanary:leakcanary-android:2.14&#39;</span>
 <span class="o">}</span>
 </code></pre></div>
 <h3 id="worth-noting">Worth noting<a class="headerlink" href="#worth-noting" title="Permanent link">&para;</a></h3>
@@ -1364,7 +1364,7 @@
 <p>If you were using <code>RefWatcher</code> in non debug code, you now get a compile error because the no-op artifact is gone. <a href="/leakcanary/api/leakcanary-object-watcher/leakcanary/-object-watcher/">ObjectWatcher</a> now lives in the <code>object-watcher</code> artifact, which is suitable for release builds. You have two options:</p>
 <h3 id="option-1-add-object-watcher-android-to-release-builds">Option 1: Add <code>object-watcher-android</code> to release builds.<a class="headerlink" href="#option-1-add-object-watcher-android-to-release-builds" title="Permanent link">&para;</a></h3>
 <div class="highlight"><pre><span></span><code><span class="n">dependencies</span><span class="w"> </span><span class="o">{</span>
-<span class="w">  </span><span class="n">implementation</span><span class="w"> </span><span class="s1">&#39;com.squareup.leakcanary:leakcanary-object-watcher-android:2.13&#39;</span>
+<span class="w">  </span><span class="n">implementation</span><span class="w"> </span><span class="s1">&#39;com.squareup.leakcanary:leakcanary-object-watcher-android:2.14&#39;</span>
 <span class="o">}</span>
 </code></pre></div>
 <ul>
diff --git a/uploading/index.html b/uploading/index.html
index e181f25..71b800c 100644
--- a/uploading/index.html
+++ b/uploading/index.html
@@ -84,7 +84,7 @@
           <div class="md-banner__inner md-grid md-typeset">
             
              
-   Upgrade to <a href="../changelog/">LeakCanary <strong>2.13</strong></a> 🐤 Want to help?  <a href="../how_to_help/">Here's how you can contribute<a> 🙏
+   Upgrade to <a href="../changelog/">LeakCanary <strong>2.14</strong></a> 🐤 Want to help?  <a href="../how_to_help/">Here's how you can contribute<a> 🙏
 
           </div>
           
@@ -852,7 +852,7 @@
 Bugsnag Android client library to <code>build.gradle</code>:</p>
 <div class="highlight"><pre><span></span><code><span class="n">dependencies</span><span class="w"> </span><span class="o">{</span>
 <span class="w">  </span><span class="c1">// debugImplementation because LeakCanary should only run in debug builds.</span>
-<span class="w">  </span><span class="n">debugImplementation</span><span class="w"> </span><span class="s1">&#39;com.squareup.leakcanary:leakcanary-android:2.13&#39;</span>
+<span class="w">  </span><span class="n">debugImplementation</span><span class="w"> </span><span class="s1">&#39;com.squareup.leakcanary:leakcanary-android:2.14&#39;</span>
 <span class="w">  </span><span class="n">debugImplementation</span><span class="w"> </span><span class="s2">&quot;com.bugsnag:bugsnag-android:$bugsnagVersion&quot;</span>
 <span class="o">}</span>
 </code></pre></div>