An abstract domain for objects in dynamic programming languages