/**
  * @param InputValue $input
  * @param $key
  * @param AbstractSchema $schema
  * @throws ValidationException
  */
 private function processKey(InputValue $input, $key, AbstractSchema $schema)
 {
     if (!array_key_exists($key, $input->getValue())) {
         $this->handleMissingKey($input, $key, $schema->getOption('default'));
     } else {
         $this->validateAndReplaceKey($input, $key, $schema);
     }
 }
 /**
  * @param $value
  * @param AbstractSchema $schema
  * @return mixed
  */
 public static function attempt($value, AbstractSchema $schema)
 {
     return $schema->process(new InputValue($value));
 }