code: private String getParameterJSDocName(Node paramNode, int paramIndex) {
      Node nameNode = null;
      if (paramNode != null) {
        checkArgument(paramNode.getParent().isParamList(), paramNode);
        if (paramNode.isRest()) {
          // use `restParam` of `...restParam`
          // restParam might still be a destructuring pattern
          paramNode = paramNode.getOnlyChild();
        } else if (paramNode.isDefaultValue()) {
          // use `defaultParam` of `defaultParam = something`
          // defaultParam might still be a destructuring pattern
          paramNode = paramNode.getFirstChild();
        }
        if (paramNode.isName()) {
          nameNode = paramNode;
        } else {
          checkState(paramNode.isObjectPattern() || paramNode.isArrayPattern(), paramNode);
          nameNode = null; // must generate a fake name
        }
      }
      if (nameNode == null) {
        return "p" + paramIndex;
      } else {
        checkState(nameNode.isName(), nameNode);
        return nameNode.getString();
      }
    }
docs: Return the name of the parameter to be used in JSDoc, generating one for destructuring
  parameters.
  
  @param paramNode child node of a parameter list
  @param paramIndex position of child in the list
  @return name to use in JSDoc