Buggy code:
public class TestMultiKeyMap < K , V > extends AbstractTestIterableMap < MultiKey < ? extends K > , V > { static final Integer I1 = new Integer ( 1 ) ; static final Integer I2 = new Integer ( 2 ) ; static final Integer I3 = new Integer ( 3 ) ; static final Integer I4 = new Integer ( 4 ) ; static final Integer I5 = new Integer ( 5 ) ; static final Integer I6 = new Integer ( 6 ) ; static final Integer I7 = new Integer ( 7 ) ; static final Integer I8 = new Integer ( 8 ) ; public TestMultiKeyMap ( String testName ) { } public static Test suite ( ) { } @ Override public MultiKeyMap < K , V > makeObject ( ) { } @ Override public MultiKey < K > [ ] getSampleKeys ( ) { } @ SuppressWarnings ( "unchecked" ) private MultiKey < K > [ ] getMultiKeyKeys ( ) { } @ Override @ SuppressWarnings ( "unchecked" ) public V [ ] getSampleValues ( ) { } @ Override @ SuppressWarnings ( "unchecked" ) public V [ ] getNewSampleValues ( ) { } @ Override @ SuppressWarnings ( "unchecked" ) public MultiKey < K > [ ] getOtherKeys ( ) { } @ Override public boolean isAllowNullKey ( ) { } @ SuppressWarnings ( "unchecked" ) public void testNullHandling ( ) { } public void testMultiKeyGet ( ) { } public void testMultiKeyContainsKey ( ) { } public void testMultiKeyPut ( ) { } public void testMultiKeyRemove ( ) { } public void testMultiKeyRemoveAll1 ( ) { } public void testMultiKeyRemoveAll2 ( ) { } public void testMultiKeyRemoveAll3 ( ) { } public void testMultiKeyRemoveAll4 ( ) { } @ SuppressWarnings ( "unchecked" ) public void testClone ( ) { } @ SuppressWarnings ( "unchecked" ) public void testLRUMultiKeyMap ( ) { <START_BUG> MultiKeyMap < K , V > map = MultiKeyMap . decorate ( new LRUMap < MultiKey < ? extends K > , V > ( 2 ) ) ; <END_BUG> map . put ( ( ( K ) ( TestMultiKeyMap . I1 ) ) , ( ( K ) ( TestMultiKeyMap . I2 ) ) , ( ( V ) ( "1-2" ) ) ) ; map . put ( ( ( K ) ( TestMultiKeyMap . I1 ) ) , ( ( K ) ( TestMultiKeyMap . I3 ) ) , ( ( V ) ( "1-1" ) ) ) ; assertEquals ( 2 , map . size ( ) ) ; map . put ( ( ( K ) ( TestMultiKeyMap . I1 ) ) , ( ( K ) ( TestMultiKeyMap . I4 ) ) , ( ( V ) ( "1-4" ) ) ) ; assertEquals ( 2 , map . size ( ) ) ; assertEquals ( true , map . containsKey ( TestMultiKeyMap . I1 , TestMultiKeyMap . I3 ) ) ; assertEquals ( true , map . containsKey ( TestMultiKeyMap . I1 , TestMultiKeyMap . I4 ) ) ; assertEquals ( false , map . containsKey ( TestMultiKeyMap . I1 , TestMultiKeyMap . I2 ) ) ; MultiKeyMap < K , V > cloned = map . clone ( ) ; assertEquals ( 2 , map . size ( ) ) ; assertEquals ( true , cloned . containsKey ( TestMultiKeyMap . I1 , TestMultiKeyMap . I3 ) ) ; assertEquals ( true , cloned . containsKey ( TestMultiKeyMap . I1 , TestMultiKeyMap . I4 ) ) ; assertEquals ( false , cloned . containsKey ( TestMultiKeyMap . I1 , TestMultiKeyMap . I2 ) ) ; cloned . put ( ( ( K ) ( TestMultiKeyMap . I1 ) ) , ( ( K ) ( TestMultiKeyMap . I5 ) ) , ( ( V ) ( "1-5" ) ) ) ; assertEquals ( 2 , cloned . size ( ) ) ; assertEquals ( true , cloned . containsKey ( TestMultiKeyMap . I1 , TestMultiKeyMap . I4 ) ) ; assertEquals ( true , cloned . containsKey ( TestMultiKeyMap . I1 , TestMultiKeyMap . I5 ) ) ; } @ Override public String getCompatibilityVersion ( ) { } @ Override public MultiKeyMap < K , V > getMap ( ) { } }

Fix:
MultiKeyMap < K , V > map = MultiKeyMap . multiKeyMap ( new LRUMap < MultiKey < ? extends K > , V > ( 2 ) ) ;