code: function addProperties() {
          $requiredProperties = [
              'api' => '\\'.$this->apiClassname,
              'parameters' => 'array',
              'response' => '\Amp\Artax\Response',
              'originalResponse'  => '\Amp\Artax\Response', 
          ];
  
          //TODO - deal with clashes between this and bits of the actual api
          foreach ($requiredProperties as $propertyName => $typehint) {
              $propertyGenerator = new PropertyGenerator($propertyName, null);
              $docBlock = new DocBlockGenerator('@var '.$typehint);
              $propertyGenerator->setDocBlock($docBlock);
              $this->classGenerator->addPropertyFromGenerator($propertyGenerator);
          }
  
          //We have to allow access to the last response for crappy APIs
          //that return information in the response headers.
          $docBlock = new DocBlockGenerator('Get the last response.');
          $body = 'return $this->response;';
  
          $methodGenerator = $this->createMethodGenerator('getResponse', $body, $docBlock, [], '\Amp\Artax\Response');
          $this->classGenerator->addMethodFromGenerator($methodGenerator);
  
          $docBlock = new DocBlockGenerator('Set the last response. This should only be used by the API class when the operation has been dispatched. Storing the response is required as some APIs store out-of-bound information in the headers e.g. rate-limit info, pagination that is not really part of the operation.');
          $body = '$this->response = $response;';
  
          $methodGenerator = $this->createMethodGenerator('setResponse', $body, $docBlock, [['response', 'Amp\Artax\Response']]);
          $this->classGenerator->addMethodFromGenerator($methodGenerator);
          
      }
docs: Add the properties to the Operation that are always present.