public SecuritySettings Build(IDictionary<string, object> dynamicRaml)
		{
			var settings = new SecuritySettings();
			settings.RequestTokenUri = dynamicRaml.ContainsKey("requestTokenUri")
				? (string) dynamicRaml["requestTokenUri"]
				: null;

			settings.TokenCredentialsUri = dynamicRaml.ContainsKey("tokenCredentialsUri")
				? (string) dynamicRaml["tokenCredentialsUri"]
				: null;

			settings.AuthorizationUri = dynamicRaml.ContainsKey("authorizationUri")
				? (string) dynamicRaml["authorizationUri"]
				: null;

			settings.AccessTokenUri = dynamicRaml.ContainsKey("accessTokenUri") ? (string) dynamicRaml["accessTokenUri"] : null;

			settings.AuthorizationGrants = dynamicRaml.ContainsKey("authorizationGrants")
				? ((object[]) dynamicRaml["authorizationGrants"]).Cast<string>().ToArray()
				: new string[0];

			settings.Scopes = dynamicRaml.ContainsKey("scopes")
				? ((object[]) dynamicRaml["scopes"]).Cast<string>().ToArray()
				: new string[0];

			return settings;
		}
		public void UseOAuth1(string authorizationUri, string requestTokenUri, string tokenCredentialsUri, SecuritySchemeDescriptor securitySchemeDescriptor)
		{
			securityType = "oauth_1_0";
			var securitySettings = new SecuritySettings
			                       {
				                       AuthorizationUri = authorizationUri,
				                       RequestTokenUri = requestTokenUri,
				                       TokenCredentialsUri = tokenCredentialsUri
			                       };
			securityScheme = new SecurityScheme
			                 {
				                 DescribedBy = securitySchemeDescriptor,
				                 Settings = securitySettings,
				                 Type = new Dictionary<string, IDictionary<string, string>> {{"OAuth 1.0", null}}
			                 };
		}
		public void UseOAuth2(string authorizationUri, string accessTokenUri, IEnumerable<string> authorizationGrants, IEnumerable<string> scopes, SecuritySchemeDescriptor securitySchemeDescriptor)
		{
			securityType = "oauth_2_0";
			var securitySettings = new SecuritySettings
			                       {
				                       AuthorizationUri = authorizationUri,
				                       AccessTokenUri = accessTokenUri,
				                       AuthorizationGrants = authorizationGrants,
				                       Scopes = scopes
			                       };
			securityScheme = new SecurityScheme
			                 {
				                 DescribedBy = securitySchemeDescriptor,
				                 Settings = securitySettings,
				                 Type = new Dictionary<string, IDictionary<string, string>> {{"OAuth 2.0", null}}
			                 };
		}
	    private void SerializeSecuritySettings(StringBuilder sb, SecuritySettings settings, int indent)
		{
			if(settings == null)
				return;

			sb.AppendLine("settings:".Indent(indent));
			SerializeProperty(sb, "accessTokenUri", settings.AccessTokenUri, indent + 2);
			SerializeProperty(sb, "authorizationUri", settings.AuthorizationUri, indent + 2);
			SerializeProperty(sb, "requestTokenUri", settings.RequestTokenUri, indent + 2);
			SerializeProperty(sb, "tokenCredentialsUri", settings.TokenCredentialsUri, indent + 2);
			SerializeArrayProperty(sb, "authorizationGrants", settings.AuthorizationGrants, indent + 2);
			SerializeListProperty(sb, "scopes", settings.Scopes, indent + 2);
		}