public function create($owner, $repo, $path, $message, $content, $branch = 'master', $authorName = '', $authorEmail = '', $committerName = '',
		$committerEmail = ''
	)
	{
		// Build the request path.
		$route = '/repos/' . $owner . '/' . $repo . '/contents/' . $path;

		$data = array(
			'message' => $message,
			'content' => $content,
			'branch'  => $branch,
		);

		if ($authorName)
		{
			if (!$authorEmail)
			{
				throw new \UnexpectedValueException('You must provide an author e-mail if you supply an author name');
			}

			$data['author'] = array(
				'name'  => $authorName,
				'email' => $authorEmail,
			);
		}

		if ($committerName)
		{
			if (!$committerEmail)
			{
				throw new \UnexpectedValueException('You must provide a committer e-mail if you supply a committer name');
			}

			$data['committer'] = array(
				'name'  => $committerName,
				'email' => $committerEmail,
			);
		}

		return $this->processResponse($this->client->put($this->fetchUrl($route), json_encode($data)), 201);
	}