private void insert(List<T> list, int fromPos, T target) {
        T opponent = null;
        while( fromPos >= 0 &&  target.compareTo((opponent = list.get(fromPos))) < 0 ) {
            list.set(fromPos + 1, opponent);
            fromPos --;
        }
        list.set(fromPos + 1, target);
    }