internal static LocationReport Find(TabablzControl tabablzControl) { if (tabablzControl == null) { throw new ArgumentNullException(nameof(tabablzControl)); } var locationReportBuilder = new LocationReportBuilder(tabablzControl); foreach (var loadedInstance in Layout.GetLoadedInstances()) { locationReportBuilder.CurrentLayout = loadedInstance; loadedInstance.Query().Visit( locationReportBuilder, BranchVisitor, TabablzControlVisitor ); if (locationReportBuilder.IsFound) { break; } } if (!locationReportBuilder.IsFound) { throw new LocationReportException("Instance not within any layout."); } return(locationReportBuilder.ToLocationReport()); }