Design a program named SortedNameList.java, which implements a list structure with linked list node (LLNode.java). Your SortedNameList ADT should have the following methods: Template: public class SortedNameList{ LLNode head; public SortedNameList(){ head=null; } public LLNode getHead(){ return head; } public boolean isEmpty(){ //return true if the list is empty, otherwise true /* Type your code here. */ } public void add(Name name){ //add name to the list, after this operation, the list should maintain sorted in ascending order /* Type your code here. */ } public void add(LLNode node){ //overloaded method: add node to the list, after this operation, the list should maintain sorted in ascending order /* Type your code here. */ } public int size(){ //return the number of nodes in the list /* Type your code here. */ return 0; // replace with yours } public boolean isFull(){ return false; } public int search(Name name){ //return index of the name (the first occurrence) in the list, return -1 if not found /* Type your code here. */ return -10; // replace with yours } public LLNode get(int index){ // return the LLNode object at the specified index location, for invalid index, return null /* Type your code here. */ return new LLNode(new Name("a","b"), null); //replace with yours } public void remove(int index){ //Remove node at the specified index location if valid. /* Type your code here. */ } public void remove(Name name){ //remove all occurences of name - please refer to Name class for details /* Type your code here. */ } public void removeAll(){ //remove all nodes } }.