public function append($key, $value = null)
    {
        if (is_array($key)) {
            array_map([$this, __METHOD__], array_keys($key), $key);

            return $this;
        }

        $existing = $this->get($key);

        if (in_array($key, $this->toBeExploded)) {
            $existing = explode(' ', $existing);
            $value = is_array($value) ? $value : explode(' ', $value);
        }

        if (is_string($existing) && is_string($value)) {
            $value = $existing . ' ' . trim($value);
        } elseif (!is_null($existing)) {
            $value = array_merge((array)$existing, (array)$value);
        }

        $this->add($key, $value);

        return $this;
    }