private function matchInvisibleProperty(
        ConditionInterface $visibleCondition,
        array &$invisibleProperties,
        EnvironmentInterface $environment
    ) {
        $propertiesDefinition = $environment->getDataDefinition()->getPropertiesDefinition();

        foreach ($visibleCondition->getConditions() as $condition) {
            if ($condition instanceof ConditionChainInterface) {
                $this->matchInvisibleProperty($condition, $invisibleProperties, $environment);
            }

            if (!\method_exists($condition, 'getPropertyName')) {
                continue;
            }

            if (isset($invisibleProperties[$condition->getPropertyName()])
                || !$propertiesDefinition->hasProperty($condition->getPropertyName() . '.dummy')
            ) {
                continue;
            }

            $invisibleProperties[$condition->getPropertyName()]
                = $propertiesDefinition->getProperty($condition->getPropertyName() . '.dummy');
        }
    }