Author: Konstantin Kudryashov (ever.zet@gmail.com)
 /**
  * {@inheritdoc}
  */
 public function guessTargetContextClass(ContextEnvironment $environment)
 {
     $suiteKey = $environment->getSuite()->getName();
     if (array_key_exists($suiteKey, $this->contextClasses)) {
         return $this->contextClasses[$suiteKey];
     }
     return $this->contextClasses[$suiteKey] = $this->decoratedIdentifier->guessTargetContextClass($environment);
 }
 /**
  * {@inheritdoc}
  */
 public function generateSnippet(Environment $environment, StepNode $step)
 {
     if (!$environment instanceof ContextEnvironment) {
         throw new EnvironmentSnippetGenerationException(sprintf('ContextSnippetGenerator does not support `%s` environment.', get_class($environment)), $environment);
     }
     $contextClass = $this->contextIdentifier->guessTargetContextClass($environment);
     $patternType = $this->patternIdentifier->guessPatternType($contextClass);
     $stepText = $step->getText();
     $pattern = $this->patternTransformer->generatePattern($patternType, $stepText);
     $methodName = $this->getMethodName($contextClass, $pattern->getCanonicalText(), $pattern->getPattern());
     $methodArguments = $this->getMethodArguments($step, $pattern->getPlaceholderCount());
     $snippetTemplate = $this->getSnippetTemplate($pattern->getPattern(), $methodName, $methodArguments);
     $usedClasses = $this->getUsedClasses($step);
     return new ContextSnippet($step, $snippetTemplate, $contextClass, $usedClasses);
 }