code: def version(self, context=None):
      
      if self.replaces_scope and self.replaces_name:
        if context:
          # If the old option is provided explicitly, let it take precedence.
          old_opts = context.options.for_scope(self.replaces_scope)
          if old_opts.get(self.replaces_name) and not old_opts.is_default(self.replaces_name):
            return old_opts.get(self.replaces_name)
        else:
          logger.warn('Cannot resolve version of {} from deprecated option {} in scope {} without a '
                      'context!'.format(self._get_name(), self.replaces_name, self.replaces_scope))
      return self.get_options().version
docs: Returns the version of the specified binary tool.
  
      If replaces_scope and replaces_name are defined, then the caller must pass in
      a context, otherwise no context should be passed.
  
      # TODO: Once we're migrated, get rid of the context arg.
  
      :API: public