An late-bound interface inference framework for JavaScript