class ChainedProperty( val main: Main, val fallback: Fallback ) operator fun ChainedProperty, ReadOnlyProperty>.getValue(thisRef: R, property: KProperty<*>): V operator fun ChainedProperty, ReadWriteProperty>.getValue(thisRef: R, property: KProperty<*>): V operator fun ChainedProperty, ReadOnlyProperty>.getValue(thisRef: R, property: KProperty<*>): V operator fun ChainedProperty, ReadWriteProperty>.getValue(thisRef: R, property: KProperty<*>): V operator fun ChainedProperty, *>.setValue(thisRef: R, property: KProperty<*>, value: V)