“…Such a specification should, for example, assert that communication libraries (e.g., Apache's [1] libraries) require a connection to be established before data is sent. Numerous techniques have been proposed to that end [3,4,10,15,19,20,32,33,41,46]. These techniques either (1) infer finite state machine (FSM) models that match the observed executions [3,4,9,20,32,38,44], or (2) identify the declarative class and method invariants by considering a library's state (i.e., its internal variables) [10,19,45].…”