+ public StatementSource getStatementSource() {
+ return getStatementSourceReference().getStatementSource();
+ }
+
+ @Override
+ public final <K, V, N extends IdentifierNamespace<K, V>> Map<K, V> getAllFromCurrentStmtCtxNamespace(
+ final Class<N> type) {
+ return getLocalNamespace(type);
+ }
+
+ @Override
+ public final <K, V, N extends IdentifierNamespace<K, V>> Map<K, V> getAllFromNamespace(final Class<N> type) {
+ return getNamespace(type);
+ }
+
+ /**
+ * Associate a value with a key within a namespace.
+ *
+ * @param type Namespace type
+ * @param key Key
+ * @param value value
+ * @param <K> namespace key type
+ * @param <V> namespace value type
+ * @param <N> namespace type
+ * @param <T> key type
+ * @param <U> value type
+ * @throws NamespaceNotAvailableException when the namespace is not available.
+ */
+ @Override
+ public final <K, V, T extends K, U extends V, N extends IdentifierNamespace<K, V>> void addToNs(
+ final Class<@NonNull N> type, final T key, final U value) {
+ addToNamespace(type, key, value);
+ }
+
+ @Override
+ public abstract Collection<? extends StatementContextBase<?, ?, ?>> mutableDeclaredSubstatements();
+
+ /**
+ * Return a value associated with specified key within a namespace.
+ *
+ * @param type Namespace type
+ * @param key Key
+ * @param <K> namespace key type
+ * @param <V> namespace value type
+ * @param <N> namespace type
+ * @param <T> key type
+ * @return Value, or null if there is no element
+ * @throws NamespaceNotAvailableException when the namespace is not available.
+ */
+ @Override
+ public final <K, V, T extends K, N extends IdentifierNamespace<K, V>> V getFromNamespace(
+ final Class<@NonNull N> type, final T key) {
+ return getBehaviourRegistry().getNamespaceBehaviour(type).getFrom(this, key);
+ }
+
+ @Override
+ public final Collection<? extends Mutable<?, ?, ?>> mutableEffectiveSubstatements() {
+ ensureEffectiveSubstatements();