@Override
    public Comparable pop() {
        
        if(myList.size() == 1)
            return myList.remove(size());
        
        Comparable retValue = pull();

        myList.set(1, myList.remove(size()));
        
        int index = 1, ch1i = 2, ch2i = 3;
        
        while(true)
        {
            int swapi = -1;
            
            if(ch2i <= size()) //If there are two children then find the smallest
            {
                swapi = (myList.get(index).compareTo(myList.get(ch1i)) > 0) ? ch1i : swapi; //is 1st child smaller then us?
                swapi = (myList.get(ch1i).compareTo(myList.get(ch2i)) > 0) ? ch2i : swapi; //is 2nd child smaller then 1st?
            }
            else if(ch1i <= size()) //If there is only one child
            {
                swapi = (myList.get(index).compareTo(myList.get(ch1i)) > 0) ? ch1i : swapi; //is it samller then us?
            }
            if(swapi != -1) //If any children where smaller then swap and adjust for next iteration
            {
                swap(swapi, index);
                index = swapi;
                ch1i = index*2;
                ch2i = ch1i+1;
            }
            else
                break; //There are no children or none that are smaller than us
        }
        return retValue;
    }