*
* @see <a href="http://tools.ietf.org/html/rfc6020#section-9.13">RFC6020</a>
*/
+// FIXME: 3.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 {
/**
* An empty {@link YangInstanceIdentifier}. It corresponds to the path of the conceptual
* @param <K> Local identifier of node
* @param <V> Value of node
*/
+/*
+ * FIXME: 3.0.0: NormalizedNode represents the perfectly-compliant view of the data, as evaluated by an implementation,
+ * which is currently singular, with respect of its interpretation of a SchemaContext. This includes
+ * leaf values, which are required to hold normalized representation for a particular implementation,
+ * which may be affected by its understanding of any YANG extensions present -- such as optional type
+ * handling hints and bindings.
+ *
+ * Implementations (i.e. the reference implementation and parsers) will need to start using
+ * yang.common.Uint8 and friends and, if possible, express data validation in terms
+ * of yang.common.CanonicalValue and yang.common.CanonicalValueValidator.
+ *
+ * This notably means that to efficiently implement any sort of lenient parsing, we need a separate
+ * concept which contains an unverified, potentially non-conformant data tree, which the consumer needs
+ * to check/fixup if it wishes to use it as a NormalizedNode. Such a concept should be called
+ * "UnverifiedData".
+ */
+/*
+ * FIXME: 4.0.0: Once we have UnverifiedData, we should really rename this to "NormalizedData" or similar to unload
+ * some "Node" ambiguity. "Node" should be a generic term reserved for a particular domain -- hence 'node'
+ * can be used to refer to either a 'schema node' in context of yang.model.api, or to
+ * a 'normalized data node' in context of yang.data.api.
+ */
public interface NormalizedNode<K extends PathArgument, V> extends Identifiable<K> {
/**
* QName of the node as defined in YANG schema.