private SourceChannelNode maybeEatSourceChannel() {
		boolean gtBeforePipe = false;
		// Seek for a GT(>) before a PIPE(|)
		for (int tp = tokenStreamPointer; tp < tokenStreamLength; tp++) {
			Token t = tokenStream.get(tp);
			if (t.getKind() == TokenKind.GT) {
				gtBeforePipe = true;
				break;
			}
			else if (t.getKind() == TokenKind.PIPE) {
				break;
			}
		}
		if (!gtBeforePipe || !looksLikeChannel(tokenStreamPointer)) {
			return null;
		}

		ChannelNode channel = eatChannelReference(true);
		Token gt = eatToken(TokenKind.GT);
		return new SourceChannelNode(channel, gt.endpos);
	}
Parse a stream definition.

@return the AST for the parsed stream
@throws StreamDefinitionException
spring-xd-dirt/src/main/java/org/springframework/xd/dirt/stream/dsl/StreamConfigParser.java