/// <summary>
        /// Finds all creatable instances for each of the parameter types on the <paramref name="methodUnderTest"/>.
        /// </summary>
        public override IEnumerable <object[]> GetData(MethodInfo methodUnderTest)
        {
            var parameters        = methodUnderTest.GetParameters( );
            var parameterCreators = parameters.Select((p) => TypeCreator.GetCreators(p.ParameterType).AsEnumerable( ));

            bool needsSta =
                Thread.CurrentThread.GetApartmentState( ) != ApartmentState.STA &&
                methodUnderTest.GetCustomAttributes <FactAttribute>( ).Any(IsStaTestAttribute);

            IEnumerable <object[]> instanceData;

            if (!needsSta)
            {
                instanceData = GetDataCore(parameterCreators);
            }
            else
            {
                var task = TestCaseExtensions.RunAsync(() => GetDataCore(parameterCreators).ToArray( ), ApartmentState.STA);
                instanceData = task.Result;
            }

            return(instanceData);
        }