// FIR_IDENTICAL // !LANGUAGE: -ForbidInferringTypeVariablesIntoEmptyIntersection class Expression(val x: T) class GreaterOp(val expr1: Expression<*>, val expr2: Expression<*>) fun , S : T?> Expression.greater(other: T): GreaterOp = GreaterOp(this, Expression(other)) fun foo(countExpr: Expression) { countExpr.greater(0) countExpr.greater("0") countExpr.greater("0") }