To marshal any {@code T} to/from a native type, the marshaler for T to/from that native type also has to exist.
{@code T} can be either a T2[] where T2 is an object type, or a P[] where P is a built-in primitive (e.g. int[], float[], etc).
return new MarshalerArray(managedType, nativeType);
// support both ConcreteType[] and GenericType<ConcreteType>[] return managedType.getRawType().isArray(); // TODO: Should this recurse deeper and check that there is // a valid marshaler for the ConcreteType as well?