JoinerScheduleNode code = new JoinerScheduleNode(i, current.buffer);
JoinerScheduleNode code = new JoinerScheduleNode(i,current.buffer,joinerType);
    private void callInitPaths(SimulationCounter counters) {        // find all the joiners that are immediately contained in a FeedbackLoop        Iterator joiners = layout.getJoiners().iterator();        // clone the joiner schedules        FlatNode joiner;        // iterate over all of the joiners of a feedbackloop        while (joiners.hasNext()) {            joiner = (FlatNode) joiners.next();            if ((((SIRJoiner) joiner.contents).getParent() instanceof SIRFeedbackLoop)) {                // create the initPath calls                SIRFeedbackLoop loop = (SIRFeedbackLoop) ((SIRJoiner) joiner.contents)                    .getParent();                int delay = loop.getDelayInt();                JoinerScheduleNode current = ((JoinerScheduleNode) JoinerSimulator.schedules                                              .get(joiner));                for (int i = 0; i < delay; i++) {                    // for each init path call find the correct buffer to place                    // it in.                    while (true) {                        if (current.buffer.endsWith("1")) {                            // create the joinerCode Node and put it in the init                            // schedule                            JoinerScheduleNode prev = (JoinerScheduleNode) currentJoinerCode                                .get(joiner);                            JoinerScheduleNode code = new JoinerScheduleNode(i,                                                                             current.buffer);                            if (prev == null) {                                // first node in joiner code                                // this will add it to the joiner code hashmap                                // this hashmap store the first instruction of                                // each code sequence                                joinerCode.put(joiner, code);                            } else {                                // connect to the prev                                prev.next = code;                            }                            // set current                            currentJoinerCode.put(joiner, code);                            // record that a data item was placed in this buffer                            counters.incrementJoinerBufferCount(joiner,                                                                current.buffer);                            // we found a buffer so break and place the next                            // initPath call                            current = current.next;                            break;                        }                        current = current.next;                    }                }            }        }    }