package org.archstudio.bna.keys; import org.eclipse.jdt.annotation.Nullable; import com.google.common.base.Function; public class ThingMetakey<N, K extends IThingKey<?>, V> extends AbstractThingMetakey<N, K, V> implements IThingMetakey<N, K, V> { public static <N, K extends IThingKey<?>, V> IThingMetakey<N, K, V> create(N name, K key) { return create(name, key, null); } public static <N, K extends IThingKey<?>, V> IThingMetakey<N, K, V> create(N name, K key, Function<V, V> cloneFunction) { return identity(new ThingMetakey<N, K, V>(name, key, cloneFunction, false)); } public static <N, K extends IThingKey<?>, V> IThingMetakey<N, K, V> create(N name, K key, Function<V, V> cloneFunction, boolean nullable) { return identity(new ThingMetakey<N, K, V>(name, key, cloneFunction, nullable)); } protected ThingMetakey(N name, K key, @Nullable Function<V, V> cloneFunction, boolean nullable) { super(name, key, cloneFunction, nullable); } }