package

package foobar {
    public val x1: [ERROR : <ERROR PROPERTY TYPE>]
    public val x2: java.util.List<kotlin.Int>? = null
    public val y1: kotlin.collections.List<kotlin.Int>? = null
    public fun </*0*/ O> done(/*0*/ result: O): foobar.Iteratee<kotlin.Any?, O>

    public abstract class Collection</*0*/ E> : kotlin.collections.Iterable<E> {
        public constructor Collection</*0*/ E>()
        public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
        public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
        public final fun </*0*/ O> iterate(/*0*/ iteratee: foobar.Iteratee<E, O>): O
        public abstract override /*1*/ /*fake_override*/ fun iterator(): kotlin.collections.Iterator<E>
        public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
    }

    public abstract class Foo</*0*/ T> {
        public constructor Foo</*0*/ T>()
        public abstract val x: T
        public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
        public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
        public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
    }

    public abstract class Iteratee</*0*/ in I, /*1*/ out O> {
        public constructor Iteratee</*0*/ in I, /*1*/ out O>()
        public abstract val isDone: kotlin.Boolean
        public abstract val result: O
        public abstract fun done(): O
        public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
        public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
        public abstract fun process(/*0*/ item: I): foobar.Iteratee<I, O>
        public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
    }

    public final class StrangeIterateeImpl</*0*/ in I, /*1*/ out O> : foobar.Iteratee<I, O> {
        public constructor StrangeIterateeImpl</*0*/ in I, /*1*/ out O>(/*0*/ obj: O)
        public open override /*1*/ val isDone: kotlin.Boolean = true
        public final val obj: O
        public open override /*1*/ val result: O
        public open override /*1*/ fun done(): O
        public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
        public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
        public open override /*1*/ fun process(/*0*/ item: I): foobar.Iteratee<I, O>
        public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
    }

    public abstract class Sum : foobar.Iteratee<kotlin.Int, kotlin.Int> {
        public constructor Sum()
        public abstract override /*1*/ val isDone: kotlin.Boolean
        public abstract override /*1*/ val result: kotlin.Int
        public abstract override /*1*/ fun done(): kotlin.Int
        public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
        public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
        public open override /*1*/ fun process(/*0*/ item: kotlin.Int): foobar.Iteratee<kotlin.Int, kotlin.Int>
        public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
    }

    package foobar.a {
        public val a: java.util.List<kotlin.Int>? = null
        public val a2: [ERROR : util.List<Int>]<kotlin.Int>?
        public val a3: [ERROR : LinkedList<Int>]<kotlin.Int>?
        public val b: kotlin.collections.List<kotlin.Int>? = null
        public val b1: [ERROR : util.List<Int>]<kotlin.Int>?
    }
}
