runtime dependency analysis