docs: public static void main(String[] args) throws TwitterException {
          if (args.length < 1) {
              System.out.println("Usage: java twitter4j.examples.PrintFilterStream [follow(comma separated numerical user ids)] [track(comma separated filter terms)]");
              System.exit(-1);
          }
  
          TwitterStream twitterStream = new TwitterStreamFactory().getInstance().addListener(new StatusListener() {
              @Override
              public void onStatus(Status status) {
                  System.out.println("@" + status.getUser().getScreenName() + " - " + status.getText());
              }
  
              @Override
              public void onDeletionNotice(StatusDeletionNotice statusDeletionNotice) {
                  System.out.println("Got a status deletion notice id:" + statusDeletionNotice.getStatusId());
              }
  
              @Override
              public void onTrackLimitationNotice(int numberOfLimitedStatuses) {
                  System.out.println("Got track limitation notice:" + numberOfLimitedStatuses);
              }
  
              @Override
              public void onScrubGeo(long userId, long upToStatusId) {
                  System.out.println("Got scrub_geo event userId:" + userId + " upToStatusId:" + upToStatusId);
              }
  
              @Override
              public void onStallWarning(StallWarning warning) {
                  System.out.println("Got stall warning:" + warning);
              }
  
              @Override
              public void onException(Exception ex) {
                  ex.printStackTrace();
              }
          });
  
          ArrayList<Long> follow = new ArrayList<Long>();
          ArrayList<String> track = new ArrayList<String>();
          for (String arg : args) {
              if (isNumericalArgument(arg)) {
                  for (String id : arg.split(",")) {
                      follow.add(Long.parseLong(id));
                  }
              } else {
                  track.addAll(Arrays.asList(arg.split(",")));
              }
          }
          long[] followArray = new long[follow.size()];
          for (int i = 0; i < follow.size(); i++) {
              followArray[i] = follow.get(i);
          }
          String[] trackArray = track.toArray(new String[track.size()]);
  
          // filter() method internally creates a thread which manipulates TwitterStream and calls these adequate listener methods continuously.
          twitterStream.filter(new FilterQuery(0, followArray, trackArray));
      }