override fun variable()

in reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/RuleMatchImpl.kt [36:49]


       override fun <V : Any> variable(meta: MetaLogical<V>): Logical<V> {
           if (meta2logical.containsKey(meta)) return meta2logical[meta] as Logical<V>

           val logical = subst[meta]?.let { value ->
               when (value) {
                   is Logical<*> -> value
                   is LogicalOwner -> value.logical()
                   else -> LogicalImpl(meta, value as V)
               }
           } ?: meta.logical()

           meta2logical[meta] = logical
           return logical as Logical<V>
       }