code: int writeJavaAnnotations(List<Attribute.Compound> attrs) {
          if (attrs.isEmpty()) return 0;
          ListBuffer<Attribute.Compound> visibles = new ListBuffer<Attribute.Compound>();
          ListBuffer<Attribute.Compound> invisibles = new ListBuffer<Attribute.Compound>();
          for (Attribute.Compound a : attrs) {
              switch (types.getRetention(a)) {
              case SOURCE: break;
              case CLASS: invisibles.append(a); break;
              case RUNTIME: visibles.append(a); break;
              default: ;// /* fail soft */ throw new AssertionError(vis);
              }
          }
  
          int attrCount = 0;
          if (visibles.length() != 0) {
              int attrIndex = writeAttr(names.RuntimeVisibleAnnotations);
              databuf.appendChar(visibles.length());
              for (Attribute.Compound a : visibles)
                  writeCompoundAttribute(a);
              endAttr(attrIndex);
              attrCount++;
          }
          if (invisibles.length() != 0) {
              int attrIndex = writeAttr(names.RuntimeInvisibleAnnotations);
              databuf.appendChar(invisibles.length());
              for (Attribute.Compound a : invisibles)
                  writeCompoundAttribute(a);
              endAttr(attrIndex);
              attrCount++;
          }
          return attrCount;
      }
docs: Write Java-language annotations; return number of JVM
  attributes written (zero or one).