Revert "Unify ORv1 and IIv5"
[yangtools.git] / model / yang-model-api / src / main / java / org / opendaylight / yangtools / yang / model / api / meta / AbstractEffectiveStatement.java
index 1144f7969adf234599be2dbff63eb1b9fd0de4bb..72f1754ab176637546b67da04d6c7ad656c9f877 100644 (file)
@@ -7,7 +7,11 @@
  */
 package org.opendaylight.yangtools.yang.model.api.meta;
 
+import static java.util.Objects.requireNonNull;
+
 import com.google.common.collect.ImmutableList;
+import java.util.Map;
+import java.util.Optional;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.yang.common.Empty;
 
@@ -32,4 +36,13 @@ public abstract non-sealed class AbstractEffectiveStatement<A, D extends Declare
             final @NonNull Object masked) {
         return (ImmutableList) unmaskList(masked, EffectiveStatement.class);
     }
+
+    protected static final <E> @NonNull Optional<E> filterOptional(final @NonNull Optional<?> optional,
+            final @NonNull Class<E> type) {
+        return optional.filter(type::isInstance).map(type::cast);
+    }
+
+    protected static final <K, V> @NonNull Optional<V> findValue(final Map<K, V> map, final K key) {
+        return Optional.ofNullable(map.get(requireNonNull(key)));
+    }
 }