private function isPropertyAllowed(PropertyInterface $property, EnvironmentInterface $environment)
    {
        if (!$property->getWidgetType()
            || ('dummyProperty' === $property->getWidgetType())
        ) {
            return false;
        }

        $translator = $environment->getTranslator();

        $extra = (array) $property->getExtra();
        if ($this->isPropertyAllowedByEdit($extra, $environment)
            || $this->isPropertyAllowedByOverride($extra, $environment)
        ) {
            Message::addInfo(
                \sprintf(
                    $translator->translate('MSC.not_allowed_property_info'),
                    $property->getLabel() ?: $property->getName(),
                    $translator->translate('MSC.' . $environment->getInputProvider()->getParameter('mode') . 'Selected')
                )
            );

            return false;
        }

        return $this->isPropertyAllowedByIntersectProperties($property, $environment);
    }