This assignment uses a rubric of 200 points. It focuses on Object Oriented design using Classes and Objects in Java. Write a class that implements a custom doubly-linked list that accepts a parametric (generic) parameter of any plain-old-java-object. This class should be usable like the following: < Assuming we have a type named "Animal"> DoublyLinkedList> animals = new DoublyLinkedList < Animal >0; This class should support the following methods: void add () - adds to the end of the list void remove() - removes the head of the list void remove(int x) - removes element at index X from the list void clear() - removes all elements of the list int size( - returns the number of elements of the list T[] toArrayO -returns an array of the elements in your list T element() - retrieves the head of the list (but does not remove it) T element(int x ) - retrieve element at position x void set(int x,Tt ) - sets element at position x to value t Note: this class may NOT use any built in data structures other than primitive/basic Java types. In other words, don't just wrap LinkedList. Make your own. Important Note: Presizing the underlying types will result in an automatic ZERO for the assignment. To review how to write classes in Java please refer to the following link: Introduction to Classes and Objects in Java Note: If the data file has string or character, your program should handle it through input validation..