static function ParseFullName($fullName)
    {
        $fullName = strtolower($fullName);
        $name = $fullName;
        $length = 0;
        $set = array();
        
        $modifiers = '';
        $bracePos1 = strpos($fullName, '(');
        $bracePos2 = 0;
        if ($bracePos1 > 0)
        {
            $name = trim(substr($fullName, 0, $bracePos1));
            $bracePos2 = strpos($fullName, ')', $bracePos1);
        }
        if ($bracePos1 && $bracePos2)
        {
            $inBrace = trim(substr($fullName, $bracePos1 + 1, $bracePos2 - $bracePos1 - 1));
            self::ParseInBrace($inBrace, $set, $length);
            if ($bracePos2 < strlen($fullName) - 1)
            {
                $modifiers = trim(strtolower(substr($fullName, $bracePos2 + 1)));
            }
        }
        $type = self::CalcType($name, $length);
        return new self($name, $type, $set, $length, $modifiers);
    }