private static void CheckDeconstructLambda(Expression body, IList <ParameterExpression> parameters) { if (body.Type != typeof(void)) { throw Error.DeconstructionShouldReturnVoid(); } if (parameters.Count < 3) { throw Error.DeconstructionShouldHaveThreeOrMoreParameters(); } for (int i = 1, n = parameters.Count; i < n; i++) { if (!parameters[i].IsByRef) { throw Error.DeconstructionParameterShouldBeByRef(i); } } }