// Ok, it's block the code, but for a small period
boolean isAlreadyLogged(StackTraceElement[] stack)
	{
		HashStackTraceElement hse = new HashStackTraceElement(stack);
		// Ok, it's block the code, but for a small period
		synchronized (this)
		{
			// Detect with the precalculated hash value
			return !logged.add(hse);
		}
	}
{
HashStackTraceElement hse = new HashStackTraceElement(stack);
// Ok, it's block the code, but for a small period
synchronized (this)
{
boolean isAlreadyLogged(StackTraceElement[] stack)
{
HashStackTraceElement hse = new HashStackTraceElement(stack);
// Ok, it's block the code, but for a small period
synchronized (this)
{
// Detect with the precalculated hash value
return !logged.add(hse);
}
}
boolean isAlreadyLogged(StackTraceElement[] stack)
{
HashStackTraceElement hse = new HashStackTraceElement(stack);
// Ok, it's block the code, but for a small period
synchronized (this)
{
// Detect with the precalculated hash value
return !logged.add(hse);
}
}