code: private function wrapExpression($from, callable $expr, array $types)
      {
          list($fn, $pos) = explode(':', $from);
          $from = "The expression return value of argument {$pos} of {$fn}";
          return function ($value) use ($from, $expr, $types) {
              $value = $expr($value);
              $this->validateType($from, $value, $types);
              return $value;
          };
      }
docs: Validates the return values of expressions as they are applied.
  
  @param string   $from  Function name : position
  @param callable $expr  Expression function to validate.
  @param array    $types Array of acceptable return type values.
  
  @return callable Returns a wrapped function