code: public function insert(RuleWatchNode $node)
      {
          if ($node->getRule()->isAssertion()) {
              return;
          }
  
          foreach (array($node->watch1, $node->watch2) as $literal) {
              if (!isset($this->watchChains[$literal])) {
                  $this->watchChains[$literal] = new RuleWatchChain;
              }
  
              $this->watchChains[$literal]->unshift($node);
          }
      }
docs: Inserts a rule node into the appropriate chains within the graph
  
  The node is prepended to the watch chains for each of the two literals it
  watches.
  
  Assertions are skipped because they only depend on a single package and
  have no alternative literal that could be true, so there is no need to
  watch changes in any literals.
  
  @param RuleWatchNode $node The rule node to be inserted into the graph