### Question:
FrameAnimationImpl implements FrameAnimation { public FrameAnimationImpl clone() { return new FrameAnimationImpl(this); } FrameAnimationImpl(FrameAnimationImpl frameAnimationImpl);  FrameAnimationImpl(float f0, float... framesTimes);  FrameAnimationImpl(float... framesTimes);  FrameAnimationImpl(boolean loop, float... framesTimes); void setLoop(boolean loop); FrameAnimationImpl clone(); @Override int getFramesCount(); @Override int getCurrentFrame(); @Override void setFrame(int frame); @Override void update(float delta); @Override boolean isFinished(); @Override void restart(); @Override int getIteration(); @Override float getCurrentTime(); @Override float getDuration();  }### Answer:
@Test public void testClone() { FrameAnimationImpl source = new FrameAnimationImpl(true, 10f, 50f, 40f); source.update(5f); FrameAnimationImpl clone = source.clone(); assertThat(clone.getFramesCount(), IsEqual.equalTo(source.getFramesCount())); assertThat(clone.getCurrentFrame(), IsEqual.equalTo(source.getCurrentFrame())); assertThat(clone.getCurrentFrame(), IsEqual.equalTo(0)); clone.update(6f); assertThat(clone.getCurrentFrame(), IsEqual.equalTo(1)); }