diff --git a/core/core.services.yml b/core/core.services.yml
index bcf528b10b..d9c89467b6 100644
--- a/core/core.services.yml
+++ b/core/core.services.yml
@@ -337,6 +337,7 @@ services:
       - { name: plugin_manager_cache_clear }
     calls:
       - [setValidationConstraintManager, ['@validation.constraint']]
+    lazy: true
   context.handler:
     class: Drupal\Core\Plugin\Context\ContextHandler
     arguments: ['@typed_data_manager']
diff --git a/core/lib/Drupal/Core/ProxyClass/Config/TypedConfigManager.php b/core/lib/Drupal/Core/ProxyClass/Config/TypedConfigManager.php
new file mode 100644
index 0000000000..8094eea8c5
--- /dev/null
+++ b/core/lib/Drupal/Core/ProxyClass/Config/TypedConfigManager.php
@@ -0,0 +1,298 @@
+<?php
+// @codingStandardsIgnoreFile
+
+/**
+ * This file was generated via php core/scripts/generate-proxy-class.php 'Drupal\Core\Config\TypedConfigManager' "core/lib/Drupal/Core".
+ */
+
+namespace Drupal\Core\ProxyClass\Config {
+
+    /**
+     * Provides a proxy class for \Drupal\Core\Config\TypedConfigManager.
+     *
+     * @see \Drupal\Component\ProxyBuilder
+     */
+    class TypedConfigManager implements \Drupal\Core\Cache\CacheableDependencyInterface, \Drupal\Core\Config\TypedConfigManagerInterface
+    {
+
+        use \Drupal\Core\DependencyInjection\DependencySerializationTrait;
+
+        /**
+         * The id of the original proxied service.
+         *
+         * @var string
+         */
+        protected $drupalProxyOriginalServiceId;
+
+        /**
+         * The real proxied service, after it was lazy loaded.
+         *
+         * @var \Drupal\Core\Config\TypedConfigManager
+         */
+        protected $service;
+
+        /**
+         * The service container.
+         *
+         * @var \Symfony\Component\DependencyInjection\ContainerInterface
+         */
+        protected $container;
+
+        /**
+         * Constructs a ProxyClass Drupal proxy object.
+         *
+         * @param \Symfony\Component\DependencyInjection\ContainerInterface $container
+         *   The container.
+         * @param string $drupal_proxy_original_service_id
+         *   The service ID of the original service.
+         */
+        public function __construct(\Symfony\Component\DependencyInjection\ContainerInterface $container, $drupal_proxy_original_service_id)
+        {
+            $this->container = $container;
+            $this->drupalProxyOriginalServiceId = $drupal_proxy_original_service_id;
+        }
+
+        /**
+         * Lazy loads the real service from the container.
+         *
+         * @return object
+         *   Returns the constructed real service.
+         */
+        protected function lazyLoadItself()
+        {
+            if (!isset($this->service)) {
+                $this->service = $this->container->get($this->drupalProxyOriginalServiceId);
+            }
+
+            return $this->service;
+        }
+
+        /**
+         * {@inheritdoc}
+         */
+        public function get($name)
+        {
+            return $this->lazyLoadItself()->get($name);
+        }
+
+        /**
+         * {@inheritdoc}
+         */
+        public function buildDataDefinition(array $definition, $value, $name = NULL, $parent = NULL)
+        {
+            return $this->lazyLoadItself()->buildDataDefinition($definition, $value, $name, $parent);
+        }
+
+        /**
+         * {@inheritdoc}
+         */
+        public function getDefinition($base_plugin_id, $exception_on_invalid = true)
+        {
+            return $this->lazyLoadItself()->getDefinition($base_plugin_id, $exception_on_invalid);
+        }
+
+        /**
+         * {@inheritdoc}
+         */
+        public function clearCachedDefinitions()
+        {
+            return $this->lazyLoadItself()->clearCachedDefinitions();
+        }
+
+        /**
+         * {@inheritdoc}
+         */
+        public function hasConfigSchema($name)
+        {
+            return $this->lazyLoadItself()->hasConfigSchema($name);
+        }
+
+        /**
+         * {@inheritdoc}
+         */
+        public function createFromNameAndData($config_name, array $config_data)
+        {
+            return $this->lazyLoadItself()->createFromNameAndData($config_name, $config_data);
+        }
+
+        /**
+         * {@inheritdoc}
+         */
+        public function createInstance($data_type, array $configuration = array (
+        ))
+        {
+            return $this->lazyLoadItself()->createInstance($data_type, $configuration);
+        }
+
+        /**
+         * {@inheritdoc}
+         */
+        public function create(\Drupal\Core\TypedData\DataDefinitionInterface $definition, $value = NULL, $name = NULL, $parent = NULL)
+        {
+            return $this->lazyLoadItself()->create($definition, $value, $name, $parent);
+        }
+
+        /**
+         * {@inheritdoc}
+         */
+        public function createDataDefinition($data_type)
+        {
+            return $this->lazyLoadItself()->createDataDefinition($data_type);
+        }
+
+        /**
+         * {@inheritdoc}
+         */
+        public function createListDataDefinition($item_type)
+        {
+            return $this->lazyLoadItself()->createListDataDefinition($item_type);
+        }
+
+        /**
+         * {@inheritdoc}
+         */
+        public function getInstance(array $options)
+        {
+            return $this->lazyLoadItself()->getInstance($options);
+        }
+
+        /**
+         * {@inheritdoc}
+         */
+        public function getPropertyInstance(\Drupal\Core\TypedData\TypedDataInterface $object, $property_name, $value = NULL)
+        {
+            return $this->lazyLoadItself()->getPropertyInstance($object, $property_name, $value);
+        }
+
+        /**
+         * {@inheritdoc}
+         */
+        public function setValidator(\Symfony\Component\Validator\Validator\ValidatorInterface $validator)
+        {
+            return $this->lazyLoadItself()->setValidator($validator);
+        }
+
+        /**
+         * {@inheritdoc}
+         */
+        public function getValidator()
+        {
+            return $this->lazyLoadItself()->getValidator();
+        }
+
+        /**
+         * {@inheritdoc}
+         */
+        public function setValidationConstraintManager(\Drupal\Core\Validation\ConstraintManager $constraintManager)
+        {
+            return $this->lazyLoadItself()->setValidationConstraintManager($constraintManager);
+        }
+
+        /**
+         * {@inheritdoc}
+         */
+        public function getValidationConstraintManager()
+        {
+            return $this->lazyLoadItself()->getValidationConstraintManager();
+        }
+
+        /**
+         * {@inheritdoc}
+         */
+        public function getDefaultConstraints(\Drupal\Core\TypedData\DataDefinitionInterface $definition)
+        {
+            return $this->lazyLoadItself()->getDefaultConstraints($definition);
+        }
+
+        /**
+         * {@inheritdoc}
+         */
+        public function getCanonicalRepresentation(\Drupal\Core\TypedData\TypedDataInterface $data)
+        {
+            return $this->lazyLoadItself()->getCanonicalRepresentation($data);
+        }
+
+        /**
+         * {@inheritdoc}
+         */
+        public function setCacheBackend(\Drupal\Core\Cache\CacheBackendInterface $cache_backend, $cache_key, array $cache_tags = array (
+        ))
+        {
+            return $this->lazyLoadItself()->setCacheBackend($cache_backend, $cache_key, $cache_tags);
+        }
+
+        /**
+         * {@inheritdoc}
+         */
+        public function getDefinitions()
+        {
+            return $this->lazyLoadItself()->getDefinitions();
+        }
+
+        /**
+         * {@inheritdoc}
+         */
+        public function useCaches($use_caches = false)
+        {
+            return $this->lazyLoadItself()->useCaches($use_caches);
+        }
+
+        /**
+         * {@inheritdoc}
+         */
+        public function processDefinition(&$definition, $plugin_id)
+        {
+            return $this->lazyLoadItself()->processDefinition($definition, $plugin_id);
+        }
+
+        /**
+         * {@inheritdoc}
+         */
+        public function getCacheContexts()
+        {
+            return $this->lazyLoadItself()->getCacheContexts();
+        }
+
+        /**
+         * {@inheritdoc}
+         */
+        public function getCacheTags()
+        {
+            return $this->lazyLoadItself()->getCacheTags();
+        }
+
+        /**
+         * {@inheritdoc}
+         */
+        public function getCacheMaxAge()
+        {
+            return $this->lazyLoadItself()->getCacheMaxAge();
+        }
+
+        /**
+         * {@inheritdoc}
+         */
+        public function hasDefinition($plugin_id)
+        {
+            return $this->lazyLoadItself()->hasDefinition($plugin_id);
+        }
+
+        /**
+         * {@inheritdoc}
+         */
+        public function __sleep()
+        {
+            return $this->lazyLoadItself()->__sleep();
+        }
+
+        /**
+         * {@inheritdoc}
+         */
+        public function __wakeup()
+        {
+            return $this->lazyLoadItself()->__wakeup();
+        }
+
+    }
+
+}
