“…These approaches di er signi cantly in the way protocols are speci ed, including typestates [33,15,26,19,17,7], type quali ers [20], size properties [13], direct constraints on ordering [24,10,30], type re nements [29,14], rst-order [27,2] or separation logic [32], and various temporal logics [23]. In these approaches, like in ours, usage rules of the API(s) of interest have to be codi ed by a developer.…”