<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def run(self, args):
 """Runs the emulator command. Args: self (EmulatorCommand):
 the ``EmulatorCommand`` instance args (Namespace):
 arguments to parse Returns: ``None`` """

        jlink = pylink.JLink()

        if args.test:
            if jlink.test():
                print('Self-test succeeded.')
            else:
                print('Self-test failed.')
        elif args.list is None or args.list in ['usb', 'ip']:
            host = pylink.JLinkHost.USB_OR_IP
            if args.list == 'usb':
                host = pylink.JLinkHost.USB
            elif args.list == 'ip':
                host = pylink.JLinkHost.IP

            emulators = jlink.connected_emulators(host)
            for (index, emulator) in enumerate(emulators):
                if index > 0:
                    print('')

                print('Product Name: %s' % emulator.acProduct.decode())
                print('Serial Number: %s' % emulator.SerialNumber)

                usb = bool(emulator.Connection)
                if not usb:
                    print('Nickname: %s' % emulator.acNickname.decode())
                    print('Firmware: %s' % emulator.acFWString.decode())

                print('Connection: %s' % ('USB' if usb else 'IP'))

                if not usb:
                    print('IP Address: %s' % emulator.aIPAddr)
        elif args.supported is not None:
            device = args.supported[0]
            num_supported_devices = jlink.num_supported_devices()
            for i in range(num_supported_devices):
                found_device = jlink.supported_device(i)
                if device.lower() == found_device.name.lower():
                    print('Device Name: %s' % device)
                    print('Core ID: %s' % found_device.CoreId)
                    print('Flash Address: %s' % found_device.FlashAddr)
                    print('Flash Size: %s bytes' % found_device.FlashSize)
                    print('RAM Address: %s' % found_device.RAMAddr)
                    print('RAM Size: %s bytes' % found_device.RAMSize)
                    print('Manufacturer: %s' % found_device.manufacturer)
                    break
            else:
                print('%s is not supported :(' % device)

        return None