code: func (c *Runtime) GetPropertiesWithParams(v *RuntimeGetPropertiesParams) ([]*RuntimePropertyDescriptor, []*RuntimeInternalPropertyDescriptor, []*RuntimePrivatePropertyDescriptor, *RuntimeExceptionDetails, error) {
  	resp, err := gcdmessage.SendCustomReturn(c.target, c.target.GetSendCh(), &gcdmessage.ParamRequest{Id: c.target.GetId(), Method: "Runtime.getProperties", Params: v})
  	if err != nil {
  		return nil, nil, nil, nil, err
  	}
  
  	var chromeData struct {
  		Result struct {
  			Result             []*RuntimePropertyDescriptor
  			InternalProperties []*RuntimeInternalPropertyDescriptor
  			PrivateProperties  []*RuntimePrivatePropertyDescriptor
  			ExceptionDetails   *RuntimeExceptionDetails
  		}
  	}
  
  	if resp == nil {
  		return nil, nil, nil, nil, &gcdmessage.ChromeEmptyResponseErr{}
  	}
  
  	// test if error first
  	cerr := &gcdmessage.ChromeErrorResponse{}
  	json.Unmarshal(resp.Data, cerr)
  	if cerr != nil && cerr.Error != nil {
  		return nil, nil, nil, nil, &gcdmessage.ChromeRequestErr{Resp: cerr}
  	}
  
  	if err := json.Unmarshal(resp.Data, &chromeData); err != nil {
  		return nil, nil, nil, nil, err
  	}
  
  	return chromeData.Result.Result, chromeData.Result.InternalProperties, chromeData.Result.PrivateProperties, chromeData.Result.ExceptionDetails, nil
  }
docs: // GetPropertiesWithParams - Returns properties of a given object. Object group of the result is inherited from the target object.
  // Returns -  result - Object properties. internalProperties - Internal object properties (only of the element itself). privateProperties - Object private properties. exceptionDetails - Exception details.