function isRelative(stateName) {
    return stateName.indexOf(".") === 0 || stateName.indexOf("^") === 0;
  }
@ngdoc object
@name ui.router.state.$stateProvider

@requires ui.router.router.$urlRouterProvider
@requires ui.router.util.$urlMatcherFactoryProvider
@requires $locationProvider

@description
The new `$stateProvider` works similar to Angular's v1 router, but it focuses purely
on state.

A state corresponds to a "place" in the application in terms of the overall UI and
navigation. A state describes (via the controller / template / view properties) what
the UI looks like and does at that place.

States often have things in common, and the primary way of factoring out these
commonalities in this model is via the state hierarchy, i.e. parent/child states aka
nested states.

The `$stateProvider` provides interfaces to declare these states for your app.