@param Option[] $options
@param string   $header
@param string   $footer

@return self
551096
public function showOptionsHelp(array $options, string $header = '', string $footer = ''): self
    {
        $this->showHelp('Options', $options, $header, $footer);

        return $this;
    }
761350
public function post($url, $params, $options = [], $headers = []) {
        return $this->makeCall('post', $url, $params, $options, $headers);
    }
151140
protected function addOptionalHeaders($options)
    {
        if (!empty($options['headers'])) {
            foreach ((array) $options['headers'] as $header) {
                list($name, $value) = array_pad((array) $header, 2, null);
                $this->addHeader($name, $value);
            }
        }

        return $this;
    }
1217555
public function beginFooter($options = [])
    {
        $this->_setBeginning(true);
        $this->footerOptions = ArrayHelper::merge($this->footerOptions, $options);
        ob_start();
    }
379604
public function panel($headingHtml, $bodyHtml = null, $footerHtml = null, $options = array()) {
		$defaults = array(
			'class' => 'panel-default', 'headingOptions' => array(), 'footerOptions' => array(), 'bodyOptions' => array(),
			'wrapHeading' => true, 'wrapFooter' => true, 'wrapBody' => true
		);
		if ($this->_blockRendering) {
			$options = $bodyHtml;
		}
		$options = Hash::merge($defaults, $options);
		$options = $this->addClass($options, 'panel');

		if (!$this->_blockRendering) {
			$heading = $options['wrapHeading'] ? $this->panelHeading($headingHtml, $options['headingOptions']) : $headingHtml;
                        $footer = $options['wrapFooter'] && $footerHtml ? $this->panelFooter($footerHtml, $options['footerOptions']) : $footerHtml;
			$body = $options['wrapBody'] ? $this->panelBody($bodyHtml, $options['bodyOptions']) : $bodyHtml;
			$html = $heading . $body . $footer;
		} else {
			$html = $headingHtml;
		}

		unset($options['headingOptions'], $options['footerOptions'], $options['bodyOptions'], $options['wrapFooter'], $options['wrapHeading'], $options['wrapBody']);
		return $this->tag('div', $html, $options);
	}
1003624
public static function post($url, $headers = array(), $data = array(), $options = array()) {
		return self::request($url, $headers, $data, self::POST, $options);
	}
528826
protected function buildResponse($data, $headers = [], $options = 0)
    {   
        $headers = array_merge($headers, $this->headers);

        $response = $data instanceof JsonResource
            ? $data->toResponse($this->request)
            : new JsonResponse($data, $this->getStatusCode(), $headers, $options);

        $response->setStatusCode($this->getStatusCode());

        return $response;
    }
1178133
private function drawFooter($pagina, array $options = array())
    {
        $this->_page->drawText($options['footer'], 40, 40, 'UTF-8');
        if (@$options['noPagination'] != 1) {
            $this->_page->drawText(' Página N. ' . $pagina . '/' . ($this->_totalPages), $this->_page->getWidth() - (strlen(' Página N. ') * $this->_cellFontSize) - 50, 40, 'UTF-8');
        }

        return $this;
    }
1216765
public function addHeader($name, $options)
    {
        $header = new Header($name, $options);
        $header->setTable($this);
        $this->headersObjects[$name] = $header;
    }
921235
public function setHeaders(array $headers = [], $append = true, $replaceExisting = true)
    {
        if (!$append) {
            $this->headers = $headers;
            return $this;
        }
        
        foreach ($headers as $key => $value) {
            /** If the header is already set then check if we can replace the value. */
            if (isset($this->headers[$key]) && (false == $replaceExisting)) {
                continue;
            }
            
            $this->headers[$key] = $value;
        }
        
        return $this;
    }
470043
public function setOptions($options)
    {
        if (!$options instanceof ModuleOptions) {
            $options = new ModuleOptions($options);
        }

        $this->options = $options;
        return $this;
    }
326315
public function options($options = [])
    {
        if ($options instanceof Arrayable) {
            $options = $options->toArray();
        }

        $this->options = array_merge($this->options, $options);

        return $this;
    }
127843
private function prepareOptions($body, array $query, array $headers, array $options)
    {
        $options = array_merge($options, [
            RequestOptions::QUERY => $query,
            RequestOptions::HEADERS => $headers,
        ]);

        if (!empty($body) && (is_array($body) || $body instanceof \JsonSerializable)) {
            $options[RequestOptions::JSON] = $body;
        } else {
            $options[RequestOptions::BODY] = $body;
        }

        return $options;
    }
64599
public void setFooter(HeaderFooter footer) {
        this.footer = footer;
        DocListener listener;
		for (Iterator iterator = listeners.iterator(); iterator.hasNext();) {
            listener = (DocListener) iterator.next();
            listener.setFooter(footer);
        }
    }
1046756
public function header($header, $value = null)
    {
        if (is_array($header)) {
            $this->option['header'] = $header;
        } else {
            $this->option['header'][$header] = $value;
        }

        return $this;
    }
487868
public static function options($url, $headers = [], $parameters = null)
    {
        return Request::create('default')->options($url, $headers, $parameters);
    }
1148424
public function showCommandsHelp(array $commands, string $header = '', string $footer = ''): self
    {
        $this->maxCmdName = $commands ? \max(\array_map(function (Command $cmd) {
            return \strlen($cmd->name());
        }, $commands)) : 0;

        $this->showHelp('Commands', $commands, $header, $footer);

        return $this;
    }