|  | // 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 | 
|  |  | 
|  | open class MutableProperty { | 
|  | private var privateProp: String = "privateProp" | 
|  | protected var protectedProp: String = "protectedProp" | 
|  | internal var internalProp: String = "internalProp" | 
|  | public var publicProp: String = "publicProp" | 
|  |  | 
|  | public var primitiveProp: Int = Int.MAX_VALUE | 
|  |  | 
|  | fun callSetterPrivateProp(v: String) { | 
|  | privateProp = v | 
|  | } | 
|  |  | 
|  | fun callGetterPrivateProp(): String { | 
|  | return privateProp | 
|  | } | 
|  | } | 
|  |  | 
|  | class SubMutableProperty : MutableProperty() { | 
|  | fun callSetterProtectedProp(v: String) { | 
|  | protectedProp = v | 
|  | } | 
|  |  | 
|  | fun callGetterProtectedProp(): String { | 
|  | return protectedProp | 
|  | } | 
|  | } | 
|  |  | 
|  | fun mutableProperty_noUseOfProperties() { | 
|  | MutableProperty() | 
|  | println("DONE") | 
|  | } | 
|  |  | 
|  | fun mutableProperty_usePrivateProp() { | 
|  | val obj = MutableProperty() | 
|  | obj.callSetterPrivateProp("foo") | 
|  | println(obj.callGetterPrivateProp()) | 
|  | } | 
|  |  | 
|  | fun mutableProperty_useProtectedProp() { | 
|  | val obj = SubMutableProperty() | 
|  | obj.callSetterProtectedProp("foo") | 
|  | println(obj.callGetterProtectedProp()) | 
|  | } | 
|  |  | 
|  | fun mutableProperty_useInternalProp() { | 
|  | val obj = MutableProperty() | 
|  | obj.internalProp = "foo" | 
|  | println(obj.internalProp) | 
|  | } | 
|  |  | 
|  | fun mutableProperty_usePublicProp() { | 
|  | val obj = MutableProperty() | 
|  | obj.publicProp = "foo" | 
|  | println(obj.publicProp) | 
|  | } | 
|  |  | 
|  | fun mutableProperty_usePrimitiveProp() { | 
|  | val obj = MutableProperty() | 
|  | obj.primitiveProp = Int.MIN_VALUE | 
|  | println(obj.primitiveProp) | 
|  | } |