interface Path { readonly attribute Value content; readonly attribute Document document; readonly attribute NodalPath parent; readonly attribute Path previousPath; readonly attribute Path nextPath; RelativePath difference (in Path path); }; interface RelativePath : Path { }; interface NodePath : Path { readonly attribute Path firstChild; readonly attribute Path lastChild; readonly attribute integer length; Path item (in integer index); Editor edit (); }; interface NodePath : Path { Path property (in Name name); }; interface SequencePath : Path { }; interface MapPath : Path { Path value (in Value name); };