APIdia Launch Partner
Top Description Fields Constructors Methods
com.sun.org.apache.xpath.internal.axes

public Class WalkerFactory

extends Object
Class Inheritance
Imports
com.sun.org.apache.xalan.internal.res.XSLMessages, com.sun.org.apache.xml.internal.dtm.Axis, .DTMFilter, .DTMIterator, com.sun.org.apache.xpath.internal.Expression, com.sun.org.apache.xpath.internal.compiler.Compiler, .FunctionTable, .OpCodes, .OpMap, com.sun.org.apache.xpath.internal.objects.XNumber, com.sun.org.apache.xpath.internal.patterns.ContextMatchStepPattern, .FunctionPattern, .NodeTest, .StepPattern, com.sun.org.apache.xpath.internal.res.XPATHErrorResources

This class is both a factory for XPath location path expressions, which are built from the opcode map output, and an analysis engine for the location path expressions in order to provide optimization hints.

Field Summary

Modifier and TypeField and Description
public static final int
BIT_ANCESTOR

Bit is on if any of the walkers contain an ancestor step.

public static final int
BIT_ANCESTOR_OR_SELF

Bit is on if any of the walkers contain an ancestor-or-self step.

public static final int
BIT_ANY_DESCENDANT_FROM_ROOT

Found "//foo" pattern

public static final int
BIT_ATTRIBUTE

Bit is on if any of the walkers contain an attribute step.

public static final int
BIT_BACKWARDS_SELF

Bit is on if any of the walkers can go backwards in document order from the context node.

public static final int
BIT_CHILD

Bit is on if any of the walkers contain a child step.

public static final int
BIT_DESCENDANT

Bit is on if any of the walkers contain a descendant step.

public static final int
BIT_DESCENDANT_OR_SELF

Bit is on if any of the walkers contain a descendant-or-self step.

public static final int
BIT_FILTER

Bit is on if any of the walkers contain a filter (i.e. id(), extension function, etc.) step.

public static final int
BIT_FOLLOWING

Bit is on if any of the walkers contain a following step.

public static final int
BIT_FOLLOWING_SIBLING

Bit is on if any of the walkers contain a following-sibiling step.

public static final int
BIT_MATCH_PATTERN

Bit is on if the expression is a match pattern.

public static final int
BIT_NAMESPACE

Bit is on if any of the walkers contain a namespace step.

public static final int
BIT_NODETEST_ANY

Bit is on if any of the walkers contain an node() test.

public static final int
BIT_PARENT

Bit is on if any of the walkers contain a parent step.

public static final int
BIT_PRECEDING

Bit is on if any of the walkers contain a preceding step.

public static final int
BIT_PRECEDING_SIBLING

Bit is on if any of the walkers contain a preceding-sibling step.

public static final int
BIT_PREDICATE

Bit is on if the expression contains a top-level predicate.

public static final int
BIT_ROOT

Bit is on if any of the walkers contain a root step.

public static final int
BIT_SELF

Bit is on if any of the walkers contain a self step.

public static final int
BITMASK_TRAVERSES_OUTSIDE_SUBTREE

If any of these bits are on, the expression may likely traverse outside the given subtree.

public static final int
BITS_COUNT

First 8 bits are the number of top-level location steps.

public static final int
BITS_RESERVED

4 bits are reserved for future use.

pack-priv static final boolean
DEBUG_ITERATOR_CREATION

Set to true for diagnostics about iterator creation

pack-priv static final boolean
DEBUG_PATTERN_CREATION

Set to true for diagnostics about walker creation

pack-priv static final boolean
DEBUG_WALKER_CREATION

Set to true for diagnostics about walker creation

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
private static int

Returns:

32 bits as an integer that give information about the location path as a whole.
analyze
(Compiler
non-null reference to compiler object that has processed the XPath operations into an opcode map.
compiler
,
int
The opcode position for the step.
stepOpCodePos
,
int
The top-level step index withing the iterator.
stepIndex
)

Analyze the location path and return 32 bits that give information about the location path as a whole.

pack-priv static boolean

Returns:

true if step has a predicate.
analyzePredicate
(Compiler
non-null reference to compiler object that has processed the XPath operations into an opcode map.
compiler
,
int
The opcode position for the step.
opPos
,
int
The type of step, one of OP_GROUP, etc.
stepType
)

Analyze a step and give information about it's predicates.

public static boolean
canCrissCross(int analysis)

public static boolean
canSkipSubtrees(int analysis)

private static StepPattern

Returns:

the head of the list.
createDefaultStepPattern
(Compiler
The compiler that holds the syntax tree/op map to construct from.
compiler
,
int opPos, MatchPatternIterator
The MatchPatternIterator to which the steps will be attached.
mpi
,
int
32 bits of analysis, from which the type of AxesWalker may be influenced.
analysis
,
StepPattern
The step that is the first step analyzed, but the last step in the relative match linked list, i.e. the tail. May be null.
tail
,
StepPattern
The step that is the current head of the relative match step linked list. May be null.
head
)

Create a StepPattern that is contained within a LocationPath.

private static AxesWalker

Returns:

non-null reference to AxesWalker derivative.
createDefaultWalker
(Compiler
non-null reference to compiler object that has processed the XPath operations into an opcode map.
compiler
,
int
The opcode position for the step.
opPos
,
WalkingIterator
The owning location path iterator.
lpi
,
int
32 bits of analysis, from which the type of AxesWalker may be influenced.
analysis
)

Create the proper Walker from the axes type.

public static void
diagnoseIterator(String name, int analysis, Compiler compiler)

pack-priv static boolean
public static int

Returns:

One of BIT_ANCESTOR, etc.
getAnalysisBitFromAxes
(int
One of Axis.ANCESTOR, etc.
axis
)

Get a corresponding BIT_XXX from an axis.

public static String
getAnalysisString(int analysis)

public static int

Returns:

32 bits as an integer that give information about the location path as a whole.
getAxisFromStep
(Compiler
non-null reference to compiler object that has processed the XPath operations into an opcode map.
compiler
,
int
The opcode position for the step.
stepOpCodePos
)

Special purpose function to see if we can optimize the pattern for a DescendantIterator.

public static int
getStepCount(int analysis)

public static boolean
hasPredicate(int analysis)

public static boolean
isAbsolute(int analysis)

public static boolean

Returns:

true if the axis is not a child axis and does not go up from the axis root.
isDownwardAxisOfMany
(int
One of Axis.XXX.
axis
)

Tell if the given axis goes downword.

public static boolean

Returns:

true if the walk can be done in natural order.
isNaturalDocOrder
(int
The general analysis of the pattern.
analysis
)

Tell if the pattern can be 'walked' with the iteration steps in natural document order, without duplicates.

private static boolean

Returns:

true if the walk can be done in natural order.
isNaturalDocOrder
(Compiler
non-null reference to compiler object that has processed the XPath operations into an opcode map.
compiler
,
int
The opcode position for the step.
stepOpCodePos
,
int
The top-level step index withing the iterator.
stepIndex
,
int
The general analysis of the pattern.
analysis
)

Tell if the pattern can be 'walked' with the iteration steps in natural document order, without duplicates.

public static boolean
isOneStep(int analysis)

private static boolean

Returns:

32 bits as an integer that give information about the location path as a whole.
isOptimizableForDescendantIterator
(Compiler
non-null reference to compiler object that has processed the XPath operations into an opcode map.
compiler
,
int
The opcode position for the step.
stepOpCodePos
,
int
The top-level step index withing the iterator.
stepIndex
)

Special purpose function to see if we can optimize the pattern for a DescendantIterator.

pack-priv static boolean
isProximateInnerExpr(Compiler compiler, int opPos)

public static boolean
isSet(int analysis, int bits)

public static boolean
isWild(int analysis)

pack-priv static AxesWalker

Returns:

non-null AxesWalker derivative.
loadOneWalker
(WalkingIterator
The owning location path iterator.
lpi
,
Compiler
non-null reference to compiler object that has processed the XPath operations into an opcode map.
compiler
,
int
The opcode position for the step.
stepOpCodePos
)

This method is for building an array of possible levels where the target element(s) could be found for a match.

pack-priv static StepPattern

Returns:

A StepPattern object, which may contain relative StepPatterns.
loadSteps
(MatchPatternIterator
The MatchPatternIterator to which the steps will be attached.
mpi
,
Compiler
The compiler that holds the syntax tree/op map to construct from.
compiler
,
int
The current op code position within the opmap.
stepOpCodePos
,
int
The top-level step index withing the iterator.
stepIndex
)

Read a LocationPath as a generalized match pattern.

pack-priv static AxesWalker

Returns:

non-null AxesWalker derivative.
loadWalkers
(WalkingIterator
The owning location path iterator object.
lpi
,
Compiler
non-null reference to compiler object that has processed the XPath operations into an opcode map.
compiler
,
int
The opcode position for the step.
stepOpCodePos
,
int
The top-level step index withing the iterator.
stepIndex
)

This method is for building an array of possible levels where the target element(s) could be found for a match.

public static boolean
mightBeProximate(Compiler compiler, int opPos, int stepType)

Tell if the predicates need to have proximity knowledge.

public static DTMIterator

Returns:

non-null reference to a LocPathIterator or derivative.
newDTMIterator
(Compiler
non-null reference to compiler object that has processed the XPath operations into an opcode map.
compiler
,
int
The position of the operation code for this itterator.
opPos
,
boolean isTopLevel)

Create a new LocPathIterator iterator.

public static boolean
walksAncestors(int analysis)

public static boolean
walksAttributes(int analysis)

public static boolean
walksChildren(int analysis)

public static boolean
public static boolean
walksChildrenOnly(int analysis)

public static boolean
walksDescendants(int analysis)

public static boolean
public static boolean
walksDownExtraOnly(int analysis)

public static boolean
walksDownOnly(int analysis)

public static boolean
walksExtraNodes(int analysis)

public static boolean
walksExtraNodesOnly(int analysis)

public static boolean
walksFilteredList(int analysis)

public static boolean
public static boolean
walksInDocOrder(int analysis)

public static boolean
walksNamespaces(int analysis)

public static boolean
walksSelfOnly(int analysis)

public static boolean
walksSideways(int analysis)

public static boolean
walksSubtree(int analysis)

public static boolean
walksSubtreeOnly(int analysis)

public static boolean
public static boolean
public static boolean
walksUp(int analysis)

public static boolean
walksUpOnly(int analysis)

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

BIT_ANCESTORback to summary
public static final int BIT_ANCESTOR

Bit is on if any of the walkers contain an ancestor step.

BIT_ANCESTOR_OR_SELFback to summary
public static final int BIT_ANCESTOR_OR_SELF

Bit is on if any of the walkers contain an ancestor-or-self step.

BIT_ANY_DESCENDANT_FROM_ROOTback to summary
public static final int BIT_ANY_DESCENDANT_FROM_ROOT

Found "//foo" pattern

BIT_ATTRIBUTEback to summary
public static final int BIT_ATTRIBUTE

Bit is on if any of the walkers contain an attribute step.

BIT_BACKWARDS_SELFback to summary
public static final int BIT_BACKWARDS_SELF

Bit is on if any of the walkers can go backwards in document order from the context node.

BIT_CHILDback to summary
public static final int BIT_CHILD

Bit is on if any of the walkers contain a child step.

BIT_DESCENDANTback to summary
public static final int BIT_DESCENDANT

Bit is on if any of the walkers contain a descendant step.

BIT_DESCENDANT_OR_SELFback to summary
public static final int BIT_DESCENDANT_OR_SELF

Bit is on if any of the walkers contain a descendant-or-self step.

BIT_FILTERback to summary
public static final int BIT_FILTER

Bit is on if any of the walkers contain a filter (i.e. id(), extension function, etc.) step.

BIT_FOLLOWINGback to summary
public static final int BIT_FOLLOWING

Bit is on if any of the walkers contain a following step.

BIT_FOLLOWING_SIBLINGback to summary
public static final int BIT_FOLLOWING_SIBLING

Bit is on if any of the walkers contain a following-sibiling step.

BIT_MATCH_PATTERNback to summary
public static final int BIT_MATCH_PATTERN

Bit is on if the expression is a match pattern.

BIT_NAMESPACEback to summary
public static final int BIT_NAMESPACE

Bit is on if any of the walkers contain a namespace step.

BIT_NODETEST_ANYback to summary
public static final int BIT_NODETEST_ANY

Bit is on if any of the walkers contain an node() test. This is really only useful if the count is 1.

BIT_PARENTback to summary
public static final int BIT_PARENT

Bit is on if any of the walkers contain a parent step.

BIT_PRECEDINGback to summary
public static final int BIT_PRECEDING

Bit is on if any of the walkers contain a preceding step.

BIT_PRECEDING_SIBLINGback to summary
public static final int BIT_PRECEDING_SIBLING

Bit is on if any of the walkers contain a preceding-sibling step.

BIT_PREDICATEback to summary
public static final int BIT_PREDICATE

Bit is on if the expression contains a top-level predicate.

BIT_ROOTback to summary
public static final int BIT_ROOT

Bit is on if any of the walkers contain a root step.

BIT_SELFback to summary
public static final int BIT_SELF

Bit is on if any of the walkers contain a self step.

BITMASK_TRAVERSES_OUTSIDE_SUBTREEback to summary
public static final int BITMASK_TRAVERSES_OUTSIDE_SUBTREE

If any of these bits are on, the expression may likely traverse outside the given subtree.

BITS_COUNTback to summary
public static final int BITS_COUNT

First 8 bits are the number of top-level location steps. Hopefully there will never be more that 255 location steps!!!

BITS_RESERVEDback to summary
public static final int BITS_RESERVED

4 bits are reserved for future use.

DEBUG_ITERATOR_CREATIONback to summary
pack-priv static final boolean DEBUG_ITERATOR_CREATION

Set to true for diagnostics about iterator creation

DEBUG_PATTERN_CREATIONback to summary
pack-priv static final boolean DEBUG_PATTERN_CREATION

Set to true for diagnostics about walker creation

DEBUG_WALKER_CREATIONback to summary
pack-priv static final boolean DEBUG_WALKER_CREATION

Set to true for diagnostics about walker creation

Constructor Detail

WalkerFactoryback to summary
public WalkerFactory()

Method Detail

analyzeback to summary
private static int analyze(Compiler compiler, int stepOpCodePos, int stepIndex) throws TransformerException

Analyze the location path and return 32 bits that give information about the location path as a whole. See the BIT_XXX constants for meaning about each of the bits.

Parameters
compiler:Compiler

non-null reference to compiler object that has processed the XPath operations into an opcode map.

stepOpCodePos:int

The opcode position for the step.

stepIndex:int

The top-level step index withing the iterator.

Returns:int

32 bits as an integer that give information about the location path as a whole.

analyzePredicateback to summary
pack-priv static boolean analyzePredicate(Compiler compiler, int opPos, int stepType) throws TransformerException

Analyze a step and give information about it's predicates. Right now this just returns true or false if the step has a predicate.

Parameters
compiler:Compiler

non-null reference to compiler object that has processed the XPath operations into an opcode map.

opPos:int

The opcode position for the step.

stepType:int

The type of step, one of OP_GROUP, etc.

Returns:boolean

true if step has a predicate.

canCrissCrossback to summary
public static boolean canCrissCross(int analysis)
canSkipSubtreesback to summary
public static boolean canSkipSubtrees(int analysis)
createDefaultStepPatternback to summary
private static StepPattern createDefaultStepPattern(Compiler compiler, int opPos, MatchPatternIterator mpi, int analysis, StepPattern tail, StepPattern head) throws TransformerException

Create a StepPattern that is contained within a LocationPath.

Parameters
compiler:Compiler

The compiler that holds the syntax tree/op map to construct from.

mpi:MatchPatternIterator

The MatchPatternIterator to which the steps will be attached.

analysis:int

32 bits of analysis, from which the type of AxesWalker may be influenced.

tail:StepPattern

The step that is the first step analyzed, but the last step in the relative match linked list, i.e. the tail. May be null.

head:StepPattern

The step that is the current head of the relative match step linked list. May be null.

Returns:StepPattern

the head of the list.

createDefaultWalkerback to summary
private static AxesWalker createDefaultWalker(Compiler compiler, int opPos, WalkingIterator lpi, int analysis)

Create the proper Walker from the axes type.

Parameters
compiler:Compiler

non-null reference to compiler object that has processed the XPath operations into an opcode map.

opPos:int

The opcode position for the step.

lpi:WalkingIterator

The owning location path iterator.

analysis:int

32 bits of analysis, from which the type of AxesWalker may be influenced.

Returns:AxesWalker

non-null reference to AxesWalker derivative.

Exceptions
RuntimeException:
if the input is bad.
diagnoseIteratorback to summary
public static void diagnoseIterator(String name, int analysis, Compiler compiler)
functionProximateOrContainsProximateback to summary
pack-priv static boolean functionProximateOrContainsProximate(Compiler compiler, int opPos)
getAnalysisBitFromAxesback to summary
public static int getAnalysisBitFromAxes(int axis)

Get a corresponding BIT_XXX from an axis.

Parameters
axis:int

One of Axis.ANCESTOR, etc.

Returns:int

One of BIT_ANCESTOR, etc.

getAnalysisStringback to summary
public static String getAnalysisString(int analysis)
getAxisFromStepback to summary
public static int getAxisFromStep(Compiler compiler, int stepOpCodePos) throws TransformerException

Special purpose function to see if we can optimize the pattern for a DescendantIterator.

Parameters
compiler:Compiler

non-null reference to compiler object that has processed the XPath operations into an opcode map.

stepOpCodePos:int

The opcode position for the step.

Returns:int

32 bits as an integer that give information about the location path as a whole.

getStepCountback to summary
public static int getStepCount(int analysis)
hasPredicateback to summary
public static boolean hasPredicate(int analysis)
isAbsoluteback to summary
public static boolean isAbsolute(int analysis)
isDownwardAxisOfManyback to summary
public static boolean isDownwardAxisOfMany(int axis)

Tell if the given axis goes downword. Bogus name, if you can think of a better one, please do tell. This really has to do with inverting attribute axis.

Parameters
axis:int

One of Axis.XXX.

Returns:boolean

true if the axis is not a child axis and does not go up from the axis root.

isNaturalDocOrderback to summary
public static boolean isNaturalDocOrder(int analysis)

Tell if the pattern can be 'walked' with the iteration steps in natural document order, without duplicates.

Parameters
analysis:int

The general analysis of the pattern.

Returns:boolean

true if the walk can be done in natural order.

isNaturalDocOrderback to summary
private static boolean isNaturalDocOrder(Compiler compiler, int stepOpCodePos, int stepIndex, int analysis) throws TransformerException

Tell if the pattern can be 'walked' with the iteration steps in natural document order, without duplicates.

Parameters
compiler:Compiler

non-null reference to compiler object that has processed the XPath operations into an opcode map.

stepOpCodePos:int

The opcode position for the step.

stepIndex:int

The top-level step index withing the iterator.

analysis:int

The general analysis of the pattern.

Returns:boolean

true if the walk can be done in natural order.

Annotations
@SuppressWarnings:fallthrough
isOneStepback to summary
public static boolean isOneStep(int analysis)
isOptimizableForDescendantIteratorback to summary
private static boolean isOptimizableForDescendantIterator(Compiler compiler, int stepOpCodePos, int stepIndex) throws TransformerException

Special purpose function to see if we can optimize the pattern for a DescendantIterator.

Parameters
compiler:Compiler

non-null reference to compiler object that has processed the XPath operations into an opcode map.

stepOpCodePos:int

The opcode position for the step.

stepIndex:int

The top-level step index withing the iterator.

Returns:boolean

32 bits as an integer that give information about the location path as a whole.

Annotations
@SuppressWarnings:fallthrough
isProximateInnerExprback to summary
pack-priv static boolean isProximateInnerExpr(Compiler compiler, int opPos)
isSetback to summary
public static boolean isSet(int analysis, int bits)
isWildback to summary
public static boolean isWild(int analysis)
loadOneWalkerback to summary
pack-priv static AxesWalker loadOneWalker(WalkingIterator lpi, Compiler compiler, int stepOpCodePos) throws TransformerException

This method is for building an array of possible levels where the target element(s) could be found for a match.

Parameters
lpi:WalkingIterator

The owning location path iterator.

compiler:Compiler

non-null reference to compiler object that has processed the XPath operations into an opcode map.

stepOpCodePos:int

The opcode position for the step.

Returns:AxesWalker

non-null AxesWalker derivative.

loadStepsback to summary
pack-priv static StepPattern loadSteps(MatchPatternIterator mpi, Compiler compiler, int stepOpCodePos, int stepIndex) throws TransformerException

Read a LocationPath as a generalized match pattern. What this means is that the LocationPath is read backwards, as a test on a given node, to see if it matches the criteria of the selection, and ends up at the context node. Essentially, this is a backwards query from a given node, to find the context node.

So, the selection "foo/daz[2]" is, in non-abreviated expanded syntax, "self::node()/following-sibling::foo/child::daz[position()=2]". Taking this as a match pattern for a probable node, it works out to "self::daz/parent::foo[child::daz[position()=2 and isPrevStepNode()] precedingSibling::node()[isContextNodeOfLocationPath()]", adding magic isPrevStepNode and isContextNodeOfLocationPath operations. Predicates in the location path have to be executed by the following step, because they have to know the context of their execution.

Parameters
mpi:MatchPatternIterator

The MatchPatternIterator to which the steps will be attached.

compiler:Compiler

The compiler that holds the syntax tree/op map to construct from.

stepOpCodePos:int

The current op code position within the opmap.

stepIndex:int

The top-level step index withing the iterator.

Returns:StepPattern

A StepPattern object, which may contain relative StepPatterns.

loadWalkersback to summary
pack-priv static AxesWalker loadWalkers(WalkingIterator lpi, Compiler compiler, int stepOpCodePos, int stepIndex) throws TransformerException

This method is for building an array of possible levels where the target element(s) could be found for a match.

Parameters
lpi:WalkingIterator

The owning location path iterator object.

compiler:Compiler

non-null reference to compiler object that has processed the XPath operations into an opcode map.

stepOpCodePos:int

The opcode position for the step.

stepIndex:int

The top-level step index withing the iterator.

Returns:AxesWalker

non-null AxesWalker derivative.

mightBeProximateback to summary
public static boolean mightBeProximate(Compiler compiler, int opPos, int stepType) throws TransformerException

Tell if the predicates need to have proximity knowledge.

newDTMIteratorback to summary
public static DTMIterator newDTMIterator(Compiler compiler, int opPos, boolean isTopLevel) throws TransformerException

Create a new LocPathIterator iterator. The exact type of iterator returned is based on an analysis of the XPath operations.

Parameters
compiler:Compiler

non-null reference to compiler object that has processed the XPath operations into an opcode map.

opPos:int

The position of the operation code for this itterator.

Returns:DTMIterator

non-null reference to a LocPathIterator or derivative.

walksAncestorsback to summary
public static boolean walksAncestors(int analysis)
walksAttributesback to summary
public static boolean walksAttributes(int analysis)
walksChildrenback to summary
public static boolean walksChildren(int analysis)
walksChildrenAndExtraAndSelfOnlyback to summary
public static boolean walksChildrenAndExtraAndSelfOnly(int analysis)
walksChildrenOnlyback to summary
public static boolean walksChildrenOnly(int analysis)
walksDescendantsback to summary
public static boolean walksDescendants(int analysis)
walksDescendantsAndExtraAndSelfOnlyback to summary
public static boolean walksDescendantsAndExtraAndSelfOnly(int analysis)
walksDownExtraOnlyback to summary
public static boolean walksDownExtraOnly(int analysis)
walksDownOnlyback to summary
public static boolean walksDownOnly(int analysis)
walksExtraNodesback to summary
public static boolean walksExtraNodes(int analysis)
walksExtraNodesOnlyback to summary
public static boolean walksExtraNodesOnly(int analysis)
walksFilteredListback to summary
public static boolean walksFilteredList(int analysis)
walksFollowingOnlyMaybeAbsoluteback to summary
public static boolean walksFollowingOnlyMaybeAbsolute(int analysis)
walksInDocOrderback to summary
public static boolean walksInDocOrder(int analysis)
walksNamespacesback to summary
public static boolean walksNamespaces(int analysis)
walksSelfOnlyback to summary
public static boolean walksSelfOnly(int analysis)
walksSidewaysback to summary
public static boolean walksSideways(int analysis)
walksSubtreeback to summary
public static boolean walksSubtree(int analysis)
walksSubtreeOnlyback to summary
public static boolean walksSubtreeOnly(int analysis)
walksSubtreeOnlyFromRootOrContextback to summary
public static boolean walksSubtreeOnlyFromRootOrContext(int analysis)
walksSubtreeOnlyMaybeAbsoluteback to summary
public static boolean walksSubtreeOnlyMaybeAbsolute(int analysis)
walksUpback to summary
public static boolean walksUp(int analysis)
walksUpOnlyback to summary
public static boolean walksUpOnly(int analysis)