private function findAvailableSubContexts($path, $pattern = '/^.+\.behat\.inc/i')
    {

        if (isset(static::$subContexts[$pattern][$path])) {
            return static::$subContexts[$pattern][$path];
        }

        static::$subContexts[$pattern][$path] = array();

        $fileIterator = new RegexIterator(
            new RecursiveIteratorIterator(
                new RecursiveDirectoryIterator($path)
            ),
            $pattern,
            RegexIterator::MATCH
        );
        foreach ($fileIterator as $found) {
            static::$subContexts[$pattern][$path][$found->getRealPath()] = $found->getFileName();
        }

        return static::$subContexts[$pattern][$path];
    }