So I have this code( StackInAllSocks ) and I implemented the method but I can't seem to figure out why there isn't anything showing up on the console. It should pop,peek and push b using the methods from the class called ArrayListTen . The ArrayListTen works fine and compiles the tested code of Rigth# but for StackInAllSocks it doesn't complete at all. note that file VodeDodeis not to be changed is just a Node storage area of the array list. Did I implement the method on StackInAllSocks correctly? if so, should I not use the method from the ArrayListTen .? __________________________________________________________________________ : the code is : VodeDodeis class VodeDode<T> { private T data; private VodeDode<T> next; private VodeDode<T> prev; public VodeDode(T data) { this.data = data; this.next = null; this.prev = null;} public T getData() { return data;} public void setData(T data) { this.data = data;} public VodeDode<T> getNext() { return this.next;} public void setNext(VodeDode<T> next) { this.next = next;} public VodeDode<T> getPrev() { return this.prev;} public void setPrev(VodeDode<T> prev) { this.prev = prev;} @Override public String toString() { return data.toString();}} _________________________________________________________________________ CODE that works fine called ArrayListTen: import java.util.Iterator; public class ArrayListTen<T> implements Iterable<T> { private VodeDode<T> head; //beginning of list private VodeDode<T> tail; //end of list private int size; private VodeDode<T> new_item; public ArrayListTen( ){ this.head = null; this.tail = null; this.size = 0;} public int lenght() { return size ;} public T getBegin() { if (this.head != null) { return head.getData();} else { return null;}} public void addBegin(T value) { VodeDode<T> newVodeDode =new VodeDode<T>(value); if (this.head== null) { head = newVodeDode; tail =newVodeDode;} else {VodeDode<T> temp = head; head = newVodeDode; head.setNext(temp);} size++;} public T removeBegin() { if(this.head == null) { return null;} else {T current = head.getData(); if (tail == head) { tail = null; head = null; } else { head = head.getNext(); head.setPrev(null);}size--; return current;}} public T getEnd() { if (tail != null) { return tail.getData(); } else { return null;}} public void addEnd(T value) { VodeDode<T> newVodeDode = new VodeDode<T>(value); if (this.tail == null) { head = newVodeDode; tail = newVodeDode; } else { newVodeDode.setPrev(tail); tail.setNext(newVodeDode); tail = newVodeDode;} size++;} public T removeEnd() { if(this.tail == null) { return null;} else { T current = tail.getData();//was head. if (head == tail) { head = null; tail = null; } else { tail = tail.getPrev(); tail.setNext(null);} size--; return current;}} public T removeBN(T value) { VodeDode<T> currVodeDode = head; VodeDode<T> prevVodeDode = null; while(currVodeDode != null){ if(currVodeDode.getData().equals(value)){ if(prevVodeDode != null){ prevVodeDode.setNext(currVodeDode.getNext());} else{ head = curr.