original_string: private function writeProperty($zval, $property, $value)
      {
          if (!\is_object($zval[self::VALUE])) {
              throw new NoSuchPropertyException(sprintf('Cannot write property "%s" to an array. Maybe you should write the property path as "[%1$s]" instead?', $property));
          }
  
          $object = $zval[self::VALUE];
          $access = $this->getWriteAccessInfo(\get_class($object), $property, $value);
  
          if (self::ACCESS_TYPE_METHOD === $access[self::ACCESS_TYPE]) {
              $object->{$access[self::ACCESS_NAME]}($value);
          } elseif (self::ACCESS_TYPE_PROPERTY === $access[self::ACCESS_TYPE]) {
              $object->{$access[self::ACCESS_NAME]} = $value;
          } elseif (self::ACCESS_TYPE_ADDER_AND_REMOVER === $access[self::ACCESS_TYPE]) {
              $this->writeCollection($zval, $property, $value, $access[self::ACCESS_ADDER], $access[self::ACCESS_REMOVER]);
          } elseif (!$access[self::ACCESS_HAS_PROPERTY] && property_exists($object, $property)) {
              // Needed to support \stdClass instances. We need to explicitly
              // exclude $access[self::ACCESS_HAS_PROPERTY], otherwise if
              // a *protected* property was found on the class, property_exists()
              // returns true, consequently the following line will result in a
              // fatal error.
  
              $object->$property = $value;
          } elseif (self::ACCESS_TYPE_MAGIC === $access[self::ACCESS_TYPE]) {
              $object->{$access[self::ACCESS_NAME]}($value);
          } elseif (self::ACCESS_TYPE_NOT_FOUND === $access[self::ACCESS_TYPE]) {
              throw new NoSuchPropertyException(sprintf('Could not determine access type for property "%s" in class "%s"%s', $property, \get_class($object), isset($access[self::ACCESS_NAME]) ? ': '.$access[self::ACCESS_NAME] : '.'));
          } else {
              throw new NoSuchPropertyException($access[self::ACCESS_NAME]);
          }
      }
code: private function writeProperty($zval, $property, $value)
      {
          if (!\is_object($zval[self::VALUE])) {
              throw new NoSuchPropertyException(sprintf('Cannot write property "%s" to an array. Maybe you should write the property path as "[%1$s]" instead?', $property));
          }
  
          $object = $zval[self::VALUE];
          $access = $this->getWriteAccessInfo(\get_class($object), $property, $value);
  
          if (self::ACCESS_TYPE_METHOD === $access[self::ACCESS_TYPE]) {
              $object->{$access[self::ACCESS_NAME]}($value);
          } elseif (self::ACCESS_TYPE_PROPERTY === $access[self::ACCESS_TYPE]) {
              $object->{$access[self::ACCESS_NAME]} = $value;
          } elseif (self::ACCESS_TYPE_ADDER_AND_REMOVER === $access[self::ACCESS_TYPE]) {
              $this->writeCollection($zval, $property, $value, $access[self::ACCESS_ADDER], $access[self::ACCESS_REMOVER]);
          } elseif (!$access[self::ACCESS_HAS_PROPERTY] && property_exists($object, $property)) {
              // Needed to support \stdClass instances. We need to explicitly
              // exclude $access[self::ACCESS_HAS_PROPERTY], otherwise if
              // a *protected* property was found on the class, property_exists()
              // returns true, consequently the following line will result in a
              // fatal error.
  
              $object->$property = $value;
          } elseif (self::ACCESS_TYPE_MAGIC === $access[self::ACCESS_TYPE]) {
              $object->{$access[self::ACCESS_NAME]}($value);
          } elseif (self::ACCESS_TYPE_NOT_FOUND === $access[self::ACCESS_TYPE]) {
              throw new NoSuchPropertyException(sprintf('Could not determine access type for property "%s" in class "%s"%s', $property, \get_class($object), isset($access[self::ACCESS_NAME]) ? ': '.$access[self::ACCESS_NAME] : '.'));
          } else {
              throw new NoSuchPropertyException($access[self::ACCESS_NAME]);
          }
      }
code_tokens: private function writeProperty ( $ zval , $ property , $ value ) { if ( ! \ is_object ( $ zval [ self :: VALUE ] ) ) { throw new NoSuchPropertyException ( sprintf ( 'Cannot write property "%s" to an array. Maybe you should write the property path as "[%1$s]" instead?' , $ property ) ) ; } $ object = $ zval [ self :: VALUE ] ; $ access = $ this -> getWriteAccessInfo ( \ get_class ( $ object ) , $ property , $ value ) ; if ( self :: ACCESS_TYPE_METHOD === $ access [ self :: ACCESS_TYPE ] ) { $ object -> { $ access [ self :: ACCESS_NAME ] } ( $ value ) ; } elseif ( self :: ACCESS_TYPE_PROPERTY === $ access [ self :: ACCESS_TYPE ] ) { $ object -> { $ access [ self :: ACCESS_NAME ] } = $ value ; } elseif ( self :: ACCESS_TYPE_ADDER_AND_REMOVER === $ access [ self :: ACCESS_TYPE ] ) { $ this -> writeCollection ( $ zval , $ property , $ value , $ access [ self :: ACCESS_ADDER ] , $ access [ self :: ACCESS_REMOVER ] ) ; } elseif ( ! $ access [ self :: ACCESS_HAS_PROPERTY ] && property_exists ( $ object , $ property ) ) { // Needed to support \stdClass instances. We need to explicitly // exclude $access[self::ACCESS_HAS_PROPERTY], otherwise if // a *protected* property was found on the class, property_exists() // returns true, consequently the following line will result in a // fatal error. $ object -> $ property = $ value ; } elseif ( self :: ACCESS_TYPE_MAGIC === $ access [ self :: ACCESS_TYPE ] ) { $ object -> { $ access [ self :: ACCESS_NAME ] } ( $ value ) ; } elseif ( self :: ACCESS_TYPE_NOT_FOUND === $ access [ self :: ACCESS_TYPE ] ) { throw new NoSuchPropertyException ( sprintf ( 'Could not determine access type for property "%s" in class "%s"%s' , $ property , \ get_class ( $ object ) , isset ( $ access [ self :: ACCESS_NAME ] ) ? ': ' . $ access [ self :: ACCESS_NAME ] : '.' ) ) ; } else { throw new NoSuchPropertyException ( $ access [ self :: ACCESS_NAME ] ) ; } }
docstring: Sets the value of a property in the given object.
  
  @param array  $zval     The array containing the object to write to
  @param string $property The property to write
  @param mixed  $value    The value to write
  
  @throws NoSuchPropertyException if the property does not exist or is not public
docstring_tokens: Sets the value of a property in the given object .