### Question:
Animation implements Distributable { public Animation changeName(String aName) { return new Animation(uuid, aName, animationSequence); } Animation(String aName); private  Animation(String aUUID, String aName, ResourceName[] aAnimationSequence); String getName(); String getUuid(); Animation changeName(String aName); Animation addToAnimationSequence(ResourceName aName); Animation removeFromAnimationSequence(ResourceName aName); Animation removeFromAnimationSequence(int aIndex); int getSequenceSize(); ResourceName getResourceByIndex(int aIndex); ResourceName computeCurrentFrame(long aGameTime, Integer aSpeed); @Override Map<String, Object> serialize(); static Animation deserialize(Map<String, Object> aData);  }### Answer:
@Test public void testChangeName() throws Exception { Animation theAnimation = new Animation("Test"); theAnimation = theAnimation.addToAnimationSequence(new ResourceName("Res")); assertEquals(1, theAnimation.getSequenceSize()); Animation theNewAnimation = theAnimation.changeName("Lala"); assertEquals("Lala", theNewAnimation.getName()); assertNotSame(theAnimation, theNewAnimation); assertEquals(1, theNewAnimation.getSequenceSize()); assertEquals(new ResourceName("Res"), theNewAnimation.getResourceByIndex(0)); }