public XDocument BuildComplexDataQuery(IComplexDataQuery complexDataQuery, IDataQueryFormat<XDocument> dataQueryFormat)
 {
     IComplexDataQueryBuilder builder = _factory.GetComplexDataQueryBuilder(dataQueryFormat);
     if (builder != null)
     {
         return builder.BuildComplexDataQuery(complexDataQuery);
     }
     throw new SdmxUnauthorisedException("Unsupported ComplexDataQueryFormat: " + dataQueryFormat);
 }
		public IComplexDataQueryBuilder GetComplexDataQueryBuilder(IDataQueryFormat<XDocument> format)
		{
            //HAHAA, why not using an enum?
			if (format is GenericTimeSeriesDataFormatV21) {
			return new GenericTimeSeriesDataQueryBuilderV21();
		}
			if (format is GenericDataDocumentFormatV21) {
				return  new GenericDataQueryBuilderV21();
			}
			if (format is StructSpecificDataFormatV21) {
				return  new StructSpecificDataQueryBuilderV21();
			}
			if (format is StructSpecificTimeSeriesDataFormatV21) {
                return new StructSpecificTimeSeriesQueryBuilderV21();
			}

			return null;
		}