Original text:
they work with paths that select structured values. <del> To test the value of a node selected by a path, an explicit </del>  comparison is necessary.  For example, to test whether the node selected by the path "@.foo" has the value "null", use "@.foo == null" (see null-semantics) rather than the negated existence test The comparison operators "==" and "<" are defined first and then these are used to define "!=", "<=", ">", and ">=". <del> When a path resulting in an empty nodelist appears on either side of a comparison: </del>  <del> a comparison using the operator "==" yields true if and only if the comparison is between two paths each of which result in an empty nodelist. </del>  a comparison using the operator "<" yields false. <del> When any path on either side of a comparison results in a nodelist consisting of a single node, each such path is replaced by the value of its node and then: </del>  a comparison using the operator "==" yields true if and only if the comparison is between: 2.6.1. <del> Each parameter and the result of a function extension must have a declared type. </del>  A type is a set of instances.  Declared types enable checking a JSONPath query for well-typedness independent of any argument the function is declared to have a result type of "ValueType", or (conversion applies) "NodesType". <del> Otherwise, it is occurring as an argument to a further function </del>  expression, and the following rules for function arguments apply to its declared result type.

Reviewer comments:
These editorial changes from PR are needed in the base.
I confess I tend to write tedious text when precision is at stake. Hopefully, the second commit avoids the tedium.
Why was this merged so quickly?!
We merged this editorial change quickly so we could rebase the other substantive PRs on it and put us in a better position to compare their pro's and con's.
Looks good now! Should merge this quickly so we can rebase the others.

Revised text:
they work with paths that select structured values.  <ins> To examine the value of a node selected by a path, an explicit </ins> comparison is necessary.  For example, to test whether the node selected by the path "@.foo" has the value "null", use "@.foo == null" (see null-semantics) rather than the negated existence test The comparison operators "==" and "<" are defined first and then these are used to define "!=", "<=", ">", and ">=".  <ins> When either side of a comparison results in an empty nodelist or "Nothing": </ins>  <ins> a comparison using the operator "==" yields true if and only the other side also results in an empty nodelist or "Nothing". </ins> a comparison using the operator "<" yields false.  <ins> When any path or function expression on either side of a comparison results in a nodelist consisting of a single node, that side is replaced by the value of its node and then: </ins> a comparison using the operator "==" yields true if and only if the comparison is between: 2.6.1.  <ins> Each parameter as well as the result of a function extension must have a declared type. </ins> A type is a set of instances.  Declared types enable checking a JSONPath query for well-typedness independent of any argument the function is declared to have a result type of "ValueType", or (conversion applies) "NodesType".  <ins> Otherwise, it occurs as an argument in another function </ins> expression, and the following rules for function arguments apply to its declared result type.