pub trait Geometry {
// Required methods
fn points(&self) -> Vec<&DirectPosition>;
fn apply_transform(&mut self, m: &Isometry3<f64>);
// Provided methods
fn get_lower_corner(&self) -> DirectPosition { ... }
fn get_upper_corner(&self) -> DirectPosition { ... }
fn envelope(&self) -> Envelope { ... }
}