public String mkString(String start, String sep, String end, boolean lazy) {
    """
	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.
    """
		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();
	}
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();
	}
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 ( ) ; }
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.
Returns a string representation of this {