Abstract versus parameterized types