code: private function paramType(\ReflectionMethod $method, \ReflectionParameter $param)
      {
          $methodAnnotations = annotationsOf($method);
          $paramAnnotations  = annotationsOf($param);
          $paramClass        = $param->getClass();
          if (null !== $paramClass) {
              if ($methodAnnotations->contain('Property') || $paramAnnotations->contain('Property')) {
                  return PropertyBinding::TYPE;
              }
  
              return $paramClass->getName();
          }
  
          if ($methodAnnotations->contain('List') || $paramAnnotations->contain('List')) {
              return ListBinding::TYPE;
          }
  
          if ($methodAnnotations->contain('Map') || $paramAnnotations->contain('Map')) {
              return MapBinding::TYPE;
          }
  
          if ($methodAnnotations->contain('Property') || $paramAnnotations->contain('Property')) {
              return PropertyBinding::TYPE;
          }
  
          return ConstantBinding::TYPE;
      }
docs: returns type of param
  
  @param   \ReflectionMethod     $method
  @param   \ReflectionParameter  $param
  @return  string