private static IEnumerable<object[]> NonBinaryExpressionTypes()
{
yield return new object[] {ExpressionType.AddChecked};
yield return new object[] {ExpressionType.AndAlso};
yield return new object[] {ExpressionType.ArrayLength};
yield return new object[] {ExpressionType.ArrayIndex};
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.Invoke};
yield return new object[] {ExpressionType.Lambda};
yield return new object[] {ExpressionType.ListInit};
yield return new object[] {ExpressionType.MemberAccess};
yield return new object[] {ExpressionType.MemberInit};
yield return new object[] {ExpressionType.MultiplyChecked};
yield return new object[] {ExpressionType.Negate};
yield return new object[] {ExpressionType.UnaryPlus};
yield return new object[] {ExpressionType.NegateChecked};
yield return new object[] {ExpressionType.New};
yield return new object[] {ExpressionType.NewArrayInit};
yield return new object[] {ExpressionType.NewArrayBounds};
yield return new object[] {ExpressionType.Not};
yield return new object[] {ExpressionType.OrElse};
yield return new object[] {ExpressionType.Parameter};
yield return new object[] {ExpressionType.Quote};
yield return new object[] {ExpressionType.SubtractChecked};
yield return new object[] {ExpressionType.TypeAs};
yield return new object[] {ExpressionType.TypeIs};
yield return new object[] {ExpressionType.Assign};
yield return new object[] {ExpressionType.Block};
yield return new object[] {ExpressionType.DebugInfo};
yield return new object[] {ExpressionType.Decrement};
yield return new object[] {ExpressionType.Dynamic};
yield return new object[] {ExpressionType.Default};
yield return new object[] {ExpressionType.Goto};
yield return new object[] {ExpressionType.Increment};
yield return new object[] {ExpressionType.Index};
yield return new object[] {ExpressionType.Label};
yield return new object[] {ExpressionType.RuntimeVariables};
yield return new object[] {ExpressionType.Loop};
yield return new object[] {ExpressionType.Switch};
yield return new object[] {ExpressionType.Throw};
yield return new object[] {ExpressionType.Try};
yield return new object[] {ExpressionType.Unbox};
yield return new object[] {ExpressionType.AddAssignChecked};
yield return new object[] {ExpressionType.MultiplyAssignChecked};
yield return new object[] {ExpressionType.SubtractAssignChecked};
yield return new object[] {ExpressionType.PreIncrementAssign};
yield return new object[] {ExpressionType.PreDecrementAssign};
yield return new object[] {ExpressionType.PostIncrementAssign};
yield return new object[] {ExpressionType.PostDecrementAssign};
yield return new object[] {ExpressionType.TypeEqual};
yield return new object[] {ExpressionType.OnesComplement};
yield return new object[] {ExpressionType.IsTrue};
yield return new object[] {ExpressionType.IsFalse};
}