protected function buildArgumentEvaluationAccessCode($argumentAccess, &$useGlobalObjects = false)
    {
        if (is_array($argumentAccess)) {
            $valuesAccessCodes = [];
            foreach ($argumentAccess as $singleValue) {
                $valuesAccessCodes[] = $this->buildArgumentEvaluationAccessCode($singleValue);
            }
            $argumentAccessCode = 'array(' . implode(', ', $valuesAccessCodes) . ')';
        } else {
            $objectAccess = explode('.', $argumentAccess, 2);
            if (count($objectAccess) === 2 && $objectAccess[0] === 'current') {
                $objectAccess = explode('.', $objectAccess[1], 2);
                if (count($objectAccess) === 1) {
                    $argumentAccessCode = '$globalObjects[\'' . $objectAccess[0] . '\']';
                } else {
                    $argumentAccessCode = '\Neos\Utility\ObjectAccess::getPropertyPath($globalObjects[\'' . $objectAccess[0] . '\'], \'' . $objectAccess[1] . '\')';
                }

                $useGlobalObjects = true;
            } elseif (count($objectAccess) === 2 && $objectAccess[0] === 'this') {
                $argumentAccessCode = '\Neos\Utility\ObjectAccess::getPropertyPath($currentObject, \'' . $objectAccess[1] . '\')';
            } else {
                $argumentAccessCode = $argumentAccess;
            }
        }

        return $argumentAccessCode;
    }