code: public static <T> Optional<T> lowestCommonAncestor(TreeDef.Parented<T> treeDef, List<T> nodes) {
  		if (nodes.size() == 0) {
  			return Optional.empty();
  		} else {
  			Optional<T> soFar = Optional.of(nodes.get(0));
  			for (int i = 1; i < nodes.size() && soFar.isPresent(); ++i) {
  				soFar = lowestCommonAncestor(treeDef, soFar.get(), nodes.get(i));
  			}
  			return soFar;
  		}
  	}
docs: Returns the common parent of N elements.