I. Introduction
Incorrect usages of an Application Programming Interface (API), or API misuses, are violations of (implicit) usage constraints of the API. An example of a usage constraint is having to check that hasNext() returns true before calling next() on an Iterator, in order to avoid a NoSuchElementException at runtime. API misuse is a prevalent cause of software bugs, crashes, and vulnerabilities [1]– [7].