private static void GenerateSamples(HelpPageApiModel apiModel, HelpPageSampleGenerator sampleGenerator) {
			try {
				foreach (var item in sampleGenerator.GetSampleRequests(apiModel.ApiDescription)) {
					apiModel.SampleRequests.Add(item.Key, item.Value);
					LogInvalidSampleAsError(apiModel, item.Value);
				}

				foreach (var item in sampleGenerator.GetSampleResponses(apiModel.ApiDescription)) {
					apiModel.SampleResponses.Add(item.Key, item.Value);
					LogInvalidSampleAsError(apiModel, item.Value);
				}
			} catch (Exception e) {
				apiModel.ErrorMessages.Add(String.Format(CultureInfo.CurrentCulture,
					"An exception has occurred while generating the sample. Exception message: {0}",
					HelpPageSampleGenerator.UnwrapException(e).Message));
			}
		}
		/// <summary>
		/// Sets the help page sample generator.
		/// </summary>
		/// <param name="config">The <see cref="HttpConfiguration"/>.</param>
		/// <param name="sampleGenerator">The help page sample generator.</param>
		public static void SetHelpPageSampleGenerator(this HttpConfiguration config, HelpPageSampleGenerator sampleGenerator) {
			config.Properties.AddOrUpdate(
				typeof(HelpPageSampleGenerator),
				k => sampleGenerator,
				(k, o) => sampleGenerator);
		}
		private static void GenerateRequestModelDescription(HelpPageApiModel apiModel, ModelDescriptionGenerator modelGenerator, HelpPageSampleGenerator sampleGenerator) {
			ApiDescription apiDescription = apiModel.ApiDescription;
			foreach (ApiParameterDescription apiParameter in apiDescription.ParameterDescriptions) {
				if (apiParameter.Source == ApiParameterSource.FromBody) {
					Type parameterType = apiParameter.ParameterDescriptor.ParameterType;
					apiModel.RequestModelDescription = modelGenerator.GetOrCreateModelDescription(parameterType);
					apiModel.RequestDocumentation = apiParameter.Documentation;
				} else if (apiParameter.ParameterDescriptor != null &&
					  apiParameter.ParameterDescriptor.ParameterType == typeof(HttpRequestMessage)) {
					Type parameterType = sampleGenerator.ResolveHttpRequestMessageType(apiDescription);

					if (parameterType != null) {
						apiModel.RequestModelDescription = modelGenerator.GetOrCreateModelDescription(parameterType);
					}
				}
			}
		}
		// Default factory for sample objects
		private static object DefaultSampleObjectFactory(HelpPageSampleGenerator sampleGenerator, Type type) {
			// Try to create a default sample object
			ObjectGenerator objectGenerator = new ObjectGenerator();
			return objectGenerator.GenerateObject(type);
		}