Daniel,
I've encountered two bugs, both in rate limiting.
1. It seems that when the RateLimit object is initialized, the time-till-reset value is in seconds, rather than milliseconds. Thus, when the check occurs to see if we are rate limited, we need to multiply the reset value by 1000 in Twitter.isRateLimited() line 3623:
// out of date?
if ((rl.getReset().getTime()*1000) < System.currentTimeMillis()) return false;
And again in RateLimit.waitForReset() at line 36:
Long r = Long.valueOf(reset)*1000;
2. If I terminate a VM after hitting the rate limit, then start a fresh VM, the new process never reports that I am rate limited and every Twitter api call throws an exception even though we are checking isRateLimited(). It returns false because the RateLimit object is never initialized in this case.
Best,
George