package test

public interface HalfSubstitutedTypeParameters {

    public interface Sub : test.HalfSubstitutedTypeParameters.Super {
        public abstract override /*1*/ /*fake_override*/ fun dummy(): kotlin.Unit
        public abstract override /*1*/ fun foo(): test.HalfSubstitutedTypeParameters.TrickyList<kotlin.Int, kotlin.String?>
    }

    public interface Super {
        public abstract fun dummy(): kotlin.Unit
        public abstract fun foo(): kotlin.MutableList<kotlin.String?>
    }

    public interface TrickyList</*0*/ X, /*1*/ E> : kotlin.MutableList<E> {
        public abstract override /*1*/ /*fake_override*/ val isEmpty: kotlin.Boolean
            public abstract override /*1*/ /*fake_override*/ fun <get-isEmpty>(): kotlin.Boolean
        public abstract override /*1*/ /*fake_override*/ val size: kotlin.Int
            public abstract override /*1*/ /*fake_override*/ fun <get-size>(): kotlin.Int
        public abstract override /*1*/ /*fake_override*/ fun add(/*0*/ e: E): kotlin.Boolean
        public abstract override /*1*/ /*fake_override*/ fun add(/*0*/ index: kotlin.Int, /*1*/ element: E): kotlin.Unit
        public abstract override /*1*/ /*fake_override*/ fun addAll(/*0*/ c: kotlin.Collection<E>): kotlin.Boolean
        public abstract override /*1*/ /*fake_override*/ fun addAll(/*0*/ index: kotlin.Int, /*1*/ c: kotlin.Collection<E>): kotlin.Boolean
        public abstract override /*1*/ /*fake_override*/ fun clear(): kotlin.Unit
        public abstract override /*1*/ /*fake_override*/ fun contains(/*0*/ o: E): kotlin.Boolean
        public abstract override /*1*/ /*fake_override*/ fun containsAll(/*0*/ c: kotlin.Collection<E>): kotlin.Boolean
        public abstract override /*1*/ /*fake_override*/ fun get(/*0*/ index: kotlin.Int): E
        public abstract override /*1*/ /*fake_override*/ fun indexOf(/*0*/ o: kotlin.Any?): kotlin.Int
        public abstract override /*1*/ /*fake_override*/ fun iterator(): kotlin.MutableIterator<E>
        public abstract override /*1*/ /*fake_override*/ fun lastIndexOf(/*0*/ o: kotlin.Any?): kotlin.Int
        public abstract override /*1*/ /*fake_override*/ fun listIterator(): kotlin.MutableListIterator<E>
        public abstract override /*1*/ /*fake_override*/ fun listIterator(/*0*/ index: kotlin.Int): kotlin.MutableListIterator<E>
        public abstract override /*1*/ /*fake_override*/ fun remove(/*0*/ o: E): kotlin.Boolean
        public abstract override /*1*/ /*fake_override*/ fun removeAll(/*0*/ c: kotlin.Collection<kotlin.Any?>): kotlin.Boolean
        public abstract override /*1*/ /*fake_override*/ fun removeAt(/*0*/ index: kotlin.Int): E
        public abstract override /*1*/ /*fake_override*/ fun retainAll(/*0*/ c: kotlin.Collection<kotlin.Any?>): kotlin.Boolean
        public abstract override /*1*/ /*fake_override*/ fun set(/*0*/ index: kotlin.Int, /*1*/ element: E): E
        public abstract override /*1*/ /*fake_override*/ fun subList(/*0*/ fromIndex: kotlin.Int, /*1*/ toIndex: kotlin.Int): kotlin.MutableList<E>
    }
}
