code: protected FTPWrap _get(FTPConnection conn) throws IOException, ApplicationException {
  	FTPWrap wrap = null;
  
  	if (!conn.hasLoginData()) {
  	    if (StringUtil.isEmpty(conn.getName())) {
  		throw new ApplicationException("can't connect ftp server, missing connection definition");
  	    }
  
  	    wrap = wraps.get(conn.getName());
  	    if (wrap == null) {
  		throw new ApplicationException("can't connect ftp server, missing connection [" + conn.getName() + "]");
  	    }
  	    else if (!wrap.getClient().isConnected() || wrap.getConnection().getTransferMode() != conn.getTransferMode()) {
  		wrap.reConnect(conn.getTransferMode());
  	    }
  	    return wrap;
  	}
  	String name = conn.hasName() ? conn.getName() : "__noname__";
  
  	wrap = wraps.get(name);
  	if (wrap != null) {
  	    if (conn.loginEquals(wrap.getConnection())) {
  		return _get(new FTPConnectionImpl(name, null, null, null, conn.getPort(), conn.getTimeout(), conn.getTransferMode(), conn.isPassive(), conn.getProxyServer(),
  			conn.getProxyPort(), conn.getProxyUser(), conn.getProxyPassword(), conn.getFingerprint(), conn.getStopOnError(), conn.secure()));
  	    }
  	    disconnect(wrap.getClient());
  	}
  
  	wrap = new FTPWrap(conn);
  	wraps.put(name, wrap);
  
  	return wrap;
      }
docs: returns a client from given connection
  
  @param conn
  @return
  @return matching wrap
  @throws IOException
  @throws ApplicationException