private static function getTraits(\ReflectionClass $class) {
$traits = $class
->getTraits();
$classes = array();
while ($trait = array_pop($traits)) {
if ($trait
->isUserDefined() && !isset(self::$seen[$trait
->getName()])) {
$classes[] = $trait;
$traits = array_merge($traits, $trait
->getTraits());
}
}
return $classes;
}