internal abstract void ExpandToInclude(ShapeBase other, Direction edge);
internal abstract void ShrinkToRange(ShapeBase other);
internal abstract void ExpandToInclude(ShapeBase other, Direction edge);
internal abstract void ShrinkToRange(ShapeBase other);