Container { {{ float statistics(TraversalGraph whereToGo) throws Exception { CountingVisitorDJ cV = new CountingVisitorDJ(); //1 SummingVisitorDJ sV = new SummingVisitorDJ(); //1 AverageVisitorDJ aV = new AverageVisitorDJ(); //1 ResultVisitorDJ rV = new ResultVisitorDJ(); // establish communication between visitors aV.set_cV(cV); aV.set_sV(sV); rV.set_aV(aV); // replace the following // Visitor[] visitors = new Visitor[4]; // visitors[0]=(Visitor) rV; // visitors[1]=(Visitor) sV; // visitors[2]=(Visitor) cV; // visitors[3]=(Visitor) aV; // System.out.println("visitors prepared"); // Float res = (Float) whereToGo.traverse(this, visitors); Float res = (Float) whereToGo.traverse(this, new Visitor[] { rV, sV, cV, aV }); return res.floatValue(); } }} }