public class IMF {

    private static IMF imf;

    public static IMF getFund() {
        if(imf!=null){
            synchronized (getFund()){
                if(imf != null){
                    imf = new IMF();
                }
            }
        }
        return imf;
    }

    private IMF() {
    }
}
На выходе стабильный null, но валидатор не готов к таким косякам. Т.е. не я один тут косячу)