public Listener(Plug plug, String address, int port, String base, NetworkSimulator simulator, ProxyPlugin[] plugins) throws IOException {
public Listener(Plug plug, String address, int port, String base, NetworkSimulator simulator, List plugins) throws IOException {
    public Listener(Plug plug, String address, int port, String base, NetworkSimulator simulator, ProxyPlugin[] plugins) throws IOException {        _plug = plug;                if (address == null) {            address = "*";        }        _address = address;        InetAddress addr;        if (address.equals("") || address.equals("*")) {            addr = null;        } else {            addr = InetAddress.getByName(address);        }        if (port < 1 || port > 65535) {            throw new IllegalArgumentException("port must be between 0 and 65536");        }        _port = port;        if (base != null) {            if (! base.startsWith("http")) {                throw new IllegalArgumentException("base must be null, or an http or https url");            }        }        _base = base;        _simulator = simulator;        _plugins = plugins;        _serversocket = new ServerSocket(port, 5, addr);                _logger.info("Proxy listening on " + address + ":" + port);                try {            _serversocket.setSoTimeout(100);        } catch (SocketException se) {            _logger.warning("Error setting sockettimeout " + se);            _logger.warning("It is likely that this listener will be unstoppable!");        }        Thread t = new Thread(this, "Listener-"+Integer.toString(port));        t.setDaemon(true);        t.start();    }