code: def tool_classpath_from_products(products, key, scope):
      
      callback_product_map = products.get_data('jvm_build_tools_classpath_callbacks') or {}
      callback = callback_product_map.get(scope, {}).get(key)
      if not callback:
        raise TaskError('No bootstrap callback registered for {key} in {scope}'
                        .format(key=key, scope=scope))
      return callback()
docs: Get a classpath for the tool previously registered under key in the given scope.
  
      :param products: The products of the current pants run.
      :type products: :class:`pants.goal.products.Products`
      :param string key: The key the tool configuration was registered under.
      :param string scope: The scope the tool configuration was registered under.
      :returns: A list of paths.
      :rtype: list