docs: public static void main(String[] args) throws Exception {
  
  		// Checking input parameters
  		final ParameterTool params = ParameterTool.fromArgs(args);
  		System.out.println("Usage: TwitterExample [--output <path>] " +
  				"[--twitter-source.consumerKey <key> --twitter-source.consumerSecret <secret> --twitter-source.token <token> --twitter-source.tokenSecret <tokenSecret>]");
  
  		// set up the execution environment
  		StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
  
  		// make parameters available in the web interface
  		env.getConfig().setGlobalJobParameters(params);
  
  		env.setParallelism(params.getInt("parallelism", 1));
  
  		// get input data
  		DataStream<String> streamSource;
  		if (params.has(TwitterSource.CONSUMER_KEY) &&
  				params.has(TwitterSource.CONSUMER_SECRET) &&
  				params.has(TwitterSource.TOKEN) &&
  				params.has(TwitterSource.TOKEN_SECRET)
  				) {
  			streamSource = env.addSource(new TwitterSource(params.getProperties()));
  		} else {
  			System.out.println("Executing TwitterStream example with default props.");
  			System.out.println("Use --twitter-source.consumerKey <key> --twitter-source.consumerSecret <secret> " +
  					"--twitter-source.token <token> --twitter-source.tokenSecret <tokenSecret> specify the authentication info.");
  			// get default test text data
  			streamSource = env.fromElements(TwitterExampleData.TEXTS);
  		}
  
  		DataStream<Tuple2<String, Integer>> tweets = streamSource
  				// selecting English tweets and splitting to (word, 1)
  				.flatMap(new SelectEnglishAndTokenizeFlatMap())
  				// group by words and sum their occurrences
  				.keyBy(0).sum(1);
  
  		// emit result
  		if (params.has("output")) {
  			tweets.writeAsText(params.get("output"));
  		} else {
  			System.out.println("Printing result to stdout. Use --output to specify output path.");
  			tweets.print();
  		}
  
  		// execute program
  		env.execute("Twitter Streaming Example");
  	}