ImmediateNarrowingTransformer.ceylon

"A [[NarrowingTransformer]] that narrows immediately to the type of the visited subject
 by invoking its [[`transform`|Node.transform]] method.
 
 For example:
 ~~~
 shared actual default Result transformValueExpression(ValueExpression that)
         => that.transform(this);
 ~~~
 
 This interface should be functionally equivalent to [[CascadingNarrowingTransformer]],
 but is likely a lot faster because it uses only a single virtual method lookup
 instead of a series of type checks and calls."
shared interface ImmediateNarrowingTransformer<out Result> satisfies NarrowingTransformer<Result> {
    shared actual default Result transformAddingExpression(AddingExpression that)
            => that.transform(this);
    shared actual default Result transformAnyClass(AnyClass that)
            => that.transform(this);
    shared actual default Result transformAnyCompilationUnit(AnyCompilationUnit that)
            => that.transform(this);
    shared actual default Result transformAnyFunction(AnyFunction that)
            => that.transform(this);
    shared actual default Result transformAnyInterface(AnyInterface that)
            => that.transform(this);
    shared actual default Result transformAnyInterfaceDefinition(AnyInterfaceDefinition that)
            => that.transform(this);
    shared actual default Result transformAnyMemberOperator(AnyMemberOperator that)
            => that.transform(this);
    shared actual default Result transformAnySpecifier(AnySpecifier that)
            => that.transform(this);
    shared actual default Result transformAnyValue(AnyValue that)
            => that.transform(this);
    shared actual default Result transformArguments(Arguments that)
            => that.transform(this);
    shared actual default Result transformArithmeticAssignmentOperation(ArithmeticAssignmentOperation that)
            => that.transform(this);
    shared actual default Result transformArithmeticOperation(ArithmeticOperation that)
            => that.transform(this);
    shared actual default Result transformAssigningExpression(AssigningExpression that)
            => that.transform(this);
    shared actual default Result transformAssignmentOperation(AssignmentOperation that)
            => that.transform(this);
    shared actual default Result transformAtom(Atom that)
            => that.transform(this);
    shared actual default Result transformBinaryOperation(BinaryOperation that)
            => that.transform(this);
    shared actual default Result transformBody(Body that)
            => that.transform(this);
    shared actual default Result transformBound(Bound that)
            => that.transform(this);
    shared actual default Result transformCaseItem(CaseItem that)
            => that.transform(this);
    shared actual default Result transformClassOrInterface(ClassOrInterface that)
            => that.transform(this);
    shared actual default Result transformComparingExpression(ComparingExpression that)
            => that.transform(this);
    shared actual default Result transformComparisonOperation(ComparisonOperation that)
            => that.transform(this);
    shared actual default Result transformComprehensionClause(ComprehensionClause that)
            => that.transform(this);
    shared actual default Result transformCondition(Condition that)
            => that.transform(this);
    shared actual default Result transformConditionalExpression(ConditionalExpression that)
            => that.transform(this);
    shared actual default Result transformConjoiningExpression(ConjoiningExpression that)
            => that.transform(this);
    shared actual default Result transformConstructorDefinition(ConstructorDefinition that)
            => that.transform(this);
    shared actual default Result transformControlStructure(ControlStructure that)
            => that.transform(this);
    shared actual default Result transformDec(Dec that)
            => that.transform(this);
    shared actual default Result transformDeclaration(Declaration that)
            => that.transform(this);
    shared actual default Result transformDefaultedParameter(DefaultedParameter that)
            => that.transform(this);
    shared actual default Result transformDirective(Directive that)
            => that.transform(this);
    shared actual default Result transformDisjoiningExpression(DisjoiningExpression that)
            => that.transform(this);
    shared actual default Result transformEqualityOperation(EqualityOperation that)
            => that.transform(this);
    shared actual default Result transformEquatingExpression(EquatingExpression that)
            => that.transform(this);
    shared actual default Result transformExistsNonemptyExpression(ExistsNonemptyExpression that)
            => that.transform(this);
    shared actual default Result transformExistsOrNonemptyCondition(ExistsOrNonemptyCondition that)
            => that.transform(this);
    shared actual default Result transformExponentiatingExpression(ExponentiatingExpression that)
            => that.transform(this);
    shared actual default Result transformExpression(Expression that)
            => that.transform(this);
    shared actual default Result transformExpressionStatement(ExpressionStatement that)
            => that.transform(this);
    shared actual default Result transformExtensionOrConstruction(ExtensionOrConstruction that)
            => that.transform(this);
    shared actual default Result transformIdentifier(Identifier that)
            => that.transform(this);
    shared actual default Result transformImportAlias(ImportAlias that)
            => that.transform(this);
    shared actual default Result transformImportElement(ImportElement that)
            => that.transform(this);
    shared actual default Result transformInitialComprehensionClause(InitialComprehensionClause that)
            => that.transform(this);
    shared actual default Result transformInlineDefinitionArgument(InlineDefinitionArgument that)
            => that.transform(this);
    shared actual default Result transformIntersectingExpression(IntersectingExpression that)
            => that.transform(this);
    shared actual default Result transformInvertingExpression(InvertingExpression that)
            => that.transform(this);
    shared actual default Result transformLiteral(Literal that)
            => that.transform(this);
    shared actual default Result transformLocalModifier(LocalModifier that)
            => that.transform(this);
    shared actual default Result transformLogicalAssignmentOperation(LogicalAssignmentOperation that)
            => that.transform(this);
    shared actual default Result transformLogicalOperation(LogicalOperation that)
            => that.transform(this);
    shared actual default Result transformMainType(MainType that)
            => that.transform(this);
    shared actual default Result transformMemberDec(MemberDec that)
            => that.transform(this);
    shared actual default Result transformMeta(Meta that)
            => that.transform(this);
    shared actual default Result transformModifier(Modifier that)
            => that.transform(this);
    shared actual default Result transformMultiplyingExpression(MultiplyingExpression that)
            => that.transform(this);
    shared actual default Result transformNamedArgument(NamedArgument that)
            => that.transform(this);
    shared actual default Result transformNameWithTypeArguments(NameWithTypeArguments that)
            => that.transform(this);
    shared actual default Result transformNegatingExpression(NegatingExpression that)
            => that.transform(this);
    shared actual default Result transformNode(Node that)
            => that.transform(this);
    shared actual default Result transformOperation(Operation that)
            => that.transform(this);
    shared actual default Result transformParameter(Parameter that)
            => that.transform(this);
    shared actual default Result transformPattern(Pattern that)
            => that.transform(this);
    shared actual default Result transformPostfixOperation(PostfixOperation that)
            => that.transform(this);
    shared actual default Result transformPrefixOperation(PrefixOperation that)
            => that.transform(this);
    shared actual default Result transformPrePostfixingExpression(PrePostfixingExpression that)
            => that.transform(this);
    shared actual default Result transformPrimary(Primary that)
            => that.transform(this);
    shared actual default Result transformPrimaryType(PrimaryType that)
            => that.transform(this);
    shared actual default Result transformRangeSubscript(RangeSubscript that)
            => that.transform(this);
    shared actual default Result transformRequiredParameter(RequiredParameter that)
            => that.transform(this);
    shared actual default Result transformScalingExpression(ScalingExpression that)
            => that.transform(this);
    shared actual default Result transformSelfReference(SelfReference that)
            => that.transform(this);
    shared actual default Result transformSetAssignmentOperation(SetAssignmentOperation that)
            => that.transform(this);
    shared actual default Result transformSetOperation(SetOperation that)
            => that.transform(this);
    shared actual default Result transformSimpleType(SimpleType that)
            => that.transform(this);
    shared actual default Result transformSpanningExpression(SpanningExpression that)
            => that.transform(this);
    shared actual default Result transformSpecification(Specification that)
            => that.transform(this);
    shared actual default Result transformStatement(Statement that)
            => that.transform(this);
    shared actual default Result transformStructureExpression(StructureExpression that)
            => that.transform(this);
    shared actual default Result transformSubscript(Subscript that)
            => that.transform(this);
    shared actual default Result transformThenElseExpression(ThenElseExpression that)
            => that.transform(this);
    shared actual default Result transformType(Type that)
            => that.transform(this);
    shared actual default Result transformTypeIsh(TypeIsh that)
            => that.transform(this);
    shared actual default Result transformTypedDeclaration(TypedDeclaration that)
            => that.transform(this);
    shared actual default Result transformTypeDec(TypeDec that)
            => that.transform(this);
    shared actual default Result transformTypeDeclaration(TypeDeclaration that)
            => that.transform(this);
    shared actual default Result transformTypeModifier(TypeModifier that)
            => that.transform(this);
    shared actual default Result transformUnaryArithmeticOperation(UnaryArithmeticOperation that)
            => that.transform(this);
    shared actual default Result transformUnaryIshOperation(UnaryIshOperation that)
            => that.transform(this);
    shared actual default Result transformUnaryOperation(UnaryOperation that)
            => that.transform(this);
    shared actual default Result transformUnaryTypeOperation(UnaryTypeOperation that)
            => that.transform(this);
    shared actual default Result transformUnionableType(UnionableType that)
            => that.transform(this);
    shared actual default Result transformUnioningExpression(UnioningExpression that)
            => that.transform(this);
    shared actual default Result transformValueExpression(ValueExpression that)
            => that.transform(this);
    shared actual default Result transformVariable(Variable that)
            => that.transform(this);
    shared actual default Result transformVariance(Variance that)
            => that.transform(this);
}