ParticlesTemp SingletonContainerSet::get_all_possible_particles() const {
  ParticlesTemp ret;
  for (unsigned int i=0; i< get_number_of_singleton_containers(); ++i) {
    ParticlesTemp cur= get_singleton_container(i)
        ->get_all_possible_particles();
    ret+=cur;
  }
  return ret;
}
void SingletonContainerSet::apply(const SingletonDerivativeModifier *sm,
                               DerivativeAccumulator &da) const {
  for (unsigned int i=0; i< get_number_of_singleton_containers(); ++i) {
    get_singleton_container(i)->apply(sm, da);
  }
}
void SingletonContainerSet::apply(const SingletonModifier *sm) const {
  for (unsigned int i=0; i< get_number_of_singleton_containers(); ++i) {
    get_singleton_container(i)->apply(sm);
  }
}
bool SingletonContainerSet::get_is_changed() const {
  for (unsigned int i=0; i< get_number_of_singleton_containers(); ++i) {
    if (get_singleton_container(i)->get_is_changed()) return true;
  }
  return Container::get_is_changed();
}
void XYZRMovedSingletonContainer::validate() const {
  IMP_OBJECT_LOG;
  ParticleIndexes pis = get_singleton_container()->get_indexes();
  IMP_USAGE_CHECK(pis.size() == backup_.size(), "Backup is not the right size");
}