| 119557 | var BuilderState; |
| 119558 | (function (BuilderState) { |
| 119559 | function createManyToManyPathMap() { |
| 119560 | function create(forward, reverse, deleted) { |
| 119561 | var map = { |
| 119562 | clone: function () { return create(new ts.Map(forward), new ts.Map(reverse), deleted && new ts.Set(deleted)); }, |
| 119563 | forEach: function (fn) { return forward.forEach(fn); }, |
| 119564 | getKeys: function (v) { return reverse.get(v); }, |
| 119565 | getValues: function (k) { return forward.get(k); }, |
| 119566 | hasKey: function (k) { return forward.has(k); }, |
| 119567 | keys: function () { return forward.keys(); }, |
| 119568 | deletedKeys: function () { return deleted; }, |
| 119569 | deleteKey: function (k) { |
| 119570 | (deleted || (deleted = new ts.Set())).add(k); |
| 119571 | var set = forward.get(k); |
| 119572 | if (!set) { |
| 119573 | return false; |
| 119574 | } |
| 119575 | set.forEach(function (v) { return deleteFromMultimap(reverse, v, k); }); |
| 119576 | forward.delete(k); |
| 119577 | return true; |
| 119578 | }, |
| 119579 | set: function (k, vSet) { |
| 119580 | deleted === null || deleted === void 0 ? void 0 : deleted.delete(k); |
| 119581 | var existingVSet = forward.get(k); |
| 119582 | forward.set(k, vSet); |
| 119583 | existingVSet === null || existingVSet === void 0 ? void 0 : existingVSet.forEach(function (v) { |
| 119584 | if (!vSet.has(v)) { |
| 119585 | deleteFromMultimap(reverse, v, k); |
| 119586 | } |
| 119587 | }); |
| 119588 | vSet.forEach(function (v) { |
| 119589 | if (!(existingVSet === null || existingVSet === void 0 ? void 0 : existingVSet.has(v))) { |
| 119590 | addToMultimap(reverse, v, k); |
| 119591 | } |
| 119592 | }); |
| 119593 | return map; |
| 119594 | }, |
| 119595 | clear: function () { |
| 119596 | forward.clear(); |
| 119597 | reverse.clear(); |
| 119598 | deleted === null || deleted === void 0 ? void 0 : deleted.clear(); |
| 119599 | } |
| 119600 | }; |
| 119601 | return map; |
| 119602 | } |
| 119603 | return create(new ts.Map(), new ts.Map(), /*deleted*/ undefined); |
| 119604 | } |
| 119605 | BuilderState.createManyToManyPathMap = createManyToManyPathMap; |
| 119606 | function addToMultimap(map, k, v) { |
| 119607 | var set = map.get(k); |