code: public boolean isVoid(SemanticType type, LifetimeRelation lifetimes) {
  		return emptinessTest.isVoid(type, EmptinessTest.PositiveMax, type, EmptinessTest.PositiveMax, lifetimes);
  	}
docs: <p>
  Check whether a type is equivalent to <code>void</code> or not. The
  complexities of Whiley's type system mean that this is not always obvious.
  For example, the type <code>int&(!int)</code> is equivalent to
  <code>void</code>. Likewise, is the type <code>!any</code>. Another
  interesting case is the following:
  </p>
  
  <pre>
  type T is { T t }
  </pre>
  
  <p>
  This is only considered equivalent to <code>void</code> under an
  <i>inductive</i> interpretation of types (which is assumed in Whiley). The
  distinction is that, under a <i>coinductive</i> interpretation, instances of
  <code>T</code> do exist which, by construction, are infinite chains. Since
  such chains cannot be constructed in Whiley, we can disregard them.
  </p>
  
  @param type
  The type being tested to see whether or not it is equivalent to
  void.
  @param lifetimes
  The within relation between lifetimes that should be used when
  determine whether the <code>rhs</code> is a subtype of the
  <code>lhs</code>.
  
  @return
  @throws ResolutionError