code: public Type.Array selectArray(Type target, Expr expr, Environment environment) {
  		Type.Array type = asType(expr.getType(), Type.Array.class);
  		Type.Array[] records = TYPE_ARRAY_FILTER.apply(target);
  		return selectCandidate(records, type, environment);
  	}
docs: <p>
  Given an arbitrary target type, filter out the target array types. For
  example, consider the following method:
  </p>
  
  
  <pre>
  method f(int x):
  null|int[] xs = [x]
  ...
  </pre>
  <p>
  When type checking the expression <code>[x]</code> the flow type checker will
  attempt to determine an <i>expected</i> array type. In order to then
  determine the appropriate expected type for expression <code>x</code> it
  filters <code>null|int[]</code> down to just <code>int[]</code>.
  </p>
  
  @param target
  Target type for this value
  @param expr
  Source expression for this value
  @author David J. Pearce