| 604 | } |
| 605 | |
| 606 | takeFromLeft(lhs: BNode<K, V>) { |
| 607 | // Reminder: parent node must update its copy of key for this node |
| 608 | // assert: neither node is shared |
| 609 | // assert rhs.keys.length > (maxNodeSize/2 && this.keys.length<maxNodeSize) |
| 610 | let v = this.values |
| 611 | if (lhs.values === undefVals) { |
| 612 | if (v !== undefVals) v.unshift(undefined as any) |
| 613 | } else { |
| 614 | v = this.reifyValues() |
| 615 | v.unshift(lhs.values.pop()!) |
| 616 | } |
| 617 | this.keys.unshift(lhs.keys.pop()!) |
| 618 | } |
| 619 | |
| 620 | splitOffRightSide(): BNode<K, V> { |
| 621 | // Reminder: parent node must update its copy of key for this node |