/**
  * {@inheritdoc}
  */
 public function __invoke($document, AccessFacade $access)
 {
     if ($access->isReadable($document, $this->path) && $access->get($document, $this->path) !== null) {
         throw new OperationException(sprintf('The path "%s" does already exist.', (string) $this->path));
     }
     $access->create($document, $this->path, $this->value);
     return $document;
 }
 /**
  * @dataProvider createDataProvider
  *
  * @param mixed  $expected
  * @param array  $document
  * @param string $path
  * @param mixed  $value
  * @param bool   $success
  */
 public function testCreate($expected, $document, $path, $value, $success)
 {
     if ($success) {
         $this->facade->create($document, new JsonPointer($path), $value);
         $this->assertEquals($expected, $document);
     } else {
         $this->setExpectedException('\\ChiliLabs\\JsonPointer\\Exception\\InvalidPathException');
         $this->facade->create($document, new JsonPointer($path), $value);
     }
 }