code: StatusStream getFilterStream(FilterQuery query) throws TwitterException {
          ensureAuthorizationEnabled();
          try {
              return new StatusStreamImpl(getDispatcher(), http.post(conf.getStreamBaseURL()
                      + "statuses/filter.json"
                      , query.asHttpParameterArray(stallWarningsParam), auth, null), conf);
          } catch (IOException e) {
              throw new TwitterException(e);
          }
      }
docs: Returns public statuses that match one or more filter predicates. At least one predicate parameter, follow, locations, or track must be specified. Multiple parameters may be specified which allows most clients to use a single connection to the Streaming API. Placing long parameters in the URL may cause the request to be rejected for excessive URL length.<br>
  The default access level allows up to 200 track keywords, 400 follow userids and 10 1-degree location boxes. Increased access levels allow 80,000 follow userids ("shadow" role), 400,000 follow userids ("birddog" role), 10,000 track keywords ("restricted track" role),  200,000 track keywords ("partner track" role), and 200 10-degree location boxes ("locRestricted" role). Increased track access levels also pass a higher proportion of statuses before limiting the stream.
  
  @param query Filter query
  @return StatusStream
  @throws TwitterException when Twitter service or network is unavailable
  @see twitter4j.StatusStream
  @see <a href="https://dev.twitter.com/docs/streaming-api/methods">Streaming API Methods | Twitter Developers</a>
  @since Twitter4J 2.1.2