Double checked locking is overkill. We don't care if we double-allocate in racy code:

```
    String result = utf8;
    return result != null ? result : (utf8 = new String(data, Util.UTF_8));
```

This only reads the utf8 field once, instead of 2x in the happy case and 3x in the unhappy case.