/**
  * @param string $remoteAddress
  * @return Gass\GoogleAnalyticsServerSide
  * @throws Gass\Exception\InvalidArgumentException
  */
 public function setRemoteAddress($remoteAddress)
 {
     $remoteAddress = $this->getAsString($remoteAddress, 'Remote Address');
     $ipValidator = new Validate\IpAddress();
     if (!$ipValidator->isValid($remoteAddress)) {
         throw new Exception\InvalidArgumentException('Remote Address validation errors: ' . implode(', ', $ipValidator->getMessages()));
     }
     $this->remoteAddress = $remoteAddress;
     Http\Http::setRemoteAddress($this->remoteAddress);
     if ($this->botInfo instanceof BotInfo\BotInfo) {
         $this->botInfo->setRemoteAddress($this->remoteAddress);
     }
     return $this;
 }