Perhaps rename to `Shape2D`? (another option would be to have something like `Shape<V extends Vector<V>, T extends Shape<V, T>>`)