class DefaultTimeSpanSet implements TimeSpanSet {

    @Override
    public boolean add(TimeSpan e)
    {
        if (e == null || e.isTimeless())
        {
            return false;
        }

        boolean changedSomething = false;
        myElementListLock.lock();
        try
        {
            int size = myElementList.size();
            if (size == 0)
            {
                myElementList.add(e);
                changedSomething = true;
            }
            else if (size == 1)
            {
                // Do quick match for the one span case.
                if (addSpanWhenListHasOnlyOneBlock(e))
                {
                    changedSomething = true;
                }
            }
            else
            {
                changedSomething = binarySearchInsert(e);
            }
        }
        finally
        {
            myElementListLock.unlock();
        }
        return changedSomething;
    }

    public  DefaultTimeSpanSet();
    public  DefaultTimeSpanSet(TimeSpan ts);
    public  DefaultTimeSpanSet(TimeSpanSet other);

}