private static void BrowseTables(Table table, DatabaseDictionary <TableID, Table> seenTables, DatabaseDictionary <TableID, Table> notSeen, List <Table> cluster) { cluster.Add(table); notSeen.Remove(table); seenTables.Add(table, table); foreach (var reference in table.References.Concat(table.ReferencedBy)) { if (seenTables.ContainsKey(reference) || !SchemaID.SchemaEquals(reference.Schema, table.Schema)) { continue; } else { BrowseTables(reference, seenTables, notSeen, cluster); } } }