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
`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 java.lang.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
`protected boolean` `abstract_` The cached value of the '`Abstract`' attribute.
`protected static 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 java.util.Map<TraceLink,​java.lang.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 boolean` `DEFAULT_EDEFAULT` The default value of the '`Default`' attribute.
`protected RuleImpl.DefaultState` `defaultState` The rule's `isDefault()` state object.
`protected static 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 java.util.List<java.lang.Iterable<org.eclipse.emf.ecore.EObject>>` `iterableList` Pre-compiled list of iterables for each input rule element.
`protected java.util.Map<java.lang.String,​java.lang.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 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 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<java.lang.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 boolean` `UNIQUE_EDEFAULT` The default value of the '`Unique`' attribute.
`protected RuleImpl.UniqueState` `uniqueState` The rule's `isUnique()` state object.
`protected static 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
`protected` `RuleImpl()` Creates a new `RuleImpl`.

### Method Summary

All Methods Instance Methods Concrete Methods
`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.
`java.lang.Object` `applyFor​(StackFrame frame, TraceLink trace)` Applies this rule for the given `trace`.
`java.lang.Object` `applyOne​(StackFrame frame, java.util.Map<java.lang.String,​java.lang.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)`
`java.lang.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, java.lang.Object newValue)`
`protected org.eclipse.emf.ecore.EClass` `eStaticClass()` Returns the `EClass` that correspond to this metaclass.
`void` `eUnset​(int featureID)`
`Field` `findField​(java.lang.Object context, java.lang.String name)` Finds a `Field` registered within this `Rule`.
`InputRuleElement` `findInputElement​(java.lang.String name)` Finds the `InputRuleElement` with the given name within the rule inheritance hierarchy depth-first.
`Field` `findStaticField​(java.lang.Object context, java.lang.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<java.lang.String>` `getSuperRules()` Returns the value of the 'Super Rules' attribute list.
`TraceLink` `getUniqueTrace​(StackFrame frame, java.lang.Object[] values)` Returns the unique rule application trace for `values`, if applicable.
`boolean` `hasField​(java.lang.String name)` Returns `true` iff this rule has any registered fields with the given `name`.
`boolean` `hasStaticField​(java.lang.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.
`java.lang.Object` `matchManual​(StackFrame frame, java.lang.Object[] values)` Matches this rule manually, if applicable.
`boolean` `matchOne​(StackFrame frame, java.util.Map<java.lang.String,​java.lang.Object> valuesMap)` Matches rule for `valuesMap`.
`boolean` `matchOneOnly​(StackFrame frame, java.util.Map<java.lang.String,​java.lang.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.
`java.lang.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.
`java.lang.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 Detail

#### 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<java.lang.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 java.util.Map<TraceLink,​java.lang.Object[]> applyArgs

The cached arguments for the applier and post-applier code block for a given trace.

#### iterableList

    protected java.util.List<java.lang.Iterable<org.eclipse.emf.ecore.EObject>> iterableList

Pre-compiled list of iterables for each input rule element.

#### iterableMap

    protected java.util.Map<java.lang.String,​java.lang.Iterable<org.eclipse.emf.ecore.EObject>> iterableMap

Pre-compiled map of iterables for each input rule element.

### Constructor Detail

#### RuleImpl

    protected RuleImpl()

Creates a new `RuleImpl`.

### Method Detail

#### 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(Module)`

#### 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(CodeBlock)`

#### 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(CodeBlock)`

#### 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(CodeBlock)`

#### 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<java.lang.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​(java.lang.Object context,
                           java.lang.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​(java.lang.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​(java.lang.Object context,
                                 java.lang.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​(java.lang.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 java.lang.Object matchManual​(StackFrame frame,
                                        java.lang.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,
                            java.util.Map<java.lang.String,​java.lang.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,
                                java.util.Map<java.lang.String,​java.lang.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 java.lang.Object applyOne​(StackFrame frame,
                                     java.util.Map<java.lang.String,​java.lang.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 java.lang.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 java.lang.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​(java.lang.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,
                                    java.lang.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 java.lang.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,
                     java.lang.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 java.lang.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`.