public void structure(DapStructure struct) throws DapException { List<DapVariable> fields = struct.getFields(); Odometer odom = null; if (struct.getRank() == 0) { // scalar odom = new ScalarOdometer(); } else { // dimensioned List<Slice> slices = ce.getConstrainedSlices(struct); odom = Odometer.factory(slices, struct.getDimensions(), false); } while (odom.hasNext()) { // generate a value for each field recursively for (int i = 0; i < fields.size(); i++) { DapVariable field = fields.get(i); variable(field); } odom.next(); } }