[FIR] fix
diff --git a/analysis/analysis-api-standalone/analysis-api-standalone-base/src/org/jetbrains/kotlin/analysis/api/standalone/base/declarations/KotlinStandaloneDeclarationProvider.kt b/analysis/analysis-api-standalone/analysis-api-standalone-base/src/org/jetbrains/kotlin/analysis/api/standalone/base/declarations/KotlinStandaloneDeclarationProvider.kt
index 8d9c3ab..e5bcf8c 100644
--- a/analysis/analysis-api-standalone/analysis-api-standalone-base/src/org/jetbrains/kotlin/analysis/api/standalone/base/declarations/KotlinStandaloneDeclarationProvider.kt
+++ b/analysis/analysis-api-standalone/analysis-api-standalone-base/src/org/jetbrains/kotlin/analysis/api/standalone/base/declarations/KotlinStandaloneDeclarationProvider.kt
@@ -204,14 +204,14 @@
 
     private inner class KtDeclarationRecorder : KtVisitorVoid() {
 
-        private fun treeToStack(expression: KtBinaryExpression): MutableList<KtExpression> {
-            val result = mutableListOf<KtExpression>(expression)
+        private fun treeToStack(expression: KtBinaryExpression): MutableList<PsiElement> {
+            val result = mutableListOf<PsiElement>(expression)
             var currIdx = 0
             while (currIdx < result.size) {
                 val currNode = result[currIdx]
                 if (currNode is KtBinaryExpression) {
-                    currNode.left?.let { result.add(currIdx + 1, it) }
-                    currNode.right?.let { result.add(currIdx + 2, it) }
+                    var insertPos = currIdx + 1
+                    currNode.children.forEach { result.add(insertPos++, it) }
                 }
                 currIdx++
             }
diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/AnalyzingUtils.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/AnalyzingUtils.kt
index 769dc95c..2b074bd 100644
--- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/AnalyzingUtils.kt
+++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/AnalyzingUtils.kt
@@ -89,14 +89,14 @@
     abstract class PsiErrorElementVisitor : KtTreeVisitorVoid() {
         abstract override fun visitErrorElement(element: PsiErrorElement)
 
-        private fun treeToStack(expression: KtBinaryExpression): MutableList<KtExpression> {
-            val result = mutableListOf<KtExpression>(expression)
+        private fun treeToStack(expression: KtBinaryExpression): MutableList<PsiElement> {
+            val result = mutableListOf<PsiElement>(expression)
             var currIdx = 0
             while (currIdx < result.size) {
                 val currNode = result[currIdx]
                 if (currNode is KtBinaryExpression) {
-                    currNode.left?.let { result.add(currIdx + 1, it) }
-                    currNode.right?.let { result.add(currIdx + 2, it) }
+                    var insertPos = currIdx + 1
+                    currNode.children.forEach { result.add(insertPos++, it) }
                 }
                 currIdx++
             }