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.(Mutable)List<kotlin.String!>!
    }

    public interface TrickyList</*0*/ X : kotlin.Any!, /*1*/ E : kotlin.Any!> : kotlin.MutableList<E!> {
        public abstract override /*1*/ /*fake_override*/ val isEmpty: kotlin.Boolean
        public abstract override /*1*/ /*fake_override*/ val 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!>
    }
}
