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