private function makeArray(Clazz $type, array &$value) { $toReturn = new ArrayValueCommand($type->getComponentType()); $this->identityMap->put($value, $toReturn); for ($i = 0, $j = ArrayType::getLength($value); $i < $j; $i++) { $arrayValue = ArrayType::get($value, $i); if (is_null($arrayValue)) { $toReturn->add(NullValueCommand::INSTANCE()); } else { $valueType = $type->getComponentType()->isPrimitive() ? $type->getComponentType() : Classes::classOfValue($arrayValue); $toReturn->add($this->makeValue($valueType, $arrayValue)); } } return $toReturn; }