code: private Type apply(SemanticType.Array type, LifetimeRelation lifetimes) {
  		return new Type.Array(apply(type.getElement(), lifetimes));
  	}
docs: Extracting a concrete type from a semantic array is relatively easy. We just
  recursively extract the concrete element type. Example of how this can arise:
  
  <pre>
  function f() -> (int[] r):
  return [1,2,null]
  </pre>
  
  The type generated for <code>[1,2,null]</code> will be a semantic array type
  <code>(int|null)[]</code>.
  
  @param type
  @return