code: public static <T> TypeInformation<T> POJO(Class<T> pojoClass) {
  		final TypeInformation<T> ti = TypeExtractor.createTypeInfo(pojoClass);
  		if (ti instanceof PojoTypeInfo) {
  			return ti;
  		}
  		throw new InvalidTypesException("POJO type expected but was: " + ti);
  	}
docs: Returns type information for a POJO (Plain Old Java Object).
  
  <p>A POJO class is public and standalone (no non-static inner class). It has a public no-argument
  constructor. All non-static, non-transient fields in the class (and all superclasses) are either public
  (and non-final) or have a public getter and a setter method that follows the Java beans naming
  conventions for getters and setters.
  
  <p>A POJO is a fixed-length and null-aware composite type. Every field can be null independent
  of the field's type.
  
  <p>The generic types for all fields of the POJO can be defined in a hierarchy of subclasses.
  
  <p>If Flink's type analyzer is unable to extract a valid POJO type information with
  type information for all fields, an {@link org.apache.flink.api.common.functions.InvalidTypesException}
  is thrown. Alternatively, you can use {@link Types#POJO(Class, Map)} to specify all fields manually.
  
  @param pojoClass POJO class to be analyzed by Flink