protected static function findFormativeClass(
        string $name, 
        array $args, 
        array $pack
        ): string
    {
        $argline = "";
        if(count($args)>0) {
            foreach($args as $arg) {
                $argline .= sprintf(
                    "%s:::", 
                    str_replace("\\", ":", gettype($arg))
                );
            }
            $argline = substr($argline, 0, -3);
        }
        else {
            $argline = ":::";
        }

        foreach(
            $pack["out"]->formative_patterns[$name] as $formable=>$pattern
        ) {
            if(preg_match("/^".$pattern."$/", $argline)) {
                return $formable;
            }
        }

        throw new UnrecognizedSetOfParametersForFormativeEdgeException($argline, $pack["out"]->formative_patterns[$name]);
    }
protected static function findFormativeClass(
        string $name, 
        array $args, 
        array $pack
        ): string
    {
        $argline = "";
        if(count($args)>0) {
            foreach($args as $arg) {
                $argline .= sprintf(
                    "%s:::", 
                    str_replace("\\", ":", gettype($arg))
                );
            }
            $argline = substr($argline, 0, -3);
        }
        else {
            $argline = ":::";
        }

        foreach(
            $pack["out"]->formative_patterns[$name] as $formable=>$pattern
        ) {
            if(preg_match("/^".$pattern."$/", $argline)) {
                return $formable;
            }
        }

        throw new UnrecognizedSetOfParametersForFormativeEdgeException($argline, $pack["out"]->formative_patterns[$name]);
    }
protected static function findFormativeClass ( string $ name , array $ args , array $ pack ) : string { $ argline = "" ; if ( count ( $ args ) > 0 ) { foreach ( $ args as $ arg ) { $ argline .= sprintf ( "%s:::" , str_replace ( "\\" , ":" , gettype ( $ arg ) ) ) ; } $ argline = substr ( $ argline , 0 , - 3 ) ; } else { $ argline = ":::" ; } foreach ( $ pack [ "out" ] -> formative_patterns [ $ name ] as $ formable => $ pattern ) { if ( preg_match ( "/^" . $ pattern . "$/" , $ argline ) ) { return $ formable ; } } throw new UnrecognizedSetOfParametersForFormativeEdgeException ( $ argline , $ pack [ "out" ] -> formative_patterns [ $ name ] ) ; }
Based on given arguments, helps find the matching class to form.

**IMPORTANT NOTE for developers;**

We don't touch the $name argument. Because a call like:
```$user->createGroup()```
means that the formative edge is CreateGroup
and it was already registered in the particle with "camelize"
function. So camelizing calls would allow methods like
```$user->create_group()``` or ```$user->CreateGroup``` also
take the same effect. This is not the behavior we want.

@param string $name
@param array $args
@param array $pack

@return string The class name.
Based on given arguments helps find the matching class to form .