This is an automated email from the ASF dual-hosted git repository. desruisseaux pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/sis.git
commit 459597c6a64651f96ad87a793576cdcde85df2be Merge: f3f3169460 c7d4b3ede7 Author: Martin Desruisseaux <martin.desruisse...@geomatys.com> AuthorDate: Mon Jan 2 14:34:47 2023 +0100 Merge branch 'geoapi-3.1' .../java/org/apache/sis/console/CommandRunner.java | 2 +- .../org/apache/sis/gui/coverage/GridTileCache.java | 2 +- .../org/apache/sis/gui/dataset/ResourceEvent.java | 3 + .../java/org/apache/sis/coverage/Category.java | 2 + .../org/apache/sis/coverage/RegionOfInterest.java | 6 +- .../org/apache/sis/coverage/SampleDimension.java | 2 + .../org/apache/sis/coverage/SampleRangeFormat.java | 2 +- .../main/java/org/apache/sis/coverage/ToNaN.java | 2 +- .../org/apache/sis/coverage/grid/GridGeometry.java | 5 +- .../java/org/apache/sis/coverage/package-info.java | 2 +- .../org/apache/sis/feature/AbstractFeature.java | 2 +- .../apache/sis/feature/AbstractIdentifiedType.java | 4 + .../apache/sis/feature/DefaultAssociationRole.java | 14 +- .../apache/sis/feature/DefaultAttributeType.java | 1 + .../org/apache/sis/feature/DefaultFeatureType.java | 5 + .../java/org/apache/sis/feature/DenseFeature.java | 2 + .../org/apache/sis/feature/EnvelopeOperation.java | 2 + .../java/org/apache/sis/feature/FeatureFormat.java | 5 +- .../sis/feature/FeatureOperationException.java | 1 + .../sis/feature/InvalidFeatureException.java | 1 + .../org/apache/sis/feature/NamedFeatureType.java | 2 + .../org/apache/sis/feature/SingletonAttribute.java | 1 + .../java/org/apache/sis/feature/SparseFeature.java | 1 + .../apache/sis/feature/StringJoinOperation.java | 2 + .../apache/sis/feature/builder/TypeBuilder.java | 1 - .../java/org/apache/sis/filter/BinaryFunction.java | 4 +- .../apache/sis/filter/BinaryGeometryFilter.java | 5 +- .../org/apache/sis/filter/ComparisonFilter.java | 1 - .../org/apache/sis/filter/ConvertFunction.java | 2 +- .../org/apache/sis/filter/DefaultSortProperty.java | 2 +- .../java/org/apache/sis/filter/DistanceFilter.java | 2 +- .../java/org/apache/sis/filter/LeafExpression.java | 2 +- .../java/org/apache/sis/filter/LikeFilter.java | 2 +- .../java/org/apache/sis/filter/LogicalFilter.java | 4 +- .../java/org/apache/sis/filter/PropertyValue.java | 3 +- .../java/org/apache/sis/filter/UnaryFunction.java | 2 +- .../org/apache/sis/index/tree/NodeIterator.java | 1 + .../java/org/apache/sis/index/tree/PointTree.java | 15 +- .../org/apache/sis/index/tree/PointTreeNode.java | 15 +- .../org/apache/sis/index/tree/QuadTreeNode.java | 7 +- .../org/apache/sis/internal/feature/Resources.java | 1 - .../internal/feature/SpatialOperationContext.java | 8 +- .../sis/internal/feature/j2d/ShapeWrapper.java | 1 + .../feature/jts/PackedCoordinateSequence.java | 5 + .../sis/internal/filter/GeometryConverter.java | 2 +- .../sis/internal/filter/SortByComparator.java | 1 + .../internal/filter/sqlmm/FunctionWithSRID.java | 1 + .../internal/filter/sqlmm/GeometryConstructor.java | 1 + .../sis/internal/filter/sqlmm/OneGeometry.java | 3 +- .../apache/sis/internal/filter/sqlmm/ST_Point.java | 1 + .../sis/internal/filter/sqlmm/ST_Transform.java | 1 + .../sis/internal/filter/sqlmm/TwoGeometries.java | 2 + .../sis/internal/processing/isoline/Fragments.java | 2 +- .../sis/internal/jaxb/IdentifierMapAdapter.java | 2 +- .../sis/internal/jaxb/NonMarshalledAuthority.java | 1 - .../sis/internal/jaxb/SpecializedIdentifier.java | 2 +- .../sis/internal/jaxb/lan/LocaleAndCharset.java | 4 +- .../apache/sis/internal/metadata/Resources.java | 1 - .../sis/internal/simple/SimpleAttributeType.java | 1 + .../internal/simple/SimpleIdentifiedObject.java | 1 + .../sis/internal/simple/SimpleIdentifier.java | 1 + .../org/apache/sis/metadata/MetadataFormat.java | 2 +- .../org/apache/sis/metadata/MetadataStandard.java | 2 +- .../org/apache/sis/metadata/iso/ISOMetadata.java | 2 +- .../apache/sis/metadata/sql/MetadataWriter.java | 6 +- .../org/apache/sis/util/iso/DefaultRecord.java | 2 +- .../org/apache/sis/util/iso/DefaultRecordType.java | 2 +- .../org/apache/sis/util/iso/DefaultTypeName.java | 2 +- .../org/apache/sis/util/iso/RecordDefinition.java | 2 +- .../main/java/org/apache/sis/xml/NilReason.java | 3 +- .../src/main/java/org/apache/sis/xml/XLink.java | 1 + .../sis/metadata/iso/extent/ExtentsTest.java | 1 - .../apache/sis/test/xml/DocumentComparator.java | 6 +- .../org/apache/sis/geometry/AbstractEnvelope.java | 12 +- .../org/apache/sis/geometry/ArrayEnvelope.java | 1 + .../org/apache/sis/geometry/CoordinateFormat.java | 8 +- .../org/apache/sis/geometry/DirectPosition1D.java | 1 + .../org/apache/sis/geometry/DirectPosition2D.java | 1 + .../java/org/apache/sis/geometry/Envelope2D.java | 1 + .../java/org/apache/sis/geometry/Envelopes.java | 3 - .../apache/sis/geometry/GeneralDirectPosition.java | 1 + .../org/apache/sis/geometry/GeneralEnvelope.java | 5 +- .../java/org/apache/sis/geometry/Shapes2D.java | 1 - .../internal/referencing/EPSGParameterDomain.java | 1 + .../apache/sis/internal/referencing/Formulas.java | 10 +- .../apache/sis/internal/referencing/RTreeNode.java | 1 + .../referencing/j2d/AffineTransform2D.java | 2 +- .../referencing/j2d/IntervalRectangle.java | 8 +- .../referencing/j2d/ParameterizedAffine.java | 3 +- .../sis/internal/referencing/j2d/package-info.java | 2 +- .../sis/internal/referencing/package-info.java | 2 +- .../referencing/provider/DatumShiftGridFile.java | 3 + .../referencing/provider/DatumShiftGridGroup.java | 5 +- .../provider/FranceGeocentricInterpolation.java | 5 +- .../referencing/provider/GeocentricAffine.java | 1 - .../provider/MolodenskyInterpolation.java | 3 + .../sis/internal/referencing/provider/NADCON.java | 5 +- .../sis/internal/referencing/provider/NTv2.java | 3 +- .../referencing/provider/package-info.java | 2 +- .../main/java/org/apache/sis/io/wkt/Formatter.java | 1 - .../apache/sis/io/wkt/GeodeticObjectParser.java | 1 - .../java/org/apache/sis/io/wkt/StoredTree.java | 1 + .../main/java/org/apache/sis/io/wkt/WKTFormat.java | 5 +- .../main/java/org/apache/sis/io/wkt/Warnings.java | 25 +-- .../java/org/apache/sis/io/wkt/package-info.java | 2 +- .../parameter/DefaultParameterDescriptorGroup.java | 3 +- .../sis/parameter/DefaultParameterValue.java | 4 +- .../apache/sis/parameter/FilteredParameters.java | 3 +- .../sis/parameter/MapProjectionParameters.java | 3 + .../org/apache/sis/parameter/ParameterFormat.java | 6 +- .../apache/sis/parameter/ParameterValueList.java | 4 +- .../java/org/apache/sis/parameter/Parameters.java | 3 +- .../org/apache/sis/parameter/TensorParameters.java | 2 +- .../org/apache/sis/parameter/TensorValues.java | 2 +- .../sis/parameter/UninitializedParameter.java | 2 +- .../parameter/UnmodifiableParameterValueGroup.java | 4 +- .../sis/referencing/AbstractIdentifiedObject.java | 8 +- .../sis/referencing/AbstractReferenceSystem.java | 4 +- .../sis/referencing/ImmutableIdentifier.java | 4 +- .../org/apache/sis/referencing/Properties.java | 1 + .../apache/sis/referencing/crs/AbstractCRS.java | 2 +- .../sis/referencing/crs/AbstractDerivedCRS.java | 2 +- .../sis/referencing/crs/DefaultCompoundCRS.java | 1 + .../sis/referencing/crs/DefaultEngineeringCRS.java | 2 +- .../sis/referencing/crs/DefaultGeodeticCRS.java | 1 + .../sis/referencing/crs/DefaultImageCRS.java | 1 + .../sis/referencing/crs/DefaultTemporalCRS.java | 1 + .../sis/referencing/crs/DefaultVerticalCRS.java | 1 + .../org/apache/sis/referencing/cs/AbstractCS.java | 2 +- .../sis/referencing/cs/DefaultCompoundCS.java | 5 +- .../cs/DefaultCoordinateSystemAxis.java | 1 + .../sis/referencing/datum/AbstractDatum.java | 3 + .../sis/referencing/datum/BursaWolfParameters.java | 2 + .../sis/referencing/datum/DatumShiftGrid.java | 3 + .../sis/referencing/datum/DefaultEllipsoid.java | 1 + .../referencing/datum/DefaultGeodeticDatum.java | 2 + .../referencing/datum/DefaultPrimeMeridian.java | 1 + .../org/apache/sis/referencing/datum/Sphere.java | 3 - .../factory/ConcurrentAuthorityFactory.java | 1 - .../factory/UnavailableFactoryException.java | 4 +- .../sis/referencing/factory/package-info.java | 2 +- .../referencing/factory/sql/EPSGDataAccess.java | 1 - .../operation/AbstractCoordinateOperation.java | 14 +- .../operation/AbstractSingleOperation.java | 4 +- .../operation/CoordinateOperationContext.java | 2 +- .../operation/CoordinateOperationFinder.java | 24 +-- .../operation/DefaultConcatenatedOperation.java | 2 +- .../sis/referencing/operation/DefaultFormula.java | 4 +- .../operation/DefaultOperationMethod.java | 4 +- .../operation/DefaultPassThroughOperation.java | 2 +- .../operation/InverseOperationMethod.java | 2 +- .../operation/builder/LinearTransformBuilder.java | 1 - .../builder/LocalizationGridException.java | 1 + .../operation/builder/ResidualGrid.java | 1 + .../operation/matrix/GeneralMatrix.java | 67 +++++-- .../sis/referencing/operation/matrix/Matrices.java | 55 +++--- .../referencing/operation/matrix/MatrixSIS.java | 10 +- .../operation/matrix/UnmodifiableMatrix.java | 1 + .../referencing/operation/matrix/package-info.java | 2 +- .../sis/referencing/operation/package-info.java | 2 +- .../operation/projection/AuthalicConversion.java | 18 +- .../operation/projection/ConformalProjection.java | 27 +-- .../referencing/operation/projection/Inverter.java | 2 +- .../projection/LambertAzimuthalEqualArea.java | 12 +- .../referencing/operation/projection/Mercator.java | 6 - .../operation/projection/MeridianArcBased.java | 58 ++++-- .../operation/projection/NormalizedProjection.java | 2 +- .../operation/projection/ZonedGridSystem.java | 3 + .../operation/projection/package-info.java | 2 +- .../transform/AbstractLinearTransform.java | 14 +- .../operation/transform/ConcatenatedTransform.java | 3 + .../operation/transform/ConstantTransform1D.java | 13 +- .../operation/transform/ContextualParameters.java | 18 +- .../operation/transform/DatumShiftTransform.java | 2 + .../transform/DefaultMathTransformFactory.java | 3 +- .../transform/EllipsoidToCentricTransform.java | 1 + .../transform/ExponentialTransform1D.java | 1 + .../operation/transform/IdentityTransform1D.java | 4 +- .../transform/InterpolatedGeocentricTransform.java | 1 + .../transform/InterpolatedMolodenskyTransform.java | 4 + .../InterpolatedMolodenskyTransform2D.java | 3 + .../operation/transform/LinearInterpolator1D.java | 11 +- .../operation/transform/LinearTransform1D.java | 200 ++++++++++++++++----- .../transform/LogarithmicTransform1D.java | 1 + .../operation/transform/MathTransforms.java | 8 +- .../operation/transform/PassThroughTransform.java | 1 + .../operation/transform/PoleRotation.java | 1 + .../operation/transform/ProjectiveTransform.java | 27 ++- .../transform/SpecializableTransform.java | 5 + .../operation/transform/TransferFunction.java | 1 + .../operation/transform/TransformAdapter2D.java | 1 + .../sis/referencing/factory/TestFactorySource.java | 1 - .../factory/sql/epsg/DataScriptFormatter.java | 1 - .../operation/CoordinateOperationFinderTest.java | 4 +- .../operation/matrix/GeneralMatrixTest.java | 5 +- .../referencing/operation/matrix/MatricesTest.java | 19 +- .../operation/matrix/MatrixTestCase.java | 31 ++-- .../operation/projection/SinusoidalTest.java | 2 +- .../operation/transform/SinusoidalShiftGrid.java | 2 +- .../sis/internal/converter/ArrayConverter.java | 1 + .../internal/converter/CharSequenceConverter.java | 1 + .../sis/internal/converter/FallbackConverter.java | 2 + .../sis/internal/converter/IdentityConverter.java | 8 +- .../sis/internal/converter/StringConverter.java | 22 +-- .../sis/internal/converter/package-info.java | 2 +- .../sis/internal/util/AutoMessageFormat.java | 2 +- .../apache/sis/internal/util/CheckedHashSet.java | 1 + .../org/apache/sis/internal/util/DoubleDouble.java | 70 ++------ .../sis/internal/util/SimpleCharacterIterator.java | 10 +- .../sis/internal/util/UnmodifiableArrayList.java | 1 + .../main/java/org/apache/sis/math/ArrayVector.java | 23 ++- .../org/apache/sis/math/ConcatenatedVector.java | 1 + .../org/apache/sis/math/LinearlyDerivedVector.java | 1 + .../java/org/apache/sis/math/MathFunctions.java | 37 ++-- .../java/org/apache/sis/math/RepeatedVector.java | 1 + .../main/java/org/apache/sis/math/Statistics.java | 1 + .../java/org/apache/sis/math/package-info.java | 2 +- .../org/apache/sis/measure/AbstractConverter.java | 2 +- .../apache/sis/measure/ConcatenatedConverter.java | 2 + .../org/apache/sis/measure/ConventionalUnit.java | 2 +- .../java/org/apache/sis/measure/DerivedScalar.java | 4 +- .../sis/measure/FormattedCharacterIterator.java | 23 +-- .../org/apache/sis/measure/LinearConverter.java | 36 ++-- .../org/apache/sis/measure/MeasurementRange.java | 1 + .../main/java/org/apache/sis/measure/Range.java | 1 + .../main/java/org/apache/sis/measure/Scalar.java | 2 +- .../apache/sis/measure/SexagesimalConverter.java | 2 +- .../java/org/apache/sis/measure/UnitDimension.java | 2 +- .../java/org/apache/sis/measure/UnitFormat.java | 5 +- .../main/java/org/apache/sis/measure/Units.java | 1 + .../src/main/java/org/apache/sis/setup/About.java | 2 +- .../sis/util/collection/DefaultTreeTable.java | 5 +- .../org/apache/sis/util/collection/DerivedMap.java | 6 +- .../org/apache/sis/util/collection/DerivedSet.java | 2 +- .../sis/util/collection/FrequencySortedSet.java | 3 +- .../org/apache/sis/util/collection/RangeSet.java | 1 + .../apache/sis/util/collection/TreeNodeList.java | 2 + .../sis/util/collection/TreeTableFormat.java | 14 +- .../resources/ResourceInternationalString.java | 1 + .../apache/sis/internal/util/DoubleDoubleTest.java | 8 +- .../measure/FormattedCharacterIteratorTest.java | 2 +- .../apache/sis/measure/LinearConverterTest.java | 1 - ide-project/NetBeans/nbproject/cfg_hints.xml | 52 ++++++ .../sis/internal/profile/fra/Constraints.java | 1 + .../internal/profile/fra/DataIdentification.java | 1 + .../profile/fra/DirectReferenceSystem.java | 2 +- .../profile/fra/IndirectReferenceSystem.java | 2 +- .../sis/internal/profile/fra/LegalConstraints.java | 1 + .../internal/profile/fra/SecurityConstraints.java | 1 + .../org/apache/sis/storage/geotiff/CRSBuilder.java | 3 +- .../sis/internal/netcdf/ucar/DecoderWrapper.java | 1 - .../apache/sis/storage/netcdf/MetadataReader.java | 1 - .../sis/internal/storage/wkt/StoreFormat.java | 2 +- .../apache/sis/storage/CanNotProbeException.java | 5 +- .../java/org/apache/sis/storage/CoverageQuery.java | 2 +- .../org/apache/sis/storage/DataStoreRegistry.java | 2 +- .../java/org/apache/sis/storage/FeatureQuery.java | 5 + .../org/apache/sis/storage/StorageConnector.java | 1 - 258 files changed, 940 insertions(+), 606 deletions(-) diff --cc core/sis-feature/src/main/java/org/apache/sis/feature/DefaultAssociationRole.java index a99c102d8a,b7f0bbbbc3..cda13acf8b --- a/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultAssociationRole.java +++ b/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultAssociationRole.java @@@ -223,10 -234,10 +224,10 @@@ public class DefaultAssociationRole ext } else { /* * The feature that we need to resolve is not the one we just created. Maybe we can find - * this desired feature in an association of the 'creating' feature, instead of beeing - * the 'creating' feature itself. This is a little bit unusual, but not illegal. + * this desired feature in an association of the `creating` feature, instead of beeing + * the `creating` feature itself. This is a little bit unusual, but not illegal. */ - final List<FeatureType> deferred = new ArrayList<>(); + final List<DefaultFeatureType> deferred = new ArrayList<>(); resolved = search(creating, properties, name, deferred); if (resolved == null) { /* @@@ -260,9 -271,8 +261,8 @@@ * @param deferred where to store {@code FeatureType}s to be eventually used for a deep search. * @return the feature of the given name, or {@code null} if none. */ - @SuppressWarnings("null") - private static FeatureType search(final FeatureType feature, Collection<? extends PropertyType> properties, - final GenericName name, final List<FeatureType> deferred) + private static DefaultFeatureType search(final DefaultFeatureType feature, Collection<? extends AbstractIdentifiedType> properties, + final GenericName name, final List<DefaultFeatureType> deferred) { /* * Search only in associations declared in the given feature, not in inherited associations. @@@ -348,11 -359,13 +348,11 @@@ * and not yet resolved. * * @see #isResolved() - * @see Features#getValueTypeName(PropertyType) */ - @Override - public final FeatureType getValueType() { + public final DefaultFeatureType getValueType() { /* * This method shall be final for consistency with other methods in this classes - * which use the 'valueType' field directly. Furthermore, this method is invoked + * which use the `valueType` field directly. Furthermore, this method is invoked * (indirectly) by DefaultFeatureType constructors. */ FeatureType type = valueType; diff --cc core/sis-feature/src/main/java/org/apache/sis/feature/DefaultFeatureType.java index d11b7e87bf,29841e9f5a..dbc9f39489 --- a/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultFeatureType.java +++ b/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultFeatureType.java @@@ -150,13 -156,14 +150,14 @@@ public class DefaultFeatureType extend * * @see #getSuperTypes() */ - @SuppressWarnings("serial") // Can be various serializable implementations. - private final Set<FeatureType> superTypes; ++ @SuppressWarnings("serial") + private final Set<DefaultFeatureType> superTypes; /** - * The names of all parents of this feature type, including parents of parents. - * This is used for a more efficient implementation of {@link #isAssignableFrom(FeatureType)}. + * The names of all parents of this feature type, including parents of parents. This is used + * for a more efficient implementation of {@link #isAssignableFrom(DefaultFeatureType)}. * - * @see #isAssignableFrom(FeatureType) + * @see #isAssignableFrom(DefaultFeatureType) */ private transient Set<GenericName> assignableTo; @@@ -167,7 -174,8 +168,8 @@@ * * @see #getProperties(boolean) */ + @SuppressWarnings("serial") // Can be various serializable implementations. - private final List<PropertyType> properties; + private final List<AbstractIdentifiedType> properties; /** * All properties, including the ones declared in the super-types. diff --cc core/sis-feature/src/main/java/org/apache/sis/feature/FeatureFormat.java index f53c01b44b,6b55312d79..a41ba4057a --- a/core/sis-feature/src/main/java/org/apache/sis/feature/FeatureFormat.java +++ b/core/sis-feature/src/main/java/org/apache/sis/feature/FeatureFormat.java @@@ -613,14 -628,14 +612,14 @@@ format: for (final Collection<?> cv = CollectionsExt.singletonOrEmpty(ct.getDefaultValue()); if (feature != null) { /* - * Usually, the property 'cp' below is null because all features use the same + * Usually, the property `cp` below is null because all features use the same * characteristic value (for example the same unit of measurement), which is - * given by the default value 'cv'. Nevertheless we have to check if current + * given by the default value `cv`. Nevertheless we have to check if current * feature overrides this characteristic. */ - final Property cp = feature.getProperty(propertyType.getName().toString()); - if (cp instanceof Attribute<?>) { // Should always be true, but we are paranoiac. - Attribute<?> ca = ((Attribute<?>) cp).characteristics().get(cn.toString()); + final Object cp = feature.getProperty(propertyType.getName().toString()); + if (cp instanceof AbstractAttribute<?>) { // Should always be true, but we are paranoiac. + AbstractAttribute<?> ca = ((AbstractAttribute<?>) cp).characteristics().get(cn.toString()); if (ca != null) cv = ca.getValues(); } } diff --cc core/sis-feature/src/main/java/org/apache/sis/filter/BinaryGeometryFilter.java index f0533e28f0,b936b9d522..b0be4785f0 --- a/core/sis-feature/src/main/java/org/apache/sis/filter/BinaryGeometryFilter.java +++ b/core/sis-feature/src/main/java/org/apache/sis/filter/BinaryGeometryFilter.java @@@ -57,14 -63,18 +57,14 @@@ abstract class BinaryGeometryFilter<R,G /** * The first of the two expressions to be used by this function. - * - * @see BinarySpatialOperator#getOperand1() */ - @SuppressWarnings("serial") // Not statically typed as Serializable. + @SuppressWarnings("serial") // Most SIS implementations are serializable. protected final Expression<? super R, GeometryWrapper<G>> expression1; /** * The second of the two expressions to be used by this function. - * - * @see BinarySpatialOperator#getOperand2() */ - @SuppressWarnings("serial") // Not statically typed as Serializable. + @SuppressWarnings("serial") // Most SIS implementations are serializable. protected final Expression<? super R, GeometryWrapper<G>> expression2; /** diff --cc storage/sis-storage/src/main/java/org/apache/sis/storage/FeatureQuery.java index 734da76a62,e7409c28ba..9edc48afa9 --- a/storage/sis-storage/src/main/java/org/apache/sis/storage/FeatureQuery.java +++ b/storage/sis-storage/src/main/java/org/apache/sis/storage/FeatureQuery.java @@@ -106,7 -108,8 +106,8 @@@ public class FeatureQuery extends Quer * @see #getSelection() * @see #setSelection(Filter) */ + @SuppressWarnings("serial") // Most SIS implementations are serializable. - private Filter<? super Feature> selection; + private Filter<? super AbstractFeature> selection; /** * The number of feature instances to skip from the beginning. @@@ -134,7 -137,8 +135,8 @@@ * @see #getSortBy() * @see #setSortBy(SortBy) */ + @SuppressWarnings("serial") // Most SIS implementations are serializable. - private SortBy<Feature> sortBy; + private SortBy<AbstractFeature> sortBy; /** * Hint used by resources to optimize returned features. @@@ -419,7 -418,8 +422,8 @@@ * The literal, value reference or more complex expression to be retrieved by a {@code Query}. * Never {@code null}. */ + @SuppressWarnings("serial") - public final Expression<? super Feature, ?> expression; + public final Expression<? super AbstractFeature, ?> expression; /** * The name to assign to the expression result, or {@code null} if unspecified.