public void forEach_root(Allocation ain, Allocation aout) {
   // check ain
   if (!ain.getType().getElement().isCompatible(__ScriptField_particle)) {
     throw new RSRuntimeException("Type mismatch with ScriptField_particle!");
   }
   // check aout
   if (!aout.getType().getElement().isCompatible(__ScriptField_particle)) {
     throw new RSRuntimeException("Type mismatch with ScriptField_particle!");
   }
   // Verify dimensions
   Type tIn = ain.getType();
   Type tOut = aout.getType();
   if ((tIn.getCount() != tOut.getCount())
       || (tIn.getX() != tOut.getX())
       || (tIn.getY() != tOut.getY())
       || (tIn.getZ() != tOut.getZ())
       || (tIn.hasFaces() != tOut.hasFaces())
       || (tIn.hasMipmaps() != tOut.hasMipmaps())) {
     throw new RSRuntimeException("Dimension mismatch between input and output parameters!");
   }
   forEach(mExportForEachIdx_root, ain, aout, null);
 }