// DISABLE_JAVA_FACADE
// RUN_PIPELINE_TILL: BACKEND
// FIR_IDENTICAL
// FILE: CharBuffer.java

public class CharBuffer implements CharSequence {
    public final int length() {
        return 0;
    }

    public final char charAt(int index) {
        return get(position() + checkIndex(index, 1));
    }

    // The key problem here is that `get` has the same signature as kotlin.CharSequence.get but completely different semantics
    public abstract char get(int index);
    public abstract CharBuffer subSequence(int start, int end);
}

// FILE: main.kt

fun test(cb: CharBuffer) {
    cb.get(0)
    (cb as CharSequence).get(0)
}

/* GENERATED_FIR_TAGS: asExpression, functionDeclaration, integerLiteral, javaFunction, javaType */
