/**
  * Default constructor
  *
  * @param string             $fileLocation full path location of file
  * @param string             $method the current method whose annotations should be used
  * @param string             $caller determine if the caller is the built in beforeAction or afterAction
  */
 public function __construct($fileLocation, $method, $caller = NULL)
 {
     $this->callerAnnotations = array();
     $this->dependenciesLocations = array();
     $annotations = Annotation::discover($fileLocation);
     if (isset($annotations[Functions::escapeCamel($method)])) {
         $this->callerAnnotations = $annotations[Functions::escapeCamel($method)];
     }
     if (!isset($annotations[$method]) && ($caller == "beforeAction" || $caller == "afterAction")) {
         $this->callerAnnotations = $annotations[$caller];
     }
     $this->dispatchAnnotations();
 }
 /**
  * Outputs the current View Model
  *
  * @param object|string      $viewModel the name of the location of the view model relative to the viewModels directory
  * @param object             $boundModel an optional object to manually bind to the view
  * @return Mixed
  */
 public function viewModel($viewModel = NULL, $boundModel = NULL)
 {
     if (!empty($viewModel) && is_string($viewModel)) {
         if (file_exists("application/viewModels/" . $viewModel . "ViewModel.class.php")) {
             $annotations = Annotation::discover("application/viewModels/" . $viewModel . "ViewModel.class.php");
             if (!empty($annotations)) {
                 $this->view->viewModel = $annotations;
             } else {
                 include_once "application/viewModels/" . $viewModel . "ViewModel.class.php";
                 eval("\$object = new " . substr($viewModel, strrpos($viewModel, "/") + 1) . "();");
                 $this->view->viewModel = array_fill_keys(array_keys((array) $object), NULL);
             }
         }
     }
     if (!empty($viewModel) && is_object($viewModel)) {
         $this->view->viewModel = array_fill_keys(array_keys((array) $viewModel), NULL);
         if ($boundModel == NULL) {
             $boundModel = $viewModel;
         }
     }
     if (!empty($viewModel) && !is_string($viewModel) && !is_object($viewModel)) {
         $this->view->viewModel = $viewModel;
     }
     $this->view->boundModel = $boundModel;
     echo $this->view;
 }