code: function assembleRoutes( { places } ) {
        const routeMap = {};
        forEach( places, ( place, placeId ) => {
           place.id = placeId;
           place.patterns = place.patterns || [ `/${placeId}` ];
           setPath( place, `targets.${TARGET_SELF}`, place.id );
  
           const { id, patterns, page, redirectTo, redirectToPath } = place;
           availablePlaces[ id ] = place;
  
           if( redirectTo ) {
              patterns.forEach( pattern => {
                 routeMap[ pattern ] = parameters => {
                    navigateToTarget( redirectTo, parameters, null, place );
                 };
              } );
              return;
           }
  
           if( redirectToPath ) {
              patterns.forEach( pattern => {
                 routeMap[ pattern ] = () => {
                    navigateToPath( redirectToPath, place );
                 };
              } );
              return;
           }
  
           if( !page ) {
              log.error( `flow: invalid empty place: ${id}` );
              return;
           }
  
           patterns.forEach( pattern => {
              routeMap[ pattern ] = ( parameters, fragment ) => {
                 handleRouteChange( place, parameters, fragment );
              };
           } );
        } );
        return routeMap;
     }
docs: /////////////////////////////////////////////////////////////////////////////////////////////////////////