|  | // Copyright (c) 2018, the R8 project authors. Please see the AUTHORS file | 
|  | // for details. All rights reserved. Use of this source code is governed by a | 
|  | // BSD-style license that can be found in the LICENSE file. | 
|  |  | 
|  | package accessors | 
|  |  | 
|  | class PropertyAccessorForInnerClass { | 
|  | private var privateProp = "private" | 
|  |  | 
|  | private lateinit var privateLateInitProp: String | 
|  |  | 
|  | // Causes a class initializer to be added to the class. | 
|  | companion object { | 
|  | public var companionProperty = "static" | 
|  | } | 
|  |  | 
|  | inner class Inner { | 
|  | fun accessPrivateProperty() { | 
|  | privateProp = "bar" | 
|  | println(privateProp) | 
|  | } | 
|  |  | 
|  | fun accessPrivateLateInitPropertyStatus() { | 
|  | println(::privateLateInitProp.isInitialized) | 
|  | } | 
|  | } | 
|  | } | 
|  |  | 
|  | fun noUseOfPropertyAccessorFromInnerClass() { | 
|  | // Create instance of class to keep them after tree shaking. | 
|  | PropertyAccessorForInnerClass().Inner() | 
|  | } | 
|  |  | 
|  | fun usePrivatePropertyAccessorFromInnerClass() { | 
|  | // Creates a non-trivial class initializer | 
|  | println(PropertyAccessorForInnerClass.companionProperty) | 
|  | PropertyAccessorForInnerClass().Inner().accessPrivateProperty() | 
|  | } | 
|  |  | 
|  | fun usePrivateLateInitPropertyAccessorFromInnerClass() { | 
|  | // Creates a non-trivial class initializer | 
|  | println(PropertyAccessorForInnerClass.companionProperty) | 
|  | PropertyAccessorForInnerClass().Inner().accessPrivateLateInitPropertyStatus() | 
|  | } |