code: function normalizeMethodParameters(method) {
    if (method.parameters) {
      method.parameters.forEach(parameter => {
        let [parameterName, parameterType] = parameter.split(':');
  
        // If the parameter is optional, the name here will contain a '?'. We store whether the
        // parameter is optional and remove the '?' for comparison.
        let isOptional = false;
        if (parameterName.includes('?')) {
          isOptional = true;
          parameterName = parameterName.replace('?', '');
        }
  
        if (!method.params) {
          method.params = [];
        }
  
        let jsDocParam = method.params.find(p => p.name == parameterName);
  
        if (!jsDocParam) {
          jsDocParam = {name: parameterName};
          method.params.push(jsDocParam);
        }
  
        jsDocParam.type = parameterType.trim();
        jsDocParam.isOptional = isOptional;
      });
    }
  }
docs: The `parameters` property are the parameters extracted from TypeScript and are strings
  of the form "propertyName: propertyType" (literally what's written in the source).
  
  The `params` property is pulled from the `@param` JsDoc tag. We need to merge
  the information of these to get name + type + description.
  
  We will use the `params` property to store the final normalized form since it is already
  an object.