in multiset_codec/msbst.py [0:0]
def insert_then_forward_lookup(multiset, x):
''' Performs insert followed by forward_lookup, in one-pass.'''
size, y, left, right = multiset or (0, x, (), ())
size = size + 1
if x > y:
right, (start_right, freq) = insert_then_forward_lookup(right, x)
start = size - right[0] + start_right
elif x < y:
left, (start, freq) = insert_then_forward_lookup(left, x)
else:
start = left[0] if left else 0
freq = size - start - (right[0] if right else 0)
return (size, y, left, right), (start, freq)