These classes encapsulate the logic of accessing a field specified by the user as either an index
or a field expression string. TypeInformation can also be requested for the field.
The position index might specify a field of a Tuple, an array, or a simple type (only "0th field").
Field expressions that specify nested fields (e.g. "f1.a.foo") result in nested field accessors.
These penetrate one layer, and then delegate the rest of the work to an "innerAccesor".
(see PojoFieldAccessor, RecursiveTupleFieldAccessor, RecursiveProductFieldAccessor)
Sets the field (specified in the constructor) of the given record to the given value.
Warning: This might modify the original object, or might return a new object instance.
(This is necessary, because the record might be immutable.)
record - The record to modify
fieldValue - The new value of the field
A record that has the given field value. (this might be a new instance or the original)