How Object-Oriented Languages Work