[
Constructor,
ConstructorCallWith=Document,
ImplementationLacksVTable,
ExportMacro=WEBCORE_EXPORT,
] interface Range {
readonly attribute Node startContainer;
readonly attribute long startOffset;
readonly attribute Node endContainer;
readonly attribute long endOffset;
readonly attribute boolean collapsed;
readonly attribute Node commonAncestorContainer;
[ObjCLegacyUnnamedParameters, RaisesException] void setStart(Node refNode, optional long offset = 0);
[ObjCLegacyUnnamedParameters, RaisesException] void setEnd(Node refNode, optional long offset = 0);
[RaisesException] void setStartBefore(Node refNode);
[RaisesException] void setStartAfter(Node refNode);
[RaisesException] void setEndBefore(Node refNode);
[RaisesException] void setEndAfter(Node refNode);
void collapse(optional boolean toStart = false);
[RaisesException] void selectNode(Node refNode);
[RaisesException] void selectNodeContents(Node refNode);
const unsigned short START_TO_START = 0;
const unsigned short START_TO_END = 1;
const unsigned short END_TO_END = 2;
const unsigned short END_TO_START = 3;
[ObjCLegacyUnnamedParameters, RaisesException, ImplementedAs=compareBoundaryPointsForBindings] short compareBoundaryPoints(optional unsigned short how = 0, Range sourceRange);
[RaisesException] void deleteContents();
[RaisesException, NewObject] DocumentFragment extractContents();
[RaisesException, NewObject] DocumentFragment cloneContents();
[RaisesException] void insertNode(Node newNode);
[RaisesException] void surroundContents(Node newParent);
[NewObject] Range cloneRange();
DOMString toString();
void detach();
#