code: public <R> FlatMapOperator<T, R> flatMap(FlatMapFunction<T, R> flatMapper) {
  		if (flatMapper == null) {
  			throw new NullPointerException("FlatMap function must not be null.");
  		}
  
  		String callLocation = Utils.getCallLocationName();
  		TypeInformation<R> resultType = TypeExtractor.getFlatMapReturnTypes(flatMapper, getType(), callLocation, true);
  		return new FlatMapOperator<>(this, resultType, clean(flatMapper), callLocation);
  	}
docs: Applies a FlatMap transformation on a {@link DataSet}.
  
  <p>The transformation calls a {@link org.apache.flink.api.common.functions.RichFlatMapFunction} for each element of the DataSet.
  Each FlatMapFunction call can return any number of elements including none.
  
  @param flatMapper The FlatMapFunction that is called for each element of the DataSet.
  @return A FlatMapOperator that represents the transformed DataSet.
  
  @see org.apache.flink.api.common.functions.RichFlatMapFunction
  @see FlatMapOperator
  @see DataSet