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()); } }