public static function create($fileNames) {
        if (!is_array($fileNames)) {
            if (!is_string($fileNames)) throw new IllegalTypeException('Illegal type of parameter $fileNames: '.gettype($fileNames));
            if (!strlen($fileNames))    throw new InvalidArgumentException('Invalid argument $fileNames: '.$fileNames);
            $fileNames = [$fileNames];
        }
        if (!$fileNames) throw new InvalidArgumentException('Invalid argument $fileNames: '.$fileNames);

        $dependency = null;

        foreach ($fileNames as $name) {
            if (!$dependency) $dependency = new static($name);
            else              $dependency = $dependency->andDependency(new static($name));
        }

        return $dependency;
    }