semantic: Implement abstract classes.
test: Add abstract class tests.