## com.google.javascript.rhino
Class Node

    java.lang.Object
      com.google.javascript.rhino.Node

All Implemented Interfaces:
  Serializable, Cloneable

    public class Node

extends Object
implements Cloneable, Serializable

This class implements the root of the intermediate representation.

See Also:
  Serialized Form

Nested Class Summary
`static class` | `Node.AncestorIterable` Iterator to go up the ancestor tree.
`class` | `Node.FileLevelJsDocBuilder` An inner class that provides back-door access to the license property of the JSDocInfo property for this node.
`static class` | `Node.SideEffectFlags` A helper class for getting and setting the side-effect flags.

Field Summary
`static int` | `BRACELESS_TYPE`
`static int` | `COLUMN_BITS` COLUMN_BITS represents how many of the lower-order bits of sourcePosition are reserved for storing the column number.
`static int` | `COLUMN_MASK` COLUMN_MASK stores a value where bits storing the column number are set, and bits storing the line are not set.
`static int` | `DECR_FLAG`
`static int` | `DIRECT_EVAL`
`static int` | `DIRECTIVES`
`static int` | `EMPTY_BLOCK`
`static int` | `FLAG_ARGUMENTS_UNMODIFIED`
`static int` | `FLAG_GLOBAL_STATE_UNMODIFIED`
`static int` | `FLAG_LOCAL_RESULTS`
`static int` | `FLAG_NO_THROWS`
`static int` | `FLAG_THIS_UNMODIFIED`
`static int` | `FREE_CALL`
`static int` | `INCRDECR_PROP`
`static int` | `INPUT_ID`
`static int` | `IS_CONSTANT_NAME`
`static int` | `IS_DISPATCHER`
`static int` | `IS_NAMESPACE`
`static int` | `IS_OPTIONAL_PARAM`
`static int` | `IS_VAR_ARGS_PARAM`
`static int` | `JSDOC_INFO_PROP`
`static int` | `LAST_PROP`
`static int` | `LENGTH`
`static int` | `MAX_COLUMN_NUMBER` MAX_COLUMN_NUMBER represents the maximum column number that can be represented.
`static int` | `NO_SIDE_EFFECTS`
`static int` | `OPT_ARG_NAME`
`static int` | `ORIGINALNAME_PROP`
`static int` | `PARENTHESIZED_PROP`
`static int` | `POST_FLAG`
`static int` | `QUOTED_PROP`
`static int` | `SIDE_EFFECT_FLAGS`
`static int` | `SIDE_EFFECTS_ALL`
`static int` | `SIDE_EFFECTS_FLAGS_MASK`
`static int` | `SLASH_V`
`static int` | `SOURCENAME_PROP`
`static int` | `STATIC_SOURCE_FILE`
`static int` | `SYNTHETIC_BLOCK_PROP`
`static int` | `VAR_ARGS_NAME`

Constructor Summary
`Node(int nodeType)`
`Node(int nodeType, int lineno, int charno)`
`Node(int nodeType, Node child)`
`Node(int nodeType, Node[] children)`
`Node(int nodeType, Node[] children, int lineno, int charno)`
`Node(int nodeType, Node child, int lineno, int charno)`
`Node(int nodeType, Node left, Node right)`
`Node(int nodeType, Node left, Node right, int lineno, int charno)`
`Node(int nodeType, Node left, Node mid, Node right)`
`Node(int nodeType, Node left, Node mid, Node right, int lineno, int charno)`
`Node(int nodeType, Node left, Node mid, Node mid2, Node right)`
`Node(int nodeType, Node left, Node mid, Node mid2, Node right, int lineno, int charno)`

Method Summary
`void` | `addChildAfter(Node newChild, Node node)` Add 'child' after 'node'.
`void` | `addChildBefore(Node newChild, Node node)` Add 'child' before 'node'.
`void` | `addChildrenAfter(Node children, Node node)` Add all children after 'node'.
`void` | `addChildrenToBack(Node children)`
`void` | `addChildrenToFront(Node children)`
`void` | `addChildToBack(Node child)`
`void` | `addChildToFront(Node child)`
`void` | `addSuppression(String warning)` Adds a warning to be suppressed.
`void` | `appendStringTree(Appendable appendable)`
`String` | `checkTreeEquals(Node node2)` Checks if the subtree under this node is the same as another subtree.
`Iterable<Node>` | `children()` Return an iterable object that iterates over this nodes's children.
`Node` | `cloneNode()`
`Node` | `clonePropsFrom(Node other)` Clone the properties from the provided node without copying the property object.
`Node` | `cloneTree()`
`Node` | `copyInformationFrom(Node other)` Copies source file and name information from the other node given to the current node.
`Node` | `copyInformationFromForTree(Node other)` Copies source file and name information from the other node to the entire tree rooted at this node.
`void` | `detachChildren()` Removes all children from this node and isolates the children from each other.
`Node` | `detachFromParent()` Removes this node from its parent.
`protected static int` | `extractCharno(int lineCharNo)` Extracts the character number and character number from a merged line char number (see `mergeLineCharNo(int, int)`).
`protected static int` | `extractLineno(int lineCharNo)` Extracts the line number and character number from a merged line char number (see `mergeLineCharNo(int, int)`).
`Node` | `getAncestor(int level)` Gets the ancestor node relative to this.
`Node.AncestorIterable` | `getAncestors()` Iterates all of the node's ancestors excluding itself.
`boolean` | `getBooleanProp(int propType)`
`int` | `getCharno()`
`Node` | `getChildAtIndex(int i)`
`Node` | `getChildBefore(Node child)`
`int` | `getChildCount()`
`Set<String>` | `getDirectives()` Returns the set of ES5 directives for this node.
`double` | `getDouble()` Can only be called when `getType() == TokenStream.NUMBER`
`int` | `getExistingIntProp(int propType)`
`Node` | `getFirstChild()`
`int` | `getIndexOfChild(Node child)`
`InputId` | `getInputId()`
`int` | `getIntProp(int propType)` Returns the integer value for the property, or 0 if the property is not defined.
`Node.FileLevelJsDocBuilder` | `getJsDocBuilderForNode()`
`JSDocInfo` | `getJSDocInfo()` Get the `JSDocInfo` attached to this node.
`JSType` | `getJSType()`
`Node` | `getLastChild()`
`Node` | `getLastSibling()`
`int` | `getLength()`
`int` | `getLineno()`
`Node` | `getNext()`
`Node` | `getParent()`
`Object` | `getProp(int propType)`
`String` | `getQualifiedName()` This function takes a set of GETPROP nodes and produces a string that is each property separated by dots.
`int` | `getSideEffectFlags()` Returns the side effects flags for this node.
`String` | `getSourceFileName()`
`int` | `getSourceOffset()`
`int` | `getSourcePosition()`
`StaticSourceFile` | `getStaticSourceFile()` Returns the source file associated with this input.
`String` | `getString()` Can only be called when node has String context.
`int` | `getType()`
`boolean` | `hasChild(Node child)`
`boolean` | `hasChildren()`
`boolean` | `hasMoreThanOneChild()` Check for more than one child more efficiently than by iterating over all the children as is done with Node.getChildCount().
`boolean` | `hasOneChild()` Check for one child more efficiently than by iterating over all the children as is done with Node.getChildCount().
`boolean` | `isAdd()` AST type check methods
`boolean` | `isAnd()`
`boolean` | `isArrayLit()`
`boolean` | `isAssign()`
`boolean` | `isAssignAdd()`
`boolean` | `isBlock()`
`boolean` | `isBreak()`
`boolean` | `isCall()`
`boolean` | `isCase()`
`boolean` | `isCatch()`
`boolean` | `isComma()`
`boolean` | `isContinue()`
`boolean` | `isDebugger()`
`boolean` | `isDec()`
`boolean` | `isDefaultCase()`
`boolean` | `isDelProp()`
`boolean` | `isDo()`
`boolean` | `isEmpty()`
`boolean` | `isEquivalentTo(Node node)` Returns true if this node is equivalent semantically to another
`boolean` | `isEquivalentToTyped(Node node)` Returns true if this node is equivalent semantically to another and the types are equivalent.
`boolean` | `isExprResult()`
`boolean` | `isFalse()`
`boolean` | `isFor()`
`boolean` | `isFromExterns()`
`boolean` | `isFunction()`
`boolean` | `isGetElem()`
`boolean` | `isGetProp()`
`boolean` | `isGetterDef()`
`boolean` | `isHook()`
`boolean` | `isIf()`
`boolean` | `isIn()`
`boolean` | `isInc()`
`boolean` | `isInstanceOf()`
`boolean` | `isLabel()`
`boolean` | `isLabelName()`
`boolean` | `isLocalResultCall()` Returns true if this node is a function or constructor call that returns a primitive or a local object (an object that has no other references).
`boolean` | `isName()`
`boolean` | `isNE()`
`boolean` | `isNew()`
`boolean` | `isNoSideEffectsCall()` Returns true if this node is a function or constructor call that has no side effects.
`boolean` | `isNot()`
`boolean` | `isNull()`
`boolean` | `isNumber()`
`boolean` | `isObjectLit()`
`boolean` | `isOnlyModifiesThisCall()`
`boolean` | `isOptionalArg()` Returns whether this node is an optional argument node.
`boolean` | `isOr()`
`boolean` | `isParamList()`
`boolean` | `isQualifiedName()` Returns whether a node corresponds to a simple or a qualified name, such as `x` or `a.b.c` or `this.a`.
`boolean` | `isQuotedString()` This should only be called for STRING nodes children of OBJECTLIT.
`boolean` | `isRegExp()`
`boolean` | `isReturn()`
`boolean` | `isScript()`
`boolean` | `isSetterDef()`
`boolean` | `isString()`
`boolean` | `isSwitch()`
`boolean` | `isSyntheticBlock()` Returns whether this is a synthetic block that should not be considered a real source block.
`boolean` | `isThis()`
`boolean` | `isThrow()`
`boolean` | `isTrue()`
`boolean` | `isTry()`
`boolean` | `isTypeOf()`
`boolean` | `isUnscopedQualifiedName()` Returns whether a node corresponds to a simple or a qualified name without a "this" reference, such as `a.b.c`, but not `this.a` .
`boolean` | `isVar()`
`boolean` | `isVarArgs()` Returns whether this node is a variable length argument node.
`boolean` | `isVoid()`
`boolean` | `isWhile()`
`boolean` | `isWith()`
`protected static int` | `mergeLineCharNo(int lineno, int charno)` Merges the line number and character number in one integer.
`static Node` | `newNumber(double number)`
`static Node` | `newNumber(double number, int lineno, int charno)`
`static Node` | `newString(int type, String str)`
`static Node` | `newString(int type, String str, int lineno, int charno)`
`static Node` | `newString(String str)`
`static Node` | `newString(String str, int lineno, int charno)`
`void` | `putBooleanProp(int propType, boolean value)`
`void` | `putIntProp(int propType, int value)`
`void` | `putProp(int propType, Object value)`
`void` | `removeChild(Node child)` Detach a child from its parent and siblings.
`Node` | `removeChildAfter(Node prev)`
`Node` | `removeChildren()`
`Node` | `removeFirstChild()` Removes the first child of Node.
`void` | `removeProp(int propType)`
`void` | `replaceChild(Node child, Node newChild)` Detaches child from Node and replaces it with newChild.
`void` | `replaceChildAfter(Node prevChild, Node newChild)`
`void` | `setCharno(int charno)`
`void` | `setDirectives(Set<String> val)` Sets the ES5 directives on this node.
`void` | `setDouble(double s)` Can only be called when `getType() == TokenStream.NUMBER`
`void` | `setInputId(InputId inputId)`
`void` | `setIsSyntheticBlock(boolean val)` Sets whether this is a synthetic block that should not be considered a real source block.
`void` | `setJSDocInfo(JSDocInfo info)` Sets the `JSDocInfo` attached to this node.
`void` | `setJSType(JSType jsType)`
`void` | `setLength(int length)`
`void` | `setLineno(int lineno)`
`void` | `setOptionalArg(boolean optionalArg)` Sets whether this node is an optional argument node.
`void` | `setQuotedString()` This should only be called for STRING nodes children of OBJECTLIT.
`void` | `setSideEffectFlags(int flags)` Marks this function or constructor call's side effect flags.
`void` | `setSideEffectFlags(Node.SideEffectFlags flags)`
`void` | `setSourceEncodedPosition(int sourcePosition)`
`void` | `setSourceEncodedPositionForTree(int sourcePosition)`
`void` | `setSourceFileForTesting(String name)` Sets the source file to a non-extern file of the given name.
`void` | `setStaticSourceFile(StaticSourceFile file)`
`void` | `setString(String s)` Can only be called when node has String context.
`void` | `setType(int type)`
`void` | `setVarArgs(boolean varArgs)` Sets whether this node is a variable length argument node.
`void` | `setWasEmptyNode(boolean val)` Sets whether this is a synthetic block that should not be considered a real source block.
`Iterable<Node>` | `siblings()` Return an iterable object that iterates over this nodes's siblings.
`Node` | `srcref(Node other)`
`Node` | `srcrefTree(Node other)`
`String` | `toString()`
`String` | `toString(boolean printSource, boolean printAnnotations, boolean printType)`
`String` | `toStringTree()`
`Node` | `useSourceInfoFrom(Node other)` Overwrite all the source information in this node with that of `other`.
`Node` | `useSourceInfoFromForTree(Node other)` Overwrite all the source information in this node and its subtree with that of `other`.
`Node` | `useSourceInfoIfMissingFrom(Node other)` Overwrite all the source information in this node with that of `other` iff the source info is missing.
`Node` | `useSourceInfoIfMissingFromForTree(Node other)` Overwrite all the source information in this node and its subtree with that of `other` iff the source info is missing.
`boolean` | `wasEmptyNode()` Returns whether this is a synthetic block that should not be considered a real source block.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Field Detail

### SOURCENAME_PROP

    public static final int SOURCENAME_PROP

See Also:
  Constant Field Values

### JSDOC_INFO_PROP

    public static final int JSDOC_INFO_PROP

See Also:
  Constant Field Values

### VAR_ARGS_NAME

    public static final int VAR_ARGS_NAME

See Also:
  Constant Field Values

### INCRDECR_PROP

    public static final int INCRDECR_PROP

See Also:
  Constant Field Values

### PARENTHESIZED_PROP

    public static final int PARENTHESIZED_PROP

See Also:
  Constant Field Values

### QUOTED_PROP

    public static final int QUOTED_PROP

See Also:
  Constant Field Values

### OPT_ARG_NAME

    public static final int OPT_ARG_NAME

See Also:
  Constant Field Values

### SYNTHETIC_BLOCK_PROP

    public static final int SYNTHETIC_BLOCK_PROP

See Also:
  Constant Field Values

### EMPTY_BLOCK

    public static final int EMPTY_BLOCK

See Also:
  Constant Field Values

### ORIGINALNAME_PROP

    public static final int ORIGINALNAME_PROP

See Also:
  Constant Field Values

### BRACELESS_TYPE

    public static final int BRACELESS_TYPE

See Also:
  Constant Field Values

### SIDE_EFFECT_FLAGS

    public static final int SIDE_EFFECT_FLAGS

See Also:
  Constant Field Values

### IS_CONSTANT_NAME

    public static final int IS_CONSTANT_NAME

See Also:
  Constant Field Values

### IS_OPTIONAL_PARAM

    public static final int IS_OPTIONAL_PARAM

See Also:
  Constant Field Values

### IS_VAR_ARGS_PARAM

    public static final int IS_VAR_ARGS_PARAM

See Also:
  Constant Field Values

### IS_NAMESPACE

    public static final int IS_NAMESPACE

See Also:
  Constant Field Values

### IS_DISPATCHER

    public static final int IS_DISPATCHER

See Also:
  Constant Field Values

### DIRECTIVES

    public static final int DIRECTIVES

See Also:
  Constant Field Values

### DIRECT_EVAL

    public static final int DIRECT_EVAL

See Also:
  Constant Field Values

### FREE_CALL

    public static final int FREE_CALL

See Also:
  Constant Field Values

### STATIC_SOURCE_FILE

    public static final int STATIC_SOURCE_FILE

See Also:
  Constant Field Values

### LENGTH

    public static final int LENGTH

See Also:
  Constant Field Values

### INPUT_ID

    public static final int INPUT_ID

See Also:
  Constant Field Values

### SLASH_V

    public static final int SLASH_V

See Also:
  Constant Field Values

### LAST_PROP

    public static final int LAST_PROP

See Also:
  Constant Field Values

### DECR_FLAG

    public static final int DECR_FLAG

See Also:
  Constant Field Values

### POST_FLAG

    public static final int POST_FLAG

See Also:
  Constant Field Values

### COLUMN_BITS

    public static final int COLUMN_BITS

  COLUMN_BITS represents how many of the lower-order bits of sourcePosition are reserved for storing the column number. Bits above these store the line number. This gives us decent position information for everything except files already passed through a minimizer, where lines might be longer than 4096 characters.

  See Also:
    Constant Field Values

### MAX_COLUMN_NUMBER

    public static final int MAX_COLUMN_NUMBER

  MAX_COLUMN_NUMBER represents the maximum column number that can be represented. JSCompiler's modifications to Rhino cause all tokens located beyond the maximum column to MAX_COLUMN_NUMBER.

  See Also:
    Constant Field Values

### COLUMN_MASK

    public static final int COLUMN_MASK

  COLUMN_MASK stores a value where bits storing the column number are set, and bits storing the line are not set. It's handy for separating column number from line number.

  See Also:
    Constant Field Values

### FLAG_GLOBAL_STATE_UNMODIFIED

    public static final int FLAG_GLOBAL_STATE_UNMODIFIED

See Also:
  Constant Field Values

### FLAG_THIS_UNMODIFIED

    public static final int FLAG_THIS_UNMODIFIED

See Also:
  Constant Field Values

### FLAG_ARGUMENTS_UNMODIFIED

    public static final int FLAG_ARGUMENTS_UNMODIFIED

See Also:
  Constant Field Values

### FLAG_NO_THROWS

    public static final int FLAG_NO_THROWS

See Also:
  Constant Field Values

### FLAG_LOCAL_RESULTS

    public static final int FLAG_LOCAL_RESULTS

See Also:
  Constant Field Values

### SIDE_EFFECTS_FLAGS_MASK

    public static final int SIDE_EFFECTS_FLAGS_MASK

See Also:
  Constant Field Values

### SIDE_EFFECTS_ALL

    public static final int SIDE_EFFECTS_ALL

See Also:
  Constant Field Values

### NO_SIDE_EFFECTS

    public static final int NO_SIDE_EFFECTS

See Also:
  Constant Field Values

Constructor Detail

### Node

    public Node(int nodeType)

### Node

    public Node(int nodeType,
                Node child)

### Node

    public Node(int nodeType,
                Node left,
                Node right)

### Node

    public Node(int nodeType,
                Node left,
                Node mid,
                Node right)

### Node

    public Node(int nodeType,
                Node left,
                Node mid,
                Node mid2,
                Node right)

### Node

    public Node(int nodeType,
                int lineno,
                int charno)

### Node

    public Node(int nodeType,
                Node child,
                int lineno,
                int charno)

### Node

    public Node(int nodeType,
                Node left,
                Node right,
                int lineno,
                int charno)

### Node

    public Node(int nodeType,
                Node left,
                Node mid,
                Node right,
                int lineno,
                int charno)

### Node

    public Node(int nodeType,
                Node left,
                Node mid,
                Node mid2,
                Node right,
                int lineno,
                int charno)

### Node

    public Node(int nodeType,
                Node[] children,
                int lineno,
                int charno)

### Node

    public Node(int nodeType,
                Node[] children)

Method Detail

### newNumber

    public static Node newNumber(double number)

### newNumber

    public static Node newNumber(double number,
                                 int lineno,
                                 int charno)

### newString

    public static Node newString(String str)

### newString

    public static Node newString(int type,
                                 String str)

### newString

    public static Node newString(String str,
                                 int lineno,
                                 int charno)

### newString

    public static Node newString(int type,
                                 String str,
                                 int lineno,
                                 int charno)

### getType

    public int getType()

### setType

    public void setType(int type)

### hasChildren

    public boolean hasChildren()

### getFirstChild

    public Node getFirstChild()

### getLastChild

    public Node getLastChild()

### getNext

    public Node getNext()

### getChildBefore

    public Node getChildBefore(Node child)

### getChildAtIndex

    public Node getChildAtIndex(int i)

### getIndexOfChild

    public int getIndexOfChild(Node child)

### getLastSibling

    public Node getLastSibling()

### addChildToFront

    public void addChildToFront(Node child)

### addChildToBack

    public void addChildToBack(Node child)

### addChildrenToFront

    public void addChildrenToFront(Node children)

### addChildrenToBack

    public void addChildrenToBack(Node children)

### addChildBefore

    public void addChildBefore(Node newChild,
                               Node node)

  Add 'child' before 'node'.

### addChildAfter

    public void addChildAfter(Node newChild,
                              Node node)

  Add 'child' after 'node'.

### addChildrenAfter

    public void addChildrenAfter(Node children,
                                 Node node)

  Add all children after 'node'.

### removeChild

    public void removeChild(Node child)

  Detach a child from its parent and siblings.

### replaceChild

    public void replaceChild(Node child,
                             Node newChild)

  Detaches child from Node and replaces it with newChild.

### replaceChildAfter

    public void replaceChildAfter(Node prevChild,
                                  Node newChild)

### clonePropsFrom

    public Node clonePropsFrom(Node other)

  Clone the properties from the provided node without copying the property object. The recieving node may not have any existing properties.

  Parameters:
    `other` - The node to clone properties from.
  Returns:
    this node.

### removeProp

    public void removeProp(int propType)

### getProp

    public Object getProp(int propType)

### getBooleanProp

    public boolean getBooleanProp(int propType)

### getIntProp

    public int getIntProp(int propType)

  Returns the integer value for the property, or 0 if the property is not defined.

### getExistingIntProp

    public int getExistingIntProp(int propType)

### putProp

    public void putProp(int propType,
                        Object value)

### putBooleanProp

    public void putBooleanProp(int propType,
                               boolean value)

### putIntProp

    public void putIntProp(int propType,
                           int value)

### getDouble

    public double getDouble()
                     throws UnsupportedOperationException

  Can only be called when `getType() == TokenStream.NUMBER`

  Throws:
    `UnsupportedOperationException`

### setDouble

    public void setDouble(double s)
                   throws UnsupportedOperationException

  Can only be called when `getType() == TokenStream.NUMBER`

  Throws:
    `UnsupportedOperationException`

### getString

    public String getString()
                     throws UnsupportedOperationException

  Can only be called when node has String context.

  Throws:
    `UnsupportedOperationException`

### setString

    public void setString(String s)
                   throws UnsupportedOperationException

  Can only be called when node has String context.

  Throws:
    `UnsupportedOperationException`

### toString

    public String toString()

  Overrides:
    `toString` in class `Object`

### toString

    public String toString(boolean printSource,
                           boolean printAnnotations,
                           boolean printType)

### toStringTree

    public String toStringTree()

### appendStringTree

    public void appendStringTree(Appendable appendable)
                          throws IOException

  Throws:
    `IOException`

### setStaticSourceFile

    public void setStaticSourceFile(StaticSourceFile file)

### setSourceFileForTesting

    public void setSourceFileForTesting(String name)

  Sets the source file to a non-extern file of the given name.

### getSourceFileName

    public String getSourceFileName()

### getStaticSourceFile

    public StaticSourceFile getStaticSourceFile()

  Returns the source file associated with this input. May be null

### setInputId

    public void setInputId(InputId inputId)

  Parameters:
    `inputId` -

### getInputId

    public InputId getInputId()

  Returns:
    The Id of the CompilerInput associated with this Node.

### isFromExterns

    public boolean isFromExterns()

### getLength

    public int getLength()

### setLength

    public void setLength(int length)

### getLineno

    public int getLineno()

### getCharno

    public int getCharno()

### getSourceOffset

    public int getSourceOffset()

### getSourcePosition

    public int getSourcePosition()

### setLineno

    public void setLineno(int lineno)

### setCharno

    public void setCharno(int charno)

### setSourceEncodedPosition

    public void setSourceEncodedPosition(int sourcePosition)

### setSourceEncodedPositionForTree

    public void setSourceEncodedPositionForTree(int sourcePosition)

### mergeLineCharNo

    protected static int mergeLineCharNo(int lineno,
                                         int charno)

  Merges the line number and character number in one integer. The Character number takes the first 12 bits and the line number takes the rest. If the character number is greater than `212-1` it is adjusted to `212-1`.

### extractLineno

    protected static int extractLineno(int lineCharNo)

  Extracts the line number and character number from a merged line char number (see `mergeLineCharNo(int, int)`).

### extractCharno

    protected static int extractCharno(int lineCharNo)

  Extracts the character number and character number from a merged line char number (see `mergeLineCharNo(int, int)`).

### children

    public Iterable<Node> children()

  Return an iterable object that iterates over this nodes's children. The iterator does not support the optional operation `Iterator.remove()`.

  To iterate over a node's siblings, one can write

      Node n = ...;
       for (Node child : n.children()) { ...

### siblings

    public Iterable<Node> siblings()

  Return an iterable object that iterates over this nodes's siblings. The iterator does not support the optional operation `Iterator.remove()`.

  To iterate over a node's siblings, one can write

      Node n = ...;
       for (Node sibling : n.siblings()) { ...

### getParent

    public Node getParent()

### getAncestor

    public Node getAncestor(int level)

  Gets the ancestor node relative to this.

  Parameters:
    `level` - 0 = this, 1 = the parent, etc.

### getAncestors

    public Node.AncestorIterable getAncestors()

  Iterates all of the node's ancestors excluding itself.

### hasOneChild

    public boolean hasOneChild()

  Check for one child more efficiently than by iterating over all the children as is done with Node.getChildCount().

  Returns:
    Whether the node has exactly one child.

### hasMoreThanOneChild

    public boolean hasMoreThanOneChild()

  Check for more than one child more efficiently than by iterating over all the children as is done with Node.getChildCount().

  Returns:
    Whether the node more than one child.

### getChildCount

    public int getChildCount()

### hasChild

    public boolean hasChild(Node child)

### checkTreeEquals

    public String checkTreeEquals(Node node2)

  Checks if the subtree under this node is the same as another subtree. Returns null if it's equal, or a message describing the differences.

### isEquivalentTo

    public boolean isEquivalentTo(Node node)

  Returns true if this node is equivalent semantically to another

### isEquivalentToTyped

    public boolean isEquivalentToTyped(Node node)

  Returns true if this node is equivalent semantically to another and the types are equivalent.

### getQualifiedName

    public String getQualifiedName()

  This function takes a set of GETPROP nodes and produces a string that is each property separated by dots. If the node ultimately under the left sub-tree is not a simple name, this is not a valid qualified name.

  Returns:
    a null if this is not a qualified name, or a dot-separated string of the name and properties.

### isQualifiedName

    public boolean isQualifiedName()

  Returns whether a node corresponds to a simple or a qualified name, such as `x` or `a.b.c` or `this.a`.

### isUnscopedQualifiedName

    public boolean isUnscopedQualifiedName()

  Returns whether a node corresponds to a simple or a qualified name without a "this" reference, such as `a.b.c`, but not `this.a` .

### detachFromParent

    public Node detachFromParent()

  Removes this node from its parent. Equivalent to: node.getParent().removeChild();

### removeFirstChild

    public Node removeFirstChild()

  Removes the first child of Node. Equivalent to: node.removeChild(node.getFirstChild());

  Returns:
    The removed Node.

### removeChildren

    public Node removeChildren()

  Returns:
    A Node that is the head of the list of children.

### detachChildren

    public void detachChildren()

  Removes all children from this node and isolates the children from each other.

### removeChildAfter

    public Node removeChildAfter(Node prev)

### cloneNode

    public Node cloneNode()

  Returns:
    A detached clone of the Node, specifically excluding its children.

### cloneTree

    public Node cloneTree()

  Returns:
    A detached clone of the Node and all its children.

### copyInformationFrom

    public Node copyInformationFrom(Node other)

  Copies source file and name information from the other node given to the current node. Used for maintaining debug information across node append and remove operations.

  Returns:
    this

### copyInformationFromForTree

    public Node copyInformationFromForTree(Node other)

  Copies source file and name information from the other node to the entire tree rooted at this node.

  Returns:
    this

### useSourceInfoFrom

    public Node useSourceInfoFrom(Node other)

  Overwrite all the source information in this node with that of `other`.

### srcref

    public Node srcref(Node other)

### useSourceInfoFromForTree

    public Node useSourceInfoFromForTree(Node other)

  Overwrite all the source information in this node and its subtree with that of `other`.

### srcrefTree

    public Node srcrefTree(Node other)

### useSourceInfoIfMissingFrom

    public Node useSourceInfoIfMissingFrom(Node other)

  Overwrite all the source information in this node with that of `other` iff the source info is missing.

### useSourceInfoIfMissingFromForTree

    public Node useSourceInfoIfMissingFromForTree(Node other)

  Overwrite all the source information in this node and its subtree with that of `other` iff the source info is missing.

### getJSType

    public JSType getJSType()

### setJSType

    public void setJSType(JSType jsType)

### getJsDocBuilderForNode

    public Node.FileLevelJsDocBuilder getJsDocBuilderForNode()

### getJSDocInfo

    public JSDocInfo getJSDocInfo()

  Get the `JSDocInfo` attached to this node.

  Returns:
    the information or `null` if no JSDoc is attached to this node

### setJSDocInfo

    public void setJSDocInfo(JSDocInfo info)

  Sets the `JSDocInfo` attached to this node.

### setVarArgs

    public void setVarArgs(boolean varArgs)

  Sets whether this node is a variable length argument node. This method is meaningful only on `Token.NAME` nodes used to define a `Token.FUNCTION`'s argument list.

### isVarArgs

    public boolean isVarArgs()

  Returns whether this node is a variable length argument node. This method's return value is meaningful only on `Token.NAME` nodes used to define a `Token.FUNCTION`'s argument list.

### setOptionalArg

    public void setOptionalArg(boolean optionalArg)

  Sets whether this node is an optional argument node. This method is meaningful only on `Token.NAME` nodes used to define a `Token.FUNCTION`'s argument list.

### isOptionalArg

    public boolean isOptionalArg()

  Returns whether this node is an optional argument node. This method's return value is meaningful only on `Token.NAME` nodes used to define a `Token.FUNCTION`'s argument list.

### setIsSyntheticBlock

    public void setIsSyntheticBlock(boolean val)

  Sets whether this is a synthetic block that should not be considered a real source block.

### isSyntheticBlock

    public boolean isSyntheticBlock()

  Returns whether this is a synthetic block that should not be considered a real source block.

### setDirectives

    public void setDirectives(Set<String> val)

  Sets the ES5 directives on this node.

### getDirectives

    public Set<String> getDirectives()

  Returns the set of ES5 directives for this node.

### addSuppression

    public void addSuppression(String warning)

  Adds a warning to be suppressed. This is indistinguishable from having a `@suppress` tag in the code.

### setWasEmptyNode

    public void setWasEmptyNode(boolean val)

  Sets whether this is a synthetic block that should not be considered a real source block.

### wasEmptyNode

    public boolean wasEmptyNode()

  Returns whether this is a synthetic block that should not be considered a real source block.

### setSideEffectFlags

    public void setSideEffectFlags(int flags)

  Marks this function or constructor call's side effect flags. This property is only meaningful for `Token.CALL` and `Token.NEW` nodes.

### setSideEffectFlags

    public void setSideEffectFlags(Node.SideEffectFlags flags)

### getSideEffectFlags

    public int getSideEffectFlags()

  Returns the side effects flags for this node.

### isOnlyModifiesThisCall

    public boolean isOnlyModifiesThisCall()

  Returns:
    Whether the only side-effect is "modifies this"

### isNoSideEffectsCall

    public boolean isNoSideEffectsCall()

  Returns true if this node is a function or constructor call that has no side effects.

### isLocalResultCall

    public boolean isLocalResultCall()

  Returns true if this node is a function or constructor call that returns a primitive or a local object (an object that has no other references).

### isQuotedString

    public boolean isQuotedString()

  This should only be called for STRING nodes children of OBJECTLIT.

### setQuotedString

    public void setQuotedString()

  This should only be called for STRING nodes children of OBJECTLIT.

### isAdd

    public boolean isAdd()

  AST type check methods

### isAnd

    public boolean isAnd()

### isArrayLit

    public boolean isArrayLit()

### isAssign

    public boolean isAssign()

### isAssignAdd

    public boolean isAssignAdd()

### isBlock

    public boolean isBlock()

### isBreak

    public boolean isBreak()

### isCall

    public boolean isCall()

### isCase

    public boolean isCase()

### isCatch

    public boolean isCatch()

### isComma

    public boolean isComma()

### isContinue

    public boolean isContinue()

### isDebugger

    public boolean isDebugger()

### isDec

    public boolean isDec()

### isDefaultCase

    public boolean isDefaultCase()

### isDelProp

    public boolean isDelProp()

### isDo

    public boolean isDo()

### isEmpty

    public boolean isEmpty()

### isExprResult

    public boolean isExprResult()

### isFalse

    public boolean isFalse()

### isFor

    public boolean isFor()

### isFunction

    public boolean isFunction()

### isGetterDef

    public boolean isGetterDef()

### isGetElem

    public boolean isGetElem()

### isGetProp

    public boolean isGetProp()

### isHook

    public boolean isHook()

### isIf

    public boolean isIf()

### isIn

    public boolean isIn()

### isInc

    public boolean isInc()

### isInstanceOf

    public boolean isInstanceOf()

### isLabel

    public boolean isLabel()

### isLabelName

    public boolean isLabelName()

### isName

    public boolean isName()

### isNE

    public boolean isNE()

### isNew

    public boolean isNew()

### isNot

    public boolean isNot()

### isNull

    public boolean isNull()

### isNumber

    public boolean isNumber()

### isObjectLit

    public boolean isObjectLit()

### isOr

    public boolean isOr()

### isParamList

    public boolean isParamList()

### isRegExp

    public boolean isRegExp()

### isReturn

    public boolean isReturn()

### isScript

    public boolean isScript()

### isSetterDef

    public boolean isSetterDef()

### isString

    public boolean isString()

### isSwitch

    public boolean isSwitch()

### isThis

    public boolean isThis()

### isThrow

    public boolean isThrow()

### isTrue

    public boolean isTrue()

### isTry

    public boolean isTry()

### isTypeOf

    public boolean isTypeOf()

### isVar

    public boolean isVar()

### isVoid

    public boolean isVoid()

### isWhile

    public boolean isWhile()

### isWith

    public boolean isWith()