| // 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() | 
 | } |