Theoretical Aspects of Object–Oriented Programming – Types, Semantics & Language Design - Carl A Gunter