private function sortElements(array $elements)
    {
        static $phpunitPositions = [
            'setupbeforeclass' => 1,
            'teardownafterclass' => 2,
            'setup' => 3,
            'teardown' => 4,
        ];

        foreach ($elements as &$element) {
            $type = $element['type'];

            if (\array_key_exists($type, self::$specialTypes)) {
                if (isset($this->typePosition[$type])) {
                    $element['position'] = $this->typePosition[$type];
                    if ('phpunit' === $type) {
                        $element['position'] += $phpunitPositions[$element['name']];
                    }

                    continue;
                }

                $type = 'method';
            }

            if (\in_array($type, ['constant', 'property', 'method'], true)) {
                $type .= '_'.$element['visibility'];
                if ($element['static']) {
                    $type .= '_static';
                }
            }

            $element['position'] = $this->typePosition[$type];
        }
        unset($element);

        usort($elements, function (array $a, array $b) {
            if ($a['position'] === $b['position']) {
                return $this->sortGroupElements($a, $b);
            }

            return $a['position'] > $b['position'] ? 1 : -1;
        });

        return $elements;
    }
private function sortElements(array $elements)
    {
        static $phpunitPositions = [
            'setupbeforeclass' => 1,
            'teardownafterclass' => 2,
            'setup' => 3,
            'teardown' => 4,
        ];

        foreach ($elements as &$element) {
            $type = $element['type'];

            if (\array_key_exists($type, self::$specialTypes)) {
                if (isset($this->typePosition[$type])) {
                    $element['position'] = $this->typePosition[$type];
                    if ('phpunit' === $type) {
                        $element['position'] += $phpunitPositions[$element['name']];
                    }

                    continue;
                }

                $type = 'method';
            }

            if (\in_array($type, ['constant', 'property', 'method'], true)) {
                $type .= '_'.$element['visibility'];
                if ($element['static']) {
                    $type .= '_static';
                }
            }

            $element['position'] = $this->typePosition[$type];
        }
        unset($element);

        usort($elements, function (array $a, array $b) {
            if ($a['position'] === $b['position']) {
                return $this->sortGroupElements($a, $b);
            }

            return $a['position'] > $b['position'] ? 1 : -1;
        });

        return $elements;
    }
private function sortElements ( array $ elements ) { static $ phpunitPositions = [ 'setupbeforeclass' => 1 , 'teardownafterclass' => 2 , 'setup' => 3 , 'teardown' => 4 , ] ; foreach ( $ elements as & $ element ) { $ type = $ element [ 'type' ] ; if ( \ array_key_exists ( $ type , self :: $ specialTypes ) ) { if ( isset ( $ this -> typePosition [ $ type ] ) ) { $ element [ 'position' ] = $ this -> typePosition [ $ type ] ; if ( 'phpunit' === $ type ) { $ element [ 'position' ] += $ phpunitPositions [ $ element [ 'name' ] ] ; } continue ; } $ type = 'method' ; } if ( \ in_array ( $ type , [ 'constant' , 'property' , 'method' ] , true ) ) { $ type .= '_' . $ element [ 'visibility' ] ; if ( $ element [ 'static' ] ) { $ type .= '_static' ; } } $ element [ 'position' ] = $ this -> typePosition [ $ type ] ; } unset ( $ element ) ; usort ( $ elements , function ( array $ a , array $ b ) { if ( $ a [ 'position' ] === $ b [ 'position' ] ) { return $ this -> sortGroupElements ( $ a , $ b ) ; } return $ a [ 'position' ] > $ b [ 'position' ] ? 1 : - 1 ; } ) ; return $ elements ; }
@param array[] $elements

@return array[]
@param array [] $elements