What is tryLock() doing and why can't the seenNextTasks be done via the add() method?  I guess I don't quite understand exactly what these three operations are doing.