Ruckus
class Class<T extends Class<T>>
abstract class Vector<T extends Vector<T>>
public class Vector2 extends Vector<Vector2>