int () { int cachedLength = myCachedLength; if (cachedLength >= 0) return cachedLength; assertReadAccessAllowed(); //otherwise a write action can modify the tree while we're walking it try { return walkCachingLength(); } catch (AssertionError e) { myCachedLength = -1; String assertion = StringUtil.getThrowableText(e); throw new AssertionError("Walking failure: ===\n"+assertion+"\n=== Thread dump:\n"+ ThreadDumper.dumpThreadsToString()+"\n===\n"); } }