title: How is FindBugs Unwritten Public Field (UWF) determined?
body: <p>I have two classes:</p>
  
  <pre><code>class Foo {
      // some stuff      
  }
  
  class Bar extends Foo {
     public String a;
     // other stuff
  }
  </code></pre>
  
  <p>When I run findBugs on this code, there are no warnings.</p>
  
  <p>I want to refactor and move the field A from Bar to Foo, like so:</p>
  
  <pre><code>class Foo {
      public String a;
      // some stuff
  }
  
  class Bar extends Foo {
     // other stuff
  }
  </code></pre>
  
  <p>But now findBugs complains with UWF Unwritten public or protected field.</p>
  
  <p>Other things about my system:</p>
  
  <ul>
  <li>These classes exist in a gradle project called "dtos"</li>
  <li>The field "a" is being written to in a gradle project called "main"</li>
  <li>There is no @SuppressFBWarnings set on the objects</li>
  <li>There is a few @Json (jackson) annotations in various places in Bar, but none that refer to the field "a"</li>
  <li>There is a exclude filter file for findBugs, but it doesn't mention UWF</li>
  </ul>
  
  <p>How does findBugs determine UWF? Where are all the places it looks for supressions? What are all the third-party libraries that findBugs knows about (it knows about Jackson) that would cause UWF to be supressed? Any other ideas?</p>