Fix #333 Nullaway init suppression issue (#343)

diff --git a/nullaway/src/main/java/com/uber/nullaway/NullAway.java b/nullaway/src/main/java/com/uber/nullaway/NullAway.java
index 7e4176f..30a2b94 100644
--- a/nullaway/src/main/java/com/uber/nullaway/NullAway.java
+++ b/nullaway/src/main/java/com/uber/nullaway/NullAway.java
@@ -1433,6 +1433,9 @@
           ASTHelpers.getSymbol(entities.instanceInitializerMethods().iterator().next());
     }
     for (Symbol uninitField : notInitializedAtAll) {
+      if (errorBuilder.symbolHasSuppressInitializationWarningsAnnotation(uninitField)) {
+        continue;
+      }
       if (singleInitializerMethod != null) {
         // report it on the initializer
         errorFieldsForInitializer.put(singleInitializerMethod, uninitField);
diff --git a/nullaway/src/test/resources/com/uber/nullaway/testdata/CheckFieldInitNegativeCases.java b/nullaway/src/test/resources/com/uber/nullaway/testdata/CheckFieldInitNegativeCases.java
index e047c3b..9685f79 100644
--- a/nullaway/src/test/resources/com/uber/nullaway/testdata/CheckFieldInitNegativeCases.java
+++ b/nullaway/src/test/resources/com/uber/nullaway/testdata/CheckFieldInitNegativeCases.java
@@ -302,4 +302,21 @@
     @Initializer
     static void init() {}
   }
+
+  public class SuppressWarningsE {
+
+    @SuppressWarnings("NullAway.Init")
+    private Object f;
+
+    SuppressWarningsE(final Object f) {
+      this.setF(f);
+    }
+
+    @SuppressWarnings("NullAway.Init")
+    protected SuppressWarningsE() {}
+
+    public void setF(final Object f) {
+      this.f = f;
+    }
+  }
 }