Returns a high precision and more accurate bounding box of the

`Shape`

than the

`getBounds`

method. Note that there is no guarantee that the returned

`Rectangle2D`

is the smallest bounding box that encloses the

`Shape`

, only that the

`Shape`

lies entirely within the indicated

`Rectangle2D`

. The bounding box returned by this method is usually tighter than that returned by the

`getBounds`

method and never fails due to overflow problems since the return value can be an instance of the

`Rectangle2D`

that uses double precision values to store the dimensions.

Note that the definition of insideness can lead to situations where points on the defining outline of the `shape`

may not be considered contained in the returned `bounds`

object, but only in cases where those points are also not considered contained in the original `shape`

.

If a `point`

is inside the `shape`

according to the `contains(point)`

method, then it must be inside the returned `Rectangle2D`

bounds object according to the `contains(point)`

method of the `bounds`

. Specifically:

`shape.contains(p)`

requires `bounds.contains(p)`

If a `point`

is not inside the `shape`

, then it might still be contained in the `bounds`

object:

`bounds.contains(p)`

does not imply `shape.contains(p)`