import java.util.*;

public class CircularLinkedList
{
    public CircularLinkedList ()
    {
        _entries = new HashMap<Integer, Node>();
        _head = _tail = _current = null;
    }

    public final void Node getCurrent ()
    {
        return _current;
    }

    public final void setCurrent (Node c)
    {
        _current = c;
    }

    public final void add (int value)
    {
        Node n = new Node(value);
        
        if (_entries.size() == 0)
        {
            _head = n;
            _tail = _head;
            _current = _head;
            _current.setNext(_head);
        }
        else
        {
            Node last = _tail;

            last.setNext(n);
            n.setNext(_head);
            _tail = n;
        }

        _entries.put(value, n);
    }

    private HashMap<Integer, Node> _entries;
    private Node _head;
    private Node _tail;
    private Node _current;
}
@@ -201,21 +201,16 @@
 c final 
-void 
 Node get
@@ -216,24 +216,24 @@
 tCurrent ()%0A
+
     %7B%0A      
@@ -391,17 +391,12 @@
     
-Node n = 
+add(
 new 
@@ -406,26 +406,66 @@
 e(value)
+)
 ;%0A    
+%7D%0A%0A
     
+public final void add (Node n)%0A    %7B
 %0A       
@@ -801,17 +801,1148 @@
 put(
-value, n)
+n.getValue(), n);%0A    %7D%0A%0A    public final CircularLinkedList removeFrom (Node position)%0A    %7B%0A        CircularLinkedList removed = new CircularLinkedList();%0A        Node cup = position.getNext();%0A        Node entry = cup;%0A%0A        removed.add(cup);%0A        _entries.remove(cup.getValue());%0A%0A        for (int i = 0; i %3C 2; i++)%0A        %7B%0A            entry = entry.getNext();%0A%0A            removed.add(entry);%0A            _entries.remove(entry.getValue());%0A        %7D%0A%0A        if ((entry == _tail) %7C%7C (entry == _head))%0A        %7B%0A            _tail = position;%0A            _tail.setNext(_head);%0A%0A            if (entry == _head)%0A                _head = _head.getNext();%0A        %7D%0A        else%0A        %7B%0A            if ((cup == _tail) %7C%7C (cup == _head))%0A            %7B%0A                _head = _head.getNext().getNext();%0A%0A                if (cup == _head)%0A                %7B%0A                    _head = _head.getNext();%0A                %7D%0A                else%0A                    _tail = position;%0A%0A                _tail.setNext(_head);%0A            %7D%0A            else%0A                position.setNext(entry.getNext());%0A        %7D%0A%0A        return removed
 ;%0A  

Update CircularLinkedList.java