if (buffer.getDest() instanceof OutputTraceNode && ((OutputTraceNode) buffer.getDest()).isFileReader())
if (((InputTraceNode)filterNode.getPrevious()).onlyFileInput())
    private static void generateInputFilterDRAMCommand(FilterTraceNode filterNode,             FilterInfo filterInfo, RawTile tile,            boolean init, boolean primepump) {        // only generate a DRAM command for filters connected to input or output        // trace nodes        if (filterNode.getPrevious() != null            && filterNode.getPrevious().isInputTrace()) {            // get this buffer or this first upstream non-redundant buffer            OffChipBuffer buffer = IntraTraceBuffer.getBuffer(                                                              (InputTraceNode) filterNode.getPrevious(), filterNode)                .getNonRedundant();            if (buffer == null)                return;            // get the number of items received            int items = filterInfo.totalItemsReceived(init, primepump);            // return if there is nothing to receive            if (items == 0)                return;            int stage = 0;            if (!init && !primepump)                stage = 3;            // the transfer size rounded up to by divisible by a cacheline            int words = (items * Util.getTypeSize(filterNode.getFilter()                                                  .getInputType()));            if (buffer.getDest() instanceof OutputTraceNode                && ((OutputTraceNode) buffer.getDest()).isFileReader())                tile.getComputeCode().addFileCommand(true, init || primepump,                                                     words, buffer);            else                tile.getComputeCode().addDRAMCommand(true, stage,                        Util.cacheLineDiv(words * 4),                         buffer, buffer.getSource(), true);        }    }