TextAttributes () { TextAttributes defaultAttributes = myDefaultAttributes; if (defaultAttributes == null) { final TextAttributeKeyDefaultsProvider provider = ourDefaultsProvider.getValue(); if (provider != null) { Set<String> called = CALLED_RECURSIVELY.get(); if (!called.add(myExternalName)) return null; try { return ObjectUtils.notNull(provider.getDefaultAttributes(this), NULL_ATTRIBUTES); } finally { called.remove(myExternalName); } } } return defaultAttributes; }