Push FIXMEs out 08/92908/1
authorRobert Varga <robert.varga@pantheon.tech>
Tue, 6 Oct 2020 05:25:16 +0000 (07:25 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Tue, 6 Oct 2020 05:47:30 +0000 (07:47 +0200)
A number of FIXMEs will not be addressed in 6.0.0, push them out
to 7.0.0.

Change-Id: I6cd2b9b661cd60ae3c3a81b8d341d7ca46092bf7
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
27 files changed:
yang/rfc7952-data-util/src/main/java/org/opendaylight/yangtools/rfc7952/data/util/NormalizedMetadataWriter.java
yang/rfc8528-data-util/src/main/java/org/opendaylight/yangtools/rcf8528/data/util/AbstractDynamicMountPointContextFactory.java
yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/YangInstanceIdentifier.java
yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/NormalizedNodeContainer.java
yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/NormalizedNodeStreamWriter.java
yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/tree/TreeType.java
yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONCodecFactory.java
yang/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlParserStream.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/AbstractDataStringCodec.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/DataStringCodec.java
yang/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/ChoiceNodeDataWithSchema.java
yang/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/CompositeNodeDataWithSchema.java
yang/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/DataSchemaContextTree.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/EffectiveModelContext.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ModuleImport.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/LengthEffectiveStatement.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RangeEffectiveStatement.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/TypeStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/reactor/RFC7950Reactors.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/reactor/YangValidationBundles.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/BaseStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/refine/RefineEffectiveStatementImpl.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/BuiltinEffectiveStatement.java
yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/NamespaceBehaviour.java
yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/source/StatementStreamSource.java
yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/validation/ValidationBundlesNamespace.java
yang/yang-xpath-api/src/main/java/org/opendaylight/yangtools/yang/xpath/api/YangXPathMathMode.java

index 368c4c33e53051583134fd165404fa54a75fb455..136ca83b31e75f6b94b3b1862ef74b08b4e75a43 100644 (file)
@@ -49,7 +49,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWrit
  * @author Robert Varga
  */
 @Beta
-// FIXME: 6.0.0: consider moving this class to api to keep related stuff together
+// FIXME: 7.0.0: consider moving this class to api to keep related stuff together
 public final class NormalizedMetadataWriter implements Closeable, Flushable {
     private final NormalizedNodeStreamWriter writer;
     private final boolean orderKeyLeaves;
index 0ae083eedf42d68153cec652eab3e3a204881ed9..2eee5690c20cddf13819c95001e75653a8d1dd8f 100644 (file)
@@ -30,7 +30,7 @@ import org.slf4j.LoggerFactory;
  * Abstract base class for dynamic resolvers.
  */
 @Beta
-// FIXME: 6.0.0: consider integrating into AbstractMountPointContextFactory
+// FIXME: 7.0.0: consider integrating into AbstractMountPointContextFactory
 public abstract class AbstractDynamicMountPointContextFactory extends AbstractIdentifiable<MountPointIdentifier>
         implements MountPointContextFactory {
     private static final Logger LOG = LoggerFactory.getLogger(AbstractDynamicMountPointContextFactory.class);
index a8be02e203e66a405cdfc8c8dc125b67e8bfa7df..29a8fd4eef523682b220d1e78673860d2062bd21 100644 (file)
@@ -77,7 +77,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode;
  *
  * @see <a href="http://tools.ietf.org/html/rfc6020#section-9.13">RFC6020</a>
  */
-// FIXME: 6.0.0: this concept needs to be moved to yang-common, as parser components need the ability to refer
+// FIXME: 7.0.0: this concept needs to be moved to yang-common, as parser components need the ability to refer
 //               to data nodes -- most notably XPath expressions and {@code default} statement arguments need to be able
 //               to represent these.
 public abstract class YangInstanceIdentifier implements Path<YangInstanceIdentifier>, Immutable, Serializable {
index 536b15883060562f80c01e49d367c501cc2f36b8..01f196550310bf3f734736bd5212d14caf7579b3 100644 (file)
@@ -47,7 +47,7 @@ public interface NormalizedNodeContainer<I extends PathArgument, K extends PathA
      *
      * @return Number of child nodes in this container.
      */
-    // FIXME: 6.0.0: consider making this method non-default
+    // FIXME: 7.0.0: consider making this method non-default, but then it will conflict in OrderedLeafSet
     default int size() {
         return getValue().size();
     }
index b2d5ccb12b5eecc95279174755e0cc1aa9bb8b45..b768b5f27a2b8f4898bfe1a9c11a7f7714d916fa 100644 (file)
@@ -339,7 +339,7 @@ public interface NormalizedNodeStreamWriter extends Closeable, Flushable,
      *                               implementation does not allow resetting the value.
      * @throws IOException if an underlying IO error occurs
      */
-    // FIXME: 6.0.0: this probably should integrated with scalarValue()
+    // FIXME: 7.0.0: this probably should integrated with scalarValue()
     void domSourceValue(DOMSource value) throws IOException;
 
     /**
index e635a1a5b5c61042a9bf932edc54c3ff3a5763a7..427096ad9218275c815cd6d9828699ca331e7820 100644 (file)
@@ -15,8 +15,8 @@ import com.google.common.annotations.Beta;
  * <a href="https://tools.ietf.org/html/rfc6020#section-7.19.1">RFC7950</a> data combinations based on {@code config}
  * statement.
  */
-// FIXME: 6.0.0: Consider defining a 'config false'-only type
-// FIXME: 6.0.0: Consider renaming this enum
+// FIXME: 7.0.0: Consider defining a 'config false'-only type
+// FIXME: 7.0.0: Consider renaming this enum
 @Beta
 public enum TreeType {
     /**
index 159ecfbf56f286ba4b344e78e8684e36541df0ca..aaa67301959ca07ec457108de875cd5a8f889889 100644 (file)
@@ -147,7 +147,7 @@ public abstract class JSONCodecFactory extends AbstractCodecFactory<JSONCodec<?>
 
     // Returns a one-off factory for the purposes of normalizing an anydata tree.
     //
-    // FIXME: 6.0.0: this is really ugly, as we should be able to tell if the new context is the same as ours and
+    // FIXME: 7.0.0: this is really ugly, as we should be able to tell if the new context is the same as ours and
     //               whether our cache is thread-safe -- in which case we should just return this.
     //               The supplier/cache/factory layout needs to be reworked so that this call ends up being equivalent
     //               to JSONCodecFactorySupplier.getShared() in case this factory is not thread safe.
index 0baabbb64ca0ee2740b4cd6daa101ffc75808b7e..038299d6f9e5d068c6b7a424d610667450381552 100644 (file)
@@ -439,7 +439,7 @@ public final class XmlParserStream implements Closeable, Flushable {
 
         switch (in.nextTag()) {
             case XMLStreamConstants.START_ELEMENT:
-                // FIXME: 6.0.0: why do we even need this tracker? either document it or remove it.
+                // FIXME: 7.0.0: why do we even need this tracker? either document it or remove it.
                 //               it looks like it is a crude duplicate finder, which should really be handled via
                 //               ChildReusePolicy.REJECT
                 final Set<Entry<String, String>> namesakes = new HashSet<>();
index 3f8a00af75c208c9d16f19f5bc064702c7480744..fe3084de550f8b7f4bef8953492ae954bed631a8 100644 (file)
@@ -10,7 +10,7 @@ package org.opendaylight.yangtools.yang.data.impl.codec;
 import com.google.common.annotations.Beta;
 import org.opendaylight.yangtools.concepts.AbstractIllegalArgumentCodec;
 
-// FIXME: 6.0.0: yang-data-api is tied to yang-model-api, hence it should be opinionated to export exceptions
+// FIXME: 7.0.0: yang-data-api is tied to yang-model-api, hence it should be opinionated to export exceptions
 //               encapsulating YANG-based error information.
 @Beta
 public abstract class AbstractDataStringCodec<T> extends AbstractIllegalArgumentCodec<String, T>
index 5e05a933cfb9c8fb6d9baf8144b63db4988c4a74..afb69554c3782752724d82a131890562fda12f3f 100644 (file)
@@ -10,7 +10,7 @@ package org.opendaylight.yangtools.yang.data.impl.codec;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.concepts.IllegalArgumentCodec;
 
-// FIXME: 6.0.0: yang-data-api is tied to yang-model-api, hence it should be opinionated to export exceptions
+// FIXME: 7.0.0: yang-data-api is tied to yang-model-api, hence it should be opinionated to export exceptions
 //               encapsulating YANG-based error information.
 public interface DataStringCodec<T> extends IllegalArgumentCodec<String, T> {
 
index 052343663285310cdb3fe1e4b2fc941b52e88fdb..3c22d88497b8e90d6f8b162a16d6a575dfc5e168 100644 (file)
@@ -26,7 +26,7 @@ final class ChoiceNodeDataWithSchema extends CompositeNodeDataWithSchema<ChoiceS
         super(schema);
     }
 
-    // FIXME: 6.0.0: this should be impossible to hit
+    // FIXME: 7.0.0: this should be impossible to hit
     @Override
     CaseNodeDataWithSchema addCompositeChild(final DataSchemaNode schema, final ChildReusePolicy policy) {
         verify(schema instanceof CaseSchemaNode, "Unexpected schema %s", schema);
index 9b4dd3a164ddbe50c9d0ddce4d846fb2d74ecda5..db16fbec447dee499c619b936882d8cdbe0f7333 100644 (file)
@@ -196,7 +196,7 @@ public class CompositeNodeDataWithSchema<T extends DataSchemaNode> extends Abstr
             augSchema = null;
         }
 
-        // FIXME: 6.0.0: use policy once we have removed addChild() visibility
+        // FIXME: 7.0.0: use policy to determine if we should reuse or replace the child
 
         if (augSchema != null) {
             augmentationsToChild.put(augSchema, newChild);
index 07b71bb46b6974eed7eb0694a56ab5a0f2fcd785..6d072096c5c239c7a7b6db1a3118388cb36a5f00 100644 (file)
@@ -22,7 +22,6 @@ import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
  *
  * @author Robert Varga
  */
-// FIXME: 6.0.0: @NonNullByDefault
 public final class DataSchemaContextTree {
     private static final LoadingCache<EffectiveModelContext, DataSchemaContextTree> TREES = CacheBuilder.newBuilder()
             .weakKeys().weakValues().build(new CacheLoader<EffectiveModelContext, DataSchemaContextTree>() {
@@ -53,7 +52,7 @@ public final class DataSchemaContextTree {
         return getRoot().findChild(path);
     }
 
-    public DataSchemaContextNode<?> getRoot() {
+    public @NonNull DataSchemaContextNode<?> getRoot() {
         return root;
     }
 }
index 948514ad78a05a0c3cac940e7b98765e325f138d..19ed9a2a945b9b8c4e813456fd1a584253e8e6a5 100644 (file)
@@ -20,7 +20,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.ModuleEffectiveStatement;
  * @author Robert Varga
  */
 @Beta
-// FIXME: 6.0.0: evaluate if we still need to extend SchemaContext here
+// FIXME: 7.0.0: evaluate if we still need to extend SchemaContext here
 public interface EffectiveModelContext extends SchemaContext {
 
     Map<QNameModule, ModuleEffectiveStatement> getModuleStatements();
index 25d0c30544b7355c80ae97a07e31dadc930c379b..4a135bb4a2d6d8d6098fd665fd2786c6d9549cd2 100644 (file)
@@ -17,7 +17,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.ImportEffectiveStatement;
  * Interface describing YANG 'import' statement. The import statement makes definitions from one module available inside
  * another module or submodule.
  */
-// FIXME: 6.0.0: this class is a leak of the declared world into the effective one. In effective world, all nodes form
+// FIXME: 7.0.0: this class is a leak of the declared world into the effective one. In effective world, all nodes form
 //               a tree, which consists of multiple (mostly) QName-navigated namespaces. As such module imports
 //               contribute only a prefix/QNameModule mapping to the effective world and hence should be mapped that
 //               way:
index 3a9e2ad3f7b25e4261422bdcb8b3af3f2a549b8d..ad81de8b8867cc0a6c4dd01ed97fb72ca125e9ad 100644 (file)
@@ -16,8 +16,8 @@ import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
 
 @Beta
 public interface LengthEffectiveStatement extends EffectiveStatement<List<ValueRange>, LengthStatement>,
-        // FIXME: 6.0.0: reconsider this interface extension
-        // FIXME: 6.0.0: if we are keeping it, consider a default implementation (shared with others effective
+        // FIXME: 7.0.0: reconsider this interface extension
+        // FIXME: 7.0.0: if we are keeping it, consider a default implementation (shared with others effective
         //               statements)
         ConstraintMetaDefinition {
     @Override
index 1274c713c76c761def970b421637ec4fa31f6543..bba2793be4af664b60f23215d3d2481812895207 100644 (file)
@@ -16,8 +16,8 @@ import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
 
 @Beta
 public interface RangeEffectiveStatement extends EffectiveStatement<List<ValueRange>, RangeStatement>,
-        // FIXME: 6.0.0: reconsider this interface extension
-        // FIXME: 6.0.0: if we are keeping it, consider a default implementation (shared with others effective
+        // FIXME: 7.0.0: reconsider this interface extension
+        // FIXME: 7.0.0: if we are keeping it, consider a default implementation (shared with others effective
         //               statements)
         ConstraintMetaDefinition {
     @Override
index 760fd40f44510ccb7c4d117ae0d1d0581facb246..6eb2cd69785dcbcd99f8e876c08a573b9c9bf4fe 100644 (file)
@@ -30,7 +30,7 @@ public interface TypeStatement extends DeclaredStatement<String> {
     }
 
     @Rfc6020AbnfRule("numerical-restrictions")
-    // FIXME: 6.0.0: this interface does not have an implementation
+    // FIXME: 7.0.0: this interface does not have an implementation
     interface NumericalRestrictions extends TypeStatement {
         default @Nullable RangeStatement getRange() {
             return findFirstDeclaredSubstatement(RangeStatement.class).orElse(null);
@@ -50,7 +50,7 @@ public interface TypeStatement extends DeclaredStatement<String> {
     }
 
     @Rfc6020AbnfRule("string-restrictions")
-    // FIXME: 6.0.0: this interface does not have an implementation
+    // FIXME: 7.0.0: this interface does not have an implementation
     interface StringRestrictions extends TypeStatement {
         default @Nullable LengthStatement getLength() {
             final Optional<LengthStatement> opt = findFirstDeclaredSubstatement(LengthStatement.class);
index 0f3afed61cbbd579f7e150bbc196cb6a0be4c071..b4c9ee540453decbfadcaebd8a2d7a6e5da31e61 100644 (file)
@@ -347,7 +347,7 @@ public final class RFC7950Reactors {
                 .addValidationBundle(ValidationBundleType.SUPPORTED_AUGMENT_TARGETS,
                     YangValidationBundles.SUPPORTED_AUGMENT_TARGETS)
 
-                // FIXME: 6.0.0: we do not seem to need this validation bundle
+                // FIXME: 7.0.0: we do not seem to need this validation bundle
                 .addValidationBundle(ValidationBundleType.SUPPORTED_CASE_SHORTHANDS,
                     YangValidationBundles.SUPPORTED_CASE_SHORTHANDS)
 
index 1fa645e62480a7c48698c28c25cd7c3df39f5b15..bee9d0bf404170b042dd6092c1eb7f7e2948a4cc 100644 (file)
@@ -51,7 +51,7 @@ public final class YangValidationBundles {
      *
      * @deprecated This is an implementation leak from statement support and will be removed in next major version.
      */
-    // FIXME: 6.0.0: move this to AbstractDeviateStatementSupport. This is not resolved from validation bundles at all,
+    // FIXME: 7.0.0: move this to AbstractDeviateStatementSupport. This is not resolved from validation bundles at all,
     //               hence it makes sense to co-locate this with its user.
     @Deprecated
     public static final Table<YangVersion, StatementDefinition, Set<StatementDefinition>> SUPPORTED_DEVIATION_TARGETS =
@@ -80,7 +80,7 @@ public final class YangValidationBundles {
         YangStmtMapping.CONTAINER, YangStmtMapping.LIST, YangStmtMapping.CASE, YangStmtMapping.INPUT,
         YangStmtMapping.OUTPUT, YangStmtMapping.NOTIFICATION, YangStmtMapping.CHOICE, YangStmtMapping.RPC);
 
-    // FIXME: 6.0.0: consider hiding this list, as choice nodes are handling creation of implied shorthands themselves.
+    // FIXME: 7.0.0: consider hiding this list, as choice nodes are handling creation of implied shorthands themselves.
     //               This has implications on other members of this class, as they really seem like something which
     //               should live in corresponding StatementSupport classes.
     public static final Set<StatementDefinition> SUPPORTED_CASE_SHORTHANDS = ImmutableSet.of(
index 9490e66a35705b4d18a504078bfc5b40bc579512..8a149087e9cfc5fa0dfea32afb8ad49bb345e3ef 100644 (file)
@@ -143,7 +143,7 @@ public abstract class BaseStatementSupport<A, D extends DeclaredStatement<A>,
          * The reactor would first inline 'uses baz' as that definition is the first one completely resolved and then
          * inline 'uses bar'. Here we are iterating in declaration order re-inline the statements.
          *
-         * FIXME: 6.0.0: this really should be handled by UsesStatementSupport such that 'uses baz' would have a
+         * FIXME: 7.0.0: this really should be handled by UsesStatementSupport such that 'uses baz' would have a
          *               prerequisite of a resolved 'uses bar'.
          */
         final List<StmtContext<?, ?, ?>> substatementsInit = new ArrayList<>();
index a695518034341c4f4ce76dcdfa4d8b73a89417e9..430c6df1e2f30ecea95d1d3473e09800e8e5da84 100644 (file)
@@ -24,7 +24,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.StatusEffectiveStatement;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredEffectiveStatement.DefaultArgument.WithSubstatements;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.EffectiveStatementMixins.DocumentedNodeMixin;
 
-// FIXME: 6.0.0: hide this class
+// FIXME: 7.0.0: hide this class
 // FIXME: 6.0.0: do not implement SchemaNode
 public final class RefineEffectiveStatementImpl extends WithSubstatements<Descendant, RefineStatement>
         implements RefineEffectiveStatement, SchemaNode, DocumentedNodeMixin<Descendant, RefineStatement> {
index 822992976a50b32a98e604d6ae2b9a957eb07650..cc3c1b69670bb63235a2ba25ce0aaa65dd1adaac 100644 (file)
@@ -60,13 +60,13 @@ enum BuiltinEffectiveStatement implements TypeEffectiveStatement<TypeStatement>
     @Override
     public final <K, V, N extends IdentifierNamespace<K, V>> Optional<? extends V> get(final Class<N> namespace,
             final K identifier) {
-        // FIXME: 6.0.0: implement this
+        // FIXME: 7.0.0: implement this
         return Optional.empty();
     }
 
     @Override
     public final <K, V, N extends IdentifierNamespace<K, V>> Map<K, V> getAll(final Class<N> namespace) {
-        // FIXME: 6.0.0: implement this
+        // FIXME: 7.0.0: implement this
         return ImmutableMap.of();
     }
 
index 8aba02b8a9c82a4c4b3c95752f739041b5bb8277..ade7c48e5083688264ce64ae1ada1c7a7d2faf64 100644 (file)
@@ -43,7 +43,7 @@ public abstract class NamespaceBehaviour<K, V, N extends IdentifierNamespace<K,
         /**
          * Storage of the root statement of a particular source and any sources it is importing.
          */
-        // FIXME: 6.0.0: this is a misnomer and should be renamed
+        // FIXME: 7.0.0: this is a misnomer and should be renamed
         SOURCE_LOCAL_SPECIAL,
         /**
          * Storage of a single statement.
index 9cae5892076f4c0786ad6d2fd82084db923340fd..c1694c90a11de1b1da62b246eb99dc2fa2926840 100644 (file)
@@ -50,7 +50,7 @@ import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
  * build full declared statement model of source.</li>
  * </ol>
  */
-// FIXME: 6.0.0: this is a push parser, essentially traversing the same tree multiple times. Perhaps we should create
+// FIXME: 7.0.0: this is a push parser, essentially traversing the same tree multiple times. Perhaps we should create
 //               a visitor/filter or perform some explicit argument binding?
 public interface StatementStreamSource extends Identifiable<SourceIdentifier> {
     /**
index 9410426cce0f68f36b4c3df045620449706bdf5c..5681ea50cbfff6102a0aa709f81a260ecfd50a8d 100644 (file)
@@ -42,7 +42,7 @@ public interface ValidationBundlesNamespace extends
          * Whether a <a href="https://tools.ietf.org/html/rfc6020#section-7.9.2">case shorthand</a> can be created for a
          * node.
          */
-        // FIXME: 6.0.0: consider removing this constant, this functionality is part of statement support.
+        // FIXME: 7.0.0: consider removing this constant, this functionality is part of statement support.
         SUPPORTED_CASE_SHORTHANDS,
 
         /**
index 9e5d3bbefcd5fff7ce06b590b487658254ec464e..9411b0becb07dbe79db3cdf36ff9af523ac5ac22 100644 (file)
@@ -33,7 +33,7 @@ public enum YangXPathMathMode {
     EXACT(BigDecimalXPathMathSupport.INSTANCE);
 
     /*
-     * FIXME: 6.0.0: specify and implement this:
+     * FIXME: 7.0.0: specify and implement this:
      *
      * All number expressions are treated either as {@code org.opendaylight.yangtools.yang.common} types with
      * precision required to hold them. Decimal types are mapped to {@link Decimal64} with all range restrictions