Code and specs from DuckDuckGo NPE reported in https://github.com/duckduckgo/android-search-and-stories/issues/207 We give the code followed by a printout of the summary found for each of three methods. src/com/duckduckgo/mobile/android/activity/DuckDuckGo.java:867: error: NULL_DEREFERENCE object feedObject last assigned on line 866 could be null and is dereferenced by call to feedItemSelected(...) at line 867 src/com/duckduckgo/mobile/android/activity/DuckDuckGo.java 864 865 public void feedItemSelected(String feedId) { 866 FeedObject feedObject = DDGApplication.getDB().selectFeedById(feedId); 867 feedItemSelected(feedObject); 868 } 869 $ # feedItemSelected(String) $ infer report infer-out/specs/com.duckduckgo.mobile.android.activity.DuckDuckGo.feedItemSelected\(java.lang.String\)\:void.83caa2b1e39528d7d237f47377922d8b.specs Procedure: void DuckDuckGo.feedItemSelected(String) void void DuckDuckGo.feedItemSelected(String)(com.duckduckgo.mobile.android.activity.DuckDuckGo* this, java.lang.String* feedId) Analyzed Phase: RE_EXECUTION ERRORS: NULL_DEREFERENCE WARNINGS: FAILURE:NONE SYMOPS:52 PrePosts: --------------------------- 1 of 2 [nvisited:] --------------------------- PRE: val$12 != 0 ; #GB$com.duckduckgo.mobile.android.DDGApplication = {com.duckduckgo.mobile.android.DDGApplication.db:val$14}: ; #GB$com.duckduckgo.mobile.android.util.DDGControlVar = {com.duckduckgo.mobile.android.util.DDGControlVar.currentFeedObject:val$10, com.duckduckgo.mobile.android.util.DDGControlVar.mDuckDuckGoContainer:val$11, com.duckduckgo.mobile.android.util.DDGControlVar.useExternalBrowser:val$12}: ; #GB$com.duckduckgo.mobile.android.util.DDGControlVar = {com.duckduckgo.mobile.android.util.DDGControlVar.currentFeedObject:val$6, com.duckduckgo.mobile.android.util.DDGControlVar.mCleanSearchBar:val$7, com.duckduckgo.mobile.android.util.DDGControlVar.mDuckDuckGoContainer:val$8}: ; #GB$com.duckduckgo.mobile.android.bus.BusProvider = {com.duckduckgo.mobile.android.bus.BusProvider.BUS:val$5}: ; feedId = val$4: ; this = val$2: ; #GB$com.duckduckgo.mobile.android.util.SESSIONTYPE = {com.duckduckgo.mobile.android.util.SESSIONTYPE.SESSION_FEED:val$1}: ; #GB$com.duckduckgo.mobile.android.util.SESSIONTYPE = {com.duckduckgo.mobile.android.util.SESSIONTYPE.SESSION_FEED:val$1}: ; val$15|->{}: ; val$14|->{com.duckduckgo.mobile.android.db.DdgDB.db:val$15}: ; val$11|->{com.duckduckgo.mobile.android.container.DuckDuckGoContainer.sessionType:val$13}: ; val$8|->{com.duckduckgo.mobile.android.container.DuckDuckGoContainer.sessionType:val$9}: ; val$5|->{}: ; val$3|->{}: ; this|->{com.duckduckgo.mobile.android.activity.DuckDuckGo.fragmentManager:val$3}: ------------------------------------------------------------------------------------------- 2 of 2 [nvisited:] --------------------------- PRE: #GB$com.duckduckgo.mobile.android.util.SCREEN = {com.duckduckgo.mobile.android.util.SCREEN.SCR_WEBVIEW:val$25}: ; #GB$com.duckduckgo.mobile.android.DDGApplication = {com.duckduckgo.mobile.android.DDGApplication.db:val$23}: ; #GB$com.duckduckgo.mobile.android.util.DDGControlVar = {com.duckduckgo.mobile.android.util.DDGControlVar.currentFeedObject:val$20, com.duckduckgo.mobile.android.util.DDGControlVar.mDuckDuckGoContainer:val$21}: ; #GB$com.duckduckgo.mobile.android.util.DDGControlVar = {com.duckduckgo.mobile.android.util.DDGControlVar.currentFeedObject:val$14, com.duckduckgo.mobile.android.util.DDGControlVar.hasUpdatedFeed:val$15, com.duckduckgo.mobile.android.util.DDGControlVar.mCleanSearchBar:val$16, com.duckduckgo.mobile.android.util.DDGControlVar.mDuckDuckGoContainer:val$17, com.duckduckgo.mobile.android.util.DDGControlVar.useExternalBrowser:0}: ; #GB$com.duckduckgo.mobile.android.bus.BusProvider = {com.duckduckgo.mobile.android.bus.BusProvider.BUS:val$13}: ; feedId = val$12: ; #GB$com.duckduckgo.mobile.android.actionbar.DDGActionBarManager = {com.duckduckgo.mobile.android.actionbar.DDGActionBarManager.DDG_ACTION_BAR_MANAGER:val$8}: ; #GB$com.duckduckgo.mobile.android.activity.DuckDuckGo$7 = {com.duckduckgo.mobile.android.activity.DuckDuckGo$7.$SwitchMap$com$duckduckgo$mobile$android$util$SCREEN:val$5}: ; this = val$3: ; #GB$com.duckduckgo.mobile.android.util.SESSIONTYPE = {com.duckduckgo.mobile.android.util.SESSIONTYPE.SESSION_BROWSE:val$2}: ; #GB$com.duckduckgo.mobile.android.util.SESSIONTYPE = {com.duckduckgo.mobile.android.util.SESSIONTYPE.SESSION_FEED:val$1}: ; val$25|->{}: ; val$24|->{}: ; val$23|->{com.duckduckgo.mobile.android.db.DdgDB.db:val$24}: ; val$21|->{com.duckduckgo.mobile.android.container.DuckDuckGoContainer.sessionType:val$22}: ; val$17|->{com.duckduckgo.mobile.android.container.DuckDuckGoContainer.sessionType:val$18, com.duckduckgo.mobile.android.container.DuckDuckGoContainer.webviewShowing:val$19}: ; val$13|->{}: ; val$11|->{}: ; val$10|->{}: ; val$8|->{com.duckduckgo.mobile.android.actionbar.DDGActionBarManager.oldProgress:val$9, com.duckduckgo.mobile.android.actionbar.DDGActionBarManager.progressBar:val$10, com.duckduckgo.mobile.android.actionbar.DDGActionBarManager.searchField:val$11}: ; val$5|->[val$6|val$7:1]: ; val$4|->{}: ; this|->{com.duckduckgo.mobile.android.activity.DuckDuckGo.fragmentManager:val$4}: ---------------------------------------------------------------- src/com/duckduckgo/mobile/android/db/DdgDB.java 483 public FeedObject selectFeedById(String id){ 484 FeedObject out = null; 485 Cursor c = null; 486 try { 487 c = this.db.query(FEED_TABLE, null, "_id=?", new String[]{id}, null, null, null); 488 if (c.moveToFirst()) { 489 out = getFeedObject(c); 490 } 491 } finally { 492 if(c!=null) { 493 c.close(); 494 } 495 } 496 return out; 497 } $ # selectFeedById(String) $ infer report infer-out/specs/com.duckduckgo.mobile.android.db.DdgDB.selectFeedById\(java.lang.String\)\:com.duckduckgo.mobile.androi.d11517e7c5dc565f1bc2d27f8905d926.specs Procedure: FeedObject DdgDB.selectFeedById(String) com.duckduckgo.mobile.android.objects.FeedObject* FeedObject DdgDB.selectFeedById(String)(com.duckduckgo.mobile.android.db.DdgDB* this, java.lang.String* id) Analyzed Phase: RE_EXECUTION ERRORS: WARNINGS: FAILURE:NONE SYMOPS:219 PrePosts: --------------------------- 1 of 1 [nvisited: 483 484 485 487 488 489 492 493 496] --------------------------- PRE: this = val$2: ; id = val$1: ; val$3|->{}: ; this|->{com.duckduckgo.mobile.android.db.DdgDB.db:val$3}: POST 1 of 2: return = null: ; this = val$2: ; id = val$1: ; val$3|->{}: ; this|->{com.duckduckgo.mobile.android.db.DdgDB.db:val$3}: POST 2 of 2: val$16 != 0 ; val$15 != 0 ; val$14 != 0 ; val$13 != 0 ; val$12 != 0 ; val$11 != 0 ; val$10 != 0 ; val$9 != 0 ; val$8 != 0 ; val$7 != 0 ; val$6 != 0 ; val$5 != 0 ; MEMne(return) ; UND:309(val$16) ; UND:314(val$15) ; UND:306(val$14) ; UND:312(val$13) ; UND:310(val$12) ; UND:305(val$11) ; UND:316(val$10) ; UND:308(val$9) ; UND:311(val$8) ; UND:307(val$7) ; UND:313(val$6) ; UND:315(val$5) ; return = val$4: ; this = val$2: ; id = val$1: ; return|->{com.duckduckgo.mobile.android.objects.FeedObject.articleUrl:val$5, com.duckduckgo.mobile.android.objects.FeedObject.category:val$6, com.duckduckgo.mobile.android.objects.FeedObject.description:val$7, com.duckduckgo.mobile.android.objects.FeedObject.favicon:val$8, com.duckduckgo.mobile.android.objects.FeedObject.feed:val$9, com.duckduckgo.mobile.android.objects.FeedObject.hidden:val$10, com.duckduckgo.mobile.android.objects.FeedObject.html:"", com.duckduckgo.mobile.android.objects.FeedObject.id:val$11, com.duckduckgo.mobile.android.objects.FeedObject.imageUrl:val$12, com.duckduckgo.mobile.android.objects.FeedObject.timestamp:val$13, com.duckduckgo.mobile.android.objects.FeedObject.title:val$14, com.duckduckgo.mobile.android.objects.FeedObject.type:val$15, com.duckduckgo.mobile.android.objects.FeedObject.url:val$16}: ; val$3|->{}: ; this|->{com.duckduckgo.mobile.android.db.DdgDB.db:val$3}: ---------------------------------------------------------------- ********************************** src/com/duckduckgo/mobile/android/activity/DuckDuckGo.java 842 public void feedItemSelected(FeedObject feedObject) { 843 // keep a reference, so that we can reuse details while saving 844 DDGControlVar.currentFeedObject = feedObject; 845 DDGControlVar.mDuckDuckGoContainer.sessionType = SESSIONTYPE.SESSION_FEED; 846 847 String url = feedObject.getUrl(); 848 if (url != null) { 849 //if(!DDGApplication.getDB().existsVisibleFeedById(feedObject.getId())) { 850 if(!DDGApplication.getDB().existsFavoriteFeedById(feedObject.getId())) { 851 DDGApplication.getDB().insertFeedItem(feedObject); 852 //BusProvider.getInstance().post(new RequestSyncAdaptersEvent()); 853 syncAdapters(); 854 855 } else { 856 DDGApplication.getDB().insertFeedItemToHistory(feedObject.getTitle(), feedObject.getUrl(), feedObject.getType(), feedObject.getId()); 857 //BusProvider.getInstance().post(new RequestSyncAdaptersEvent()); 858 syncAdapters(); 859 } 860 //BusProvider.getInstance().post(new RequestOpenWebPageEvent(url, SESSION TYPE.SESSION_FEED)); 861 searchOrGoToUrl(url, SESSIONTYPE.SESSION_FEED); 862 } 863 } $ # feedItemSelected(FeedObject) $ infer report infer-out/specs/com.duckduckgo.mobile.android.activity.DuckDuckGo.feedItemSelected\(com.duckduckgo.mobile.android.obj.f8a269c78c7fc499d634ef6092a46276.specs Procedure: void DuckDuckGo.feedItemSelected(FeedObject) void void DuckDuckGo.feedItemSelected(FeedObject)(com.duckduckgo.mobile.android.activity.DuckDuckGo* this, com.duckduckgo.mobile.android.objects.FeedObject* feedObject) Analyzed Phase: RE_EXECUTION ERRORS: WARNINGS: RETURN_VALUE_IGNORED after call to `insertFeedItem(...)` at line 851 FAILURE:NONE SYMOPS:238 PrePosts: --------------------------- 1 of 5 [nvisited: 842 844 845 847 848 863] --------------------------- PRE: feedObject = val$6: ; #GB$com.duckduckgo.mobile.android.util.DDGControlVar = {com.duckduckgo.mobile.android.util.DDGControlVar.currentFeedObject:val$3, com.duckduckgo.mobile.android.util.DDGControlVar.mDuckDuckGoContainer:val$4}: ; this = val$2: ; #GB$com.duckduckgo.mobile.android.util.SESSIONTYPE = {com.duckduckgo.mobile.android.util.SESSIONTYPE.SESSION_FEED:val$1}: ; feedObject|->{com.duckduckgo.mobile.android.objects.FeedObject.url:null}: ; val$4|->{com.duckduckgo.mobile.android.container.DuckDuckGoContainer.sessionType:val$5}: POST 1 of 1: feedObject = val$6: ; #GB$com.duckduckgo.mobile.android.util.DDGControlVar = {com.duckduckgo.mobile.android.util.DDGControlVar.currentFeedObject:feedObject, com.duckduckgo.mobile.android.util.DDGControlVar.mDuckDuckGoContainer:val$4}: ; return = val$7: ; this = val$2: ; #GB$com.duckduckgo.mobile.android.util.SESSIONTYPE = {com.duckduckgo.mobile.android.util.SESSIONTYPE.SESSION_FEED:val$1}: ; feedObject|->{com.duckduckgo.mobile.android.objects.FeedObject.url:null}: ; val$4|->{com.duckduckgo.mobile.android.container.DuckDuckGoContainer.sessionType:val$1}: ------------------------------------------------------------------------------------------- 2 of 5 [nvisited:] --------------------------- PRE: val$19 != null ; val$11 != 0 ; feedObject = val$15: ; #GB$com.duckduckgo.mobile.android.DDGApplication = {com.duckduckgo.mobile.android.DDGApplication.db:val$13}: ; #GB$com.duckduckgo.mobile.android.util.DDGControlVar = {com.duckduckgo.mobile.android.util.DDGControlVar.currentFeedObject:val$9, com.duckduckgo.mobile.android.util.DDGControlVar.mDuckDuckGoContainer:val$10, com.duckduckgo.mobile.android.util.DDGControlVar.useExternalBrowser:val$11}: ; #GB$com.duckduckgo.mobile.android.util.DDGControlVar = {com.duckduckgo.mobile.android.util.DDGControlVar.currentFeedObject:val$5, com.duckduckgo.mobile.android.util.DDGControlVar.mCleanSearchBar:val$6, com.duckduckgo.mobile.android.util.DDGControlVar.mDuckDuckGoContainer:val$7}: ; #GB$com.duckduckgo.mobile.android.bus.BusProvider = {com.duckduckgo.mobile.android.bus.BusProvider.BUS:val$4}: ; this = val$2: ; #GB$com.duckduckgo.mobile.android.util.SESSIONTYPE = {com.duckduckgo.mobile.android.util.SESSIONTYPE.SESSION_FEED:val$1}: ; #GB$com.duckduckgo.mobile.android.util.SESSIONTYPE = {com.duckduckgo.mobile.android.util.SESSIONTYPE.SESSION_FEED:val$1}: ; feedObject|->{com.duckduckgo.mobile.android.objects.FeedObject.id:val$16, com.duckduckgo.mobile.android.objects.FeedObject.title:val$17, com.duckduckgo.mobile.android.objects.FeedObject.type:val$18, com.duckduckgo.mobile.android.objects.FeedObject.url:val$19}: ; val$14|->{}: ; val$13|->{com.duckduckgo.mobile.android.db.DdgDB.db:val$14}: ; val$10|->{com.duckduckgo.mobile.android.container.DuckDuckGoContainer.sessionType:val$12}: ; val$7|->{com.duckduckgo.mobile.android.container.DuckDuckGoContainer.sessionType:val$8}: ; val$4|->{}: ; val$3|->{}: ; this|->{com.duckduckgo.mobile.android.activity.DuckDuckGo.fragmentManager:val$3}: ------------------------------------------------------------------------------------------- 3 of 5 [nvisited:] --------------------------- PRE: val$20 != null ; val$11 != 0 ; feedObject = val$15: ; #GB$com.duckduckgo.mobile.android.DDGApplication = {com.duckduckgo.mobile.android.DDGApplication.db:val$13}: ; #GB$com.duckduckgo.mobile.android.util.DDGControlVar = {com.duckduckgo.mobile.android.util.DDGControlVar.currentFeedObject:val$9, com.duckduckgo.mobile.android.util.DDGControlVar.mDuckDuckGoContainer:val$10, com.duckduckgo.mobile.android.util.DDGControlVar.useExternalBrowser:val$11}: ; #GB$com.duckduckgo.mobile.android.util.DDGControlVar = {com.duckduckgo.mobile.android.util.DDGControlVar.currentFeedObject:val$5, com.duckduckgo.mobile.android.util.DDGControlVar.mCleanSearchBar:val$6, com.duckduckgo.mobile.android.util.DDGControlVar.mDuckDuckGoContainer:val$7}: ; #GB$com.duckduckgo.mobile.android.bus.BusProvider = {com.duckduckgo.mobile.android.bus.BusProvider.BUS:val$4}: ; this = val$2: ; #GB$com.duckduckgo.mobile.android.util.SESSIONTYPE = {com.duckduckgo.mobile.android.util.SESSIONTYPE.SESSION_FEED:val$1}: ; #GB$com.duckduckgo.mobile.android.util.SESSIONTYPE = {com.duckduckgo.mobile.android.util.SESSIONTYPE.SESSION_FEED:val$1}: ; feedObject|->{com.duckduckgo.mobile.android.objects.FeedObject.hidden:val$16, com.duckduckgo.mobile.android.objects.FeedObject.id:val$17, com.duckduckgo.mobile.android.objects.FeedObject.title:val$18, com.duckduckgo.mobile.android.objects.FeedObject.type:val$19, com.duckduckgo.mobile.android.objects.FeedObject.url:val$20}: ; val$14|->{}: ; val$13|->{com.duckduckgo.mobile.android.db.DdgDB.db:val$14}: ; val$10|->{com.duckduckgo.mobile.android.container.DuckDuckGoContainer.sessionType:val$12}: ; val$7|->{com.duckduckgo.mobile.android.container.DuckDuckGoContainer.sessionType:val$8}: ; val$4|->{}: ; val$3|->{}: ; this|->{com.duckduckgo.mobile.android.activity.DuckDuckGo.fragmentManager:val$3}: ------------------------------------------------------------------------------------------- 4 of 5 [nvisited:] --------------------------- PRE: val$29 != null ; feedObject = val$25: ; #GB$com.duckduckgo.mobile.android.util.SCREEN = {com.duckduckgo.mobile.android.util.SCREEN.SCR_WEBVIEW:val$24}: ; #GB$com.duckduckgo.mobile.android.DDGApplication = {com.duckduckgo.mobile.android.DDGApplication.db:val$22}: ; #GB$com.duckduckgo.mobile.android.util.DDGControlVar = {com.duckduckgo.mobile.android.util.DDGControlVar.currentFeedObject:val$19, com.duckduckgo.mobile.android.util.DDGControlVar.mDuckDuckGoContainer:val$20}: ; #GB$com.duckduckgo.mobile.android.util.DDGControlVar = {com.duckduckgo.mobile.android.util.DDGControlVar.currentFeedObject:val$13, com.duckduckgo.mobile.android.util.DDGControlVar.hasUpdatedFeed:val$14, com.duckduckgo.mobile.android.util.DDGControlVar.mCleanSearchBar:val$15, com.duckduckgo.mobile.android.util.DDGControlVar.mDuckDuckGoContainer:val$16, com.duckduckgo.mobile.android.util.DDGControlVar.useExternalBrowser:0}: ; #GB$com.duckduckgo.mobile.android.bus.BusProvider = {com.duckduckgo.mobile.android.bus.BusProvider.BUS:val$12}: ; #GB$com.duckduckgo.mobile.android.actionbar.DDGActionBarManager = {com.duckduckgo.mobile.android.actionbar.DDGActionBarManager.DDG_ACTION_BAR_MANAGER:val$8}: ; #GB$com.duckduckgo.mobile.android.activity.DuckDuckGo$7 = {com.duckduckgo.mobile.android.activity.DuckDuckGo$7.$SwitchMap$com$duckduckgo$mobile$android$util$SCREEN:val$5}: ; this = val$3: ; #GB$com.duckduckgo.mobile.android.util.SESSIONTYPE = {com.duckduckgo.mobile.android.util.SESSIONTYPE.SESSION_BROWSE:val$2}: ; #GB$com.duckduckgo.mobile.android.util.SESSIONTYPE = {com.duckduckgo.mobile.android.util.SESSIONTYPE.SESSION_FEED:val$1}: ; feedObject|->{com.duckduckgo.mobile.android.objects.FeedObject.id:val$26, com.duckduckgo.mobile.android.objects.FeedObject.title:val$27, com.duckduckgo.mobile.android.objects.FeedObject.type:val$28, com.duckduckgo.mobile.android.objects.FeedObject.url:val$29}: ; val$24|->{}: ; val$23|->{}: ; val$22|->{com.duckduckgo.mobile.android.db.DdgDB.db:val$23}: ; val$20|->{com.duckduckgo.mobile.android.container.DuckDuckGoContainer.sessionType:val$21}: ; val$16|->{com.duckduckgo.mobile.android.container.DuckDuckGoContainer.sessionType:val$17, com.duckduckgo.mobile.android.container.DuckDuckGoContainer.webviewShowing:val$18}: ; val$12|->{}: ; val$11|->{}: ; val$10|->{}: ; val$8|->{com.duckduckgo.mobile.android.actionbar.DDGActionBarManager.oldProgress:val$9, com.duckduckgo.mobile.android.actionbar.DDGActionBarManager.progressBar:val$10, com.duckduckgo.mobile.android.actionbar.DDGActionBarManager.searchField:val$11}: ; val$5|->[val$6|val$7:1]: ; val$4|->{}: ; this|->{com.duckduckgo.mobile.android.activity.DuckDuckGo.fragmentManager:val$4}: ------------------------------------------------------------------------------------------- 5 of 5 [nvisited:] --------------------------- PRE: val$30 != null ; feedObject = val$25: ; #GB$com.duckduckgo.mobile.android.util.SCREEN = {com.duckduckgo.mobile.android.util.SCREEN.SCR_WEBVIEW:val$24}: ; #GB$com.duckduckgo.mobile.android.DDGApplication = {com.duckduckgo.mobile.android.DDGApplication.db:val$22}: ; #GB$com.duckduckgo.mobile.android.util.DDGControlVar = {com.duckduckgo.mobile.android.util.DDGControlVar.currentFeedObject:val$19, com.duckduckgo.mobile.android.util.DDGControlVar.mDuckDuckGoContainer:val$20}: ; #GB$com.duckduckgo.mobile.android.util.DDGControlVar = {com.duckduckgo.mobile.android.util.DDGControlVar.currentFeedObject:val$13, com.duckduckgo.mobile.android.util.DDGControlVar.hasUpdatedFeed:val$14, com.duckduckgo.mobile.android.util.DDGControlVar.mCleanSearchBar:val$15, com.duckduckgo.mobile.android.util.DDGControlVar.mDuckDuckGoContainer:val$16, com.duckduckgo.mobile.android.util.DDGControlVar.useExternalBrowser:0}: ; #GB$com.duckduckgo.mobile.android.bus.BusProvider = {com.duckduckgo.mobile.android.bus.BusProvider.BUS:val$12}: ; #GB$com.duckduckgo.mobile.android.actionbar.DDGActionBarManager = {com.duckduckgo.mobile.android.actionbar.DDGActionBarManager.DDG_ACTION_BAR_MANAGER:val$8}: ; #GB$com.duckduckgo.mobile.android.activity.DuckDuckGo$7 = {com.duckduckgo.mobile.android.activity.DuckDuckGo$7.$SwitchMap$com$duckduckgo$mobile$android$util$SCREEN:val$5}: ; this = val$3: ; #GB$com.duckduckgo.mobile.android.util.SESSIONTYPE = {com.duckduckgo.mobile.android.util.SESSIONTYPE.SESSION_BROWSE:val$2}: ; #GB$com.duckduckgo.mobile.android.util.SESSIONTYPE = {com.duckduckgo.mobile.android.util.SESSIONTYPE.SESSION_FEED:val$1}: ; feedObject|->{com.duckduckgo.mobile.android.objects.FeedObject.hidden:val$26, com.duckduckgo.mobile.android.objects.FeedObject.id:val$27, com.duckduckgo.mobile.android.objects.FeedObject.title:val$28, com.duckduckgo.mobile.android.objects.FeedObject.type:val$29, com.duckduckgo.mobile.android.objects.FeedObject.url:val$30}: ; val$24|->{}: ; val$23|->{}: ; val$22|->{com.duckduckgo.mobile.android.db.DdgDB.db:val$23}: ; val$20|->{com.duckduckgo.mobile.android.container.DuckDuckGoContainer.sessionType:val$21}: ; val$16|->{com.duckduckgo.mobile.android.container.DuckDuckGoContainer.sessionType:val$17, com.duckduckgo.mobile.android.container.DuckDuckGoContainer.webviewShowing:val$18}: ; val$12|->{}: ; val$11|->{}: ; val$10|->{}: ; val$8|->{com.duckduckgo.mobile.android.actionbar.DDGActionBarManager.oldProgress:val$9, com.duckduckgo.mobile.android.actionbar.DDGActionBarManager.progressBar:val$10, com.duckduckgo.mobile.android.actionbar.DDGActionBarManager.searchField:val$11}: ; val$5|->[val$6|val$7:1]: ; val$4|->{}: ; this|->{com.duckduckgo.mobile.android.activity.DuckDuckGo.fragmentManager:val$4}: ---------------------------------------------------------------- ****************************