public function build($json)
    {
        $contract = \GuzzleHttp\json_decode($json, true);
        if (!isset($contract['protocol'])) {
            throw new \InvalidArgumentException('Invalid contract; Protocol is not specified');
        }

        return $this->getBuilder($contract['protocol'])->build($contract);
    }