docs: function (pathElements) {
              var configuration = this.$restHandler.$resourceConfiguration,
                  parentResourceHandler = null,
                  resourceStack = [],
                  i;
  
              // build a stack of configurations
              for (i = 0; i < pathElements.length; i += 2) {
                  var path = decodeURIComponent(pathElements[i]);
                  configuration = configuration.getConfigurationForPath(path);
  
                  if (!configuration) {
                      throw new HttpError("Configuration for '" + pathElements.slice(0, i + 1).join('/') + "' not found.", 404);
                  }
  
                  if (this.$restHandler.$modelClassResourceHandler[configuration.$.modelClassName]) {
                      configuration.$.resourceHandler = this.$restHandler.$modelClassResourceHandler[configuration.$.modelClassName];
                  }
  
                  if (!configuration.$.resourceHandler) {
                      // no resource handler assigned to resource, use a default resource handler
                      configuration.$.resourceHandler = new ResourceHandler();
                  }
  
                  var id = pathElements[i + 1];
  
                  if (id) {
                      id = decodeURIComponent(id);
                  }
  
                  resourceStack.push({
                      resourceHandler: configuration.$.resourceHandler,
                      configuration: configuration,
                      id: id
                  });
  
              }
  
              for (i = 0; i < resourceStack.length; i++) {
                  var resourceEntry = resourceStack[i],
                      resourceHandler = resourceEntry.resourceHandler;
  
                  // clone or get same instance
                  resourceHandler = resourceHandler.getResourceHandlerInstance();
  
                  // initialize handler
                  resourceHandler.init(this.$restHandler, resourceEntry.configuration, resourceEntry.id, parentResourceHandler);
                  parentResourceHandler = resourceHandler;
  
                  if (!(resourceHandler instanceof ResourceHandler)) {
                      throw "Returned resource not an instance of Resource";
                  }
              }
  
              // return top mose resourceHandler
              return parentResourceHandler;
  
          }