'For each artifact, create subflows for each collector.'

@flow.StateHandler()
def Start(self):

    self.client = aff4.FACTORY.Open(self.client_id, token=self.token)
    self.state.artifacts_failed = []
    self.state.artifacts_skipped_due_to_condition = []
    self.state.called_fallbacks = set()
    self.state.client_anomalies = []
    self.state.failed_count = 0
    self.state.knowledge_base = self.args.knowledge_base
    self.state.response_count = 0
    if (self.args.dependencies == artifact_utils.ArtifactCollectorFlowArgs.Dependency.FETCH_NOW):
        self.CallFlow(artifact.CollectArtifactDependencies.__name__, artifact_list=self.args.artifact_list, next_state='StartCollection')
        return
    elif ((self.args.dependencies == artifact_utils.ArtifactCollectorFlowArgs.Dependency.USE_CACHED) and (not self.state.knowledge_base)):
        try:
            self.state.knowledge_base = artifact.GetArtifactKnowledgeBase(self.client)
        except artifact_utils.KnowledgeBaseUninitializedError:
            if (not self._AreArtifactsKnowledgeBaseArtifacts()):
                self.CallFlow(artifact.KnowledgeBaseInitializationFlow.__name__, next_state='StartCollection')
                return
    self.CallState(next_state='StartCollection')
