This seems to go in backwards order, so the older bindings trump the newer bindings:

e.g:

    >>> bound = IsBoundWith(a=10, b=20)
    >>> log = BoundLog(lambda: None, lambda: None)
    >>> log2 = log.bind(a=2, b=20).bind(a=10)
    >>> bound.match(log2)
    <testtools.matchers.Mismatch object at 110912650 attributes={'_details': {}, '_description': "Expected kwargs {'a': 10, 'b': 20} but got {'a': 2, 'b': 20} instead"}>