pub trait Tipable {
// Required methods
fn angle_at_end(&self) -> f32;
fn angle_at_start(&self) -> f32;
fn end(&self) -> Point2D;
fn start(&self) -> Point2D;
// Provided methods
fn tip_at_end(&self, shape: VectorObjectBuilder) -> VectorObjectBuilder { ... }
fn tip_at_start(&self, shape: VectorObjectBuilder) -> VectorObjectBuilder { ... }
}