A generic framework for heap and value analyses of object-oriented programming languages