write on this code: /** * A Sentinel List has two special nodes with values __HEAD__ and * __SENTINEL__ at each end */ public class SentinelList { /** * Create an empty sentinel list */ public SentinelList() { } /** * Return the special head node */ public Node getHead() { return null; } /** * Return the special sentinel node */ public Node getSentinel() { return null; } /** * Return the number of elements in the sentinel list */ public int size() { return 0; } /** * Add this value to the front of the list */ public void addFront(String value) { } /** * Add this value to the back of the list */ public void addBack(String value) { } /** * Remove the first occurrence of this value from the list. * Return true if the value was found and removed, or false otherwise. */ public boolean remove(String value) { return false; } /** * Return if the value was found in the list, or false otherwise */ public boolean lookup(String value) { return false; } public static void main(String[] args) { SentinelList sl = new SentinelList(); sl.addBack("Bar"); sl.addFront("Foo"); sl.addFront("Clouds"); boolean result = sl.remove("Bar"); System.out.println(result); // should be true result = sl.remove("Thunder"); System.out.println(result); // should be false // Should print __Head__, Clouds, Foo, __Sentinel__ for (Node node = sl.getHead(); node != null; node = node.getNext()) { System.out.print(node.getValue() + " "); } System.out.println(); } } Introduction A Sentinel List is a singly linked list with two special nodes at each end: a head and a tail. The figure below illustrates a sentinel list with two elements, "foo" and "bar". The head node has a special value, "_HEAD__. The sentinel node at the end has a special value, "_SENTINEL_.". Note that there are double underscores at the beginning and end of the special values. An empty SentinelList has only the head connected to the sentinel, with the sentinel connected to null. The two special nodes are never removed and always anchor the two ends of the list. Having sentinels can be a big help in coding linked lists. They simplify adding and removing. Your Task You are given a class Node that implements a node in the linked list. Values are Strings. Your task is to implement the SentinelList class with these methods: - public sentinellist() - Create an empty sentinel list. The empty sentinel list of size 0 has two special nodes, a head with value "_HEAD__ and a sentinel at the end with value "_SENTINEL_". - public Node getHead() - Return the special head node. - public Node getsentinel() - Return the special sentinel node. - public int size() - Return the number of elements in the sentinel list. - public void addFront(String value) -- Add the value to the front of the list - public boolean lookup(String value) - Return true if the value was found at least once in the list, or false otherwise. - public void addBack(String value) - Add the value to the end of the list - public boolean remove(String value) - Remove the .