Extensibility mechanisms

The return value from an extension function may now be an implementation of java.util.List, representing a sequence. The members of the List must all implement net.sf.saxon.om.Item

An argument to an extension function may now be the class net.sf.saxon.om.NodeInfo, or a subclass. If the supplied value is a sequence, the first node in the sequence is passed to the function; it is an error if there is no node in the supplied sequence, or if the node is of the wrong type.

The rules for calling extension functions with a sequence-valued argument have been clarified, and some new options are permitted, e.g. declaring the argument as java.util.List. The possibilities have not been extensively tested.