/**
  * Creates a new array type object, if the given type name is one of an array type.
  *
  * @param string $name The name of an array type
  *
  * @return ckXsdArrayType The array type object
  */
 public static function create($name)
 {
     if (self::isArrayType($name)) {
         $elementTypeName = substr($name, 0, -strlen(self::ARRAY_SUFFIX));
         $elementType = ckXsdType::get($elementTypeName);
         if (!is_null($elementType)) {
             return new ckXsdArrayType(ckString::ucfirst($elementType->getName()) . self::NAME_SUFFIX, ckXsdNamespace::get('tns'), $elementType);
         }
     }
     return null;
 }
 public function setPropertyValue($object, $property, $value)
 {
     if (is_array($value) && ckString::endsWith($property, 's')) {
         $method = 'add' . ckString::ucfirst(substr($property, 0, -1));
         if (!$this->getClass()->hasMethod($method)) {
             throw new InvalidArgumentException();
         }
         foreach ($value as $item) {
             call_user_func_array(array($object, $method), array($item));
         }
     } else {
         parent::setPropertyValue($object, $property, $value);
     }
 }
 /**
  * Gets the setter method name for a given property name.
  *
  * @param string $property A property name
  *
  * @return string The setter method name
  */
 protected function getSetterName($property)
 {
     return 'set' . ckString::ucfirst($property);
 }