package java.util; import org.checkerframework.dataflow.qual.Pure; import org.checkerframework.dataflow.qual.SideEffectFree; import org.checkerframework.checker.nullness.qual.KeyFor; import org.checkerframework.checker.nullness.qual.Nullable; // Subclasses of this interface/class may opt to prohibit null elements. public abstract class AbstractMap<K extends @Nullable Object, V extends @Nullable Object> implements Map<K, V> { protected AbstractMap() {} public class SimpleEntry<K extends @Nullable Object, V extends @Nullable Object> implements Map.Entry<K, V>, java.io.Serializable { private static final long serialVersionUID = 0; public SimpleEntry(K a1, V a2) { throw new RuntimeException("skeleton method"); } public SimpleEntry(Map.Entry<? extends K, ? extends V> a1) { throw new RuntimeException("skeleton method"); } @Pure public K getKey() { throw new RuntimeException("skeleton method"); } @Pure public V getValue() { throw new RuntimeException("skeleton method"); } public V setValue(V a1) { throw new RuntimeException("skeleton method"); } @Pure public boolean equals(@Nullable Object a1) { throw new RuntimeException("skeleton method"); } @Pure public int hashCode() { throw new RuntimeException("skeleton method"); } @SideEffectFree public String toString() { throw new RuntimeException("skeleton method"); } } public class SimpleImmutableEntry<K extends @Nullable Object, V extends @Nullable Object> implements Map.Entry<K, V>, java.io.Serializable { private static final long serialVersionUID = 0; public SimpleImmutableEntry(K a1, V a2) { throw new RuntimeException("skeleton method"); } public SimpleImmutableEntry(Map.Entry<? extends K, ? extends V> a1) { throw new RuntimeException("skeleton method"); } @Pure public K getKey() { throw new RuntimeException("skeleton method"); } @Pure public V getValue() { throw new RuntimeException("skeleton method"); } public V setValue(V a1) { throw new RuntimeException("skeleton method"); } @Pure public boolean equals(@Nullable Object a1) { throw new RuntimeException("skeleton method"); } @Pure public int hashCode() { throw new RuntimeException("skeleton method"); } @SideEffectFree public String toString() { throw new RuntimeException("skeleton method"); } } @Pure public int size() { throw new RuntimeException("skeleton method"); } @Pure public boolean isEmpty() { throw new RuntimeException("skeleton method"); } @Pure public boolean containsValue(@Nullable Object a1) { throw new RuntimeException("skeleton method"); } @Pure public boolean containsKey(@Nullable Object a1) { throw new RuntimeException("skeleton method"); } @Pure public @Nullable V get(@Nullable Object a1) { throw new RuntimeException("skeleton method"); } public @Nullable V put(K a1, V a2) { throw new RuntimeException("skeleton method"); } public @Nullable V remove(@Nullable Object a1) { throw new RuntimeException("skeleton method"); } public void putAll(Map<? extends K, ? extends V> a1) { throw new RuntimeException("skeleton method"); } public void clear() { throw new RuntimeException("skeleton method"); } @SideEffectFree public Set<@KeyFor("this") K> keySet() { throw new RuntimeException("skeleton method"); } @SideEffectFree public Collection<V> values() { throw new RuntimeException("skeleton method"); } @SideEffectFree public abstract Set<Map.Entry<@KeyFor("this") K, V>> entrySet(); @Pure public boolean equals(@Nullable Object a1) { throw new RuntimeException("skeleton method"); } @Pure public int hashCode() { throw new RuntimeException("skeleton method"); } @SideEffectFree public String toString() { throw new RuntimeException("skeleton method"); } }