// Internal for testing
        internal ProjectConfigurationFileChangeEventArgs(
            string configurationFilePath,
            RazorFileChangeKind kind,
            JsonFileDeserializer jsonFileDeserializer)
        {
            if (configurationFilePath is null)
            {
                throw new ArgumentNullException(nameof(configurationFilePath));
            }

            if (jsonFileDeserializer is null)
            {
                throw new ArgumentNullException(nameof(jsonFileDeserializer));
            }

            ConfigurationFilePath = configurationFilePath;
            Kind = kind;
            _jsonFileDeserializer      = jsonFileDeserializer;
            _projectSnapshotHandleLock = new object();
        }