I had some problems giving a container an PETSc object so I wrapped it in a struct. I forget what problem I had. Maybe ISColoringDestroy can't take a void*. I'd like to check if I was just missing something. Should something like this work?
ISColoring c;
....
ierr = PetscContainerSetPointer(container,(void*)c);CHKERRQ(ierr);
ierr =
PetscContainerSetUserDestroy(container, ISColoringDestroy);CHKERRQ(ierr);
