Merge "Add -showUnannotated"
diff --git a/src/com/google/doclava/ClassInfo.java b/src/com/google/doclava/ClassInfo.java
index f195246..2393c2c 100644
--- a/src/com/google/doclava/ClassInfo.java
+++ b/src/com/google/doclava/ClassInfo.java
@@ -919,7 +919,7 @@
    */
   public Collection<FieldInfo> filteredFields(Predicate<MemberInfo> predicate) {
     Set<FieldInfo> fields = new LinkedHashSet<>();
-    if (Doclava.showAnnotations.isEmpty()) {
+    if (Doclava.showUnannotated) {
       for (ClassInfo clazz : gatherAncestorClasses()) {
         if (!clazz.isInterface()) continue;
         for (FieldInfo field : clazz.getExhaustiveFields()) {
diff --git a/src/com/google/doclava/Doclava.java b/src/com/google/doclava/Doclava.java
index fdfc6c9..604caaf 100644
--- a/src/com/google/doclava/Doclava.java
+++ b/src/com/google/doclava/Doclava.java
@@ -105,6 +105,7 @@
   public static ArtifactTagger artifactTagger = new ArtifactTagger();
   public static HashSet<String> knownTags = new HashSet<String>();
   public static FederationTagger federationTagger = new FederationTagger();
+  public static boolean showUnannotated = false;
   public static Set<String> showAnnotations = new HashSet<String>();
   public static Set<String> hideAnnotations = new HashSet<String>();
   public static boolean showAnnotationOverridesVisibility = false;
@@ -254,6 +255,8 @@
         }
       } else if (a[0].equals("-keeplist")) {
         keepListFile = a[1];
+      } else if (a[0].equals("-showUnannotated")) {
+        showUnannotated = true;
       } else if (a[0].equals("-showAnnotation")) {
         showAnnotations.add(a[1]);
       } else if (a[0].equals("-hideAnnotation")) {
@@ -377,6 +380,12 @@
       }
     }
 
+    // If the caller has not explicitly requested that unannotated classes and members should be
+    // shown in the output then only show them if no annotations were provided.
+    if (!showUnannotated && showAnnotations.isEmpty()) {
+      showUnannotated = true;
+    }
+
     if (!readKnownTagsFiles(knownTags, knownTagsFiles)) {
       return false;
     }
@@ -771,6 +780,9 @@
     if (option.equals("-keeplist")) {
       return 2;
     }
+    if (option.equals("-showUnannotated")) {
+      return 1;
+    }
     if (option.equals("-showAnnotation")) {
       return 2;
     }
diff --git a/src/com/google/doclava/Stubs.java b/src/com/google/doclava/Stubs.java
index 078dd78..30d0f88 100644
--- a/src/com/google/doclava/Stubs.java
+++ b/src/com/google/doclava/Stubs.java
@@ -215,7 +215,7 @@
       }
     }
 
-    final boolean ignoreShown = Doclava.showAnnotations.isEmpty();
+    final boolean ignoreShown = Doclava.showUnannotated;
 
     // Write out the current API
     if (apiWriter != null) {