public Animal getElement(int index) {
   Animal ani = animals.get(index);
   switch (ani.getSort()) {
     case DEER:
       Deer deer = (Deer) ani;
       return (Deer) deer.clone();
     case DOG:
       Dog dog = (Dog) ani;
       return (Dog) dog.clone();
     case GIFRAFFE:
       Gifraffe gifraffe = (Gifraffe) ani;
       return (Gifraffe) gifraffe.clone();
     case HORSE:
       Horse horse = (Horse) ani;
       return (Horse) horse.clone();
     case LION:
       Lion lion = (Lion) ani;
       return (Lion) lion.clone();
     case WOLF:
       Wolf wolf = (Wolf) ani;
       return (Wolf) wolf.clone();
     case CHEETAH:
       Cheetah cheetah = (Cheetah) ani;
       return (Cheetah) cheetah.clone();
     default:
       // Don't know that type of creature.
       return (Animal) ani.clone();
   }
 }
 public void addElement(int index, Animal animal) {
   if (index < 0 || index >= animals.size()) {
     index = 0;
   }
   AnimalSort sort = animal.getSort();
   animal.setID(sort.getAbbrv() + (++animalCount[sort.ordinal()]));
   this.animals.add(index, animal);
 }