# Uses of Class org.deidentifier.arx.framework.lattice.Transformation (ARX Developer Documentation)

## Uses of Class
org.deidentifier.arx.framework.lattice.Transformation

- Packages that use Transformation
  Package | Description
  --- | ---
  org.deidentifier.arx.algorithm | This package provides algorithms which traverse the generalization lattice.
  org.deidentifier.arx.criteria | This package implements different variants of class-based privacy criteria, such as k-anonymity, l-diversity, t-closeness and d-presence.
  org.deidentifier.arx.framework.check | This package implements the core functionality of the ARX framework, i.e., a highly efficient check for k-anonymity
  org.deidentifier.arx.framework.check.groupify | This package implements different hash-groupify operators.
  org.deidentifier.arx.framework.check.history | This package implements the 'history' optimization.
  org.deidentifier.arx.framework.lattice | This package provides the internal generalization lattice
  org.deidentifier.arx.metric | This package implements several metrics for information loss.
  org.deidentifier.arx.metric.v2 |

- - ### Uses of Transformation in org.deidentifier.arx.algorithm

    Methods in org.deidentifier.arx.algorithm that return Transformation
    Modifier and Type | Method and Description
    --- | ---
    `Transformation` | AbstractAlgorithm.`getGlobalOptimum()` Returns the global optimum.

    Methods in org.deidentifier.arx.algorithm with parameters of type Transformation
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | AbstractAlgorithm.`computeUtilityForMonotonicMetrics(Transformation transformation)` Determine information loss of the given node if it can be used for estimating minimum and maximum information loss for tagged nodes.
    `protected void` | AbstractAlgorithm.`trackOptimum(Transformation transformation)` Keeps track of the global optimum.

  - ### Uses of Transformation in org.deidentifier.arx.criteria

    Methods in org.deidentifier.arx.criteria with parameters of type Transformation
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | KAnonymity.`isAnonymous(Transformation node, HashGroupifyEntry entry)`
    `boolean` | RecursiveCLDiversity.`isAnonymous(Transformation node, HashGroupifyEntry entry)`
    `boolean` | KMap.`isAnonymous(Transformation node, HashGroupifyEntry entry)`
    `boolean` | ProfitabilityProsecutorNoAttack.`isAnonymous(Transformation node, HashGroupifyEntry entry)`
    `boolean` | EqualDistanceTCloseness.`isAnonymous(Transformation node, HashGroupifyEntry entry)`
    `boolean` | OrderedDistanceTCloseness.`isAnonymous(Transformation node, HashGroupifyEntry entry)`
    `boolean` | Inclusion.`isAnonymous(Transformation node, HashGroupifyEntry entry)`
    `boolean` | EDDifferentialPrivacy.`isAnonymous(Transformation node, HashGroupifyEntry entry)`
    `boolean` | EnhancedBLikeness.`isAnonymous(Transformation node, HashGroupifyEntry entry)`
    `boolean` | DDisclosurePrivacy.`isAnonymous(Transformation node, HashGroupifyEntry entry)`
    `boolean` | HierarchicalDistanceTCloseness.`isAnonymous(Transformation node, HashGroupifyEntry entry)`
    `boolean` | BasicBLikeness.`isAnonymous(Transformation node, HashGroupifyEntry entry)`
    `boolean` | ProfitabilityJournalistNoAttack.`isAnonymous(Transformation node, HashGroupifyEntry entry)`
    `boolean` | EntropyLDiversity.`isAnonymous(Transformation node, HashGroupifyEntry entry)`
    `abstract boolean` | PrivacyCriterion.`isAnonymous(Transformation node, HashGroupifyEntry entry)` Implement this, to enforce the criterion.
    `boolean` | DistinctLDiversity.`isAnonymous(Transformation node, HashGroupifyEntry entry)`
    `boolean` | DPresence.`isAnonymous(Transformation node, HashGroupifyEntry entry)`
    `boolean` | ProfitabilityProsecutor.`isAnonymous(Transformation transformation, HashGroupifyEntry entry)`
    `boolean` | SampleBasedCriterion.`isAnonymous(Transformation node, HashGroupifyEntry entry)` Not supported by this type of criterion

  - ### Uses of Transformation in org.deidentifier.arx.framework.check

    Methods in org.deidentifier.arx.framework.check with parameters of type Transformation
    Modifier and Type | Method and Description
    --- | ---
    `TransformedData` | NodeChecker.`applyTransformation(Transformation transformation)` Applies the given transformation and returns the dataset
    `TransformedData` | NodeChecker.`applyTransformation(Transformation transformation, Dictionary microaggregationDictionary)` Applies the given transformation and returns the dataset
    `NodeChecker.Result` | NodeChecker.`check(Transformation node)` Checks the given transformation, computes the utility if it fulfills the privacy model
    `NodeChecker.Result` | NodeChecker.`check(Transformation node, boolean forceMeasureInfoLoss)` Checks the given transformation

  - ### Uses of Transformation in org.deidentifier.arx.framework.check.groupify

    Methods in org.deidentifier.arx.framework.check.groupify with parameters of type Transformation
    Modifier and Type | Method and Description
    --- | ---
    `void` | HashGroupify.`stateAnalyze(Transformation transformation, boolean force)` Analyzes the current state

  - ### Uses of Transformation in org.deidentifier.arx.framework.check.history

    Methods in org.deidentifier.arx.framework.check.history with parameters of type Transformation
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | History.`store(Transformation transformation, HashGroupify groupify, int[] snapshot)` Stores a snapshot in the buffer.

    Constructors in org.deidentifier.arx.framework.check.history with parameters of type Transformation
    Constructor and Description
    `MRUCacheEntryMetadata(Transformation transformation)`

  - ### Uses of Transformation in org.deidentifier.arx.framework.lattice

    Methods in org.deidentifier.arx.framework.lattice that return Transformation
    Modifier and Type | Method and Description
    --- | ---
    `Transformation` | SolutionSpace.`getBottom()` Returns the bottom transformation
    `Transformation` | SolutionSpace.`getTop()` Returns the top-transformation
    `Transformation` | SolutionSpace.`getTransformation(int[] transformation)` Returns a wrapper object with access to all properties about the transformation
    `Transformation` | SolutionSpace.`getTransformation(long identifier)` Returns the transformation with the given identifier

    Methods in org.deidentifier.arx.framework.lattice with parameters of type Transformation
    Modifier and Type | Method and Description
    --- | ---
    `void` | DependentAction.`action(Transformation transformation)` Implements the action to be performed.
    `protected abstract boolean` | DependentAction.NodeActionAND.`additionalConditionAppliesTo(Transformation transformation)` The additional condition to implement.
    `protected abstract boolean` | DependentAction.NodeActionOR.`additionalConditionAppliesTo(Transformation transformation)` The additional condition to implement.
    `abstract boolean` | DependentAction.`appliesTo(Transformation transformation)` Determines whether the trigger action should be performed.
    `boolean` | DependentAction.NodeActionAND.`appliesTo(Transformation transformation)`
    `boolean` | DependentAction.NodeActionConstant.`appliesTo(Transformation transformation)`
    `boolean` | DependentAction.NodeActionInverse.`appliesTo(Transformation transformation)`
    `boolean` | DependentAction.NodeActionOR.`appliesTo(Transformation transformation)`
    `void` | DependentAction.`apply(Transformation transformation)` Applies the trigger to the given transformation.

  - ### Uses of Transformation in org.deidentifier.arx.metric

    Methods in org.deidentifier.arx.metric with parameters of type Transformation
    Modifier and Type | Method and Description
    --- | ---
    `InformationLossWithBound<T>` | Metric.`getInformationLoss(Transformation node, HashGroupify groupify)` Evaluates the metric for the given node.
    `InformationLossWithBound<T>` | Metric.`getInformationLoss(Transformation node, HashGroupifyEntry entry)` Returns the information loss that would be induced by suppressing the given entry.
    `protected InformationLossWithBound<org.deidentifier.arx.metric.InformationLossDefault>` | MetricNMEntropy.`getInformationLossInternal(Transformation node, HashGroupify g)`
    `protected InformationLossWithBound<org.deidentifier.arx.metric.InformationLossDefault>` | MetricAECS.`getInformationLossInternal(Transformation node, HashGroupify g)`
    `protected InformationLossWithBound<org.deidentifier.arx.metric.InformationLossDefault>` | MetricDM.`getInformationLossInternal(Transformation node, HashGroupify g)`
    `protected InformationLossWithBound<org.deidentifier.arx.metric.InformationLossDefault>` | MetricHeight.`getInformationLossInternal(Transformation node, HashGroupify g)`
    `protected InformationLossWithBound<org.deidentifier.arx.metric.InformationLossDefault>` | MetricStatic.`getInformationLossInternal(Transformation node, HashGroupify g)`
    `protected InformationLossWithBound<org.deidentifier.arx.metric.InformationLossDefault>` | MetricEntropy.`getInformationLossInternal(Transformation node, HashGroupify g)`
    `protected abstract InformationLossWithBound<T>` | Metric.`getInformationLossInternal(Transformation node, HashGroupify groupify)` Evaluates the metric for the given node.
    `protected InformationLossWithBound<org.deidentifier.arx.metric.InformationLossDefault>` | MetricNMPrecision.`getInformationLossInternal(Transformation node, HashGroupify g)`
    `protected InformationLossWithBound<org.deidentifier.arx.metric.InformationLossDefault>` | MetricPrecision.`getInformationLossInternal(Transformation node, HashGroupify g)`
    `protected InformationLossWithBound<org.deidentifier.arx.metric.InformationLossDefault>` | MetricDMStar.`getInformationLossInternal(Transformation node, HashGroupify g)`
    `protected InformationLossWithBound<org.deidentifier.arx.metric.InformationLossDefault>` | MetricAECS.`getInformationLossInternal(Transformation node, HashGroupifyEntry entry)`
    `protected InformationLossWithBound<org.deidentifier.arx.metric.InformationLossDefault>` | MetricDM.`getInformationLossInternal(Transformation node, HashGroupifyEntry entry)`
    `protected InformationLossWithBound<org.deidentifier.arx.metric.InformationLossDefault>` | MetricHeight.`getInformationLossInternal(Transformation node, HashGroupifyEntry entry)`
    `protected InformationLossWithBound<org.deidentifier.arx.metric.InformationLossDefault>` | MetricStatic.`getInformationLossInternal(Transformation node, HashGroupifyEntry entry)`
    `protected InformationLossWithBound<org.deidentifier.arx.metric.InformationLossDefault>` | MetricEntropy.`getInformationLossInternal(Transformation node, HashGroupifyEntry entry)`
    `protected abstract InformationLossWithBound<T>` | Metric.`getInformationLossInternal(Transformation node, HashGroupifyEntry entry)` Returns the information loss that would be induced by suppressing the given entry.
    `protected InformationLossWithBound<org.deidentifier.arx.metric.InformationLossDefault>` | MetricNMPrecision.`getInformationLossInternal(Transformation node, HashGroupifyEntry entry)`
    `protected InformationLossWithBound<org.deidentifier.arx.metric.InformationLossDefault>` | MetricPrecision.`getInformationLossInternal(Transformation node, HashGroupifyEntry entry)`
    `protected InformationLossWithBound<org.deidentifier.arx.metric.InformationLossDefault>` | MetricDMStar.`getInformationLossInternal(Transformation node, HashGroupifyEntry entry)`
    `T` | Metric.`getLowerBound(Transformation node)` Returns a lower bound for the information loss for the given node.
    `T` | Metric.`getLowerBound(Transformation node, HashGroupify groupify)` Returns a lower bound for the information loss for the given node.
    `protected org.deidentifier.arx.metric.InformationLossDefault` | MetricNMEntropy.`getLowerBoundInternal(Transformation node)`
    `protected org.deidentifier.arx.metric.InformationLossDefault` | MetricAECS.`getLowerBoundInternal(Transformation node)`
    `protected org.deidentifier.arx.metric.InformationLossDefault` | MetricDM.`getLowerBoundInternal(Transformation node)`
    `protected org.deidentifier.arx.metric.InformationLossDefault` | MetricHeight.`getLowerBoundInternal(Transformation node)`
    `protected org.deidentifier.arx.metric.InformationLossDefault` | MetricStatic.`getLowerBoundInternal(Transformation node)`
    `protected org.deidentifier.arx.metric.InformationLossDefault` | MetricEntropy.`getLowerBoundInternal(Transformation node)`
    `protected T` | MetricWeighted.`getLowerBoundInternal(Transformation node)`
    `protected org.deidentifier.arx.metric.InformationLossDefault` | MetricDefault.`getLowerBoundInternal(Transformation node)`
    `protected abstract T` | Metric.`getLowerBoundInternal(Transformation node)` Returns a lower bound for the information loss for the given node.
    `protected org.deidentifier.arx.metric.InformationLossDefault` | MetricNMPrecision.`getLowerBoundInternal(Transformation node)`
    `protected org.deidentifier.arx.metric.InformationLossDefault` | MetricPrecision.`getLowerBoundInternal(Transformation node)`
    `protected org.deidentifier.arx.metric.InformationLossDefault` | MetricDMStar.`getLowerBoundInternal(Transformation node)`
    `protected org.deidentifier.arx.metric.InformationLossDefault` | MetricNMEntropy.`getLowerBoundInternal(Transformation node, HashGroupify groupify)`
    `protected org.deidentifier.arx.metric.InformationLossDefault` | MetricAECS.`getLowerBoundInternal(Transformation node, HashGroupify groupify)`
    `protected org.deidentifier.arx.metric.InformationLossDefault` | MetricDM.`getLowerBoundInternal(Transformation node, HashGroupify groupify)`
    `protected org.deidentifier.arx.metric.InformationLossDefault` | MetricHeight.`getLowerBoundInternal(Transformation node, HashGroupify groupify)`
    `protected org.deidentifier.arx.metric.InformationLossDefault` | MetricStatic.`getLowerBoundInternal(Transformation node, HashGroupify groupify)`
    `protected org.deidentifier.arx.metric.InformationLossDefault` | MetricEntropy.`getLowerBoundInternal(Transformation node, HashGroupify groupify)`
    `protected T` | MetricWeighted.`getLowerBoundInternal(Transformation node, HashGroupify groupify)`
    `protected org.deidentifier.arx.metric.InformationLossDefault` | MetricDefault.`getLowerBoundInternal(Transformation node, HashGroupify groupify)`
    `protected abstract T` | Metric.`getLowerBoundInternal(Transformation node, HashGroupify groupify)` Returns a lower bound for the information loss for the given node.
    `protected org.deidentifier.arx.metric.InformationLossDefault` | MetricNMPrecision.`getLowerBoundInternal(Transformation node, HashGroupify groupify)`
    `protected org.deidentifier.arx.metric.InformationLossDefault` | MetricPrecision.`getLowerBoundInternal(Transformation node, HashGroupify groupify)`
    `protected org.deidentifier.arx.metric.InformationLossDefault` | MetricDMStar.`getLowerBoundInternal(Transformation node, HashGroupify groupify)`

  - ### Uses of Transformation in org.deidentifier.arx.metric.v2

    Methods in org.deidentifier.arx.metric.v2 with parameters of type Transformation
    Modifier and Type | Method and Description
    --- | ---
    `static double` | MetricSDNMEntropyBasedInformationLoss.`getEntropyBasedInformationLoss(Transformation transformation, HashGroupifyEntry entry, DomainShare[] shares, DistributionAggregateFunction[] microaggregationFunctions, int microaggregationStartIndex, double maxIL)` Implements the entropy-based IL model.
    `protected ILMultiDimensionalWithBound` | MetricMDPrecision.`getInformationLossInternal(Transformation node, HashGroupify g)`
    `protected ILSingleDimensionalWithBound` | MetricSDNMEntropyBasedInformationLoss.`getInformationLossInternal(Transformation transformation, HashGroupify g)`
    `protected ILSingleDimensionalWithBound` | MetricSDNMKLDivergence.`getInformationLossInternal(Transformation node, HashGroupify g)`
    `protected ILSingleDimensionalWithBound` | MetricSDNMAmbiguity.`getInformationLossInternal(Transformation node, HashGroupify g)`
    `protected ILMultiDimensionalWithBound` | MetricMDNUEntropyPrecomputed.`getInformationLossInternal(Transformation node, HashGroupify g)`
    `protected ILMultiDimensionalWithBound` | MetricMDNMPrecision.`getInformationLossInternal(Transformation node, HashGroupify g)`
    `protected ILSingleDimensionalWithBound` | MetricSDAECS.`getInformationLossInternal(Transformation node, HashGroupify g)`
    `protected ILMultiDimensionalWithBound` | MetricMDNUNMEntropyPrecomputed.`getInformationLossInternal(Transformation node, HashGroupify g)`
    `protected ILSingleDimensionalWithBound` | MetricSDNMPublisherPayout.`getInformationLossInternal(Transformation transformation, HashGroupify groupify)`
    `protected ILMultiDimensionalWithBound` | MetricMDHeight.`getInformationLossInternal(Transformation node, HashGroupify g)`
    `protected InformationLossWithBound<AbstractILMultiDimensional>` | AbstractMetricMultiDimensionalPotentiallyPrecomputed.`getInformationLossInternal(Transformation node, HashGroupify groupify)`
    `protected ILSingleDimensionalWithBound` | MetricSDNMDiscernability.`getInformationLossInternal(Transformation node, HashGroupify g)`
    `protected ILSingleDimensionalWithBound` | MetricSDDiscernability.`getInformationLossInternal(Transformation node, HashGroupify g)`
    `protected ILMultiDimensionalWithBound` | MetricMDNUNMNormalizedEntropyPrecomputed.`getInformationLossInternal(Transformation node, HashGroupify g)`
    `protected ILMultiDimensionalWithBound` | MetricMDStatic.`getInformationLossInternal(Transformation node, HashGroupify g)`
    `protected ILMultiDimensionalWithBound` | MetricMDNMLoss.`getInformationLossInternal(Transformation node, HashGroupify g)`
    `protected InformationLossWithBound<ILSingleDimensional>` | MetricSDNMEntropyBasedInformationLoss.`getInformationLossInternal(Transformation transformation, HashGroupifyEntry entry)`
    `protected ILSingleDimensionalWithBound` | MetricSDNMKLDivergence.`getInformationLossInternal(Transformation node, HashGroupifyEntry entry)`
    `protected ILSingleDimensionalWithBound` | MetricSDNMAmbiguity.`getInformationLossInternal(Transformation node, HashGroupifyEntry entry)`
    `protected ILMultiDimensionalWithBound` | MetricMDNUEntropyPrecomputed.`getInformationLossInternal(Transformation node, HashGroupifyEntry entry)`
    `protected ILMultiDimensionalWithBound` | MetricMDNMPrecision.`getInformationLossInternal(Transformation node, HashGroupifyEntry entry)`
    `protected ILSingleDimensionalWithBound` | MetricSDAECS.`getInformationLossInternal(Transformation node, HashGroupifyEntry entry)`
    `protected InformationLossWithBound<ILSingleDimensional>` | MetricSDNMPublisherPayout.`getInformationLossInternal(Transformation transformation, HashGroupifyEntry entry)`
    `protected ILMultiDimensionalWithBound` | MetricMDHeight.`getInformationLossInternal(Transformation node, HashGroupifyEntry entry)`
    `protected InformationLossWithBound<AbstractILMultiDimensional>` | AbstractMetricMultiDimensionalPotentiallyPrecomputed.`getInformationLossInternal(Transformation node, HashGroupifyEntry entry)`
    `protected ILSingleDimensionalWithBound` | MetricSDNMDiscernability.`getInformationLossInternal(Transformation node, HashGroupifyEntry entry)`
    `protected ILMultiDimensionalWithBound` | MetricMDNUNMNormalizedEntropyPrecomputed.`getInformationLossInternal(Transformation node, HashGroupifyEntry entry)`
    `protected ILMultiDimensionalWithBound` | MetricMDStatic.`getInformationLossInternal(Transformation node, HashGroupifyEntry entry)`
    `protected ILMultiDimensionalWithBound` | MetricMDNMLoss.`getInformationLossInternal(Transformation node, HashGroupifyEntry entry)`
    `protected double[]` | MetricMDNUEntropyPrecomputed.`getInformationLossInternalRaw(Transformation node, HashGroupify g)`
    `protected ILSingleDimensional` | MetricSDNMEntropyBasedInformationLoss.`getLowerBoundInternal(Transformation transformation)`
    `protected ILSingleDimensional` | MetricSDNMKLDivergence.`getLowerBoundInternal(Transformation node)`
    `protected AbstractILMultiDimensional` | MetricMDNUNMNormalizedEntropy.`getLowerBoundInternal(Transformation node)`
    `protected AbstractILMultiDimensional` | MetricMDNMLossPrecomputed.`getLowerBoundInternal(Transformation node)`
    `protected ILSingleDimensional` | MetricSDNMAmbiguity.`getLowerBoundInternal(Transformation node)`
    `protected AbstractILMultiDimensional` | MetricMDNUEntropyPrecomputed.`getLowerBoundInternal(Transformation node)`
    `protected AbstractILMultiDimensional` | MetricMDNMPrecision.`getLowerBoundInternal(Transformation node)`
    `protected AbstractILMultiDimensional` | MetricMDNUNMEntropy.`getLowerBoundInternal(Transformation node)`
    `protected ILSingleDimensional` | MetricSDAECS.`getLowerBoundInternal(Transformation node)`
    `protected AbstractILMultiDimensional` | MetricMDNUNMEntropyPrecomputed.`getLowerBoundInternal(Transformation node)`
    `protected ILSingleDimensional` | MetricSDNMPublisherPayout.`getLowerBoundInternal(Transformation transformation)`
    `protected AbstractILMultiDimensional` | MetricMDNUEntropy.`getLowerBoundInternal(Transformation node)`
    `protected AbstractILMultiDimensional` | MetricMDHeight.`getLowerBoundInternal(Transformation node)`
    `protected AbstractILMultiDimensional` | AbstractMetricMultiDimensionalPotentiallyPrecomputed.`getLowerBoundInternal(Transformation node)`
    `protected ILSingleDimensional` | MetricSDNMDiscernability.`getLowerBoundInternal(Transformation node)`
    `protected AbstractILMultiDimensional` | MetricMDNUNMNormalizedEntropyPrecomputed.`getLowerBoundInternal(Transformation node)`
    `protected AbstractILMultiDimensional` | MetricMDStatic.`getLowerBoundInternal(Transformation node)`
    `protected AbstractILMultiDimensional` | MetricMDNMLoss.`getLowerBoundInternal(Transformation node)`
    `protected ILSingleDimensional` | MetricSDNMEntropyBasedInformationLoss.`getLowerBoundInternal(Transformation transformation, HashGroupify groupify)`
    `protected ILSingleDimensional` | MetricSDNMKLDivergence.`getLowerBoundInternal(Transformation node, HashGroupify g)`
    `protected AbstractILMultiDimensional` | MetricMDNMLossPrecomputed.`getLowerBoundInternal(Transformation node, HashGroupify g)`
    `protected ILSingleDimensional` | MetricSDNMAmbiguity.`getLowerBoundInternal(Transformation node, HashGroupify g)`
    `protected AbstractILMultiDimensional` | MetricMDNUEntropyPrecomputed.`getLowerBoundInternal(Transformation node, HashGroupify groupify)`
    `protected AbstractILMultiDimensional` | MetricMDNMPrecision.`getLowerBoundInternal(Transformation node, HashGroupify groupify)`
    `protected ILSingleDimensional` | MetricSDAECS.`getLowerBoundInternal(Transformation node, HashGroupify groupify)`
    `protected AbstractILMultiDimensional` | MetricMDNUNMEntropyPrecomputed.`getLowerBoundInternal(Transformation node, HashGroupify groupify)`
    `protected ILSingleDimensional` | MetricSDNMPublisherPayout.`getLowerBoundInternal(Transformation transformation, HashGroupify groupify)`
    `protected AbstractILMultiDimensional` | MetricMDHeight.`getLowerBoundInternal(Transformation node, HashGroupify groupify)`
    `protected AbstractILMultiDimensional` | AbstractMetricMultiDimensionalPotentiallyPrecomputed.`getLowerBoundInternal(Transformation node, HashGroupify groupify)`
    `protected ILSingleDimensional` | MetricSDNMDiscernability.`getLowerBoundInternal(Transformation node, HashGroupify groupify)`
    `protected AbstractILMultiDimensional` | MetricMDNUNMNormalizedEntropyPrecomputed.`getLowerBoundInternal(Transformation node, HashGroupify groupify)`
    `protected AbstractILMultiDimensional` | MetricMDStatic.`getLowerBoundInternal(Transformation node, HashGroupify groupify)`
    `protected AbstractILMultiDimensional` | MetricMDNMLoss.`getLowerBoundInternal(Transformation node, HashGroupify g)`