CompositeGenotype implements Genotype, Iterable<Entry<K, V>> { @SuppressWarnings("unchecked") public <G> G get(Object key) { V value = map.get(key); return (G) value; } CompositeGenotype();  CompositeGenotype(Map<K, V> map); @Override int size(); @SuppressWarnings("unchecked") G get(Object key); void put(K key, V value); void clear(); Set<K> keySet(); Collection<V> values(); @Override Iterator<Entry<K, V>> iterator(); @Override @SuppressWarnings("unchecked") G newInstance(); @Override String toString();  }
@Test public void get() { CompositeGenotype<String, Genotype> composite = new CompositeGenotype<String, Genotype>(); Genotype one = new IntegerGenotype(0, 2); composite.put("one", one); composite.put("two", new IntegerGenotype(0, 2)); Assert.assertEquals(one, composite.get("one")); }