public override string ToString()
{
StringBuilder sb = new StringBuilder("source(");
int count = 0;
this.AddFieldToString(this.Address != null, sb, "address", this.Address, ref count);
this.AddFieldToString(this.Durable != null, sb, "durable", this.Durable, ref count);
this.AddFieldToString(this.ExpiryPolicy.Value != null, sb, "expiry-policy", this.ExpiryPolicy, ref count);
this.AddFieldToString(this.Timeout != null, sb, "timeout", this.Timeout, ref count);
this.AddFieldToString(this.Dynamic != null, sb, "dynamic", this.Dynamic, ref count);
this.AddFieldToString(this.DynamicNodeProperties != null, sb, "dynamic-node-properties", this.DynamicNodeProperties, ref count);
this.AddFieldToString(this.DistributionMode.Value != null, sb, "distribution-mode", this.DistributionMode, ref count);
this.AddFieldToString(this.FilterSet != null, sb, "filter", this.FilterSet, ref count);
this.AddFieldToString(this.DefaultOutcome != null, sb, "default-outcome", this.DefaultOutcome, ref count);
this.AddFieldToString(this.Outcomes != null, sb, "outcomes", this.Outcomes, ref count);
this.AddFieldToString(this.Capabilities != null, sb, "capabilities", this.Capabilities, ref count);
sb.Append(')');
return sb.ToString();
}