code: func (p *parser) parseParameters(elementKind string) (*ast.Parameters, bool, error) {
  	_, args, trailingComma, err := p.parseArguments(elementKind)
  	if err != nil {
  		return nil, false, err
  	}
  	var params ast.Parameters
  	for _, arg := range args.Positional {
  		id, ok := astVarToIdentifier(arg)
  		if !ok {
  			return nil, false, MakeStaticError(fmt.Sprintf("Expected simple identifier but got a complex expression."), *arg.Loc())
  		}
  		params.Required = append(params.Required, *id)
  	}
  	for _, arg := range args.Named {
  		params.Optional = append(params.Optional, ast.NamedParameter{Name: arg.Name, DefaultArg: arg.Arg})
  	}
  	return &params, trailingComma, nil
  }
docs: // TODO(sbarzowski) - this returned bool is weird