Can someone help me to fix the code please? package dlist; import java.util.Iterator; public class DList implements Iterable<String> { private static class DListNode { public String data; public DListNode next; public DListNode previous; } private DListNode nil; private int size; public DList() { nil = new DListNode(); nil.previous = nil; nil.next = nil; nil.data = null; size = 0; } public void addFirst(String elem) { DListNode newNode = new DListNode(); newNode.data = elem; newNode.next = nil.next; newNode.previous = nil; nil.next.previous = newNode; nil.next = newNode; size++; } public void addLast(String elem) { DListNode newNode = new DListNode(); newNode.data = elem; newNode.next = nil; newNode.previous = nil.previous; nil.previous.next = newNode; nil.previous = newNode; size++; } public String getFirst() { if (size == 0) { throw new RuntimeException("DList is empty"); } return nil.next.data; } public String getLast() { if (size == 0) { throw new RuntimeException("DList is empty"); } return nil.previous.data; } public String removeFirst() { if (size == 0) { throw new RuntimeException("DList is empty"); } DListNode first = nil.next; first.next.previous = nil; nil.next = first.next; size--; return first.data; } public String removeLast() { if (size == 0) { throw new RuntimeException("DList is empty"); } DListNode last = nil.previous; last.previous.next = nil; nil.previous = last.previous; size--; return last.data; } public String get(int index) { if (index < 0 || index >= size) { throw new IndexOutOfBoundsException(); } DListNode node = nil.next; for (int i = 0; i < index; i++) { node = node.next; } return node.data; } public String set(int index, String value) { if (index < 0 || index >= size) { throw new IndexOutOfBoundsException(); } DListNode node = nil.next; for (int i = 0; i < index; i++) { node = node.next; } String oldValue = node.data; node.data = value; return oldValue; } public boolean contains(Object obj) { DListNode node = nil.next; while (node != nil) { if (node.data.equals(obj)) { return true; } node = node.next; } return false; } public int size() { return size; } public int indexOf(Object obj) { int index = 0; DListNode node = nil.next; while (node != nil) { if (node.data.equals(obj)) { return index; } index++; node = node.next; } return -1; } @Override public Iterator<String> iterator() { return new DListIterator(); } private class DListIterator implements Iterator<String> { private DListNode pointer; public DListIterator() { if(nil.next==nil) { pointer = nil; } else pointer=nil.next; } public boolean hasNext() { return pointer != nil; } } }.