private static IEnumerable<object[]> NonUnaryExpressionTypes()
{
yield return new object[] {ExpressionType.Add};
yield return new object[] {ExpressionType.AddAssign};
yield return new object[] {ExpressionType.AddAssignChecked};
yield return new object[] {ExpressionType.AddChecked};
yield return new object[] {ExpressionType.And};
yield return new object[] {ExpressionType.AndAlso};
yield return new object[] {ExpressionType.AndAssign};
yield return new object[] {ExpressionType.ArrayIndex};
yield return new object[] {ExpressionType.ArrayLength};
yield return new object[] {ExpressionType.Assign};
yield return new object[] {ExpressionType.Block};
yield return new object[] {ExpressionType.Call};
yield return new object[] {ExpressionType.Coalesce};
yield return new object[] {ExpressionType.Conditional};
yield return new object[] {ExpressionType.Constant};
yield return new object[] {ExpressionType.Convert};
yield return new object[] {ExpressionType.ConvertChecked};
yield return new object[] {ExpressionType.DebugInfo};
yield return new object[] {ExpressionType.Default};
yield return new object[] {ExpressionType.Divide};
yield return new object[] {ExpressionType.DivideAssign};
yield return new object[] {ExpressionType.Dynamic};
yield return new object[] {ExpressionType.Equal};
yield return new object[] {ExpressionType.ExclusiveOr};
yield return new object[] {ExpressionType.ExclusiveOrAssign};
yield return new object[] {ExpressionType.Goto};
yield return new object[] {ExpressionType.GreaterThan};
yield return new object[] {ExpressionType.GreaterThanOrEqual};
yield return new object[] {ExpressionType.Index};
yield return new object[] {ExpressionType.Invoke};
yield return new object[] {ExpressionType.Label};
yield return new object[] {ExpressionType.Lambda};
yield return new object[] {ExpressionType.LeftShift};
yield return new object[] {ExpressionType.LeftShiftAssign};
yield return new object[] {ExpressionType.LessThan};
yield return new object[] {ExpressionType.LessThanOrEqual};
yield return new object[] {ExpressionType.ListInit};
yield return new object[] {ExpressionType.Loop};
yield return new object[] {ExpressionType.MemberAccess};
yield return new object[] {ExpressionType.MemberInit};
yield return new object[] {ExpressionType.Modulo};
yield return new object[] {ExpressionType.ModuloAssign};
yield return new object[] {ExpressionType.Multiply};
yield return new object[] {ExpressionType.MultiplyAssign};
yield return new object[] {ExpressionType.MultiplyAssignChecked};
yield return new object[] {ExpressionType.MultiplyChecked};
yield return new object[] {ExpressionType.NegateChecked};
yield return new object[] {ExpressionType.New};
yield return new object[] {ExpressionType.NewArrayBounds};
yield return new object[] {ExpressionType.NewArrayInit};
yield return new object[] {ExpressionType.NotEqual};
yield return new object[] {ExpressionType.Or};
yield return new object[] {ExpressionType.OrAssign};
yield return new object[] {ExpressionType.OrElse};
yield return new object[] {ExpressionType.Parameter};
yield return new object[] {ExpressionType.PostDecrementAssign};
yield return new object[] {ExpressionType.PostIncrementAssign};
yield return new object[] {ExpressionType.Power};
yield return new object[] {ExpressionType.PowerAssign};
yield return new object[] {ExpressionType.PreDecrementAssign};
yield return new object[] {ExpressionType.PreIncrementAssign};
yield return new object[] {ExpressionType.Quote};
yield return new object[] {ExpressionType.RightShift};
yield return new object[] {ExpressionType.RightShiftAssign};
yield return new object[] {ExpressionType.RuntimeVariables};
yield return new object[] {ExpressionType.Subtract};
yield return new object[] {ExpressionType.SubtractAssign};
yield return new object[] {ExpressionType.SubtractAssignChecked};
yield return new object[] {ExpressionType.SubtractChecked};
yield return new object[] {ExpressionType.Switch};
yield return new object[] {ExpressionType.Throw};
yield return new object[] {ExpressionType.Try};
yield return new object[] {ExpressionType.TypeAs};
yield return new object[] {ExpressionType.TypeEqual};
yield return new object[] {ExpressionType.TypeIs};
yield return new object[] {ExpressionType.Unbox};
}