docs: synchronized void start() throws BindException{
          if(status.equals("started"))
              return;
          long t = System.currentTimeMillis();
  
          //starting server socket
          int port = portMin;
          for(;port<=portMax;port++){
              try{
                  if(Objects.isNullOrEmpty(address))
                      serverSocket = new ServerSocket(port);
                  else
                      serverSocket = new ServerSocket(port,50,InetAddress.getByName(address));
                  break;
              }catch(BindException e){
              }catch (Exception e){
                  throw new IllegalStateException(e.getMessage(),e);
              }
          }
          if(serverSocket==null){
              throw new BindException("Cannot bind FileServer to port range ["+portMin+":"+portMax+"]");
          }
  
          run = true;
  
          executor = Executors.newFixedThreadPool(threads,new ThreadFactory() {
              private AtomicInteger i = new AtomicInteger(-1);
              @Override
              public Thread newThread(Runnable r) {
                  return new Thread(r, "FileExchangeThread-"+i.incrementAndGet());
              }
          });
  
          new Thread(new FileServer(),"FileExchangeServerThread").start();
  
          status = "started";
          LOG.info("Node "+nodeId+" file server started ("+(System.currentTimeMillis()-t)+" ms.) on port "+port+" with "+threads+" threads");
      }