No need to fiddle around with state here. allCountries() is **always called in the constructor** so the allCountries variable will never be null -- it can't be. Ideally allCountries would just be a final variable that's instantiated immediately either in the constructor or when declared. 

Better yet, make the bulk of the current allCountries() method just be something like generateCountries that assigns a value to the allCountries variable. Then allCountries() just returns it. As in:

```java
public Map<String, Country> allCountries() {
    return allCountries;
}
```

and further up in the class:

```java
private Map<String, Country> allCountries = generateCountries();
```

Then you don't deal with any state when you have no reason too, which reduces the complexity of different threads accessing the code and theoretically allows the compiler to make more optimizations because the whole class is read only.