private function processSubject(SubjectMetadata $subject, $annotation)
{
if ($annotation instanceof Annotations\BeforeMethods) {
$subject->setBeforeMethods($this->resolveValue($annotation, $subject->getBeforeMethods(), $annotation->getMethods()));
}
if ($annotation instanceof Annotations\AfterMethods) {
$subject->setAfterMethods($this->resolveValue($annotation, $subject->getAfterMethods(), $annotation->getMethods()));
}
if ($annotation instanceof Annotations\ParamProviders) {
$subject->setParamProviders($this->resolveValue($annotation, $subject->getParamProviders(), $annotation->getProviders()));
}
if ($annotation instanceof Annotations\Iterations) {
$subject->setIterations($annotation->getIterations());
}
if ($annotation instanceof Annotations\Sleep) {
$subject->setSleep($annotation->getSleep());
}
if ($annotation instanceof Annotations\Groups) {
$subject->setGroups($this->resolveValue($annotation, $subject->getGroups(), $annotation->getGroups()));
}
if ($annotation instanceof Annotations\Revs) {
$subject->setRevs($annotation->getRevs());
}
if ($annotation instanceof Annotations\Warmup) {
$subject->setWarmup($annotation->getRevs());
}
if ($annotation instanceof Annotations\Skip) {
$subject->setSkip(true);
}
if ($annotation instanceof Annotations\OutputTimeUnit) {
$subject->setOutputTimeUnit($annotation->getTimeUnit());
$subject->setOutputTimePrecision($annotation->getPrecision());
}
if ($annotation instanceof Annotations\OutputMode) {
$subject->setOutputMode($annotation->getMode());
}
}