/// <inheritdoc />
        public void ProcessType(Type type, string sourceName)
        {
            // Find source data cookers
            if (SourceDataCookerReference.TryCreateReference(type, out var sourceDataCookerReference))
            {
                Debug.Assert(sourceDataCookerReference != null);
                this.repoBuilder.AddSourceDataCookerReference(sourceDataCookerReference);
            }

            // Find composite data cookers
            if (CompositeDataCookerReference.TryCreateReference(type, out var compositeDataCookerReference))
            {
                Debug.Assert(compositeDataCookerReference != null);
                this.repoBuilder.AddCompositeDataCookerReference(compositeDataCookerReference);
            }

            // Find tables
            if (TableExtensionReference.TryCreateReference(type, out var dataExtensionReference))
            {
                Debug.Assert(dataExtensionReference != null);
                this.repoBuilder.AddTableExtensionReference(dataExtensionReference);
            }

            // Find data processors
            if (DataProcessorReference.TryCreateReference(type, out var dataProcessorReference))
            {
                Debug.Assert(dataProcessorReference != null);
                this.repoBuilder.AddDataProcessorReference(dataProcessorReference);
            }
        }
        /// <summary>
        ///     Generate a data processor reference from a given type.
        /// </summary>
        /// <param name="candidateType">
        ///     Data extension type.
        /// </param>
        /// <param name="reference">
        ///     Data extension reference.
        /// </param>
        /// <returns>
        ///     <c>true</c> if succeeded, <c>false</c> otherwise.
        /// </returns>
        public bool TryCreateDataProcessorReference(
            Type candidateType,
            out IDataProcessorReference reference)
        {
            Guard.NotNull(candidateType, nameof(candidateType));

            return(DataProcessorReference.TryCreateReference(candidateType, out reference));
        }