Ray Ryan
03/23/2020, 8:42 PMclass Outer {
  abstract class Inner {
  }
}
class Child extends Outer.Inner {
  Child(Outer outer) {
    // Calls Inner constructor, providing
    // outer as the containing instance
    outer.super();
  }
}Childclass Outer {
  abstract inner class Inner
}
class Child(outer: Outer?) : Inner()Casey Brooks
03/23/2020, 8:59 PMInnerOuterChildwithInnerOuterCasey Brooks
03/23/2020, 8:59 PMclass Outer {
    var outerStringProperty = ""
    open class Inner(outer: Outer, someConstructorProperty: String) {
        init {
            with(outer) {
                outerStringProperty = someConstructorProperty
            }
        }
    }
}
class Child(outer: Outer) : Outer.Inner(outer, "property")
fun createChild(): Child {
    val outer = Outer()
    return Child(outer)
}Ray Ryan
03/23/2020, 9:03 PMRay Ryan
03/23/2020, 9:03 PMBenjamin Charais
03/24/2020, 9:00 PMinnerclass Outer {
    abstract class Inner
}
class Child(outer: Outer) : Outer.Inner() {
    init {
        // Do work with outer if need be
    }
}Ray Ryan
03/24/2020, 9:06 PMRay Ryan
03/24/2020, 9:07 PMBenjamin Charais
03/24/2020, 9:24 PM