def catalog
      @catalog_mutex.synchronize do
        break if synchronized?
        logger.info "Cataloging #{workspace.directory.empty? ? 'generic workspace' : workspace.directory}"
        api_map.catalog bundle
        @synchronized = true
        logger.info "Catalog complete (#{api_map.pins.length} pins)"
      end
    end
def catalog
      @catalog_mutex.synchronize do
        break if synchronized?
        logger.info "Cataloging #{workspace.directory.empty? ? 'generic workspace' : workspace.directory}"
        api_map.catalog bundle
        @synchronized = true
        logger.info "Catalog complete (#{api_map.pins.length} pins)"
      end
    end
Update the ApiMap from the library's workspace and open files.

 @return [void]