data class Some { constructor(value: T) /* primary */ { super/*Any*/() /* () */ } val value: T field = value get operator fun component1(): T { return .#value } fun copy(value: T = .#value): Some { return Some(value = value) } override fun equals(other: Any?): Boolean { when { EQEQEQ(arg0 = , arg1 = other) -> return true } when { other !is Some -> return false } val tmp0_other_with_cast: Some = other as Some when { EQEQ(arg0 = .#value, arg1 = tmp0_other_with_cast.#value).not() -> return false } return true } override fun hashCode(): Int { return when { EQEQ(arg0 = .#value, arg1 = null) -> 0 else -> .#value.hashCode() } } override fun toString(): String { return "Some(value=" + .#value + ")" } } interface MyList : List> { } open class SomeList : MyList, ArrayList> { constructor() /* primary */ { super/*ArrayList*/>() /* () */ } } class FinalList : SomeList { constructor() /* primary */ { super/*SomeList*/() /* () */ } }