protected override Expression VisitTypeBinary(TypeBinaryExpression node)
        {
            if (!(node.Expression is ParameterExpression))
            {
                return(base.VisitTypeBinary(node));
            }

            if (!object.ReferenceEquals(CurrentParameter, node.GetParameterExpression()))
            {
                return(base.VisitTypeBinary(node));
            }

            return(Expression.TypeIs
                   (
                       string.IsNullOrEmpty(ParentFullName)
                    ? NewParameter
                    : ExpressionHelpers.MemberAccesses(ParentFullName, NewParameter),
                       node.TypeOperand
                   ));
        }