Q:

Can Kotlin allow a function that returns a value of this interface's implementation's type?

I want to write something like this:
/**
 * Represents a state, large or small.
 */
interface State {
    /**
     * 
     */
    val changeValue: StateChange<This> // does not compile; "This" is a keyword I made up that might reference the implementing class
}

/**
 * Represents a change in a state, large or small.
 *
 * @param StateType The type of state that has changed
 */
interface StateChange<StateType: State>

However, as noted in my comment, I don't know the syntax for this. Is that in existance? Or must I use workarounds like forcing a State to take in itself as a generic parameter?

In case it's not apparent, I can't use val changeValue: StateChange<State> because then that makes this possible, and I don't want that:
// BAD EXAMPLE - This is what I want to avoid
class Foo: State { val changeValue: StateChange<Bar> = Bar().changeValue }
class Bar: State { val changeValue: StateChange<Foo> = Foo().changeValue }

A:

You can use a class with a recursive upper bound for this:
interface State<T : State<T>> {
    val changeValue: StateChange<T>
}

interface StateChange<StateType: State<StateType>>

Now this code will no longer compile:
class Foo: State<Foo> { val changeValue: StateChange<Bar> = Bar().changeValue }
class Bar: State<Bar> { val changeValue: StateChange<Foo> = Foo().changeValue }

