public virtual ParameterExpression GetParameterExpression(ParameterExpressionNode node)
 {
     if(node == null)
         throw new ArgumentNullException("node");
     var key = node.Type.Name + Environment.NewLine + node.Name;
     return _parameterExpressions.GetOrAdd(key, k => Expression.Parameter(node.Type.ToType(this), node.Name));
 }
        protected override Expression VisitParameter(ParameterExpression node)
        {
            var parameterExpression = new ParameterExpressionNode(node.Name, node.Type, node.IsByRef);

            AddChild(parameterExpression);

            return(node);
        }
        public virtual ParameterExpression GetParameterExpression(ParameterExpressionNode node)
        {
            if (node == null)
            {
                throw new ArgumentNullException("node");
            }
            var key = node.Type.Name + Environment.NewLine + node.Name;

            return(_parameterExpressions.GetOrAdd(key, k => Expression.Parameter(node.Type.ToType(this), node.Name)));
        }