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