public function findClassReflections($subDir = null, $suffix = null, $parent = null, $allowedParameters = 0)
    {
        $classes = [];
        $subDir = trim(preg_replace('#//{2,}#', '/', strtr($subDir, '\\', '/')), '/');
        $namespace = trim($this->namespace, '\\') . '\\' . strtr($subDir, '/', '\\') . '\\';
        $finder = $this->directory !== null
               && is_dir($directory = $this->directory . DIRECTORY_SEPARATOR . strtr($subDir, '/', DIRECTORY_SEPARATOR))
            ? (new Finder)->files()->name(sprintf('*%s', $this->extension))->in($directory)
            : [];
        foreach ($finder as $file) {
            try {
                $class = $this->getClassReflection($file, $namespace, $suffix, $parent, $allowedParameters);
                $classes[] = $class;
            } catch (\Exception $exception) {
                continue;
            }
        }
        return $classes;
    }