public override MiddlewareParameter ToMiddlewareParam()
        {
            MiddlewareParameterDirection mwDirection = (MiddlewareParameterDirection)(int)Direction;
            List <MiddlewareParameter>   converted   = new List <MiddlewareParameter>();

            paramValue.ForEach(param => {
                StringParameter strParam = param as StringParameter;
                if (strParam != null)
                {
                    converted.Add(strParam.ToMiddlewareParam());
                }
                else
                {
                    ByteParameter byteParam = param as ByteParameter;
                    if (byteParam != null)
                    {
                        converted.Add(byteParam.ToMiddlewareParam());
                    }
                    else
                    {
                        MultiParameterResult multiParam = param as MultiParameterResult;
                        if (multiParam != null)
                        {
                            converted.Add(multiParam.ToMiddlewareParam());                            //down the rabbit hole we go
                        }
                    }
                }
            });
            return(new MiddlewareParameter <List <MiddlewareParameter> >(base.ParameterName, converted, mwDirection));
        }