private BoundExpression TypeTestAndCopyToTemp(BoundExpression input, BoundExpression temp)
            {
                // invariant: the input has already been tested, to ensure it is not null
                if (input == temp)
                {
                    return(_factory.Literal(true));
                }

                Debug.Assert(temp.Kind == BoundKind.Local);
                return(LocalRewriter.MakeDeclarationPattern(_factory.Syntax, input, temp, requiresNullTest: false));
            }