diff --git a/typo3/sysext/t3editor/Classes/Controller/CodeCompletionController.php b/typo3/sysext/t3editor/Classes/Controller/CodeCompletionController.php
index c1e1b6e0a47a4d4c6496b4a6b77cbfd3f18b2ed7..6098f928bdebc92528eab2fa052417513002d3db 100644
--- a/typo3/sysext/t3editor/Classes/Controller/CodeCompletionController.php
+++ b/typo3/sysext/t3editor/Classes/Controller/CodeCompletionController.php
@@ -86,9 +86,8 @@ class CodeCompletionController
     {
         $cleanedTreeBranch = [];
         foreach ($treeBranch as $key => $value) {
-            $dotCount = substr_count($key, '.');
             //type definition or value-assignment
-            if ($dotCount === 0) {
+            if (substr($key, -1) !== '.') {
                 if ($value != '') {
                     if (mb_strlen($value) > 20) {
                         $value = mb_substr($value, 0, 20);
@@ -98,11 +97,13 @@ class CodeCompletionController
                     }
                     $cleanedTreeBranch[$key]['v'] = $value;
                 }
-            } elseif ($dotCount == 1) {
+            } else {
                 // subtree (definition of properties)
                 $subBranch = $this->treeWalkCleanup($value);
                 if ($subBranch) {
-                    $key = str_replace('.', '', $key);
+                    if (substr($key, -1) === '.') {
+                        $key = rtrim($key, '.');
+                    }
                     if (!isset($cleanedTreeBranch[$key])) {
                         $cleanedTreeBranch[$key] = [];
                     }