class C {
  constructor(x: Int, y: Int, z: Int = 1) /* primary */ {
    super/*Any*/()
    /* <init>() */

  }

  val y: Int
    field = y
    get

  var z: Int
    field = z
    get
    set

  constructor() {
    this/*C*/(x = 0, y = 0, z = 0)
  }

  val property: Int
    field = 0
    get

  val propertyWithGet: Int
    get(): Int {
      return 42
    }

  var propertyWithGetAndSet: Int
    get(): Int {
      return <this>.<get-z>()
    }
    set(value: Int) {
      <this>.<set-z>(<set-?> = value)
    }

  fun function() {
    println(message = "1")
  }

  fun Int.memberExtensionFunction() {
    println(message = "2")
  }

  class NestedClass {
    constructor() /* primary */ {
      super/*Any*/()
      /* <init>() */

    }

    fun function() {
      println(message = "3")
    }

    fun Int.memberExtensionFunction() {
      println(message = "4")
    }

  }

  interface NestedInterface {
    abstract fun foo()
    fun bar() {
      return <this>.foo()
    }

  }

  companion object Companion {
    private constructor() /* primary */ {
      super/*Any*/()
      /* <init>() */

    }

  }

}
