(T value)
| 74 | } |
| 75 | |
| 76 | T addAndReplace(T value) { |
| 77 | PersistentSet.Path<Cell<T>> p = set.find(new Cell(value, null)); |
| 78 | if (p.fresh()) { |
| 79 | set = p.add(); |
| 80 | return null; |
| 81 | } else { |
| 82 | T old = p.value().value; |
| 83 | set = p.replaceWith(new Cell(value, null)); |
| 84 | return old; |
| 85 | } |
| 86 | } |
| 87 | |
| 88 | T find(T value) { |
| 89 | PersistentSet.Path<Cell<T>> p = set.find(new Cell(value, null)); |