/**
  *
  * @dataProvider invalidProvider
  */
 public function testInvalidValidate($class, $name, $exMessage)
 {
     try {
         $this->assertFalse(ModelAccessorValidator::validate($class, $name));
     } catch (\Exception $ex) {
         $this->assertContains($exMessage, $ex->getMessage());
     }
 }
 /**
  * Create a new PaymentForward.
  *
  * OPTIONS:
  * process_fees_address (string): Address to forward processing fees, if specified.
  *                                Allows you to receive a fee for your own services.
  * process_fees_satoshis (int): Fixed processing fee amount to be sent to the fee address. A fixed satoshi amount or a
  *                        percentage is required if a process_fees_address has been
  *                        specified.
  * process_fees_percent (float): Percentage of the transaction to be sent to the fee address. A fixed satoshi amount
  *                               or a percentage is required if a process_fees_address has been specified.
  * callback_url (url): The URL to call anytime a new payment is forwarded.
  * enable_confirmations (bool): Whether to also call the callback_url with subsequent confirmations of the
  *                              forwarding transactions. Automatically sets up a WebHook.
  * mining_fees_satoshis (int): Mining fee amount to include in the forwarding transaction, in satoshis. If not set,
  *                             defaults to 10,000.
  * transactions array[string]: History of forwarding transaction hashes for this payment forwarding request.
  *
  * @param string $destination
  * @param array $options
  * @param ApiContext $apiContext is the APIContext for this call. It can be used to pass dynamic configuration and credentials.
  * @param BlockCypherRestCall $restCall is the Rest Call Service that is used to make rest calls
  * @return PaymentForward
  */
 public function createForwardingAddress($destination, $options = array(), $apiContext = null, $restCall = null)
 {
     ArgumentValidator::validate($destination, 'destination');
     ArgumentArrayValidator::validate($options, 'options');
     $paymentForward = new PaymentForward();
     $paymentForward->setDestination($destination);
     // All options correspond to a setter
     foreach ($options as $option => $optionValue) {
         if (ModelAccessorValidator::validate($paymentForward, $this->convertToCamelCase($option))) {
             $setter = "set" . $this->convertToCamelCase($option);
             $paymentForward->{$setter}($optionValue);
         } else {
             throw new \InvalidArgumentException("Invalid option {$option}");
         }
     }
     return $this->create($paymentForward, $apiContext, $restCall);
 }
 /**
  * Magic Set Method
  *
  * @param $key
  * @param $value
  */
 public function __set($key, $value)
 {
     ModelAccessorValidator::validate($this, $this->convertToCamelCase($key));
     if (!is_array($value) && $value === null) {
         $this->__unset($key);
     } else {
         $this->_propMap[$key] = $value;
     }
 }