code: public Type.Reference selectReference(Type target, Expr expr, Environment environment) {
  		Type.Reference type = asType(expr.getType(), Type.Reference.class);
  		Type.Reference[] references = TYPE_REFERENCE_FILTER.apply(target);
  		return selectCandidate(references, type, environment);
  	}
docs: <p>
  Given an arbitrary target type, filter out the target reference types. For
  example, consider the following method:
  </p>
  
  
  <pre>
  method f(int x):
  &int|null xs = new(x)
  ...
  </pre>
  <p>
  When type checking the expression <code>new(x)</code> the flow type checker
  will attempt to determine an <i>expected</i> reference type. In order to then
  determine the appropriate expected type for element expression <code>x</code>
  it filters <code>&int|null</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