private void assertMapValueEquals( MapValue a, MapValue b )
{
assertThat( a, equalTo( b ) );
assertThat( a.size(), equalTo( b.size() ) );
assertThat( a.hashCode(), equalTo( b.hashCode() ) );
assertThat( a.keySet(), containsInAnyOrder( Iterables.asArray( String.class, b.keySet() ) ) );
assertThat( Arrays.asList( a.keys().asArray() ), containsInAnyOrder( b.keys().asArray() ) );
a.foreach( ( k, v ) -> assertThat( b.get( k ), equalTo( v ) ) );
b.foreach( ( k, v ) -> assertThat( a.get( k ), equalTo( v ) ) );
}