code: int writeMethodParametersAttr(MethodSymbol m) {
          MethodType ty = m.externalType(types).asMethodType();
          final int allparams = ty.argtypes.size();
          if (m.params != null && allparams != 0) {
              final int attrIndex = writeAttr(names.MethodParameters);
              databuf.appendByte(allparams);
              // Write extra parameters first
              for (VarSymbol s : m.extraParams) {
                  final int flags =
                      ((int) s.flags() & (FINAL | SYNTHETIC | MANDATED)) |
                      ((int) m.flags() & SYNTHETIC);
                  databuf.appendChar(pool.put(s.name));
                  databuf.appendChar(flags);
              }
              // Now write the real parameters
              for (VarSymbol s : m.params) {
                  final int flags =
                      ((int) s.flags() & (FINAL | SYNTHETIC | MANDATED)) |
                      ((int) m.flags() & SYNTHETIC);
                  databuf.appendChar(pool.put(s.name));
                  databuf.appendChar(flags);
              }
              // Now write the captured locals
              for (VarSymbol s : m.capturedLocals) {
                  final int flags =
                      ((int) s.flags() & (FINAL | SYNTHETIC | MANDATED)) |
                      ((int) m.flags() & SYNTHETIC);
                  databuf.appendChar(pool.put(s.name));
                  databuf.appendChar(flags);
              }
              endAttr(attrIndex);
              return 1;
          } else
              return 0;
      }
docs: Write method parameter names attribute.