package com.fireworksdk.bridge.models import java.lang.ref.WeakReference import kotlin.properties.ReadWriteProperty import kotlin.reflect.KProperty fun weakProperty(defaultValue: V? = null) = WeakProperty(defaultValue) class WeakProperty(defaultValue: V? = null) : ReadWriteProperty { private var reference: WeakReference? = WeakReference(defaultValue) override fun getValue(thisRef: Any?, property: KProperty<*>): V? { return reference?.get() } override fun setValue(thisRef: Any?, property: KProperty<*>, value: V?) { reference = if (value != null) WeakReference(value) else null } }