public static DTObject Transform(DTObject arg)
        {
            //{component,action,argument:{elements:[{id,name,metadata}]}}
            DTObject result = DTObject.CreateReusable();
            DTObject sender = DTObject.CreateReusable();

            foreach (var p in arg.GetDictionary())
            {
                var name  = p.Key;
                var value = p.Value;
                switch (name)
                {
                case "pagination[page]":
                {
                    sender["metadata.page"] = value;
                    break;
                }

                case "pagination[pages]":
                {
                    sender["metadata.pages"] = value;
                    break;
                }

                case "pagination[perpage]":
                {
                    sender["metadata.perpage"] = value;
                    break;
                }

                case "pagination[total]":
                {
                    sender["metadata.total"] = value;
                    break;
                }

                case "sort[field]":
                {
                    sender["metadata.sort.field"] = value;
                    break;
                }

                case "sort[sort]":
                {
                    sender["metadata.sort.sort"] = value;
                    break;
                }

                case "info[component]":
                {
                    result["component"] = value;
                    break;
                }

                case "info[action]":
                {
                    result["action"] = value;
                    break;
                }

                case "info[senderId]":
                {
                    sender["id"] = value;
                    break;
                }

                case "info[senderName]":
                {
                    sender["name"] = value;
                    break;
                }

                case "info[dates]":
                {
                    sender["metadata.dates"] = GetArray(value);
                    break;
                }

                case "info[datetimes]":
                {
                    sender["metadata.datetimes"] = GetArray(value);
                    break;
                }

                default:
                {
                    FillQuery(sender, name, value);
                    break;
                }
                }
            }
            result.SetObject("argument.sender", sender);
            return(result);
        }