| // 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 properties | 
 |  | 
 | object ObjectProperties { | 
 |     private var privateProp: String = "privateProp" | 
 |     internal var internalProp: String = "internalProp" | 
 |     public var publicProp: String = "publicProp" | 
 |  | 
 |     private lateinit var privateLateInitProp: String | 
 |     internal lateinit var internalLateInitProp: String | 
 |     public lateinit var publicLateInitProp: String | 
 |  | 
 |     public var primitiveProp: Int = Int.MAX_VALUE | 
 |  | 
 |     fun callSetterPrivateProp(v: String) { | 
 |         privateProp = v | 
 |     } | 
 |  | 
 |     fun callGetterPrivateProp(): String { | 
 |         return privateProp | 
 |     } | 
 |  | 
 |     fun callSetterLateInitPrivateProp(v: String) { | 
 |         privateLateInitProp = v | 
 |     } | 
 |  | 
 |     fun callGetterLateInitPrivateProp(): String { | 
 |         return privateLateInitProp | 
 |     } | 
 |  | 
 |     fun doNotUseProperties(): String { | 
 |         return "doNotUseProperties" | 
 |     } | 
 | } | 
 |  | 
 | fun objectProperties_noUseOfProperties() { | 
 |     println(ObjectProperties.doNotUseProperties()) | 
 | } | 
 |  | 
 | fun objectProperties_usePrivateProp() { | 
 |     ObjectProperties.callSetterPrivateProp("foo") | 
 |     println(ObjectProperties.callGetterPrivateProp()) | 
 | } | 
 |  | 
 | fun objectProperties_useInternalProp() { | 
 |     ObjectProperties.internalProp = "foo" | 
 |     println(ObjectProperties.internalProp) | 
 | } | 
 |  | 
 | fun objectProperties_usePublicProp() { | 
 |     ObjectProperties.publicProp = "foo" | 
 |     println(ObjectProperties.publicProp) | 
 | } | 
 |  | 
 | fun objectProperties_usePrimitiveProp() { | 
 |     ObjectProperties.primitiveProp = Int.MIN_VALUE | 
 |     println(ObjectProperties.primitiveProp) | 
 | } | 
 |  | 
 | fun objectProperties_useLateInitPrivateProp() { | 
 |     ObjectProperties.callSetterLateInitPrivateProp("foo") | 
 |     println(ObjectProperties.callGetterLateInitPrivateProp()) | 
 | } | 
 |  | 
 | fun objectProperties_useLateInitInternalProp() { | 
 |     ObjectProperties.internalLateInitProp = "foo" | 
 |     println(ObjectProperties.internalLateInitProp) | 
 | } | 
 |  | 
 | fun objectProperties_useLateInitPublicProp() { | 
 |     ObjectProperties.publicLateInitProp = "foo" | 
 |     println(ObjectProperties.publicLateInitProp) | 
 | } |