private function bundleTokens(array $tokenList, $targetToken)
    {
        $bundleList = array();
        $bundle = array();

        foreach ($tokenList as $token) {
            // On token match add the bundle to list & re-initialize empty bundle
            if ($targetToken === $token) {
                $bundleList[] = $bundle;
                $bundle = array();

            // Otherwise collect tokens
            } else {
                $bundle[] = $token;
            }
        }

        // Handle trailing type
        $bundleList[] = $bundle;

        // Remove empty types
        $bundleList = array_filter($bundleList);

        return $bundleList;
    }