Do not touch unmoved fields + revise test
diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmCachedDeclarations.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmCachedDeclarations.kt
index c2d7cb1..fbe997d 100644
--- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmCachedDeclarations.kt
+++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmCachedDeclarations.kt
@@ -80,18 +80,23 @@
                 // @JvmField, so checking the current field only should be enough.
                 val hasJvmField = oldField.hasAnnotation(JvmAbi.JVM_FIELD_ANNOTATION_FQ_NAME)
                 val shouldMoveFields = oldParent.isCompanion && (!oldParent.parentAsClass.isJvmInterface || hasJvmField)
-                parent = if (shouldMoveFields) oldParent.parentAsClass else oldParent
-                val isPrivate = DescriptorVisibilities.isPrivate(oldField.visibility)
-                val parentIsPrivate = DescriptorVisibilities.isPrivate(oldParent.visibility)
-                annotations = if (parentIsPrivate && !isPrivate) {
-                    context.createJvmIrBuilder(this.symbol).run {
-                        filterOutAnnotations(
-                            DeprecationResolver.JAVA_DEPRECATED,
-                            oldField.annotations
-                        ) + irCall(irSymbols.javaLangDeprecatedConstructorWithDeprecatedFlag)
-                    }
+                if (shouldMoveFields) {
+                   parent = oldParent.parentAsClass
+                   val isPrivate = DescriptorVisibilities.isPrivate(oldField.visibility)
+                   val parentIsPrivate = DescriptorVisibilities.isPrivate(oldParent.visibility)
+                   annotations = if (parentIsPrivate && !isPrivate) {
+                       context.createJvmIrBuilder(this.symbol).run {
+                           filterOutAnnotations(
+                               DeprecationResolver.JAVA_DEPRECATED,
+                               oldField.annotations
+                           ) + irCall(irSymbols.javaLangDeprecatedConstructorWithDeprecatedFlag)
+                       }
+                   } else {
+                       oldField.annotations
+                   }
                 } else {
-                    oldField.annotations
+                    parent = oldParent
+                    annotations = oldField.annotations
                 }
                 initializer = oldField.initializer?.patchDeclarationParents(this)
                 oldField.replaceThisByStaticReference(fieldsForObjectInstances, oldParent, oldParent.thisReceiver!!)
diff --git a/compiler/testData/codegen/bytecodeListing/privateCompanionFields.kt b/compiler/testData/codegen/bytecodeListing/privateCompanionFields.kt
index 74e85d2..7269d9d 100644
--- a/compiler/testData/codegen/bytecodeListing/privateCompanionFields.kt
+++ b/compiler/testData/codegen/bytecodeListing/privateCompanionFields.kt
@@ -16,6 +16,15 @@
     }
 }
 
+class TestClass2 {
+
+    private companion object {
+        val testPublic: String = "1"
+        private val testPrivate: String = "2"
+        const val testPublicConst: String = "3"
+    }
+}
+
 interface TestConst {
 
     private companion object {
@@ -29,4 +38,4 @@
         @JvmField
         val test3: String = "3"
     }
-}
\ No newline at end of file
+}
diff --git a/compiler/testData/codegen/bytecodeListing/privateCompanionFields.txt b/compiler/testData/codegen/bytecodeListing/privateCompanionFields.txt
index 1dcbba7..e07f939 100644
--- a/compiler/testData/codegen/bytecodeListing/privateCompanionFields.txt
+++ b/compiler/testData/codegen/bytecodeListing/privateCompanionFields.txt
@@ -20,6 +20,28 @@
 }
 
 @kotlin.Metadata
+final class TestClass2$Companion {
+    // source: 'privateCompanionFields.kt'
+    private method <init>(): void
+    public synthetic method <init>(p0: kotlin.jvm.internal.DefaultConstructorMarker): void
+    public final @org.jetbrains.annotations.NotNull method getTestPublic(): java.lang.String
+    private final inner class TestClass2$Companion
+}
+
+@kotlin.Metadata
+public final class TestClass2 {
+    // source: 'privateCompanionFields.kt'
+    private final static @org.jetbrains.annotations.NotNull field Companion: TestClass2$Companion
+    private deprecated final static @java.lang.Deprecated field testPrivate: java.lang.String
+    private deprecated final static @java.lang.Deprecated @org.jetbrains.annotations.NotNull field testPublic: java.lang.String
+    public deprecated final static @java.lang.Deprecated @org.jetbrains.annotations.NotNull field testPublicConst: java.lang.String
+    static method <clinit>(): void
+    public method <init>(): void
+    public synthetic final static method access$getTestPublic$cp(): java.lang.String
+    private final inner class TestClass2$Companion
+}
+
+@kotlin.Metadata
 final class TestConst$Companion {
     // source: 'privateCompanionFields.kt'
     synthetic final static field $$INSTANCE: TestConst$Companion
diff --git a/compiler/testData/codegen/bytecodeListing/privateCompanionFields_ir.txt b/compiler/testData/codegen/bytecodeListing/privateCompanionFields_ir.txt
index 3655a85..96921dc 100644
--- a/compiler/testData/codegen/bytecodeListing/privateCompanionFields_ir.txt
+++ b/compiler/testData/codegen/bytecodeListing/privateCompanionFields_ir.txt
@@ -20,6 +20,28 @@
 }
 
 @kotlin.Metadata
+final class TestClass2$Companion {
+    // source: 'privateCompanionFields.kt'
+    private method <init>(): void
+    public synthetic method <init>(p0: kotlin.jvm.internal.DefaultConstructorMarker): void
+    public final @org.jetbrains.annotations.NotNull method getTestPublic(): java.lang.String
+    private final inner class TestClass2$Companion
+}
+
+@kotlin.Metadata
+public final class TestClass2 {
+    // source: 'privateCompanionFields.kt'
+    private final static @org.jetbrains.annotations.NotNull field Companion: TestClass2$Companion
+    private final static @org.jetbrains.annotations.NotNull field testPrivate: java.lang.String
+    private final static @org.jetbrains.annotations.NotNull field testPublic: java.lang.String
+    public deprecated final static @java.lang.Deprecated @org.jetbrains.annotations.NotNull field testPublicConst: java.lang.String
+    static method <clinit>(): void
+    public method <init>(): void
+    public synthetic final static method access$getTestPublic$cp(): java.lang.String
+    private final inner class TestClass2$Companion
+}
+
+@kotlin.Metadata
 final class TestConst$Companion {
     // source: 'privateCompanionFields.kt'
     synthetic final static field $$INSTANCE: TestConst$Companion