<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _AddAttributeNodes(self, attribute_names):
 """Add the attribute nodes to the graph. For every attribute that is required for the collection of requested artifacts, add a node to the dependency graph. An attribute node will have incoming edges from the artifacts that provide this attribute and outgoing edges to the artifacts that depend on it. An attribute is reachable as soon as one artifact that provides it is reachable. Initially, no attribute node is reachable. Args: attribute_names: List of required attribute names. """

    for attribute_name in attribute_names:
      self.graph[attribute_name] = self.Node(is_artifact=False)