code: function _gpfContext (path, createMissingParts) {
      var reducer;
      if (createMissingParts) {
          reducer = _gpfGetOrCreateObjectProperty;
      } else {
          reducer = _gpfGetObjectProperty;
      }
      return _gpfReduceContext(path, reducer);
  }
docs: Result of {@link gpf.context} call, depends on the specified path
  - when not specified, it returns the current host main context object
  - when `"gpf"`, it **always** returns the GPF object
  - when it leads to nothing, `undefined` is returned
  
  @typedef {*} gpf.typedef.contextResult
  @since 0.1.5
   
  Resolve the provided contextual path and returns the result
  
  @param {String[]} path Array of identifiers
  @param {Boolean} [createMissingParts=false] If the path includes undefined parts and createMissingParts is true,
  it allocates a default empty object. This allows building namespaces on the fly.
  
  @return {gpf.typedef.contextResult} Resolved path
  @since 0.1.5