Source session for module <main>

Call 1

Expression#(R|<local>/other|)

Candidate 1: FirConstructorSymbol /Expression.Expression --- constructor<T>(x: T): Expression<T>

Resolution Stages > CreateFreshTypeVariableSubstitutorStage:
  1. New TypeVariable(T) for FirRegularClassSymbol Expressions parameter 0
Resolution Stages > CheckArguments:
  1. T <: TypeVariable(T) from Argument R|/other|
Call Completion:
  1. Choose TypeVariable(T) with FORBIDDEN

Call 2

GreaterOp#(this@R|/greater|, R?C|/Expression.Expression|(R|<local>/other|))

Candidate 1: FirConstructorSymbol /GreaterOp.GreaterOp --- constructor(expr1: Expression<*>, expr2: Expression<*>): GreaterOp

Resolution Stages > CheckArguments:
  1. Expression<CapturedType(in S)> <: Expression<*> from Argument this|/greater|
  2. Expression<TypeVariable(T)> <: Expression<*> from Argument R?C|/Expression.Expression|(R|/other|)
Resolution Stages > CheckLambdaAgainstTypeVariableContradiction:
  1. GreaterOp <: GreaterOp from ExpectedType for some call
Call Completion:
  1. Choose TypeVariable(T) with READY_FOR_FIXATION_LOWER
  2. TypeVariable(T) == T from Fix variable T

Call 3

R|<local>/countExpr|.greater#(IntegerLiteral(0))

Candidate 1: FirNamedFunctionSymbol /greater --- fun <T : Comparable<T>, S : T?> Expression<in S>.greater(other: T): GreaterOp↩

Resolution Stages > CreateFreshTypeVariableSubstitutorStage:
  1. New TypeVariable(T) for FirNamedFunctionSymbol /greaters parameter 0
  2. New TypeVariable(S) for FirNamedFunctionSymbol /greaters parameter 1
  3. TypeVariable(T) <: kotlin/Comparable<TypeVariable(T)> from DeclaredUpperBound
  4. TypeVariable(S) <: TypeVariable(T)? from DeclaredUpperBound
    1. TypeVariable(S) & Any <: TypeVariable(T)
  5. Combine TypeVariable(S) & Any <: TypeVariable(T) with TypeVariable(T) <: kotlin/Comparable<TypeVariable(T)>
    1. TypeVariable(S) <: kotlin/Comparable<TypeVariable(T)>?
    2. TypeVariable(T) <: kotlin/Comparable<TypeVariable(S) & Any>
  6. Combine TypeVariable(S) & Any <: TypeVariable(T) with TypeVariable(T) <: kotlin/Comparable<TypeVariable(S) & Any>
    1. TypeVariable(S) <: kotlin/Comparable<TypeVariable(S) & Any>?
Resolution Stages > CheckExtensionReceiver:
  1. Expression<kotlin/Long> <: Expression<in TypeVariable(S)> from Receiver R|/countExpr|
    1. TypeVariable(S) <: kotlin/Long
Resolution Stages > CheckArguments:
  1. ILT: 0 <: TypeVariable(T) from Argument IntegerLiteral(0)
  2. Combine ILT: 0 <: TypeVariable(T) with TypeVariable(T) <: kotlin/Comparable<TypeVariable(T)>
    1. TypeVariable(T) <: ILT: 0
  3. Combine ILT: 0 <: TypeVariable(T) with TypeVariable(T) <: kotlin/Comparable<TypeVariable(S) & Any>
    1. TypeVariable(S) <: ILT: 0?
  4. Combine ILT: 0 <: TypeVariable(T) with TypeVariable(T) <: kotlin/Comparable<TypeVariable(T)>
    1. TypeVariable(T) <: kotlin/Comparable<ILT: 0>
  5. Combine ILT: 0 <: TypeVariable(T) with TypeVariable(S) <: kotlin/Comparable<TypeVariable(T)>?
    1. TypeVariable(S) <: kotlin/Comparable<ILT: 0>?
  6. Combine ILT: 0 <: TypeVariable(T) with TypeVariable(T) <: ILT: 0
    1. TypeVariable(T) == ILT: 0
Call Completion:
  1. Choose TypeVariable(S) with WITH_COMPLEX_DEPENDENCY_AND_PROPER_NON_ILT
    1. TypeVariable(T) is WITH_COMPLEX_DEPENDENCY
  2. TypeVariable(S) == kotlin/Long from Fix variable S
  3. Combine TypeVariable(S) == kotlin/Long with TypeVariable(S) <: TypeVariable(T)?
    1. kotlin/Long <: TypeVariable(T)
  4. Combine TypeVariable(S) == kotlin/Long with TypeVariable(S) <: kotlin/Comparable<TypeVariable(T)>?
    1. TypeVariable(T) <: kotlin/Long
  5. Combine TypeVariable(S) == kotlin/Long with TypeVariable(S) <: kotlin/Comparable<TypeVariable(S) & Any>?
    1. TypeVariable(S) <: kotlin/Long?
  6. Combine TypeVariable(S) == kotlin/Long with TypeVariable(T) <: kotlin/Comparable<TypeVariable(S) & Any>
    1. TypeVariable(T) <: kotlin/Comparable<kotlin/Long>
  7. Combine TypeVariable(S) == kotlin/Long with TypeVariable(S) <: kotlin/Comparable<TypeVariable(S) & Any>?
    1. TypeVariable(S) <: kotlin/Comparable<kotlin/Long>?
  8. Combine kotlin/Long <: TypeVariable(T) with TypeVariable(T) <: kotlin/Long
    1. TypeVariable(T) == kotlin/Long
  9. Choose TypeVariable(T) with READY_FOR_FIXATION_UPPER

Call 4

R|<local>/countExpr|.greater#(String(0))

Candidate 1: FirNamedFunctionSymbol /greater --- fun <T : Comparable<T>, S : T?> Expression<in S>.greater(other: T): GreaterOp↩

Resolution Stages > CreateFreshTypeVariableSubstitutorStage:
  1. New TypeVariable(T) for FirNamedFunctionSymbol /greaters parameter 0
  2. New TypeVariable(S) for FirNamedFunctionSymbol /greaters parameter 1
  3. TypeVariable(T) <: kotlin/Comparable<TypeVariable(T)> from DeclaredUpperBound
  4. TypeVariable(S) <: TypeVariable(T)? from DeclaredUpperBound
    1. TypeVariable(S) & Any <: TypeVariable(T)
  5. Combine TypeVariable(S) & Any <: TypeVariable(T) with TypeVariable(T) <: kotlin/Comparable<TypeVariable(T)>
    1. TypeVariable(S) <: kotlin/Comparable<TypeVariable(T)>?
    2. TypeVariable(T) <: kotlin/Comparable<TypeVariable(S) & Any>
  6. Combine TypeVariable(S) & Any <: TypeVariable(T) with TypeVariable(T) <: kotlin/Comparable<TypeVariable(S) & Any>
    1. TypeVariable(S) <: kotlin/Comparable<TypeVariable(S) & Any>?
Resolution Stages > CheckExtensionReceiver:
  1. Expression<kotlin/Long> <: Expression<in TypeVariable(S)> from Receiver R|/countExpr|
    1. TypeVariable(S) <: kotlin/Long
Resolution Stages > CheckArguments:
  1. kotlin/String <: TypeVariable(T) from Argument String(0)
  2. Combine kotlin/String <: TypeVariable(T) with TypeVariable(T) <: kotlin/Comparable<TypeVariable(T)>
    1. TypeVariable(T) <: kotlin/String
  3. Combine kotlin/String <: TypeVariable(T) with TypeVariable(T) <: kotlin/Comparable<TypeVariable(S) & Any>
    1. TypeVariable(S) <: kotlin/String?
  4. Combine kotlin/String <: TypeVariable(T) with TypeVariable(T) <: kotlin/Comparable<TypeVariable(T)>
    1. TypeVariable(T) <: kotlin/Comparable<kotlin/String>
  5. Combine kotlin/String <: TypeVariable(T) with TypeVariable(S) <: kotlin/Comparable<TypeVariable(T)>?
    1. TypeVariable(S) <: kotlin/Comparable<kotlin/String>?
  6. Combine kotlin/String <: TypeVariable(T) with TypeVariable(T) <: kotlin/String
    1. TypeVariable(T) == kotlin/String
Call Completion:
  1. Choose TypeVariable(T) with WITH_COMPLEX_DEPENDENCY_AND_PROPER_NON_ILT_EQUALITY
    1. TypeVariable(S) is WITH_COMPLEX_DEPENDENCY_AND_PROPER_NON_ILT
  2. TypeVariable(T) == kotlin/String from Fix variable T
  3. Combine TypeVariable(S) & Any <: TypeVariable(T) with TypeVariable(T) == kotlin/String
    1. TypeVariable(S) <: kotlin/String?
  4. Combine TypeVariable(T) == kotlin/String with TypeVariable(T) <: kotlin/Comparable<TypeVariable(T)>
    1. TypeVariable(T) <: kotlin/String
    2. TypeVariable(T) <: kotlin/Comparable<kotlin/String>
  5. Combine TypeVariable(T) == kotlin/String with TypeVariable(S) <: kotlin/Comparable<TypeVariable(T)>?
    1. TypeVariable(S) <: kotlin/Comparable<kotlin/String>?
  6. Choose TypeVariable(S) with READY_FOR_FIXATION_UPPER
  7. InferredEmptyIntersectionWarning
  8. TypeVariable(S) == it(kotlin/Long & kotlin/String) from Fix variable S
  9. Combine TypeVariable(S) == it(kotlin/Long & kotlin/String) with TypeVariable(S) <: kotlin/Comparable<TypeVariable(S) & Any>?
    1. TypeVariable(S) <: kotlin/Long?
    2. TypeVariable(S) <: kotlin/Comparable<it(kotlin/Long & kotlin/String)>?

Call 5

R|<local>/countExpr|.greater#<R|kotlin/String|, R|kotlin/Nothing|>(String(0))

Candidate 1: FirNamedFunctionSymbol /greater --- fun <T : Comparable<T>, S : T?> Expression<in S>.greater(other: T): GreaterOp↩

Resolution Stages > CreateFreshTypeVariableSubstitutorStage:
  1. New TypeVariable(T) for FirNamedFunctionSymbol /greaters parameter 0
  2. New TypeVariable(S) for FirNamedFunctionSymbol /greaters parameter 1
  3. TypeVariable(T) <: kotlin/Comparable<TypeVariable(T)> from DeclaredUpperBound
  4. TypeVariable(S) <: TypeVariable(T)? from DeclaredUpperBound
    1. TypeVariable(S) & Any <: TypeVariable(T)
  5. Combine TypeVariable(S) & Any <: TypeVariable(T) with TypeVariable(T) <: kotlin/Comparable<TypeVariable(T)>
    1. TypeVariable(S) <: kotlin/Comparable<TypeVariable(T)>?
    2. TypeVariable(T) <: kotlin/Comparable<TypeVariable(S) & Any>
  6. Combine TypeVariable(S) & Any <: TypeVariable(T) with TypeVariable(T) <: kotlin/Comparable<TypeVariable(S) & Any>
    1. TypeVariable(S) <: kotlin/Comparable<TypeVariable(S) & Any>?
  7. TypeVariable(T) == kotlin/String from TypeParameter R|kotlin/String|
  8. Combine TypeVariable(S) & Any <: TypeVariable(T) with TypeVariable(T) == kotlin/String
    1. TypeVariable(S) <: kotlin/String?
  9. Combine TypeVariable(T) == kotlin/String with TypeVariable(T) <: kotlin/Comparable<TypeVariable(T)>
    1. TypeVariable(T) <: kotlin/String
    2. TypeVariable(T) <: kotlin/Comparable<kotlin/String>
  10. Combine TypeVariable(T) == kotlin/String with TypeVariable(S) <: kotlin/Comparable<TypeVariable(T)>?
    1. TypeVariable(S) <: kotlin/Comparable<kotlin/String>?
  11. TypeVariable(S) == kotlin/Nothing from TypeParameter R|kotlin/Nothing|
  12. Combine TypeVariable(S) == kotlin/Nothing with TypeVariable(S) <: TypeVariable(T)?
    1. kotlin/Nothing <: TypeVariable(T)
  13. Combine TypeVariable(S) == kotlin/Nothing with TypeVariable(T) <: kotlin/Comparable<TypeVariable(S) & Any>
    1. TypeVariable(T) <: kotlin/Comparable<kotlin/Nothing>
  14. Combine TypeVariable(S) == kotlin/Nothing with TypeVariable(S) <: kotlin/Comparable<TypeVariable(S) & Any>?
    1. TypeVariable(S) <: kotlin/Comparable<kotlin/Nothing>?
Resolution Stages > CheckExtensionReceiver:
  1. Expression<kotlin/Long> <: Expression<in TypeVariable(S)> from Receiver R|/countExpr|
    1. TypeVariable(S) <: kotlin/Long
Resolution Stages > CheckArguments:
  1. kotlin/String <: TypeVariable(T) from Argument String(0)
Call Completion:
  1. Choose TypeVariable(T) with WITH_COMPLEX_DEPENDENCY_AND_PROPER_NON_ILT_EQUALITY
    1. TypeVariable(S) is WITH_COMPLEX_DEPENDENCY_AND_PROPER_NON_ILT_EQUALITY
  2. TypeVariable(T) == kotlin/String from Fix variable T
  3. Combine TypeVariable(S) & Any <: TypeVariable(T) with TypeVariable(T) == kotlin/String
    1. TypeVariable(S) <: kotlin/String?
  4. Combine TypeVariable(T) == kotlin/String with TypeVariable(T) <: kotlin/Comparable<TypeVariable(T)>
    1. TypeVariable(T) <: kotlin/String
    2. TypeVariable(T) <: kotlin/Comparable<kotlin/String>
  5. Combine TypeVariable(T) == kotlin/String with TypeVariable(S) <: kotlin/Comparable<TypeVariable(T)>?
    1. TypeVariable(S) <: kotlin/Comparable<kotlin/String>?
  6. Choose TypeVariable(S) with READY_FOR_FIXATION_UPPER
  7. TypeVariable(S) == kotlin/Nothing from Fix variable S
  8. Combine TypeVariable(S) == kotlin/Nothing with TypeVariable(S) <: kotlin/Comparable<TypeVariable(S) & Any>?
    1. TypeVariable(S) <: kotlin/Comparable<kotlin/Nothing>?