internal static System.Linq.Expressions.Expression TransformUnaryExpression(this IQueryVisitor visitor, System.Linq.Expressions.Expression sourceExpression) { System.Linq.Expressions.Expression result = sourceExpression; if (sourceExpression is System.Linq.Expressions.UnaryExpression) { System.Linq.Expressions.UnaryExpression unaryExpression = (System.Linq.Expressions.UnaryExpression)sourceExpression; if (unaryExpression.NodeType == System.Linq.Expressions.ExpressionType.TypeAs) { System.Linq.Expressions.Expression expression = visitor.TransformPredicateExpression(unaryExpression.Operand); if (expression != sourceExpression) { object item; if (!TransformedExpressionsCache.TryGetValue(sourceExpression, out item)) { TransformedExpressionsCache[sourceExpression] = result = expression; } else { result = (System.Linq.Expressions.Expression)item; } } } } return(result); }