Strange that the JTS doc says P/L, P/A is a valid case for crosses:

```console 
public boolean crosses(Geometry g)
Returns true if this geometry crosses the specified geometry.
The crosses predicate has the following equivalent definitions:

The geometries have some but not all interior points in common.
The DE-9IM Intersection Matrix for the two geometries is
T*T****** (for P/L, P/A, and L/A situations)
T*****T** (for L/P, L/A, and A/L situations)
0******** (for L/L situations)
For any other combination of dimensions this predicate returns false.
The SFS defined this predicate only for P/L, P/A, L/L, and L/A situations. JTS extends the definition to apply to L/P, A/P and A/L situations as well. This makes the relation symmetric.

Parameters:
g - the Geometry with which to compare this Geometry
Returns:
true if the two Geometrys cross.
```
but if the P/L case were valid, it seems like one of these would return true:
```scala
scala> import geotrellis.feature._
import geotrellis.feature._

scala> val l = Line( (0.0,0.0), (5.0,5.0) )
l: geotrellis.feature.Line = Line(LINESTRING (0 0, 5 5),List(Point(POINT (0 0)), Point(POINT (5 5))))

scala> val p = Point(1.0,1.0)
p: geotrellis.feature.Point = Point(POINT (1 1))

scala> l.geom.crosses(p.geom)
res0: Boolean = false

scala> p.geom.crosses(l.geom)
res1: Boolean = false
```
Where did you get a definition about crosses that says it must cross (contain) both a interior and exterior point of the geometry in order to be considered crossing?