@@ -0,0 +1,1451 @@
+package sfBugs;%0D%0A%0D%0Aimport edu.umd.cs.findbugs.annotations.DesireNoWarning;%0D%0Aimport edu.umd.cs.findbugs.annotations.ExpectWarning;%0D%0Aimport edu.umd.cs.findbugs.annotations.NoWarning;%0D%0A%0D%0Apublic class Bug3368029 %7B%0D%0A    // case #0%0D%0A    @NoWarning(%22IS%22)%0D%0A    private int x;%0D%0A    public synchronized int getX() %7B%0D%0A        return x;%0D%0A    %7D%0D%0A    @NoWarning(%22IS%22)%0D%0A    public void setX(int x) %7B%0D%0A        synchronized (this) %7B%0D%0A            this.x = x;%0D%0A        %7D%0D%0A    %7D%0D%0A%0D%0A    // case #1%0D%0A    @ExpectWarning(%22IS%22)%0D%0A    private int total;%0D%0A    public synchronized int getTotal() %7B%0D%0A        return total;%0D%0A    %7D%0D%0A    /*missing synchronized!*/%0D%0A    public void reset() %7B%0D%0A        this.total = 0;%0D%0A    %7D%0D%0A    /*missing synchronized!*/%0D%0A    public void count(String... things) %7B%0D%0A        for (String thing : things) %7B%0D%0A            countOne(thing);%0D%0A        %7D%0D%0A    %7D%0D%0A    private void countOne(String thing) %7B%0D%0A        total += thing.length();%0D%0A    %7D%0D%0A%0D%0A    // case #2%0D%0A    @DesireNoWarning(%22IS%22)%0D%0A    private int total2;%0D%0A    public synchronized int count2(String... things) %7B%0D%0A        this.total2 = 0;%0D%0A        for (final String thing : things) %7B%0D%0A            new Runnable() %7B%0D%0A                public void run() %7B%0D%0A                    countOne2(thing);%0D%0A                %7D%0D%0A            %7D.run();%0D%0A        %7D%0D%0A        return total2;%0D%0A    %7D%0D%0A%0D%0A    private void countOne2(String thing) %7B%0D%0A        assert Thread.holdsLock(this);%0D%0A        total2 += thing.length();%0D%0A    %7D%0D%0A%7D

Add Bug3368029 about inconsistent synchronization