code: protected <T extends SemanticType.Atom> T construct(Disjunct type, LifetimeRelation lifetimes, Combinator<T> kind) {
  		T result = null;
  		Conjunct[] conjuncts = type.conjuncts;
  		for (int i = 0; i != conjuncts.length; ++i) {
  			Conjunct conjunct = conjuncts[i];
  			if (!isVoid(conjunct, lifetimes)) {
  				T tmp = construct(conjunct, lifetimes, kind);
  				if (tmp == null) {
  					// This indicates one of the conjuncts did not generate a proper
  					// extraction. In this case, we can simply ignore it.
  				} else if (result == null) {
  					result = tmp;
  				} else {
  					result = kind.union(result, tmp, lifetimes);
  				}
  			}
  		}
  		return result;
  	}
docs: Construct a given target type from a given type in DisjunctiveNormalForm.
  
  @param type
  @return
  @throws ResolutionError