public function isAssignableFromValue($value)
    {
        if (!is_array($value))
            return false;
        foreach ($value as $key => $item)
        {
            if (!$this->itemType->isAssignableFromValue($item))
                return false;
            if (!$this->keyType->isAssignableFromValue($key))
                return false;
        }
        return true;
    }