diff --git a/lib/modules/manager/gradle/parser/assignments.ts b/lib/modules/manager/gradle/parser/assignments.ts
index b820145d49dea7526da5aabb5cdfbfdb36c43733..e8af871ffa3674d5c19017bbcf82f1184320c1cb 100644
--- a/lib/modules/manager/gradle/parser/assignments.ts
+++ b/lib/modules/manager/gradle/parser/assignments.ts
@@ -1,4 +1,4 @@
-import { query as q } from 'good-enough-parser';
+import { parser, query as q } from 'good-enough-parser';
 import { regEx } from '../../../../util/regex';
 import type { Ctx } from '../types';
 import {
@@ -81,6 +81,27 @@ const qGroovySingleMapOfVarAssignment = q
     return ctx;
   });
 
+const qGroovyMapOfExpr = (
+  search: q.QueryBuilder<Ctx, parser.Node>
+): q.QueryBuilder<Ctx, parser.Node> =>
+  q.alt(
+    q
+      .sym(storeVarToken)
+      .op(':')
+      .tree({
+        type: 'wrapped-tree',
+        maxDepth: 1,
+        startsWith: '[',
+        endsWith: ']',
+        search,
+        postHandler: (ctx: Ctx) => {
+          ctx.varTokens.pop();
+          return ctx;
+        },
+      }),
+    qGroovySingleMapOfVarAssignment
+  );
+
 // versions = [ android: [ buildTools: '30.0.3' ], kotlin: '1.4.30' ]
 const qGroovyMultiVarAssignment = qVariableAssignmentIdentifier
   .alt(q.op('='), q.op('+='))
@@ -89,39 +110,7 @@ const qGroovyMultiVarAssignment = qVariableAssignmentIdentifier
     maxDepth: 1,
     startsWith: '[',
     endsWith: ']',
-    search: q.alt(
-      q
-        .sym(storeVarToken)
-        .op(':')
-        .tree({
-          type: 'wrapped-tree',
-          maxDepth: 1,
-          startsWith: '[',
-          endsWith: ']',
-          search: q.alt(
-            q
-              .sym(storeVarToken)
-              .op(':')
-              .tree({
-                type: 'wrapped-tree',
-                maxDepth: 1,
-                startsWith: '[',
-                endsWith: ']',
-                search: qGroovySingleMapOfVarAssignment,
-                postHandler: (ctx) => {
-                  ctx.varTokens.pop();
-                  return ctx;
-                },
-              }),
-            qGroovySingleMapOfVarAssignment
-          ),
-          postHandler: (ctx) => {
-            ctx.varTokens.pop();
-            return ctx;
-          },
-        }),
-      qGroovySingleMapOfVarAssignment
-    ),
+    search: qGroovyMapOfExpr(qGroovyMapOfExpr(qGroovySingleMapOfVarAssignment)),
   })
   .handler(cleanupTempVars);
 
@@ -143,6 +132,27 @@ const qKotlinSingleMapOfVarAssignment = qStringValue
     return ctx;
   });
 
+const qKotlinMapOfExpr = (
+  search: q.QueryBuilder<Ctx, parser.Node>
+): q.QueryBuilder<Ctx, parser.Node> =>
+  q.alt(
+    qStringValue
+      .sym('to')
+      .sym('mapOf')
+      .tree({
+        type: 'wrapped-tree',
+        maxDepth: 1,
+        startsWith: '(',
+        endsWith: ')',
+        search,
+        postHandler: (ctx: Ctx) => {
+          ctx.varTokens.pop();
+          return ctx;
+        },
+      }),
+    qKotlinSingleMapOfVarAssignment
+  );
+
 // val versions = mapOf("foo1" to "bar1", "foo2" to "bar2", "foo3" to "bar3")
 const qKotlinMultiMapOfVarAssignment = qVariableAssignmentIdentifier
   .op('=')
@@ -152,39 +162,7 @@ const qKotlinMultiMapOfVarAssignment = qVariableAssignmentIdentifier
     maxDepth: 1,
     startsWith: '(',
     endsWith: ')',
-    search: q.alt(
-      qStringValue
-        .sym('to')
-        .sym('mapOf')
-        .tree({
-          type: 'wrapped-tree',
-          maxDepth: 1,
-          startsWith: '(',
-          endsWith: ')',
-          search: q.alt(
-            qStringValue
-              .sym('to')
-              .sym('mapOf')
-              .tree({
-                type: 'wrapped-tree',
-                maxDepth: 1,
-                startsWith: '(',
-                endsWith: ')',
-                search: qKotlinSingleMapOfVarAssignment,
-                postHandler: (ctx: Ctx) => {
-                  ctx.varTokens.pop();
-                  return ctx;
-                },
-              }),
-            qKotlinSingleMapOfVarAssignment
-          ),
-          postHandler: (ctx: Ctx) => {
-            ctx.varTokens.pop();
-            return ctx;
-          },
-        }),
-      qKotlinSingleMapOfVarAssignment
-    ),
+    search: qKotlinMapOfExpr(qKotlinMapOfExpr(qKotlinSingleMapOfVarAssignment)),
   })
   .handler(cleanupTempVars);