public static bool Intersects(this Rect3I rect, IPrimitive primitive)
        {
            switch (primitive)
            {
            case Line3I line:
                return(Intersects(rect, line));

            case Rect3I other:
                return(Intersects(rect, other));

            default:
                throw new NotImplementedException($"Unsupported intersectable primitive {primitive.GetType()}");
            }
        }
        public static bool Contains(this Rect3I rect, IPrimitive primitive)
        {
            switch (primitive)
            {
            case Point3I point:
                return(Contains(rect, point));

            case Line3I line:
                return(Contains(rect, line));

            case Rect3I other:
                return(Contains(rect, other));

            default:
                throw new NotSupportedException($"Unsupported containable primitive {primitive.GetType()}");
            }
        }
 public static bool Intersects(this Rect3I rect, Rect3I other)
 {
     throw new NotImplementedException();
 }
 public static bool Intersects(this Rect3I rect, Line3I line)
 {
     throw new NotImplementedException();
 }
 public static bool Contains(this Rect3I rect, Point3I point)
 {
     throw new NotImplementedException();
 }