[stdlib] 2/2 Make `Number.{toShort, toByte}` open

^KT-16087 Fixed
^KT-75767 Fixed
diff --git a/analysis/decompiled/decompiler-to-psi/testData/builtins/kotlin.kotlin_builtins.decompiled.text.kt b/analysis/decompiled/decompiler-to-psi/testData/builtins/kotlin.kotlin_builtins.decompiled.text.kt
index 40d8734..05dde47 100644
--- a/analysis/decompiled/decompiler-to-psi/testData/builtins/kotlin.kotlin_builtins.decompiled.text.kt
+++ b/analysis/decompiled/decompiler-to-psi/testData/builtins/kotlin.kotlin_builtins.decompiled.text.kt
@@ -904,9 +904,9 @@
 
     @kotlin.Deprecated @kotlin.DeprecatedSinceKotlin public open fun toChar(): kotlin.Char { /* compiled code */ }
 
-    public abstract fun toShort(): kotlin.Short
+    public open fun toShort(): kotlin.Short { /* compiled code */ }
 
-    public abstract fun toByte(): kotlin.Byte
+    public open fun toByte(): kotlin.Byte { /* compiled code */ }
 }
 
 public final class Short private constructor() : kotlin.Number, kotlin.Comparable<kotlin.Short> {
diff --git a/analysis/low-level-api-fir/testData/lazyResolveBuiltinsBinary/Int.txt b/analysis/low-level-api-fir/testData/lazyResolveBuiltinsBinary/Int.txt
index 313bec4..97ed1df 100644
--- a/analysis/low-level-api-fir/testData/lazyResolveBuiltinsBinary/Int.txt
+++ b/analysis/low-level-api-fir/testData/lazyResolveBuiltinsBinary/Int.txt
@@ -3510,9 +3510,11 @@
         @R|kotlin/Deprecated|[Types]() @R|kotlin/DeprecatedSinceKotlin|[Types]() public open [ResolvedTo(BODY_RESOLVE)] fun toChar(): R|kotlin/Char| {
         }
 
-        public abstract [ResolvedTo(BODY_RESOLVE)] fun toShort(): R|kotlin/Short|
+        public open [ResolvedTo(BODY_RESOLVE)] fun toShort(): R|kotlin/Short| {
+        }
 
-        public abstract [ResolvedTo(BODY_RESOLVE)] fun toByte(): R|kotlin/Byte|
+        public open [ResolvedTo(BODY_RESOLVE)] fun toByte(): R|kotlin/Byte| {
+        }
 
     }
     @R|kotlin/annotation/Target|[Types]() @R|kotlin/annotation/Retention|[Types]() @R|kotlin/SinceKotlin|[Types]() public final [ResolvedTo(BODY_RESOLVE)] annotation class OptIn : R|kotlin/Annotation|, R|kotlin/Annotation| {
diff --git a/compiler/fir/analysis-tests/testData/builtIns/kotlin.txt b/compiler/fir/analysis-tests/testData/builtIns/kotlin.txt
index 6beaf86..0b76d14 100644
--- a/compiler/fir/analysis-tests/testData/builtIns/kotlin.txt
+++ b/compiler/fir/analysis-tests/testData/builtIns/kotlin.txt
@@ -1115,9 +1115,9 @@
 If you override toChar() function in your Number inheritor, it's recommended to gradually deprecate the overriding function and then remove it.
 See https://youtrack.jetbrains.com/issue/KT-46465 for details about the migration), replaceWith = @R|kotlin/ReplaceWith|(expression = String(this.toInt().toChar()), imports = <implicitArrayOf>()) ) @R|kotlin/DeprecatedSinceKotlin|(warningSince = String(1.9), errorSince = String(2.3)) public open fun toChar(): R|kotlin/Char|
 
-    public abstract fun toShort(): R|kotlin/Short|
+    public open fun toShort(): R|kotlin/Short|
 
-    public abstract fun toByte(): R|kotlin/Byte|
+    public open fun toByte(): R|kotlin/Byte|
 
     public constructor(): R|kotlin/Number|
 
diff --git a/compiler/fir/analysis-tests/testData/resolve/scopes/specialFunctionInJava_1.overrides.txt b/compiler/fir/analysis-tests/testData/resolve/scopes/specialFunctionInJava_1.overrides.txt
index b252fd4..0517d4e 100644
--- a/compiler/fir/analysis-tests/testData/resolve/scopes/specialFunctionInJava_1.overrides.txt
+++ b/compiler/fir/analysis-tests/testData/resolve/scopes/specialFunctionInJava_1.overrides.txt
@@ -1,10 +1,10 @@
 Some:
   [Enhancement]: public abstract fun toByte(): R|kotlin/Byte| [initial: public abstract fun byteValue(): R|kotlin/Byte|] from Java enhancement scope for /Some [id: 0]
-    [Library]: public abstract fun toByte(): R|kotlin/Byte| from Use site scope of kotlin/Number [id: 1]
+    [Library]: public open fun toByte(): R|kotlin/Byte| from Use site scope of kotlin/Number [id: 1]
     [RenamedForOverride]: public abstract fun toByte(): R|kotlin/Byte| [initial: public abstract fun byteValue(): R|kotlin/Byte|] from Java enhancement scope for /MyNumber [id: 2]
       [Enhancement]: public abstract fun byteValue(): R|kotlin/Byte| from Java enhancement scope for /MyBaseNumber [id: 3]
-  [IntersectionOverride]: public abstract override fun toShort(): R|kotlin/Short| from Java enhancement scope for /Some [id: 0]
-    [Library]: public abstract fun toShort(): R|kotlin/Short| from Use site scope of kotlin/Number [id: 1]
+  [IntersectionOverride]: public open override fun toShort(): R|kotlin/Short| from Java enhancement scope for /Some [id: 0]
+    [Library]: public open fun toShort(): R|kotlin/Short| from Use site scope of kotlin/Number [id: 1]
     [RenamedForOverride]: public abstract fun toShort(): R|kotlin/Short| [initial: public abstract fun shortValue(): R|kotlin/Short|] from Java enhancement scope for /MyNumber [id: 2]
       [Enhancement]: public abstract fun shortValue(): R|kotlin/Short| from Java enhancement scope for /MyBaseNumber [id: 3]
   [IntersectionOverride]: public abstract override fun toInt(): R|kotlin/Int| from Java enhancement scope for /Some [id: 0]
diff --git a/compiler/fir/analysis-tests/testData/resolve/scopes/specialFunctionInJava_4.overrides.txt b/compiler/fir/analysis-tests/testData/resolve/scopes/specialFunctionInJava_4.overrides.txt
index 543bfc59..f853901 100644
--- a/compiler/fir/analysis-tests/testData/resolve/scopes/specialFunctionInJava_4.overrides.txt
+++ b/compiler/fir/analysis-tests/testData/resolve/scopes/specialFunctionInJava_4.overrides.txt
@@ -1,6 +1,6 @@
 Some:
   [Enhancement]: public abstract fun toByte(): R|kotlin/Byte| [initial: public abstract fun byteValue(): R|kotlin/Byte|] from Java enhancement scope for /Some [id: 0]
-    [Library]: public abstract fun toByte(): R|kotlin/Byte| from Use site scope of kotlin/Number [id: 1]
+    [Library]: public open fun toByte(): R|kotlin/Byte| from Use site scope of kotlin/Number [id: 1]
     [RenamedForOverride]: public abstract fun toByte(): R|kotlin/Byte| [initial: public abstract fun byteValue(): R|kotlin/Byte|] from Java enhancement scope for /MyNumber [id: 2]
       [Enhancement]: public abstract fun byteValue(): R|kotlin/Byte| from Java enhancement scope for /MyBaseNumber [id: 3]
 
diff --git a/compiler/testData/builtin-classes/default/kotlin.txt b/compiler/testData/builtin-classes/default/kotlin.txt
index 32e0f64..4203bd4 100644
--- a/compiler/testData/builtin-classes/default/kotlin.txt
+++ b/compiler/testData/builtin-classes/default/kotlin.txt
@@ -619,7 +619,7 @@
 
 public abstract class Number {
     /*primary*/ public constructor Number()
-    public abstract fun toByte(): kotlin.Byte
+    public open fun toByte(): kotlin.Byte
     @kotlin.Deprecated(message = "Direct conversion to Char is deprecated. Use toInt().toChar() or Char constructor instead.
 If you override toChar() function in your Number inheritor, it's recommended to gradually deprecate the overriding function and then remove it.
 See https://youtrack.jetbrains.com/issue/KT-46465 for details about the migration", replaceWith = kotlin.ReplaceWith(expression = "this.toInt().toChar()", imports = {})) @kotlin.DeprecatedSinceKotlin(errorSince = "2.3", warningSince = "1.9") public open fun toChar(): kotlin.Char
@@ -627,7 +627,7 @@
     public abstract fun toFloat(): kotlin.Float
     public abstract fun toInt(): kotlin.Int
     public abstract fun toLong(): kotlin.Long
-    public abstract fun toShort(): kotlin.Short
+    public open fun toShort(): kotlin.Short
 }
 
 @kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.PROPERTY, AnnotationTarget.LOCAL_VARIABLE, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.EXPRESSION, AnnotationTarget.FILE, AnnotationTarget.TYPEALIAS}) @kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) @kotlin.SinceKotlin(version = "1.3") public final annotation class OptIn : kotlin.Annotation {
diff --git a/compiler/testData/builtin-classes/java8/kotlin.txt b/compiler/testData/builtin-classes/java8/kotlin.txt
index 15cc1c5..bc33971 100644
--- a/compiler/testData/builtin-classes/java8/kotlin.txt
+++ b/compiler/testData/builtin-classes/java8/kotlin.txt
@@ -639,7 +639,7 @@
 
 public abstract class Number : kotlin.Any, java.io.Serializable {
     /*primary*/ public constructor Number()
-    public abstract fun toByte(): kotlin.Byte
+    public open fun toByte(): kotlin.Byte
     @kotlin.Deprecated(message = "Direct conversion to Char is deprecated. Use toInt().toChar() or Char constructor instead.
 If you override toChar() function in your Number inheritor, it's recommended to gradually deprecate the overriding function and then remove it.
 See https://youtrack.jetbrains.com/issue/KT-46465 for details about the migration", replaceWith = kotlin.ReplaceWith(expression = "this.toInt().toChar()", imports = {})) @kotlin.DeprecatedSinceKotlin(errorSince = "2.3", warningSince = "1.9") public open fun toChar(): kotlin.Char
@@ -647,7 +647,7 @@
     public abstract fun toFloat(): kotlin.Float
     public abstract fun toInt(): kotlin.Int
     public abstract fun toLong(): kotlin.Long
-    public abstract fun toShort(): kotlin.Short
+    public open fun toShort(): kotlin.Short
 }
 
 @kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.PROPERTY, AnnotationTarget.LOCAL_VARIABLE, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.EXPRESSION, AnnotationTarget.FILE, AnnotationTarget.TYPEALIAS}) @kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) @kotlin.SinceKotlin(version = "1.3") public final annotation class OptIn : kotlin.Annotation {
diff --git a/compiler/testData/builtin-classes/newMethods/kotlin.txt b/compiler/testData/builtin-classes/newMethods/kotlin.txt
index 4615cb7..c17c052 100644
--- a/compiler/testData/builtin-classes/newMethods/kotlin.txt
+++ b/compiler/testData/builtin-classes/newMethods/kotlin.txt
@@ -637,7 +637,7 @@
 
 public abstract class Number : kotlin.Any, java.io.Serializable {
     /*primary*/ public constructor Number()
-    public abstract fun toByte(): kotlin.Byte
+    public open fun toByte(): kotlin.Byte
     @kotlin.Deprecated(message = "Direct conversion to Char is deprecated. Use toInt().toChar() or Char constructor instead.
 If you override toChar() function in your Number inheritor, it's recommended to gradually deprecate the overriding function and then remove it.
 See https://youtrack.jetbrains.com/issue/KT-46465 for details about the migration", replaceWith = kotlin.ReplaceWith(expression = "this.toInt().toChar()", imports = {})) @kotlin.DeprecatedSinceKotlin(errorSince = "2.3", warningSince = "1.9") public open fun toChar(): kotlin.Char
@@ -645,7 +645,7 @@
     public abstract fun toFloat(): kotlin.Float
     public abstract fun toInt(): kotlin.Int
     public abstract fun toLong(): kotlin.Long
-    public abstract fun toShort(): kotlin.Short
+    public open fun toShort(): kotlin.Short
 }
 
 @kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.PROPERTY, AnnotationTarget.LOCAL_VARIABLE, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.EXPRESSION, AnnotationTarget.FILE, AnnotationTarget.TYPEALIAS}) @kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) @kotlin.SinceKotlin(version = "1.3") public final annotation class OptIn : kotlin.Annotation {
diff --git a/compiler/testData/codegen/box/primitiveTypes/number.kt b/compiler/testData/codegen/box/primitiveTypes/number.kt
index 65be59a..9dccc0a 100644
--- a/compiler/testData/codegen/box/primitiveTypes/number.kt
+++ b/compiler/testData/codegen/box/primitiveTypes/number.kt
@@ -13,10 +13,6 @@
 // FILE: FortyTwoExtractor.kt
 
 class FortyTwo : Number() {
-    override fun toByte() = 42.toByte()
-
-    override fun toShort() = 42.toShort()
-
     override fun toInt() = 42
 
     override fun toLong() = 42L
diff --git a/compiler/testData/codegen/box/primitiveTypes/numberToChar/abstractMethodInSuperinterface.kt b/compiler/testData/codegen/box/primitiveTypes/numberToChar/abstractMethodInSuperinterface.kt
index 5e6e726..3d643d5 100644
--- a/compiler/testData/codegen/box/primitiveTypes/numberToChar/abstractMethodInSuperinterface.kt
+++ b/compiler/testData/codegen/box/primitiveTypes/numberToChar/abstractMethodInSuperinterface.kt
@@ -9,11 +9,9 @@
 class MyNumber(val value: Int) : Number(), Some {
     override fun toInt(): Int = value
 
-    override fun toByte(): Byte = toInt().toByte()
     override fun toDouble(): Double = toInt().toDouble()
     override fun toFloat(): Float = toInt().toFloat()
     override fun toLong(): Long = toInt().toLong()
-    override fun toShort(): Short = toInt().toShort()
 }
 
 fun box(): String {
diff --git a/compiler/testData/codegen/box/primitiveTypes/numberToChar/fakeOverride.kt b/compiler/testData/codegen/box/primitiveTypes/numberToChar/fakeOverride.kt
index 244f3dc..cf8051a 100644
--- a/compiler/testData/codegen/box/primitiveTypes/numberToChar/fakeOverride.kt
+++ b/compiler/testData/codegen/box/primitiveTypes/numberToChar/fakeOverride.kt
@@ -5,11 +5,9 @@
     override fun toChar(): Char = '+'
     override fun toInt(): Int = value
 
-    override fun toByte(): Byte = toInt().toByte()
     override fun toDouble(): Double = toInt().toDouble()
     override fun toFloat(): Float = toInt().toFloat()
     override fun toLong(): Long = toInt().toLong()
-    override fun toShort(): Short = toInt().toShort()
 }
 
 class MyNumberImpl(value: Int) : MyNumber(value)
diff --git a/compiler/testData/codegen/box/primitiveTypes/numberToChar/simple.kt b/compiler/testData/codegen/box/primitiveTypes/numberToChar/simple.kt
index 3989f5e..3004f00 100644
--- a/compiler/testData/codegen/box/primitiveTypes/numberToChar/simple.kt
+++ b/compiler/testData/codegen/box/primitiveTypes/numberToChar/simple.kt
@@ -5,11 +5,9 @@
 class MyNumber(val value: Int) : Number() {
     override fun toInt(): Int = value
 
-    override fun toByte(): Byte = toInt().toByte()
     override fun toDouble(): Double = toInt().toDouble()
     override fun toFloat(): Float = toInt().toFloat()
     override fun toLong(): Long = toInt().toLong()
-    override fun toShort(): Short = toInt().toShort()
 }
 
 fun box(): String {
diff --git a/compiler/testData/codegen/box/primitiveTypes/numberToChar/superCallToClass.kt b/compiler/testData/codegen/box/primitiveTypes/numberToChar/superCallToClass.kt
index a0e23be..400c4e1 100644
--- a/compiler/testData/codegen/box/primitiveTypes/numberToChar/superCallToClass.kt
+++ b/compiler/testData/codegen/box/primitiveTypes/numberToChar/superCallToClass.kt
@@ -5,11 +5,9 @@
     override fun toChar(): Char = '+'
     override fun toInt(): Int = value
 
-    override fun toByte(): Byte = toInt().toByte()
     override fun toDouble(): Double = toInt().toDouble()
     override fun toFloat(): Float = toInt().toFloat()
     override fun toLong(): Long = toInt().toLong()
-    override fun toShort(): Short = toInt().toShort()
 }
 
 class MyNumberImpl(value: Int) : MyNumber(value) {
diff --git a/compiler/testData/codegen/box/primitiveTypes/numberToChar/superCallToInterface.kt b/compiler/testData/codegen/box/primitiveTypes/numberToChar/superCallToInterface.kt
index 9daeb47..f89027c 100644
--- a/compiler/testData/codegen/box/primitiveTypes/numberToChar/superCallToInterface.kt
+++ b/compiler/testData/codegen/box/primitiveTypes/numberToChar/superCallToInterface.kt
@@ -9,11 +9,9 @@
     override fun toChar(): Char = super<Some>.toChar()
     override fun toInt(): Int = value
 
-    override fun toByte(): Byte = toInt().toByte()
     override fun toDouble(): Double = toInt().toDouble()
     override fun toFloat(): Float = toInt().toFloat()
     override fun toLong(): Long = toInt().toLong()
-    override fun toShort(): Short = toInt().toShort()
 }
 
 fun box(): String {
diff --git a/compiler/testData/codegen/box/primitiveTypes/numberToChar/superCallToNumber.kt b/compiler/testData/codegen/box/primitiveTypes/numberToChar/superCallToNumber.kt
index c8def19..1c23f5e 100644
--- a/compiler/testData/codegen/box/primitiveTypes/numberToChar/superCallToNumber.kt
+++ b/compiler/testData/codegen/box/primitiveTypes/numberToChar/superCallToNumber.kt
@@ -6,11 +6,9 @@
     override fun toChar(): Char = super.toChar()
     override fun toInt(): Int = value
 
-    override fun toByte(): Byte = toInt().toByte()
     override fun toDouble(): Double = toInt().toDouble()
     override fun toFloat(): Float = toInt().toFloat()
     override fun toLong(): Long = toInt().toLong()
-    override fun toShort(): Short = toInt().toShort()
 }
 
 fun box(): String {
diff --git a/compiler/testData/codegen/bytecodeListing/specialBridges/number.txt b/compiler/testData/codegen/bytecodeListing/specialBridges/number.txt
index 6eb66be..6601a94 100644
--- a/compiler/testData/codegen/bytecodeListing/specialBridges/number.txt
+++ b/compiler/testData/codegen/bytecodeListing/specialBridges/number.txt
@@ -8,12 +8,12 @@
     public bridge final method intValue(): int
     public bridge final method longValue(): long
     public bridge final method shortValue(): short
-    public abstract method toByte(): byte
+    public bridge method toByte(): byte
     public abstract method toDouble(): double
     public abstract method toFloat(): float
     public abstract method toInt(): int
     public abstract method toLong(): long
-    public abstract method toShort(): short
+    public bridge method toShort(): short
 }
 
 @kotlin.Metadata
diff --git a/compiler/testData/ir/irText/fakeOverrides/number/javaNumberOverride.ir.txt b/compiler/testData/ir/irText/fakeOverrides/number/javaNumberOverride.ir.txt
index 882800c..da6a015 100644
--- a/compiler/testData/ir/irText/fakeOverrides/number/javaNumberOverride.ir.txt
+++ b/compiler/testData/ir/irText/fakeOverrides/number/javaNumberOverride.ir.txt
@@ -312,10 +312,10 @@
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Any
       overridden:
         public open fun hashCode (): kotlin.Int declared in <root>.Java1
-    FUN FAKE_OVERRIDE name:toByte visibility:public modality:ABSTRACT returnType:kotlin.Byte [fake_override]
+    FUN FAKE_OVERRIDE name:toByte visibility:public modality:OPEN returnType:kotlin.Byte [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Number
       overridden:
-        public abstract fun toByte (): kotlin.Byte declared in <root>.Java1
+        public open fun toByte (): kotlin.Byte declared in <root>.Java1
     FUN FAKE_OVERRIDE name:toChar visibility:public modality:OPEN returnType:kotlin.Char [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Number
       annotations:
@@ -341,10 +341,10 @@
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Number
       overridden:
         public abstract fun toLong (): kotlin.Long declared in <root>.Java1
-    FUN FAKE_OVERRIDE name:toShort visibility:public modality:ABSTRACT returnType:kotlin.Short [fake_override]
+    FUN FAKE_OVERRIDE name:toShort visibility:public modality:OPEN returnType:kotlin.Short [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Number
       overridden:
-        public abstract fun toShort (): kotlin.Short declared in <root>.Java1
+        public open fun toShort (): kotlin.Short declared in <root>.Java1
     FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN returnType:kotlin.String [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Any
       overridden:
@@ -385,10 +385,10 @@
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Number
       overridden:
         public abstract fun toLong (): kotlin.Long declared in <root>.Java1
-    FUN FAKE_OVERRIDE name:toShort visibility:public modality:ABSTRACT returnType:kotlin.Short [fake_override]
+    FUN FAKE_OVERRIDE name:toShort visibility:public modality:OPEN returnType:kotlin.Short [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Number
       overridden:
-        public abstract fun toShort (): kotlin.Short declared in <root>.Java1
+        public open fun toShort (): kotlin.Short declared in <root>.Java1
     FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN returnType:kotlin.String [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Any
       overridden:
@@ -396,7 +396,7 @@
     FUN name:toByte visibility:public modality:OPEN returnType:kotlin.Byte
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:<root>.H
       overridden:
-        public abstract fun toByte (): kotlin.Byte declared in <root>.Java1
+        public open fun toByte (): kotlin.Byte declared in <root>.Java1
       BLOCK_BODY
         RETURN type=kotlin.Nothing from='public open fun toByte (): kotlin.Byte declared in <root>.H'
           CONST Byte type=kotlin.Byte value=1
@@ -422,10 +422,10 @@
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Any
       overridden:
         public open fun hashCode (): kotlin.Int declared in <root>.Java3
-    FUN FAKE_OVERRIDE name:toByte visibility:public modality:ABSTRACT returnType:kotlin.Byte [fake_override]
+    FUN FAKE_OVERRIDE name:toByte visibility:public modality:OPEN returnType:kotlin.Byte [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Number
       overridden:
-        public abstract fun toByte (): kotlin.Byte declared in <root>.Java3
+        public open fun toByte (): kotlin.Byte declared in <root>.Java3
     FUN FAKE_OVERRIDE name:toChar visibility:public modality:OPEN returnType:kotlin.Char [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Number
       annotations:
@@ -459,10 +459,10 @@
         Override
       overridden:
         public open fun toLong (): kotlin.Long declared in <root>.Java3
-    FUN FAKE_OVERRIDE name:toShort visibility:public modality:ABSTRACT returnType:kotlin.Short [fake_override]
+    FUN FAKE_OVERRIDE name:toShort visibility:public modality:OPEN returnType:kotlin.Short [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Number
       overridden:
-        public abstract fun toShort (): kotlin.Short declared in <root>.Java3
+        public open fun toShort (): kotlin.Short declared in <root>.Java3
     FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN returnType:kotlin.String [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Any
       overridden:
@@ -522,14 +522,14 @@
     FUN name:toByte visibility:public modality:OPEN returnType:kotlin.Byte
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:<root>.J
       overridden:
-        public abstract fun toByte (): kotlin.Byte declared in <root>.Java3
+        public open fun toByte (): kotlin.Byte declared in <root>.Java3
       BLOCK_BODY
         RETURN type=kotlin.Nothing from='public open fun toByte (): kotlin.Byte declared in <root>.J'
           CONST Byte type=kotlin.Byte value=1
     FUN name:toShort visibility:public modality:OPEN returnType:kotlin.Short
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:<root>.J
       overridden:
-        public abstract fun toShort (): kotlin.Short declared in <root>.Java3
+        public open fun toShort (): kotlin.Short declared in <root>.Java3
       BLOCK_BODY
         RETURN type=kotlin.Nothing from='public open fun toShort (): kotlin.Short declared in <root>.J'
           CONST Short type=kotlin.Short value=2
@@ -855,10 +855,10 @@
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:<root>.Java2
       overridden:
         public open fun intValue (): kotlin.Int declared in <root>.Java2
-    FUN FAKE_OVERRIDE name:toByte visibility:public modality:ABSTRACT returnType:kotlin.Byte [fake_override]
+    FUN FAKE_OVERRIDE name:toByte visibility:public modality:OPEN returnType:kotlin.Byte [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Number
       overridden:
-        public abstract fun toByte (): kotlin.Byte declared in <root>.Java1
+        public open fun toByte (): kotlin.Byte declared in <root>.Java1
     FUN FAKE_OVERRIDE name:toChar visibility:public modality:OPEN returnType:kotlin.Char [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Number
       annotations:
@@ -884,10 +884,10 @@
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Number
       overridden:
         public abstract fun toLong (): kotlin.Long declared in <root>.Java1
-    FUN FAKE_OVERRIDE name:toShort visibility:public modality:ABSTRACT returnType:kotlin.Short [fake_override]
+    FUN FAKE_OVERRIDE name:toShort visibility:public modality:OPEN returnType:kotlin.Short [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Number
       overridden:
-        public abstract fun toShort (): kotlin.Short declared in <root>.Java1
+        public open fun toShort (): kotlin.Short declared in <root>.Java1
     FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN returnType:kotlin.String [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Any
       overridden:
@@ -914,10 +914,10 @@
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:<root>.Java2
       overridden:
         public open fun intValue (): kotlin.Int declared in <root>.Java2
-    FUN FAKE_OVERRIDE name:toByte visibility:public modality:ABSTRACT returnType:kotlin.Byte [fake_override]
+    FUN FAKE_OVERRIDE name:toByte visibility:public modality:OPEN returnType:kotlin.Byte [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Number
       overridden:
-        public abstract fun toByte (): kotlin.Byte declared in <root>.Java1
+        public open fun toByte (): kotlin.Byte declared in <root>.Java1
     FUN FAKE_OVERRIDE name:toChar visibility:public modality:OPEN returnType:kotlin.Char [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Number
       annotations:
@@ -939,10 +939,10 @@
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Number
       overridden:
         public abstract fun toLong (): kotlin.Long declared in <root>.Java1
-    FUN FAKE_OVERRIDE name:toShort visibility:public modality:ABSTRACT returnType:kotlin.Short [fake_override]
+    FUN FAKE_OVERRIDE name:toShort visibility:public modality:OPEN returnType:kotlin.Short [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Number
       overridden:
-        public abstract fun toShort (): kotlin.Short declared in <root>.Java1
+        public open fun toShort (): kotlin.Short declared in <root>.Java1
     FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN returnType:kotlin.String [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Any
       overridden:
@@ -1026,13 +1026,13 @@
         CALL 'public open fun doubleValue (): kotlin.Double declared in <root>.F' type=kotlin.Double origin=null
           ARG <this>: GET_VAR 'f: <root>.F declared in <root>.test' type=<root>.F origin=null
       TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
-        CALL 'public abstract fun toShort (): kotlin.Short declared in <root>.G' type=kotlin.Short origin=null
+        CALL 'public open fun toShort (): kotlin.Short declared in <root>.G' type=kotlin.Short origin=null
           ARG <this>: GET_VAR 'g: <root>.G declared in <root>.test' type=<root>.G origin=null
       TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
-        CALL 'public abstract fun toByte (): kotlin.Byte declared in <root>.G' type=kotlin.Byte origin=null
+        CALL 'public open fun toByte (): kotlin.Byte declared in <root>.G' type=kotlin.Byte origin=null
           ARG <this>: GET_VAR 'g: <root>.G declared in <root>.test' type=<root>.G origin=null
       TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
-        CALL 'public abstract fun toShort (): kotlin.Short declared in <root>.H' type=kotlin.Short origin=null
+        CALL 'public open fun toShort (): kotlin.Short declared in <root>.H' type=kotlin.Short origin=null
           ARG <this>: GET_VAR 'h: <root>.H declared in <root>.test' type=<root>.H origin=null
       TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
         CALL 'public abstract fun toInt (): kotlin.Int declared in <root>.H' type=kotlin.Int origin=null
@@ -1080,7 +1080,7 @@
         CALL 'public open fun intValue (): kotlin.Int declared in <root>.Q' type=kotlin.Int origin=null
           ARG <this>: GET_VAR 'q: <root>.Q declared in <root>.test' type=<root>.Q origin=null
       TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
-        CALL 'public abstract fun toByte (): kotlin.Byte declared in <root>.Q' type=kotlin.Byte origin=null
+        CALL 'public open fun toByte (): kotlin.Byte declared in <root>.Q' type=kotlin.Byte origin=null
           ARG <this>: GET_VAR 'q: <root>.Q declared in <root>.test' type=<root>.Q origin=null
       TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
         CALL 'public open fun intValue (): kotlin.Int declared in <root>.R' type=kotlin.Int origin=null
diff --git a/compiler/testData/ir/irText/fakeOverrides/number/kotlinNumberOverride.ir.txt b/compiler/testData/ir/irText/fakeOverrides/number/kotlinNumberOverride.ir.txt
index ade0055..6225658 100644
--- a/compiler/testData/ir/irText/fakeOverrides/number/kotlinNumberOverride.ir.txt
+++ b/compiler/testData/ir/irText/fakeOverrides/number/kotlinNumberOverride.ir.txt
@@ -14,10 +14,10 @@
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Any
       overridden:
         public open fun hashCode (): kotlin.Int declared in kotlin.Number
-    FUN FAKE_OVERRIDE name:toByte visibility:public modality:ABSTRACT returnType:kotlin.Byte [fake_override]
+    FUN FAKE_OVERRIDE name:toByte visibility:public modality:OPEN returnType:kotlin.Byte [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Number
       overridden:
-        public abstract fun toByte (): kotlin.Byte declared in kotlin.Number
+        public open fun toByte (): kotlin.Byte declared in kotlin.Number
     FUN FAKE_OVERRIDE name:toChar visibility:public modality:OPEN returnType:kotlin.Char [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Number
       annotations:
@@ -43,10 +43,10 @@
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Number
       overridden:
         public abstract fun toLong (): kotlin.Long declared in kotlin.Number
-    FUN FAKE_OVERRIDE name:toShort visibility:public modality:ABSTRACT returnType:kotlin.Short [fake_override]
+    FUN FAKE_OVERRIDE name:toShort visibility:public modality:OPEN returnType:kotlin.Short [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Number
       overridden:
-        public abstract fun toShort (): kotlin.Short declared in kotlin.Number
+        public open fun toShort (): kotlin.Short declared in kotlin.Number
     FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN returnType:kotlin.String [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Any
       overridden:
@@ -66,10 +66,10 @@
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Any
       overridden:
         public open fun hashCode (): kotlin.Int declared in <root>.Java1
-    FUN FAKE_OVERRIDE name:toByte visibility:public modality:ABSTRACT returnType:kotlin.Byte [fake_override]
+    FUN FAKE_OVERRIDE name:toByte visibility:public modality:OPEN returnType:kotlin.Byte [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Number
       overridden:
-        public abstract fun toByte (): kotlin.Byte declared in <root>.Java1
+        public open fun toByte (): kotlin.Byte declared in <root>.Java1
     FUN FAKE_OVERRIDE name:toChar visibility:public modality:OPEN returnType:kotlin.Char [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Number
       annotations:
@@ -95,10 +95,10 @@
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Number
       overridden:
         public abstract fun toLong (): kotlin.Long declared in <root>.Java1
-    FUN FAKE_OVERRIDE name:toShort visibility:public modality:ABSTRACT returnType:kotlin.Short [fake_override]
+    FUN FAKE_OVERRIDE name:toShort visibility:public modality:OPEN returnType:kotlin.Short [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Number
       overridden:
-        public abstract fun toShort (): kotlin.Short declared in <root>.Java1
+        public open fun toShort (): kotlin.Short declared in <root>.Java1
     FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN returnType:kotlin.String [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Any
       overridden:
@@ -143,10 +143,10 @@
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Number
       overridden:
         public abstract fun toLong (): kotlin.Long declared in <root>.Java1
-    FUN FAKE_OVERRIDE name:toShort visibility:public modality:ABSTRACT returnType:kotlin.Short [fake_override]
+    FUN FAKE_OVERRIDE name:toShort visibility:public modality:OPEN returnType:kotlin.Short [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Number
       overridden:
-        public abstract fun toShort (): kotlin.Short declared in <root>.Java1
+        public open fun toShort (): kotlin.Short declared in <root>.Java1
     FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN returnType:kotlin.String [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Any
       overridden:
@@ -154,7 +154,7 @@
     FUN name:toByte visibility:public modality:OPEN returnType:kotlin.Byte
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:<root>.C
       overridden:
-        public abstract fun toByte (): kotlin.Byte declared in <root>.Java1
+        public open fun toByte (): kotlin.Byte declared in <root>.Java1
       BLOCK_BODY
         RETURN type=kotlin.Nothing from='public open fun toByte (): kotlin.Byte declared in <root>.C'
           CONST Byte type=kotlin.Byte value=1
@@ -305,10 +305,10 @@
       overridden:
         public open fun hashCode (): kotlin.Int declared in <root>.A
         public open fun hashCode (): kotlin.Int declared in <root>.Java3
-    FUN FAKE_OVERRIDE name:toByte visibility:public modality:ABSTRACT returnType:kotlin.Byte [fake_override]
+    FUN FAKE_OVERRIDE name:toByte visibility:public modality:OPEN returnType:kotlin.Byte [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Number
       overridden:
-        public abstract fun toByte (): kotlin.Byte declared in <root>.A
+        public open fun toByte (): kotlin.Byte declared in <root>.A
     FUN FAKE_OVERRIDE name:toChar visibility:public modality:OPEN returnType:kotlin.Char [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Number
       annotations:
@@ -335,10 +335,10 @@
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Number
       overridden:
         public abstract fun toLong (): kotlin.Long declared in <root>.A
-    FUN FAKE_OVERRIDE name:toShort visibility:public modality:ABSTRACT returnType:kotlin.Short [fake_override]
+    FUN FAKE_OVERRIDE name:toShort visibility:public modality:OPEN returnType:kotlin.Short [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Number
       overridden:
-        public abstract fun toShort (): kotlin.Short declared in <root>.A
+        public open fun toShort (): kotlin.Short declared in <root>.A
     FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN returnType:kotlin.String [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Any
       overridden:
@@ -361,10 +361,10 @@
       overridden:
         public open fun hashCode (): kotlin.Int declared in <root>.A
         public open fun hashCode (): kotlin.Int declared in <root>.Java3
-    FUN FAKE_OVERRIDE name:toByte visibility:public modality:ABSTRACT returnType:kotlin.Byte [fake_override]
+    FUN FAKE_OVERRIDE name:toByte visibility:public modality:OPEN returnType:kotlin.Byte [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Number
       overridden:
-        public abstract fun toByte (): kotlin.Byte declared in <root>.A
+        public open fun toByte (): kotlin.Byte declared in <root>.A
     FUN FAKE_OVERRIDE name:toChar visibility:public modality:OPEN returnType:kotlin.Char [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Number
       annotations:
@@ -383,10 +383,10 @@
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Number
       overridden:
         public abstract fun toLong (): kotlin.Long declared in <root>.A
-    FUN FAKE_OVERRIDE name:toShort visibility:public modality:ABSTRACT returnType:kotlin.Short [fake_override]
+    FUN FAKE_OVERRIDE name:toShort visibility:public modality:OPEN returnType:kotlin.Short [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Number
       overridden:
-        public abstract fun toShort (): kotlin.Short declared in <root>.A
+        public open fun toShort (): kotlin.Short declared in <root>.A
     FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN returnType:kotlin.String [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Any
       overridden:
@@ -423,10 +423,10 @@
       overridden:
         public open fun hashCode (): kotlin.Int declared in <root>.Java1
         public open fun hashCode (): kotlin.Int declared in <root>.Java3
-    FUN FAKE_OVERRIDE name:toByte visibility:public modality:ABSTRACT returnType:kotlin.Byte [fake_override]
+    FUN FAKE_OVERRIDE name:toByte visibility:public modality:OPEN returnType:kotlin.Byte [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Number
       overridden:
-        public abstract fun toByte (): kotlin.Byte declared in <root>.Java1
+        public open fun toByte (): kotlin.Byte declared in <root>.Java1
     FUN FAKE_OVERRIDE name:toChar visibility:public modality:OPEN returnType:kotlin.Char [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Number
       annotations:
@@ -453,10 +453,10 @@
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Number
       overridden:
         public abstract fun toLong (): kotlin.Long declared in <root>.Java1
-    FUN FAKE_OVERRIDE name:toShort visibility:public modality:ABSTRACT returnType:kotlin.Short [fake_override]
+    FUN FAKE_OVERRIDE name:toShort visibility:public modality:OPEN returnType:kotlin.Short [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Number
       overridden:
-        public abstract fun toShort (): kotlin.Short declared in <root>.Java1
+        public open fun toShort (): kotlin.Short declared in <root>.Java1
     FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN returnType:kotlin.String [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Any
       overridden:
@@ -479,10 +479,10 @@
       overridden:
         public open fun hashCode (): kotlin.Int declared in <root>.Java1
         public open fun hashCode (): kotlin.Int declared in <root>.Java3
-    FUN FAKE_OVERRIDE name:toByte visibility:public modality:ABSTRACT returnType:kotlin.Byte [fake_override]
+    FUN FAKE_OVERRIDE name:toByte visibility:public modality:OPEN returnType:kotlin.Byte [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Number
       overridden:
-        public abstract fun toByte (): kotlin.Byte declared in <root>.Java1
+        public open fun toByte (): kotlin.Byte declared in <root>.Java1
     FUN FAKE_OVERRIDE name:toChar visibility:public modality:OPEN returnType:kotlin.Char [fake_override]
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Number
       annotations:
@@ -520,7 +520,7 @@
     FUN name:toShort visibility:public modality:OPEN returnType:kotlin.Short
       VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:<root>.I
       overridden:
-        public abstract fun toShort (): kotlin.Short declared in <root>.Java1
+        public open fun toShort (): kotlin.Short declared in <root>.Java1
       BLOCK_BODY
         RETURN type=kotlin.Nothing from='public open fun toShort (): kotlin.Short declared in <root>.I'
           CONST Short type=kotlin.Short value=1
@@ -539,10 +539,10 @@
         CALL 'public abstract fun toInt (): kotlin.Int declared in <root>.A' type=kotlin.Int origin=null
           ARG <this>: GET_VAR 'a: <root>.A declared in <root>.test' type=<root>.A origin=null
       TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
-        CALL 'public abstract fun toShort (): kotlin.Short declared in <root>.A' type=kotlin.Short origin=null
+        CALL 'public open fun toShort (): kotlin.Short declared in <root>.A' type=kotlin.Short origin=null
           ARG <this>: GET_VAR 'a: <root>.A declared in <root>.test' type=<root>.A origin=null
       TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
-        CALL 'public abstract fun toByte (): kotlin.Byte declared in <root>.B' type=kotlin.Byte origin=null
+        CALL 'public open fun toByte (): kotlin.Byte declared in <root>.B' type=kotlin.Byte origin=null
           ARG <this>: GET_VAR 'b: <root>.B declared in <root>.test' type=<root>.B origin=null
       TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
         CALL 'public abstract fun toLong (): kotlin.Long declared in <root>.B' type=kotlin.Long origin=null
@@ -569,16 +569,16 @@
         CALL 'public open fun toInt (): kotlin.Int declared in <root>.G' type=kotlin.Int origin=null
           ARG <this>: GET_VAR 'g: <root>.G declared in <root>.test' type=<root>.G origin=null
       TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
-        CALL 'public abstract fun toByte (): kotlin.Byte declared in <root>.G' type=kotlin.Byte origin=null
+        CALL 'public open fun toByte (): kotlin.Byte declared in <root>.G' type=kotlin.Byte origin=null
           ARG <this>: GET_VAR 'g: <root>.G declared in <root>.test' type=<root>.G origin=null
       TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
         CALL 'public open fun toDouble (): kotlin.Double declared in <root>.H' type=kotlin.Double origin=null
           ARG <this>: GET_VAR 'h: <root>.H declared in <root>.test' type=<root>.H origin=null
       TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
-        CALL 'public abstract fun toByte (): kotlin.Byte declared in <root>.H' type=kotlin.Byte origin=null
+        CALL 'public open fun toByte (): kotlin.Byte declared in <root>.H' type=kotlin.Byte origin=null
           ARG <this>: GET_VAR 'h: <root>.H declared in <root>.test' type=<root>.H origin=null
       TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
-        CALL 'public abstract fun toByte (): kotlin.Byte declared in <root>.I' type=kotlin.Byte origin=null
+        CALL 'public open fun toByte (): kotlin.Byte declared in <root>.I' type=kotlin.Byte origin=null
           ARG <this>: GET_VAR 'i: <root>.I declared in <root>.test' type=<root>.I origin=null
       TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
         CALL 'public open fun toShort (): kotlin.Short declared in <root>.I' type=kotlin.Short origin=null
diff --git a/compiler/testData/ir/irText/stubs/constFromBuiltins.__kotlin.Int.fir.ir.txt b/compiler/testData/ir/irText/stubs/constFromBuiltins.__kotlin.Int.fir.ir.txt
index 665f8f0..5114523 100644
--- a/compiler/testData/ir/irText/stubs/constFromBuiltins.__kotlin.Int.fir.ir.txt
+++ b/compiler/testData/ir/irText/stubs/constFromBuiltins.__kotlin.Int.fir.ir.txt
@@ -320,7 +320,7 @@
     annotations:
       IntrinsicConstEvaluation
     overridden:
-      public abstract fun toByte (): kotlin.Byte declared in kotlin.Number
+      public open fun toByte (): kotlin.Byte declared in kotlin.Number
   FUN IR_EXTERNAL_DECLARATION_STUB name:toChar visibility:public modality:OPEN returnType:kotlin.Char
     VALUE_PARAMETER IR_EXTERNAL_DECLARATION_STUB kind:DispatchReceiver name:<this> index:0 type:kotlin.Int
     annotations:
@@ -356,7 +356,7 @@
     annotations:
       IntrinsicConstEvaluation
     overridden:
-      public abstract fun toShort (): kotlin.Short declared in kotlin.Number
+      public open fun toShort (): kotlin.Short declared in kotlin.Number
   FUN IR_EXTERNAL_DECLARATION_STUB name:toString visibility:public modality:OPEN returnType:kotlin.String
     VALUE_PARAMETER IR_EXTERNAL_DECLARATION_STUB kind:DispatchReceiver name:<this> index:0 type:kotlin.Int
     annotations:
diff --git a/kotlin-native/runtime/src/main/kotlin/kotlin/Number.kt b/kotlin-native/runtime/src/main/kotlin/kotlin/Number.kt
index 58bc24e..feb50c7 100644
--- a/kotlin-native/runtime/src/main/kotlin/kotlin/Number.kt
+++ b/kotlin-native/runtime/src/main/kotlin/kotlin/Number.kt
@@ -41,11 +41,15 @@
     /**
      * Returns the value of this number as a [Short], which may involve rounding or truncation.
      */
-    public actual abstract fun toShort(): Short
+    public actual open fun toShort(): Short {
+        return toInt().toShort()
+    }
 
     /**
      * Returns the value of this number as a [Byte], which may involve rounding or truncation.
      */
-    public actual abstract fun toByte(): Byte
+    public actual open fun toByte(): Byte {
+        return toInt().toByte()
+    }
 }
 
diff --git a/libraries/stdlib/jvm/builtins/Number.kt b/libraries/stdlib/jvm/builtins/Number.kt
index 58bc24e..feb50c7 100644
--- a/libraries/stdlib/jvm/builtins/Number.kt
+++ b/libraries/stdlib/jvm/builtins/Number.kt
@@ -41,11 +41,15 @@
     /**
      * Returns the value of this number as a [Short], which may involve rounding or truncation.
      */
-    public actual abstract fun toShort(): Short
+    public actual open fun toShort(): Short {
+        return toInt().toShort()
+    }
 
     /**
      * Returns the value of this number as a [Byte], which may involve rounding or truncation.
      */
-    public actual abstract fun toByte(): Byte
+    public actual open fun toByte(): Byte {
+        return toInt().toByte()
+    }
 }
 
diff --git a/libraries/stdlib/src/kotlin/Number.kt b/libraries/stdlib/src/kotlin/Number.kt
index d37d3be..5dd3802 100644
--- a/libraries/stdlib/src/kotlin/Number.kt
+++ b/libraries/stdlib/src/kotlin/Number.kt
@@ -44,11 +44,11 @@
     /**
      * Returns the value of this number as a [Short], which may involve rounding or truncation.
      */
-    public abstract fun toShort(): Short
+    public open fun toShort(): Short
 
     /**
      * Returns the value of this number as a [Byte], which may involve rounding or truncation.
      */
-    public abstract fun toByte(): Byte
+    public open fun toByte(): Byte
 }
 
diff --git a/libraries/tools/binary-compatibility-validator/klib-public-api/kotlin-stdlib.api b/libraries/tools/binary-compatibility-validator/klib-public-api/kotlin-stdlib.api
index 7981d9d..aef7f3b 100644
--- a/libraries/tools/binary-compatibility-validator/klib-public-api/kotlin-stdlib.api
+++ b/libraries/tools/binary-compatibility-validator/klib-public-api/kotlin-stdlib.api
@@ -1265,13 +1265,13 @@
 abstract class kotlin/Number { // kotlin/Number|null[0]
     constructor <init>() // kotlin/Number.<init>|<init>(){}[0]
 
-    abstract fun toByte(): kotlin/Byte // kotlin/Number.toByte|toByte(){}[0]
     abstract fun toDouble(): kotlin/Double // kotlin/Number.toDouble|toDouble(){}[0]
     abstract fun toFloat(): kotlin/Float // kotlin/Number.toFloat|toFloat(){}[0]
     abstract fun toInt(): kotlin/Int // kotlin/Number.toInt|toInt(){}[0]
     abstract fun toLong(): kotlin/Long // kotlin/Number.toLong|toLong(){}[0]
-    abstract fun toShort(): kotlin/Short // kotlin/Number.toShort|toShort(){}[0]
+    open fun toByte(): kotlin/Byte // kotlin/Number.toByte|toByte(){}[0]
     open fun toChar(): kotlin/Char // kotlin/Number.toChar|toChar(){}[0]
+    open fun toShort(): kotlin/Short // kotlin/Number.toShort|toShort(){}[0]
 }
 
 final class <#A: in kotlin/Any?> kotlin.coroutines/SafeContinuation : kotlin.coroutines/Continuation<#A> { // kotlin.coroutines/SafeContinuation|null[0]