@SuppressWarnings({ "unchecked", "rawtypes" }) public void addElement(final Receiver nextElement) { if(element==null){ setStart((ObjectReceiver<? extends Object>) nextElement); return; } if (element instanceof Sender) { final Sender sender = (Sender) element; if (joinLooseEnds) { teeStack.pop(); for (final LifeCycle looseEnd : looseEndsStack.pop()) { if (looseEnd instanceof Tee) { ((Tee) looseEnd).addReceiver(nextElement); } else { ((Sender) looseEnd).setReceiver(nextElement); } } joinLooseEnds = false; } else { if (sender instanceof Tee) { ((Tee) sender).addReceiver(nextElement); } else { sender.setReceiver(nextElement); } } } else { throw new FluxParseException(element.getClass().getCanonicalName() + "is not a sender"); } element = nextElement; }