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

    public interface TrickyList</*0*/ X : kotlin.Any!, /*1*/ E : kotlin.Any!> : kotlin.collections.MutableList<E!> {
        public abstract override /*1*/ /*fake_override*/ val size: kotlin.Int
        public abstract override /*1*/ /*fake_override*/ fun add(/*0*/ element: 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*/ index: kotlin.Int, /*1*/ elements: kotlin.collections.Collection<E!>): kotlin.Boolean
        public abstract override /*1*/ /*fake_override*/ fun addAll(/*0*/ elements: kotlin.collections.Collection<E!>): kotlin.Boolean
        public abstract override /*1*/ /*fake_override*/ fun clear(): kotlin.Unit
        public abstract override /*1*/ /*fake_override*/ fun contains(/*0*/ element: E!): kotlin.Boolean
        public abstract override /*1*/ /*fake_override*/ fun containsAll(/*0*/ elements: kotlin.collections.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*/ element: E!): kotlin.Int
        public abstract override /*1*/ /*fake_override*/ fun isEmpty(): kotlin.Boolean
        public abstract override /*1*/ /*fake_override*/ fun iterator(): kotlin.collections.MutableIterator<E!>
        public abstract override /*1*/ /*fake_override*/ fun lastIndexOf(/*0*/ element: E!): kotlin.Int
        public abstract override /*1*/ /*fake_override*/ fun listIterator(): kotlin.collections.MutableListIterator<E!>
        public abstract override /*1*/ /*fake_override*/ fun listIterator(/*0*/ index: kotlin.Int): kotlin.collections.MutableListIterator<E!>
        public abstract override /*1*/ /*fake_override*/ fun remove(/*0*/ element: E!): kotlin.Boolean
        public abstract override /*1*/ /*fake_override*/ fun removeAll(/*0*/ elements: kotlin.collections.Collection<E!>): kotlin.Boolean
        public abstract override /*1*/ /*fake_override*/ fun removeAt(/*0*/ index: kotlin.Int): E!
        public abstract override /*1*/ /*fake_override*/ fun retainAll(/*0*/ elements: kotlin.collections.Collection<E!>): 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.collections.MutableList<E!>
    }
}
