interface Substitutable { } abstract class ResolutionPart { constructor() /* primary */ { super/*Any*/() /* () */ } abstract fun KotlinResolutionCandidate.process(): String } class KotlinResolutionCandidate { constructor(resolvedCall: Atom) /* primary */ { super/*Any*/() /* () */ } val resolvedCall: Atom field = resolvedCall get } class Atom { constructor(candidateDescriptor: CallableDescriptor) /* primary */ { super/*Any*/() /* () */ } val candidateDescriptor: CallableDescriptor field = candidateDescriptor get } object Owner : ResolutionPart { private constructor() /* primary */ { super/*ResolutionPart*/() /* () */ } override fun KotlinResolutionCandidate.process(): String { val candidateDescriptor: CallableDescriptor = .().() when { when { candidateDescriptor is MemberDescriptor -> EQEQ(arg0 = candidateDescriptor /*as MemberDescriptor */.getModality(), arg1 = null).not() else -> false } -> return "OK" } return "FAIL" } } object Final : Modality { private constructor() /* primary */ { super/*Any*/() /* () */ } }