protected function configureValueParamForQuery($obj_val, $mix_value)
    {
        $str_type = gettype($mix_value);
        switch($str_type) {
            case 'boolean':
                $obj_val->setBooleanValue($mix_value);
                break;

            case 'integer':
                $obj_val->setIntegerValue($mix_value);
                break;

            case 'double':
                $obj_val->setDoubleValue($mix_value);
                break;

            case 'string':
                $obj_val->setStringValue($mix_value);
                break;

            case 'array':
                throw new \InvalidArgumentException('Unexpected array parameter');

            case 'object':
                $this->configureObjectValueParamForQuery($obj_val, $mix_value);
                break;

            case 'NULL':
                $obj_val->setStringValue(null);
                break;

            case 'resource':
            case 'unknown type':
            default:
                throw new \InvalidArgumentException('Unsupported parameter type: ' . $str_type);
        }
        return $obj_val;
    }