def METHOD_NAME(self):
    node = assertParseSimpleCommand(self, 'ls foo')
    self.assertEqual(2, len(node.words), node.words)
    print()
    print()
    CASES = [
        'ls [$x] $y core/a*.py',
        'local a=1',
        # What to do about these?
        # Resolve second word then?
        'builtin local a=1',
        'command local a=1',
        'typeset -"$@"',
        # array=(b c)',
        'local a=(1 2) "$@"',  # static then dynamic
        'readonly "$@" a=(1 2)',  # dynamic then static
        'declare -rx foo=bar spam=eggs a=(1 2)',
        'declare $binding',
        'declare $binding_with_spaces',
        # This can be parsed, but the builtin should reject it
        'export a=(1 2)',
        'export A=(["k"]=v)',
        # Hard test cases:
        #
        # command export foo=bar
        # builtin export foo=bar
        #
        # b=builtin c=command e=export binding='foo=bar'
        # $c $e $binding
        # $b $e $binding
    ]
    for case in CASES:
        print()
        print('\t%s' % case)
        node = assertParseSimpleCommand(self, case)
        ev = InitEvaluator()
        argv = ev.EvalWordSequence2(node.words, allow_assign=True)
        print()
        print('\tcmd_value:')
        print(argv)
        print()