@Override
    public void dispose() {
      for (int i = 0; i < entities.size; i++) {
        final Entity entity = entities.get(i);
        dynamicsWorld.removeRigidBody(entity.body);
        entity.dispose();
      }
      entities.clear();

      for (Entity.ConstructInfo constructor : constructors.values()) {
        constructor.dispose();
      }
      constructors.clear();

      dynamicsWorld.delete();
      solver.delete();
      broadphase.delete();
      dispatcher.delete();
      collisionConfiguration.delete();
    }