result += indent + (String)varDecl.accept(this) + "\n";
result += indent + (String)varDecl.accept(this) + ";\n";
    public Object visitStreamSpec(StreamSpec spec)    {        String result = "";        // Anonymous classes look different from non-anonymous ones.        // This appears in two places: (a) as a top-level (named)        // stream; (b) in an anonymous stream creator (SCAnon).        if (spec.getName() != null)        {            // Non-anonymous stream:            result += indent + "class " + spec.getName() + " extends ";            switch (spec.getType())            {            case StreamSpec.STREAM_FILTER: result += "Filter";                break;            case StreamSpec.STREAM_PIPELINE: result += "Pipeline";                break;            case StreamSpec.STREAM_SPLITJOIN: result += "SplitJoin";                break;            case StreamSpec.STREAM_FEEDBACKLOOP: result += "FeedbackLoop";                break;            }            result += "\n" + indent + "{\n";            addIndent();        }        else        {            // Anonymous stream:            switch (spec.getType())            {            case StreamSpec.STREAM_FILTER: result += "Filter";                break;            case StreamSpec.STREAM_PIPELINE: result += "Pipeline";                break;            case StreamSpec.STREAM_SPLITJOIN: result += "SplitJoin";                break;            case StreamSpec.STREAM_FEEDBACKLOOP: result += "FeedbackLoop";                break;            }            result += "() {\n" + indent;            addIndent();        }                // At this point we get to ignore wholesale the stream type, except        // that we want to save it.        StreamType oldST = st;        st = spec.getStreamType();        // We should unignore the stream parameters long enough to write        // a constructor for non-anonymous streams.        // Output field definitions:        for (Iterator iter = spec.getVars().iterator(); iter.hasNext(); )        {            Statement varDecl = (Statement)iter.next();            result += indent + (String)varDecl.accept(this) + "\n";        }                // Output method definitions:        for (Iterator iter = spec.getFuncs().iterator(); iter.hasNext(); )            result += (String)(((Function)iter.next()).accept(this));        st = oldST;        unIndent();        result += "}\n";        return result;    }