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);
                }
            }
        }