code: public String mkString(String start, String sep, String end, boolean lazy) {
  		final StringBuilder s = new StringBuilder(start);
  		LazySeq<E> cur = this;
  		while (!cur.isEmpty()) {
  			s.append(cur.head());
  			if (!lazy || cur.isTailDefined()) {
  				if (!cur.tail().isEmpty()) {
  					s.append(sep);
  				}
  				cur = cur.tail();
  			} else {
  				s.append(sep).append("?");
  				break;
  			}
  		}
  		return s.append(end).toString();
  	}
docs: Returns a string representation of this {@link LazySeq}.
  The string result starts with the string <code>start</code> and ends with <code>end</code>,
  whereas <code>sep</code> is as separator string between the elements of this sequence.
  If <code>lazy</code> is <code>true</code> the evaluation stops at the first unspecific element.