/// <summary>
        /// Globally registers a process step definition through its runtime type representation.
        /// </summary>
        /// <param name="processStepType">The type of the runtime process step. Must be a subclass of 'ProcessStep'.</param>
        public static void Register(Type processStepType)
        {
            ProcessStepDefinition definition = new ProcessStepDefinition
            {
                Name       = processStepType.Name,
                Exits      = FindExitPointDefinitions(processStepType),
                Parameters = FindParameters(processStepType, ParameterDefinitionKind.Standard),
                InferredOrderParameters = FindParameters(processStepType, ParameterDefinitionKind.InferredForOrder),
                RuntimeType             = processStepType
            };

            Register(definition);
        }
        //======================================================
        //      Private fields and constants
        //======================================================

        //======================================================
        //      Constructors and finalizers
        //======================================================

        //======================================================
        //      Public methods
        //======================================================
        /// <summary>
        /// Globally registers a process step definition.
        /// </summary>
        /// <param name="definition">The definition to register.</param>
        public static void Register(ProcessStepDefinition definition)
        {
            Definitions.Add(definition.Name, definition);
        }