code: int writeParameterAttrs(MethodSymbol m) {
          boolean hasVisible = false;
          boolean hasInvisible = false;
          if (m.params != null) {
              for (VarSymbol s : m.params) {
                  for (Attribute.Compound a : s.getRawAttributes()) {
                      switch (types.getRetention(a)) {
                      case SOURCE: break;
                      case CLASS: hasInvisible = true; break;
                      case RUNTIME: hasVisible = true; break;
                      default: // /* fail soft */ throw new AssertionError(vis);
                      }
                  }
              }
          }
  
          int attrCount = 0;
          if (hasVisible) {
              int attrIndex = writeAttr(names.RuntimeVisibleParameterAnnotations);
              writeParamAnnotations(m, RetentionPolicy.RUNTIME);
              endAttr(attrIndex);
              attrCount++;
          }
          if (hasInvisible) {
              int attrIndex = writeAttr(names.RuntimeInvisibleParameterAnnotations);
              writeParamAnnotations(m, RetentionPolicy.CLASS);
              endAttr(attrIndex);
              attrCount++;
          }
          return attrCount;
      }
docs: Write method parameter annotations;
  return number of attributes written.