public static JsBinaryExpression LogicalOr(JsExpression left, JsExpression right)
 {
     return(Binary(ExpressionNodeType.LogicalOr, left, right));
 }
 public static JsUnaryExpression PostfixMinusMinus(JsExpression operand)
 {
     return(Unary(ExpressionNodeType.PostfixMinusMinus, operand));
 }
 public static JsUnaryExpression Void(JsExpression operand)
 {
     return(Unary(ExpressionNodeType.Void, operand));
 }
 public static JsUnaryExpression TypeOf(JsExpression operand)
 {
     return(Unary(ExpressionNodeType.TypeOf, operand));
 }
 public static JsUnaryExpression Positive(JsExpression operand)
 {
     return(Unary(ExpressionNodeType.Positive, operand));
 }
 /// <summary>
 /// Creates an expression to access a member. If the member is a valid JS identifier, will return target.member, otherwise returns traget["member"].
 /// </summary>
 public static JsExpression Member(JsExpression target, string member)
 {
     return(member.IsValidJavaScriptIdentifier() ? (JsExpression)MemberAccess(target, member) : Index(target, JsExpression.String(member)));
 }
 public static JsNewExpression New(JsExpression constructor, params JsExpression[] arguments)
 {
     return(New(constructor, (IEnumerable <JsExpression>)arguments));
 }
 public static JsBinaryExpression Index(JsExpression left, JsExpression right)
 {
     return(Binary(ExpressionNodeType.Index, left, right));
 }
 public static JsBinaryExpression DivideAssign(JsExpression left, JsExpression right)
 {
     return(Binary(ExpressionNodeType.DivideAssign, left, right));
 }
 public static JsBinaryExpression Multiply(JsExpression left, JsExpression right)
 {
     return(Binary(ExpressionNodeType.Multiply, left, right));
 }
 public static JsBinaryExpression NotSame(JsExpression left, JsExpression right)
 {
     return(Binary(ExpressionNodeType.NotSame, left, right));
 }
 public static JsBinaryExpression Add(JsExpression left, JsExpression right)
 {
     return(Binary(ExpressionNodeType.Add, left, right));
 }
 public static JsBinaryExpression Equal(JsExpression left, JsExpression right)
 {
     return(Binary(ExpressionNodeType.Equal, left, right));
 }
 public static JsBinaryExpression Greater(JsExpression left, JsExpression right)
 {
     return(Binary(ExpressionNodeType.Greater, left, right));
 }
 public static JsInvocationExpression Invocation(JsExpression method, params JsExpression[] arguments)
 {
     return(Invocation(method, (IEnumerable <JsExpression>)arguments));
 }
 public static JsBinaryExpression ModuloAssign(JsExpression left, JsExpression right)
 {
     return(Binary(ExpressionNodeType.ModuloAssign, left, right));
 }
 public static JsMemberAccessExpression MemberAccess(JsExpression target, string member)
 {
     return(new JsMemberAccessExpression(target, member));
 }
 public static JsBinaryExpression SubtractAssign(JsExpression left, JsExpression right)
 {
     return(Binary(ExpressionNodeType.SubtractAssign, left, right));
 }
 public static JsNewExpression New(JsExpression constructor, IEnumerable <JsExpression> arguments)
 {
     return(new JsNewExpression(constructor, arguments));
 }
 public static JsBinaryExpression LeftShiftAssign(JsExpression left, JsExpression right)
 {
     return(Binary(ExpressionNodeType.LeftShiftAssign, left, right));
 }
 public static JsUnaryExpression Unary(ExpressionNodeType nodeType, JsExpression operand)
 {
     return(new JsUnaryExpression(nodeType, operand));
 }
 public static JsBinaryExpression RightShiftUnsignedAssign(JsExpression left, JsExpression right)
 {
     return(Binary(ExpressionNodeType.RightShiftUnsignedAssign, left, right));
 }
 public static JsUnaryExpression LogicalNot(JsExpression operand)
 {
     return(Unary(ExpressionNodeType.LogicalNot, operand));
 }
 public static JsBinaryExpression BitwiseXorAssign(JsExpression left, JsExpression right)
 {
     return(Binary(ExpressionNodeType.BitwiseXorAssign, left, right));
 }
 public static JsUnaryExpression PrefixPlusPlus(JsExpression operand)
 {
     return(Unary(ExpressionNodeType.PrefixPlusPlus, operand));
 }
 public static JsConditionalExpression Conditional(JsExpression test, JsExpression truePart, JsExpression falsePart)
 {
     return(new JsConditionalExpression(test, truePart, falsePart));
 }
 public static JsUnaryExpression Delete(JsExpression operand)
 {
     return(Unary(ExpressionNodeType.Delete, operand));
 }
 public static JsInvocationExpression Invocation(JsExpression method, IEnumerable <JsExpression> arguments)
 {
     return(new JsInvocationExpression(method, arguments));
 }
 public static JsUnaryExpression BitwiseNot(JsExpression operand)
 {
     return(Unary(ExpressionNodeType.BitwiseNot, operand));
 }
 public static JsBinaryExpression Binary(ExpressionNodeType nodeType, JsExpression left, JsExpression right)
 {
     return(new JsBinaryExpression(nodeType, left, right));
 }