public function getTraversable($param)
    {
        $value = null;
        /** @var $nodes TraversableNodeInterface[] */
        $nodes = $this->payload->getNodes();
        foreach ($nodes as $node) {
            $returnVal = $node->isReturningVal();
            foreach ($node->getTraversable($param) as $value) {
                if ($returnVal) {
                    yield $value;
                    continue;
                }

                yield $param;
            }

            if ($returnVal) {
                // since this node is returning something
                // we will pass its last yield to the next
                // traversable. It will be up to him to
                // do whatever is necessary with it, including
                // nothing
                $param = $value;
            }
        }
    }