/** * Adds a child to this node. * * @param NodeInterface $child - Child. * @param bool $setParent - Set Parent? * * @throws \IronEdge\Component\Graphs\Exception\ChildTypeNotSupportedException * * @return NodeInterface */ public function addChild(NodeInterface $child, bool $setParent = true) : NodeInterface { $ret = parent::addChild($child, $setParent); if ($child instanceof State && $child->isInitial()) { $this->addInitialState($child); } return $ret; }
/** * Method supportsParent. * * @param NodeInterface $parent - Parent. * * @return bool */ public function supportsParent(NodeInterface $parent) : bool { parent::supportsParent($parent); return $parent instanceof State || $parent instanceof Flow; }
/** * Returns default metadata. * * @return array */ public function getDefaultMetadata() : array { return array_replace_recursive(parent::getDefaultMetadata(), ['isInitial' => false]); }