public FeatureQueryExpression(ProjectionExpression projectionExpression,
                               BinaryExpression attributeFilter,
                               SpatialBinaryExpression spatialFilter,
                               OidCollectionExpression oidFilter, SortExpressionCollectionExpression sort)
 // TODO: Well, this is crazy. We need an init() function, and perhaps some more static creator methods.
     : base(projectionExpression,
            attributeFilter == null
                 ? spatialFilter == null
                         ? oidFilter
                         : oidFilter == null
                             ? (PredicateExpression)spatialFilter
                             : new BinaryExpression(spatialFilter, BinaryOperator.And, oidFilter)
                 : spatialFilter == null
                         ? oidFilter == null
                             ? attributeFilter
                             : new BinaryExpression(attributeFilter, BinaryOperator.And, oidFilter)
                         : oidFilter == null
                             ? new BinaryExpression(attributeFilter, BinaryOperator.And, spatialFilter)
                             : new BinaryExpression(attributeFilter,
                                                    BinaryOperator.And,
                                                    new BinaryExpression(oidFilter,
                                                                         BinaryOperator.And,
                                                                         spatialFilter)), sort)
 {
 }
 public FeatureQueryExpression(AttributesPredicateExpression attributeFilter,
                               SpatialBinaryExpression spatialFilter,
                               OidCollectionExpression oidFilter, SortExpressionCollectionExpression sort)
     : this(new AllAttributesExpression(), attributeFilter, spatialFilter, oidFilter, sort)
 {
 }
 public FeatureQueryExpression(AttributeBinaryExpression attributeFilter,
                               SpatialBinaryExpression spatialFilter,
                               OidCollectionExpression oidFilter)
     : this(new AllAttributesExpression(), attributeFilter, spatialFilter, oidFilter, null)
 {
 }