Package org.eclipse.m2m.atl.emftvm.impl

# Class RuleImpl

java.lang.Object
org.eclipse.emf.common.notify.impl.BasicNotifierImpl
org.eclipse.emf.ecore.impl.BasicEObjectImpl
org.eclipse.emf.ecore.impl.EObjectImpl
org.eclipse.m2m.atl.emftvm.impl.NamedElementImpl
org.eclipse.m2m.atl.emftvm.impl.RuleImpl

All Implemented Interfaces:
  `org.eclipse.emf.common.notify.Notifier`, `org.eclipse.emf.ecore.EObject`, `org.eclipse.emf.ecore.InternalEObject`, `NamedElement`, `Rule`

public class RuleImpl extends NamedElementImpl implements Rule
An implementation of the model object 'Rule'.

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`protected class`
`RuleImpl.AbstractState`
Base class for code that depends on the rule's `Rule.isAbstract()` state.
`protected class`
`RuleImpl.ApplierCbState`
Base class for code that depends on whether the rule has a `Rule.getApplier()` code block and/or a `Rule.getPostApply()` code block.
`protected class`
`RuleImpl.AutomaticRecursiveState`
`RuleImpl.RuleModeState` class for rules with mode `RuleMode.AUTOMATIC_RECURSIVE`.
`protected class`
`RuleImpl.AutomaticSingleState`
`RuleImpl.RuleModeState` class for rules with mode `RuleMode.AUTOMATIC_SINGLE`.
`protected class`
`RuleImpl.DefaultOffState`
`RuleImpl.DefaultState` class for rules with `Rule.isDefault()` set to `false`.
`protected class`
`RuleImpl.DefaultOnState`
`RuleImpl.DefaultState` class for rules with `Rule.isDefault()` set to `true`.
`protected class`
`RuleImpl.DefaultState`
Base class for code that depends on the state of `Rule.isDefault()`.
`protected class`
`RuleImpl.DistinctState`
Base class for code that depends on the rule's `Rule.isDistinctElements()` state.
`protected class`
`RuleImpl.IsAbstractState`
`RuleImpl.AbstractState` class for rules for which `Rule.isAbstract()` is `true`.
`protected class`
`RuleImpl.IsDistinctState`
`RuleImpl.DistinctState` class for rules for which `Rule.isDistinctElements()` is set to `true`.
`protected class`
`RuleImpl.IsLeafState`
`RuleImpl.LeafState` class for rules for which `Rule.isLeaf()` is `true`.
`protected class`
`RuleImpl.IsNotAbstractState`
`RuleImpl.AbstractState` class for rules for which `Rule.isAbstract()` is `false`.
`protected class`
`RuleImpl.IsNotDistinctState`
`RuleImpl.DistinctState` class for rules for which `Rule.isDistinctElements()` is set to `false`.
`protected class`
`RuleImpl.IsOtherLeafState`
`RuleImpl.LeafState` class for rules for which `Rule.isLeaf()` is `false` and `Rule.isWithLeaves()` is also `false`.
`protected class`
`RuleImpl.IsWithLeavesState`
`RuleImpl.LeafState` class for rules for which `Rule.isLeaf()` is `false` and `Rule.isWithLeaves()` is `true`.
`protected class`
`RuleImpl.LeafState`
Base class for code that depends on the rule's `Rule.isAbstract()` and `Rule.getESubRules()`.
`protected class`
`RuleImpl.ManualState`
`RuleImpl.RuleModeState` class for rules with mode `RuleMode.MANUAL`.
`protected class`
`RuleImpl.MatcherCbState`
Base class for code that depends on whether the rule has a `Rule.getMatcher()` code block.
`protected class`
`RuleImpl.RuleModeState`
Base class for code that depends on the rule's `Rule.getMode()`.
`protected class`
`RuleImpl.SuperRulesState`
Base class for code that depends on whether the rule has any `Rule.getESuperRules()`.
`protected class`
`RuleImpl.UniqueOffState`
`RuleImpl.UniqueState` class for rules with `Rule.isUnique()` set to `false`.
`protected class`
`RuleImpl.UniqueOnState`
`RuleImpl.UniqueState` class for rules with `Rule.isUnique()` set to `true`.
`protected class`
`RuleImpl.UniqueState`
Base class for code that depends on the state of `Rule.isUnique()`.
`protected class`
`RuleImpl.WithApplierWithoutPostApplyCbState`
`RuleImpl.ApplierCbState` class for rules that have a `Rule.getApplier()` code block and no `Rule.getPostApply()` code block.
`protected class`
`RuleImpl.WithApplierWithPostApplyCbState`
`RuleImpl.ApplierCbState` class for rules that have a `Rule.getApplier()` code block as well as a `Rule.getPostApply()` code block.
`protected class`
`RuleImpl.WithMatcherCbState`
`RuleImpl.MatcherCbState` class for rules that have a `Rule.getMatcher()` code block.
`protected class`
`RuleImpl.WithoutApplierWithoutPostApplyCbState`
`RuleImpl.ApplierCbState` class for rules that do not have a `Rule.getApplier()` code block or a `Rule.getPostApply()` code block.
`protected class`
`RuleImpl.WithoutApplierWithPostApplyCbState`
`RuleImpl.ApplierCbState` class for rules that do not have a `Rule.getApplier()` code block and do have a `Rule.getPostApply()` code block.
`protected class`
`RuleImpl.WithoutMatcherCbState`
`RuleImpl.MatcherCbState` class for rules that do not have a `Rule.getMatcher()` code block.
`protected class`
`RuleImpl.WithoutSuperRulesState`
`RuleImpl.SuperRulesState` class for rules without any `Rule.getESuperRules()`.
`protected class`
`RuleImpl.WithSuperRulesState`
`RuleImpl.SuperRulesState` class for rules with `Rule.getESuperRules()`.

## Nested classes/interfaces inherited from class org.eclipse.emf.ecore.impl.BasicEObjectImpl

`org.eclipse.emf.ecore.impl.BasicEObjectImpl.EPropertiesHolder, org.eclipse.emf.ecore.impl.BasicEObjectImpl.EPropertiesHolderBaseImpl, org.eclipse.emf.ecore.impl.BasicEObjectImpl.EPropertiesHolderImpl`

## Nested classes/interfaces inherited from class org.eclipse.emf.common.notify.impl.BasicNotifierImpl

`org.eclipse.emf.common.notify.impl.BasicNotifierImpl.EAdapterList<E extends Object & org.eclipse.emf.common.notify.Adapter>, org.eclipse.emf.common.notify.impl.BasicNotifierImpl.EObservableAdapterList, org.eclipse.emf.common.notify.impl.BasicNotifierImpl.EScannableAdapterList`

## Nested classes/interfaces inherited from interface org.eclipse.emf.ecore.InternalEObject

`org.eclipse.emf.ecore.InternalEObject.EStore`

## Field Summary

Fields
Modifier and Type
Field
Description
`protected boolean`
`abstract_`
The cached value of the '`Abstract`' attribute.
`protected static final boolean`
`ABSTRACT_EDEFAULT`
The default value of the '`Abstract`' attribute.
`protected RuleImpl.AbstractState`
`abstractState`
The rule's `isAbstract()` state object.
`protected LazySet<Rule>`
`allESuperRules`
The cached transitive closure of super-rules.
`protected CodeBlock`
`applier`
The cached value of the '`Applier`' containment reference.
`protected RuleImpl.ApplierCbState`
`applierCbState`
The rule's `getApplier()` state object.
`protected final Map<TraceLink,Object[]>`
`applyArgs`
The cached arguments for the applier and post-applier code block for a given trace.
`protected boolean`
`default_`
The cached value of the '`Default`' attribute.
`protected static final boolean`
`DEFAULT_EDEFAULT`
The default value of the '`Default`' attribute.
`protected RuleImpl.DefaultState`
`defaultState`
The rule's `isDefault()` state object.
`protected static final boolean`
`DISTINCT_ELEMENTS_EDEFAULT`
The default value of the '`Distinct Elements`' attribute.
`protected boolean`
`distinctElements`
The cached value of the '`Distinct Elements`' attribute.
`protected RuleImpl.DistinctState`
`distinctState`
The rule's `isDistinctElements()` state object.
`protected org.eclipse.emf.common.util.EList<Rule>`
`eSubRules`
The cached value of the '`ESub Rules`' reference list.
`protected org.eclipse.emf.common.util.EList<Rule>`
`eSuperRules`
The cached value of the '`ESuper Rules`' reference list.
`protected FieldContainer`
`fieldContainer`
Field storage and lookup.
`protected org.eclipse.emf.common.util.EList<Field>`
`fields`
The cached value of the '`Fields`' containment reference list.
`protected org.eclipse.emf.common.util.EList<InputRuleElement>`
`inputElements`
The cached value of the '`Input Elements`' containment reference list.
`protected List<Iterable<org.eclipse.emf.ecore.EObject>>`
`iterableList`
Pre-compiled list of iterables for each input rule element.
`protected Map<String,Iterable<org.eclipse.emf.ecore.EObject>>`
`iterableMap`
Pre-compiled map of iterables for each input rule element.
`protected boolean`
`leaf`
The cached value of the '`Leaf`' attribute.
`protected static final boolean`
`LEAF_EDEFAULT`
The default value of the '`Leaf`' attribute.
`protected RuleImpl.LeafState`
`leafState`
The rule's `isLeaf()`/`isWithLeaves()` state object.
`protected CodeBlock`
`matcher`
The cached value of the '`Matcher`' containment reference.
`protected RuleImpl.MatcherCbState`
`matcherCbState`
The rule's `getMatcher()` state object.
`protected RuleMode`
`mode`
The cached value of the '`Mode`' attribute.
`protected static final RuleMode`
`MODE_EDEFAULT`
The default value of the '`Mode`' attribute.
`protected org.eclipse.emf.common.util.EList<OutputRuleElement>`
`outputElements`
The cached value of the '`Output Elements`' containment reference list.
`protected CodeBlock`
`postApply`
The cached value of the '`Post Apply`' containment reference.
`protected RuleImpl.RuleModeState`
`ruleModeState`
The rule's `getMode()` state object.
`protected org.eclipse.emf.common.util.EList<String>`
`superRules`
The cached value of the '`Super Rules`' attribute list.
`protected RuleImpl.SuperRulesState`
`superRulesState`
The rule's `getESuperRules()`.isEmpty() state object.
`protected boolean`
`unique`
The cached value of the '`Unique`' attribute.
`protected static final boolean`
`UNIQUE_EDEFAULT`
The default value of the '`Unique`' attribute.
`protected RuleImpl.UniqueState`
`uniqueState`
The rule's `isUnique()` state object.
`protected static final boolean`
`WITH_LEAVES_EDEFAULT`
The default value of the '`With Leaves`' attribute.
`protected boolean`
`withLeaves`
The cached value of the '`With Leaves`' attribute.

### Fields inherited from class org.eclipse.m2m.atl.emftvm.impl.NamedElementImpl

`name, NAME_EDEFAULT`

### Fields inherited from class org.eclipse.emf.ecore.impl.EObjectImpl

`eAdapters, eContainer, eContainerFeatureID, EDELIVER, EDYNAMIC_CLASS, eFlags, ELAST_EOBJECT_FLAG, ELAST_NOTIFIER_FLAG, eProperties, EPROXY`

### Fields inherited from class org.eclipse.emf.ecore.impl.BasicEObjectImpl

`EVIRTUAL_GET, EVIRTUAL_IS_SET, EVIRTUAL_NO_VALUE, EVIRTUAL_SET, EVIRTUAL_UNSET`

### Fields inherited from interface org.eclipse.emf.ecore.InternalEObject

`EOPPOSITE_FEATURE_BASE`

## Constructor Summary

Constructors
Modifier
Constructor
Description
`protected`
`RuleImpl()`
Creates a new `RuleImpl`.

## Method Summary

Modifier and Type
Method
Description
`void`
`apply(StackFrame frame)`
Applies this rule for the created traces.
`boolean`
`applyFirst(StackFrame frame)`
Applies and post-applies this rule for the first recorded match.
`Object`
`applyFor(StackFrame frame, TraceLink trace)`
Applies this rule for the given `trace`.
`Object`
`applyOne(StackFrame frame, Map<String,Object> valuesMap)`
Applies this rule to `trace`
`org.eclipse.emf.common.notify.NotificationChain`
`basicSetApplier(CodeBlock newApplier, org.eclipse.emf.common.notify.NotificationChain msgs)`
`org.eclipse.emf.common.notify.NotificationChain`
`basicSetMatcher(CodeBlock newMatcher, org.eclipse.emf.common.notify.NotificationChain msgs)`
`org.eclipse.emf.common.notify.NotificationChain`
`basicSetModule(Module newModule, org.eclipse.emf.common.notify.NotificationChain msgs)`
`org.eclipse.emf.common.notify.NotificationChain`
`basicSetPostApply(CodeBlock newPostApply, org.eclipse.emf.common.notify.NotificationChain msgs)`
`void`
`clearFields()`
Clears the values of all registered fields within this rule.
`void`
`compileIterables(ExecEnv env)`
Compiles the model element iterables for this rule.
`void`
`compileState(ExecEnv env)`
Compiles the internal state of this rule for optimised matching.
`boolean`
`completeTraceFor(StackFrame frame, TraceLink trace)`
Completes `trace` for this rule by creating the output elements.
`void`
`createTraces(StackFrame frame)`
Creates trace elements for the recorded matches for this rule.
`void`
`createUniqueMapping(TraceLink trace)`
Creates a unique trace mapping entry for the source values in `trace`, if applicable.
`org.eclipse.emf.common.notify.NotificationChain`
`eBasicRemoveFromContainerFeature(org.eclipse.emf.common.notify.NotificationChain msgs)`
`Object`
`eGet(int featureID, boolean resolve, boolean coreType)`
`org.eclipse.emf.common.notify.NotificationChain`
`eInverseAdd(org.eclipse.emf.ecore.InternalEObject otherEnd, int featureID, org.eclipse.emf.common.notify.NotificationChain msgs)`
`org.eclipse.emf.common.notify.NotificationChain`
`eInverseRemove(org.eclipse.emf.ecore.InternalEObject otherEnd, int featureID, org.eclipse.emf.common.notify.NotificationChain msgs)`
`boolean`
`eIsSet(int featureID)`
`void`
`eSet(int featureID, Object newValue)`
`protected org.eclipse.emf.ecore.EClass`
`eStaticClass()`
Returns the `EClass` that correspond to this metaclass.
`void`
`eUnset(int featureID)`
`Field`
`findField(Object context, String name)`
Finds a `Field` registered within this `Rule`.
`InputRuleElement`
`findInputElement(String name)`
Finds the `InputRuleElement` with the given name within the rule inheritance hierarchy depth-first.
`Field`
`findStaticField(Object context, String name)`
Finds a static `Field` registered within this `Rule`.
`LazySet<Rule>`
`getAllESuperRules()`
Returns the transitive closure of super-rules, root rule first (`LazySet`'s have a fixed iteration order).
`CodeBlock`
`getApplier()`
Returns the value of the 'Applier' containment reference.
`org.eclipse.emf.common.util.EList<Rule>`
`getESubRules()`
Returns the value of the 'ESub Rules' reference list.
`org.eclipse.emf.common.util.EList<Rule>`
`getESuperRules()`
Returns the value of the 'ESuper Rules' reference list.
`org.eclipse.emf.common.util.EList<Field>`
`getFields()`
Returns the value of the 'Fields' containment reference list.
`org.eclipse.emf.common.util.EList<InputRuleElement>`
`getInputElements()`
Returns the value of the 'Input Elements' containment reference list.
`CodeBlock`
`getMatcher()`
Returns the value of the 'Matcher' containment reference.
`RuleMode`
`getMode()`
Returns the value of the 'Mode' attribute.
`Module`
`getModule()`
Returns the value of the 'Module' container reference.
`org.eclipse.emf.common.util.EList<OutputRuleElement>`
`getOutputElements()`
Returns the value of the 'Output Elements' containment reference list.
`CodeBlock`
`getPostApply()`
Returns the value of the 'Post Apply' containment reference.
`org.eclipse.emf.common.util.EList<String>`
`getSuperRules()`
Returns the value of the 'Super Rules' attribute list.
`TraceLink`
`getUniqueTrace(StackFrame frame, Object[] values)`
Returns the unique rule application trace for `values`, if applicable.
`boolean`
`hasField(String name)`
Returns `true` iff this rule has any registered fields with the given `name`.
`boolean`
`hasStaticField(String name)`
Returns `true` iff this rule has any registered static fields with the given `name`.
`boolean`
`isAbstract()`
Returns the value of the 'Abstract' attribute.
`boolean`
`isDefault()`
Returns the value of the 'Default' attribute.
`boolean`
`isDistinctElements()`
Returns the value of the 'Distinct Elements' attribute.
`boolean`
`isLeaf()`
Returns the value of the 'Leaf' attribute.
`boolean`
`isUnique()`
Returns the value of the 'Unique' attribute.
`boolean`
`isWithLeaves()`
Returns the value of the 'With Leaves' attribute.
`Object`
`matchManual(StackFrame frame, Object[] values)`
Matches this rule manually, if applicable.
`boolean`
`matchOne(StackFrame frame, Map<String,Object> valuesMap)`
Matches rule for `valuesMap`.
`boolean`
`matchOneOnly(StackFrame frame, Map<String,Object> valuesMap)`
Matches this rule only (without super-rules) for `valuesMap`.
`boolean[]`
`matchRecursive(StackFrame frame)`
Matches this rule for the automatic recursive stage, if applicable.
`boolean`
`matchSingle(StackFrame frame)`
Matches this rule for the automatic single stage, if applicable.
`void`
`postApply(StackFrame frame)`
Runs post-applier for this rule for the created traces.
`Object`
`postApplyFor(StackFrame frame, TraceLink trace)`
Post-applies this rule for the given `trace`.
`void`
`registerField(Field field)`
Registers a `Field` into this `Rule`.
`void`
`resetState()`
Resets the internal state of this rule.
`void`
`setAbstract(boolean newAbstract)`
Sets the value of the '`Abstract`' attribute.
`void`
`setApplier(CodeBlock newApplier)`
Sets the value of the '`Applier`' containment reference.
`void`
`setDefault(boolean newDefault)`
Sets the value of the '`Default`' attribute.
`void`
`setDistinctElements(boolean newDistinctElements)`
Sets the value of the '`Distinct Elements`' attribute.
`void`
`setMatcher(CodeBlock newMatcher)`
Sets the value of the '`Matcher`' containment reference.
`void`
`setMode(RuleMode newMode)`
Sets the value of the '`Mode`' attribute.
`void`
`setModule(Module newModule)`
Sets the value of the '`Module`' container reference.
`void`
`setPostApply(CodeBlock newPostApply)`
Sets the value of the '`Post Apply`' containment reference.
`void`
`setUnique(boolean newUnique)`
Sets the value of the '`Unique`' attribute.
`String`
`toString()`
`protected void`
`updateAbstractState()`
Updates `abstractState`.
`protected void`
`updateApplierCbState()`
Updates `applierCbState`.
`protected void`
`updateDefaultState()`
Updates `defaultState`.
`protected void`
`updateDistinctState()`
Updates `distinctState`.
`protected void`
`updateLeafState()`
Updates `leafState`.
`protected void`
`updateMatcherCbState()`
Updates `matcherCbState`.
`protected void`
`updateRuleModeState()`
Updates `ruleModeState`.
`protected void`
`updateSuperRulesState()`
Updates `superRulesState`.
`protected void`
`updateUniqueState()`
Updates `uniqueState`.

### Methods inherited from class org.eclipse.m2m.atl.emftvm.impl.NamedElementImpl

`getName, setName`

### Methods inherited from class org.eclipse.emf.ecore.impl.EObjectImpl

`eAdapters, eBasicAdapters, eBasicProperties, eBasicSetContainer, eClass, eContainerFeatureID, eDeliver, eInternalContainer, eInvoke, eIsProxy, eProperties, eSetClass, eSetDeliver, eSetProxyURI`

### Methods inherited from class org.eclipse.emf.ecore.impl.BasicEObjectImpl

`eAddVirtualValue, eAllContents, eBaseStructuralFeatureID, eBasicRemoveFromContainer, eBasicSetContainer, eComputeVirtualValuesCapacity, eContainer, eContainerAdapterArray, eContainingFeature, eContainmentFeature, eContainmentFeature, eContains, eContents, eCrossReferences, eDerivedOperationID, eDerivedOperationID, eDerivedStructuralFeatureID, eDerivedStructuralFeatureID, eDirectResource, eDynamicBasicRemoveFromContainer, eDynamicClass, eDynamicFeature, eDynamicFeatureID, eDynamicGet, eDynamicGet, eDynamicGet, eDynamicInverseAdd, eDynamicInverseAdd, eDynamicInverseRemove, eDynamicInverseRemove, eDynamicInvoke, eDynamicInvoke, eDynamicIsSet, eDynamicIsSet, eDynamicIsSet, eDynamicSet, eDynamicSet, eDynamicSet, eDynamicUnset, eDynamicUnset, eDynamicUnset, eGet, eGet, eGet, eHasSettings, eInternalResource, eInverseAdd, eInverseRemove, eInvocationDelegate, eInvoke, eIsSet, eObjectForURIFragmentSegment, eOpenGet, eOpenIsSet, eOpenSet, eOpenUnset, eProxyURI, eRemoveVirtualValue, eResolveProxy, eResource, eSet, eSetDirectResource, eSetResource, eSetStore, eSetting, eSettingDelegate, eSettings, eSetVirtualIndexBits, eSetVirtualValue, eSetVirtualValues, eStaticFeatureCount, eStaticOperationCount, eStore, eUnset, eURIFragmentSegment, eVirtualBitCount, eVirtualGet, eVirtualGet, eVirtualIndex, eVirtualIndexBits, eVirtualIsSet, eVirtualSet, eVirtualUnset, eVirtualValue, eVirtualValues`

### Methods inherited from class org.eclipse.emf.common.notify.impl.BasicNotifierImpl

`eBasicAdapterArray, eBasicHasAdapters, eNotificationRequired, eNotify`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface org.eclipse.emf.ecore.EObject

`eAllContents, eClass, eContainer, eContainingFeature, eContainmentFeature, eContents, eCrossReferences, eGet, eGet, eInvoke, eIsProxy, eIsSet, eResource, eSet, eUnset`

### Methods inherited from interface org.eclipse.emf.ecore.InternalEObject

`eNotificationRequired`

### Methods inherited from interface org.eclipse.m2m.atl.emftvm.NamedElement

`getName, setName`

### Methods inherited from interface org.eclipse.emf.common.notify.Notifier

`eAdapters, eDeliver, eNotify, eSetDeliver`

## Field Details

### MODE_EDEFAULT

protected static final RuleMode MODE_EDEFAULT
The default value of the '`Mode`' attribute.

See Also:
  - `getMode()`

### mode

protected RuleMode mode
The cached value of the '`Mode`' attribute.

See Also:
  - `getMode()`

### inputElements

protected org.eclipse.emf.common.util.EList<InputRuleElement> inputElements
The cached value of the '`Input Elements`' containment reference list.

See Also:
  - `getInputElements()`

### outputElements

protected org.eclipse.emf.common.util.EList<OutputRuleElement> outputElements
The cached value of the '`Output Elements`' containment reference list.

See Also:
  - `getOutputElements()`

### eSuperRules

protected org.eclipse.emf.common.util.EList<Rule> eSuperRules
The cached value of the '`ESuper Rules`' reference list.

See Also:
  - `getESuperRules()`

### eSubRules

protected org.eclipse.emf.common.util.EList<Rule> eSubRules
The cached value of the '`ESub Rules`' reference list.

See Also:
  - `getESubRules()`

### matcher

protected CodeBlock matcher
The cached value of the '`Matcher`' containment reference.

See Also:
  - `getMatcher()`

### applier

protected CodeBlock applier
The cached value of the '`Applier`' containment reference.

See Also:
  - `getApplier()`

### postApply

protected CodeBlock postApply
The cached value of the '`Post Apply`' containment reference.

See Also:
  - `getPostApply()`

### superRules

protected org.eclipse.emf.common.util.EList<String> superRules
The cached value of the '`Super Rules`' attribute list.

See Also:
  - `getSuperRules()`

### ABSTRACT_EDEFAULT

protected static final boolean ABSTRACT_EDEFAULT
The default value of the '`Abstract`' attribute.

See Also:
  - `isAbstract()`
  - Constant Field Values

### abstract_

protected boolean abstract_
The cached value of the '`Abstract`' attribute.

See Also:
  - `isAbstract()`

### fields

protected org.eclipse.emf.common.util.EList<Field> fields
The cached value of the '`Fields`' containment reference list.

See Also:
  - `getFields()`

### DEFAULT_EDEFAULT

protected static final boolean DEFAULT_EDEFAULT
The default value of the '`Default`' attribute.

See Also:
  - `isDefault()`
  - Constant Field Values

### default_

protected boolean default_
The cached value of the '`Default`' attribute.

See Also:
  - `isDefault()`

### DISTINCT_ELEMENTS_EDEFAULT

protected static final boolean DISTINCT_ELEMENTS_EDEFAULT
The default value of the '`Distinct Elements`' attribute.

See Also:
  - `isDistinctElements()`
  - Constant Field Values

### distinctElements

protected boolean distinctElements
The cached value of the '`Distinct Elements`' attribute.

See Also:
  - `isDistinctElements()`

### UNIQUE_EDEFAULT

protected static final boolean UNIQUE_EDEFAULT
The default value of the '`Unique`' attribute.

See Also:
  - `isUnique()`
  - Constant Field Values

### unique

protected boolean unique
The cached value of the '`Unique`' attribute.

See Also:
  - `isUnique()`

### LEAF_EDEFAULT

protected static final boolean LEAF_EDEFAULT
The default value of the '`Leaf`' attribute.

See Also:
  - `isLeaf()`
  - Constant Field Values

### leaf

protected boolean leaf
The cached value of the '`Leaf`' attribute.

See Also:
  - `isLeaf()`

### WITH_LEAVES_EDEFAULT

protected static final boolean WITH_LEAVES_EDEFAULT
The default value of the '`With Leaves`' attribute.

See Also:
  - `isWithLeaves()`
  - Constant Field Values

### withLeaves

protected boolean withLeaves
The cached value of the '`With Leaves`' attribute.

See Also:
  - `isWithLeaves()`

### fieldContainer

protected FieldContainer fieldContainer
Field storage and lookup.

### uniqueState

protected RuleImpl.UniqueState uniqueState
The rule's `isUnique()` state object.

### defaultState

protected RuleImpl.DefaultState defaultState
The rule's `isDefault()` state object.

### superRulesState

protected RuleImpl.SuperRulesState superRulesState
The rule's `getESuperRules()`.isEmpty() state object.

### ruleModeState

protected RuleImpl.RuleModeState ruleModeState
The rule's `getMode()` state object.

### leafState

protected RuleImpl.LeafState leafState
The rule's `isLeaf()`/`isWithLeaves()` state object.

### abstractState

protected RuleImpl.AbstractState abstractState
The rule's `isAbstract()` state object.

### matcherCbState

protected RuleImpl.MatcherCbState matcherCbState
The rule's `getMatcher()` state object.

### applierCbState

protected RuleImpl.ApplierCbState applierCbState
The rule's `getApplier()` state object.

### distinctState

protected RuleImpl.DistinctState distinctState
The rule's `isDistinctElements()` state object.

### allESuperRules

protected LazySet<Rule> allESuperRules
The cached transitive closure of super-rules.

### applyArgs

protected final Map<TraceLink,Object[]> applyArgs
The cached arguments for the applier and post-applier code block for a given trace.

### iterableList

protected List<Iterable<org.eclipse.emf.ecore.EObject>> iterableList
Pre-compiled list of iterables for each input rule element.

### iterableMap

protected Map<String,Iterable<org.eclipse.emf.ecore.EObject>> iterableMap
Pre-compiled map of iterables for each input rule element.

## Constructor Details

### RuleImpl

protected RuleImpl()
Creates a new `RuleImpl`.

## Method Details

### eStaticClass

protected org.eclipse.emf.ecore.EClass eStaticClass()
Returns the `EClass` that correspond to this metaclass.

Overrides:
  `eStaticClass` in class `NamedElementImpl`
Returns:
  the `EClass` that correspond to this metaclass.

### getModule

public Module getModule()
Returns the value of the 'Module' container reference. It is bidirectional and its opposite is '`Rules`'.

If the meaning of the 'Module' container reference isn't clear, there really should be more of a description here...

Specified by:
  `getModule` in interface `Rule`
Returns:
  the value of the 'Module' container reference.
See Also:
  - `Rule.setModule(Module)`
  - `EmftvmPackage.getRule_Module()`
  - `Module.getRules()`

### basicSetModule

public org.eclipse.emf.common.notify.NotificationChain basicSetModule(Module newModule, org.eclipse.emf.common.notify.NotificationChain msgs)

See Also:
  - ``

### setModule

public void setModule(Module newModule)
Sets the value of the '`Module`' container reference.

Specified by:
  `setModule` in interface `Rule`
Parameters:
  `newModule` - the new value of the 'Module' container reference.
See Also:
  - `Rule.getModule()`

### getMode

public RuleMode getMode()
Returns the value of the 'Mode' attribute. The literals are from the enumeration `RuleMode`.

If the meaning of the 'Mode' attribute isn't clear, there really should be more of a description here...

Specified by:
  `getMode` in interface `Rule`
Returns:
  the value of the 'Mode' attribute.
See Also:
  - `RuleMode`
  - `Rule.setMode(RuleMode)`
  - `EmftvmPackage.getRule_Mode()`

### setMode

public void setMode(RuleMode newMode)
Sets the value of the '`Mode`' attribute.

Specified by:
  `setMode` in interface `Rule`
Parameters:
  `newMode` - the new value of the 'Mode' attribute.
See Also:
  - `RuleMode`
  - `Rule.getMode()`

### getInputElements

public org.eclipse.emf.common.util.EList<InputRuleElement> getInputElements()
Returns the value of the 'Input Elements' containment reference list. The list contents are of type `InputRuleElement`. It is bidirectional and its opposite is '`Input For`'.

If the meaning of the 'Input Elements' containment reference list isn't clear, there really should be more of a description here...

Specified by:
  `getInputElements` in interface `Rule`
Returns:
  the value of the 'Input Elements' containment reference list.
See Also:
  - `EmftvmPackage.getRule_InputElements()`
  - `InputRuleElement.getInputFor()`

### getOutputElements

public org.eclipse.emf.common.util.EList<OutputRuleElement> getOutputElements()
Returns the value of the 'Output Elements' containment reference list. The list contents are of type `OutputRuleElement`. It is bidirectional and its opposite is '`Output For`'.

If the meaning of the 'Output Elements' containment reference list isn't clear, there really should be more of a description here...

Specified by:
  `getOutputElements` in interface `Rule`
Returns:
  the value of the 'Output Elements' containment reference list.
See Also:
  - `EmftvmPackage.getRule_OutputElements()`
  - `OutputRuleElement.getOutputFor()`

### getESuperRules

public org.eclipse.emf.common.util.EList<Rule> getESuperRules()
Returns the value of the 'ESuper Rules' reference list. The list contents are of type `Rule`. It is bidirectional and its opposite is '`ESub Rules`'.

If the meaning of the 'ESuper Rules' reference list isn't clear, there really should be more of a description here...

Specified by:
  `getESuperRules` in interface `Rule`
Returns:
  the value of the 'ESuper Rules' reference list.
See Also:
  - `EmftvmPackage.getRule_ESuperRules()`
  - `Rule.getESubRules()`

### getESubRules

public org.eclipse.emf.common.util.EList<Rule> getESubRules()
Returns the value of the 'ESub Rules' reference list. The list contents are of type `Rule`. It is bidirectional and its opposite is '`ESuper Rules`'.

If the meaning of the 'ESub Rules' reference list isn't clear, there really should be more of a description here...

Specified by:
  `getESubRules` in interface `Rule`
Returns:
  the value of the 'ESub Rules' reference list.
See Also:
  - `EmftvmPackage.getRule_ESubRules()`
  - `Rule.getESuperRules()`

### getMatcher

public CodeBlock getMatcher()
Returns the value of the 'Matcher' containment reference. It is bidirectional and its opposite is '`Matcher For`'.

If the meaning of the 'Matcher' containment reference isn't clear, there really should be more of a description here...

Specified by:
  `getMatcher` in interface `Rule`
Returns:
  the value of the 'Matcher' containment reference.
See Also:
  - `Rule.setMatcher(CodeBlock)`
  - `EmftvmPackage.getRule_Matcher()`
  - `CodeBlock.getMatcherFor()`

### basicSetMatcher

public org.eclipse.emf.common.notify.NotificationChain basicSetMatcher(CodeBlock newMatcher, org.eclipse.emf.common.notify.NotificationChain msgs)

See Also:
  - ``

### setMatcher

public void setMatcher(CodeBlock newMatcher)
Sets the value of the '`Matcher`' containment reference.

Specified by:
  `setMatcher` in interface `Rule`
Parameters:
  `newMatcher` - the new value of the 'Matcher' containment reference.
See Also:
  - `Rule.getMatcher()`

### getApplier

public CodeBlock getApplier()
Returns the value of the 'Applier' containment reference. It is bidirectional and its opposite is '`Applier For`'.

If the meaning of the 'Applier' containment reference isn't clear, there really should be more of a description here...

Specified by:
  `getApplier` in interface `Rule`
Returns:
  the value of the 'Applier' containment reference.
See Also:
  - `Rule.setApplier(CodeBlock)`
  - `EmftvmPackage.getRule_Applier()`
  - `CodeBlock.getApplierFor()`

### basicSetApplier

public org.eclipse.emf.common.notify.NotificationChain basicSetApplier(CodeBlock newApplier, org.eclipse.emf.common.notify.NotificationChain msgs)

See Also:
  - ``

### setApplier

public void setApplier(CodeBlock newApplier)
Sets the value of the '`Applier`' containment reference.

Specified by:
  `setApplier` in interface `Rule`
Parameters:
  `newApplier` - the new value of the 'Applier' containment reference.
See Also:
  - `Rule.getApplier()`

### getPostApply

public CodeBlock getPostApply()
Returns the value of the 'Post Apply' containment reference. It is bidirectional and its opposite is '`Post Apply For`'.

If the meaning of the 'Post Apply' containment reference isn't clear, there really should be more of a description here...

Specified by:
  `getPostApply` in interface `Rule`
Returns:
  the value of the 'Post Apply' containment reference.
See Also:
  - `Rule.setPostApply(CodeBlock)`
  - `EmftvmPackage.getRule_PostApply()`
  - `CodeBlock.getPostApplyFor()`

### basicSetPostApply

public org.eclipse.emf.common.notify.NotificationChain basicSetPostApply(CodeBlock newPostApply, org.eclipse.emf.common.notify.NotificationChain msgs)

See Also:
  - ``

### setPostApply

public void setPostApply(CodeBlock newPostApply)
Sets the value of the '`Post Apply`' containment reference.

Specified by:
  `setPostApply` in interface `Rule`
Parameters:
  `newPostApply` - the new value of the 'Post Apply' containment reference.
See Also:
  - `Rule.getPostApply()`

### getSuperRules

public org.eclipse.emf.common.util.EList<String> getSuperRules()
Returns the value of the 'Super Rules' attribute list. The list contents are of type `String`.

If the meaning of the 'Super Rules' reference list isn't clear, there really should be more of a description here...

Specified by:
  `getSuperRules` in interface `Rule`
Returns:
  the value of the 'Super Rules' attribute list.
See Also:
  - `EmftvmPackage.getRule_SuperRules()`

### isAbstract

public boolean isAbstract()
Returns the value of the 'Abstract' attribute.

If the meaning of the 'Abstract' attribute isn't clear, there really should be more of a description here...

Specified by:
  `isAbstract` in interface `Rule`
Returns:
  the value of the 'Abstract' attribute.
See Also:
  - `Rule.setAbstract(boolean)`
  - `EmftvmPackage.getRule_Abstract()`

### setAbstract

public void setAbstract(boolean newAbstract)
Sets the value of the '`Abstract`' attribute.

Specified by:
  `setAbstract` in interface `Rule`
Parameters:
  `newAbstract` - the new value of the 'Abstract' attribute.
See Also:
  - `Rule.isAbstract()`

### getFields

public org.eclipse.emf.common.util.EList<Field> getFields()
Returns the value of the 'Fields' containment reference list. The list contents are of type `Field`. It is bidirectional and its opposite is '`Rule`'.

If the meaning of the 'Fields' containment reference list isn't clear, there really should be more of a description here...

Specified by:
  `getFields` in interface `Rule`
Returns:
  the value of the 'Fields' containment reference list.
See Also:
  - `EmftvmPackage.getRule_Fields()`
  - `Field.getRule()`

### isDefault

public boolean isDefault()
Returns the value of the 'Default' attribute.

If the meaning of the 'Default' attribute isn't clear, there really should be more of a description here...

Specified by:
  `isDefault` in interface `Rule`
Returns:
  the value of the 'Default' attribute.
See Also:
  - `Rule.setDefault(boolean)`
  - `EmftvmPackage.getRule_Default()`

### setDefault

public void setDefault(boolean newDefault)
Sets the value of the '`Default`' attribute.

Specified by:
  `setDefault` in interface `Rule`
Parameters:
  `newDefault` - the new value of the 'Default' attribute.
See Also:
  - `Rule.isDefault()`

### isDistinctElements

public boolean isDistinctElements()
Returns the value of the 'Distinct Elements' attribute.

If the meaning of the 'Distinct Elements' attribute isn't clear, there really should be more of a description here...

Specified by:
  `isDistinctElements` in interface `Rule`
Returns:
  the value of the 'Distinct Elements' attribute.
See Also:
  - `Rule.setDistinctElements(boolean)`
  - `EmftvmPackage.getRule_DistinctElements()`

### setDistinctElements

public void setDistinctElements(boolean newDistinctElements)
Sets the value of the '`Distinct Elements`' attribute.

Specified by:
  `setDistinctElements` in interface `Rule`
Parameters:
  `newDistinctElements` - the new value of the 'Distinct Elements' attribute.
See Also:
  - `Rule.isDistinctElements()`

### isUnique

public boolean isUnique()
Returns the value of the 'Unique' attribute.

A unique rule matches at most once against a unique (list of) source value(s). Traces created by a unique rule can also be efficiently lookup up, because each (list of) source value(s) maps to at most one (list of) target value(s).

Specified by:
  `isUnique` in interface `Rule`
Returns:
  the value of the 'Unique' attribute.
See Also:
  - `Rule.setUnique(boolean)`
  - `EmftvmPackage.getRule_Unique()`

### setUnique

public void setUnique(boolean newUnique)
Sets the value of the '`Unique`' attribute.

Specified by:
  `setUnique` in interface `Rule`
Parameters:
  `newUnique` - the new value of the 'Unique' attribute.
See Also:
  - `Rule.isUnique()`

### isLeaf

public boolean isLeaf()
Returns the value of the 'Leaf' attribute.

A rule is a leaf rule when it is not abstract, and it has no leaf sub-rules. Call `#compileState()` before calling this method.

Specified by:
  `isLeaf` in interface `Rule`
Returns:
  the value of the 'Leaf' attribute.
See Also:
  - `EmftvmPackage.getRule_Leaf()`

### isWithLeaves

public boolean isWithLeaves()
Returns the value of the 'With Leaves' attribute.

A rule is with leaves if it has leaf sub-rules. Call `#compileState()` before calling this method.

Specified by:
  `isWithLeaves` in interface `Rule`
Returns:
  the value of the 'With Leaves' attribute.
See Also:
  - `EmftvmPackage.getRule_WithLeaves()`

### findField

public Field findField(Object context, String name)
Finds a `Field` registered within this `Rule`.

Specified by:
  `findField` in interface `Rule`
Parameters:
  `context` - the context type of the field
  `name` - the operation name
Returns:
  the `Field` with the given properties, or `null` if none registered

### hasField

public boolean hasField(String name)
Returns `true` iff this rule has any registered fields with the given `name`.

Specified by:
  `hasField` in interface `Rule`
Parameters:
  `name` - the field name
Returns:
  `true` iff this rule has any registered fields with the given `name`

### findStaticField

public Field findStaticField(Object context, String name)
Finds a static `Field` registered within this `Rule`.

Specified by:
  `findStaticField` in interface `Rule`
Parameters:
  `context` - the context type of the field
  `name` - the operation name
Returns:
  the static `Field` with the given properties, or `null` if none registered

### hasStaticField

public boolean hasStaticField(String name)
Returns `true` iff this rule has any registered static fields with the given `name`.

Specified by:
  `hasStaticField` in interface `Rule`
Parameters:
  `name` - the field name
Returns:
  `true` iff this rule has any registered static fields with the given `name`

### registerField

public void registerField(Field field)
Registers a `Field` into this `Rule`.

Specified by:
  `registerField` in interface `Rule`
Parameters:
  `field` - the `Field` to register

### matchSingle

public boolean matchSingle(StackFrame frame)
Matches this rule for the automatic single stage, if applicable. Call `#compileState()` before calling this method.

Specified by:
  `matchSingle` in interface `Rule`
Parameters:
  `frame` - the stack frame in which to execute the matcher
Returns:
  `true` iff the rule has any matches

### matchRecursive

public boolean[] matchRecursive(StackFrame frame)
Matches this rule for the automatic recursive stage, if applicable. Call `#compileState()` before calling this method.

Specified by:
  `matchRecursive` in interface `Rule`
Parameters:
  `frame` - the stack frame in which to execute the matcher
Returns:
  [`true` iff the rule has any matches, `true` iff there was a guaranteed final match]

### matchManual

public Object matchManual(StackFrame frame, Object[] values)
Matches this rule manually, if applicable. Call `#compileState()` before calling this method.

Specified by:
  `matchManual` in interface `Rule`
Parameters:
  `frame` - the stack frame in which to execute the matcher
  `values` - the values to match against
Returns:
  the rule application result, or `null` if the rule did not match

### matchOne

public boolean matchOne(StackFrame frame, Map<String,Object> valuesMap)
Matches rule for `valuesMap`. Call `#compileState()` before calling this method.

Specified by:
  `matchOne` in interface `Rule`
Parameters:
  `frame` - the stack frame in which to execute the matcher
  `valuesMap` - the values to match against
Returns:
  `true` iff the rule matches

### matchOneOnly

public boolean matchOneOnly(StackFrame frame, Map<String,Object> valuesMap)
Matches this rule only (without super-rules) for `valuesMap`. Call `#compileState()` before calling this method.

Specified by:
  `matchOneOnly` in interface `Rule`
Parameters:
  `frame` - the stack frame in which to execute the matcher
  `valuesMap` - the values to match against
Returns:
  `true` iff the rule matches

### createTraces

public void createTraces(StackFrame frame)
Creates trace elements for the recorded matches for this rule. Call `#compileState()` before calling this method.

Specified by:
  `createTraces` in interface `Rule`
Parameters:
  `frame` - the stack frame context

### completeTraceFor

public boolean completeTraceFor(StackFrame frame, TraceLink trace)
Completes `trace` for this rule by creating the output elements. Will create default/unique trace iff mapsTo information exists. Call `#compileState()` before calling this method.

Specified by:
  `completeTraceFor` in interface `Rule`
Parameters:
  `frame` - the stack frame context
  `trace` - the trace to complete
Returns:
  `true` iff default/unique mappings were defined for the complete list of source elements

### apply

public void apply(StackFrame frame)
Applies this rule for the created traces. Call `#compileState()` before calling this method.

Specified by:
  `apply` in interface `Rule`
Parameters:
  `frame` - the stack frame in which to execute the applier

### postApply

public void postApply(StackFrame frame)
Runs post-applier for this rule for the created traces. Call `#compileState()` before calling this method.

Specified by:
  `postApply` in interface `Rule`
Parameters:
  `frame` - the stack frame in which to execute the post-applier

### applyFirst

public boolean applyFirst(StackFrame frame)
Applies and post-applies this rule for the first recorded match. Call `#compileState()` before calling this method.

Specified by:
  `applyFirst` in interface `Rule`
Parameters:
  `frame` - the stack frame in which to execute the applier and post-applier
Returns:
  `true` iff this rule was applied

### applyOne

public Object applyOne(StackFrame frame, Map<String,Object> valuesMap)
Applies this rule to `trace`

Specified by:
  `applyOne` in interface `Rule`
Parameters:
  `frame` - the stack frame in which to execute the applier and post-apply
  `valuesMap` - the source and target values to which to apply the rule
Returns:
  the rule application result

### applyFor

public Object applyFor(StackFrame frame, TraceLink trace)
Applies this rule for the given `trace`. Call `#compileState()` before calling this method.

Specified by:
  `applyFor` in interface `Rule`
Parameters:
  `frame` - the stack frame context
  `trace` - the trace link to apply the rule for
Returns:
  the application result

### postApplyFor

public Object postApplyFor(StackFrame frame, TraceLink trace)
Post-applies this rule for the given `trace`. Call `#compileState()` before calling this method.

Specified by:
  `postApplyFor` in interface `Rule`
Parameters:
  `frame` - the stack frame context
  `trace` - the trace link to post-apply the rule for
Returns:
  the post-application result

### getAllESuperRules

public LazySet<Rule> getAllESuperRules()
Returns the transitive closure of super-rules, root rule first (`LazySet`'s have a fixed iteration order). Call `#compileState()` before calling this method.

Specified by:
  `getAllESuperRules` in interface `Rule`
Returns:
  the transitive closure of super-rules.

### createUniqueMapping

public void createUniqueMapping(TraceLink trace)
Creates a unique trace mapping entry for the source values in `trace`, if applicable.

Specified by:
  `createUniqueMapping` in interface `Rule`
Parameters:
  `trace` - the trace element with source values

### compileState

public void compileState(ExecEnv env)
Compiles the internal state of this rule for optimised matching. Call this method whenever any properties of this rule or any sub-rules have changed.

Specified by:
  `compileState` in interface `Rule`
Parameters:
  `env` - the execution environment context

### resetState

public void resetState()
Resets the internal state of this rule. Call this method before calling `Rule.compileState(ExecEnv)` on all rules.

Specified by:
  `resetState` in interface `Rule`

### compileIterables

public void compileIterables(ExecEnv env)
Compiles the model element iterables for this rule. Call this method whenever any input or in/out model has changed.

Specified by:
  `compileIterables` in interface `Rule`
Parameters:
  `env` - the execution environment context

### clearFields

public void clearFields()
Clears the values of all registered fields within this rule.

Specified by:
  `clearFields` in interface `Rule`

### findInputElement

public InputRuleElement findInputElement(String name)
Finds the `InputRuleElement` with the given name within the rule inheritance hierarchy depth-first.

Specified by:
  `findInputElement` in interface `Rule`
Parameters:
  `name` - the input element name
Returns:
  the `InputRuleElement` with the given name or `null`

### getUniqueTrace

public TraceLink getUniqueTrace(StackFrame frame, Object[] values)
Returns the unique rule application trace for `values`, if applicable.

Specified by:
  `getUniqueTrace` in interface `Rule`
Parameters:
  `frame` - the stack frame context
  `values` - the source values for the trace
Returns:
  the unique rule application trace, or `null`

### eInverseAdd

public org.eclipse.emf.common.notify.NotificationChain eInverseAdd(org.eclipse.emf.ecore.InternalEObject otherEnd, int featureID, org.eclipse.emf.common.notify.NotificationChain msgs)

Overrides:
  `eInverseAdd` in class `org.eclipse.emf.ecore.impl.BasicEObjectImpl`

### eInverseRemove

public org.eclipse.emf.common.notify.NotificationChain eInverseRemove(org.eclipse.emf.ecore.InternalEObject otherEnd, int featureID, org.eclipse.emf.common.notify.NotificationChain msgs)

Overrides:
  `eInverseRemove` in class `org.eclipse.emf.ecore.impl.BasicEObjectImpl`

### eBasicRemoveFromContainerFeature

public org.eclipse.emf.common.notify.NotificationChain eBasicRemoveFromContainerFeature(org.eclipse.emf.common.notify.NotificationChain msgs)

Overrides:
  `eBasicRemoveFromContainerFeature` in class `org.eclipse.emf.ecore.impl.BasicEObjectImpl`

### eGet

public Object eGet(int featureID, boolean resolve, boolean coreType)

Specified by:
  `eGet` in interface `org.eclipse.emf.ecore.InternalEObject`
Overrides:
  `eGet` in class `NamedElementImpl`

### eSet

public void eSet(int featureID, Object newValue)

Specified by:
  `eSet` in interface `org.eclipse.emf.ecore.InternalEObject`
Overrides:
  `eSet` in class `NamedElementImpl`

### eUnset

public void eUnset(int featureID)

Specified by:
  `eUnset` in interface `org.eclipse.emf.ecore.InternalEObject`
Overrides:
  `eUnset` in class `NamedElementImpl`

### eIsSet

public boolean eIsSet(int featureID)

Specified by:
  `eIsSet` in interface `org.eclipse.emf.ecore.InternalEObject`
Overrides:
  `eIsSet` in class `NamedElementImpl`

### toString

public String toString()

Overrides:
  `toString` in class `NamedElementImpl`

### updateDefaultState

protected void updateDefaultState()
Updates `defaultState`.

### updateUniqueState

protected void updateUniqueState()
Updates `uniqueState`.

### updateSuperRulesState

protected void updateSuperRulesState()
Updates `superRulesState`.

### updateRuleModeState

protected void updateRuleModeState()
Updates `ruleModeState`.

### updateLeafState

protected void updateLeafState()
Updates `leafState`.

### updateAbstractState

protected void updateAbstractState()
Updates `abstractState`.

### updateMatcherCbState

protected void updateMatcherCbState()
Updates `matcherCbState`.

### updateApplierCbState

protected void updateApplierCbState()
Updates `applierCbState`.

### updateDistinctState

protected void updateDistinctState()
Updates `distinctState`.