code: @SafeVarargs
  	public final <OUT> DataStreamSource<OUT> fromElements(OUT... data) {
  		if (data.length == 0) {
  			throw new IllegalArgumentException("fromElements needs at least one element as argument");
  		}
  
  		TypeInformation<OUT> typeInfo;
  		try {
  			typeInfo = TypeExtractor.getForObject(data[0]);
  		}
  		catch (Exception e) {
  			throw new RuntimeException("Could not create TypeInformation for type " + data[0].getClass().getName()
  					+ "; please specify the TypeInformation manually via "
  					+ "StreamExecutionEnvironment#fromElements(Collection, TypeInformation)", e);
  		}
  		return fromCollection(Arrays.asList(data), typeInfo);
  	}
docs: Creates a new data stream that contains the given elements. The elements must all be of the
  same type, for example, all of the {@link String} or {@link Integer}.
  
  <p>The framework will try and determine the exact type from the elements. In case of generic
  elements, it may be necessary to manually supply the type information via
  {@link #fromCollection(java.util.Collection, org.apache.flink.api.common.typeinfo.TypeInformation)}.
  
  <p>Note that this operation will result in a non-parallel data stream source, i.e. a data
  stream source with a degree of parallelism one.
  
  @param data
  The array of elements to create the data stream from.
  @param <OUT>
  The type of the returned data stream
  @return The data stream representing the given array of elements