The Compiler APIs are completely agnostic to the actual types of objects
produced and consumed by the APIs. Arguments and return values are
declared as java.lang.Object.
Since objects returned by Compiler methods are passed as arguments to other
Compiler methods, the descriptions of these methods use virtual types. There
are four virtual object types: EXPRESSION, QNAME, STEP and NODE_TEST.
The following example illustrates this notion. This sequence compiles
the xpath "foo[round(1 div 2)]/text()":
Since objects returned by Compiler methods are passed as arguments to other Compiler methods, the descriptions of these methods use virtual types. There are four virtual object types: EXPRESSION, QNAME, STEP and NODE_TEST.
The following example illustrates this notion. This sequence compiles the xpath "foo[round(1 div 2)]/text()":