code: def create(cls, exiter, args, env, target_roots=None, daemon_graph_session=None,
               options_bootstrapper=None):
      
      build_root = get_buildroot()
  
      options, build_config, options_bootstrapper = cls.parse_options(
        args,
        env,
        setup_logging=True,
        options_bootstrapper=options_bootstrapper,
      )
      global_options = options.for_global_scope()
  
      # Option values are usually computed lazily on demand,
      # but command line options are eagerly computed for validation.
      for scope in options.scope_to_flags.keys():
        options.for_scope(scope)
  
      # Verify configs.
      if global_options.verify_config:
        options_bootstrapper.verify_configs_against_options(options)
  
      # If we're running with the daemon, we'll be handed a session from the
      # resident graph helper - otherwise initialize a new one here.
      graph_session = cls._maybe_init_graph_session(
        daemon_graph_session,
        options_bootstrapper,
        build_config,
        options
      )
  
      target_roots = cls._maybe_init_target_roots(
        target_roots,
        graph_session,
        options,
        build_root
      )
  
      profile_path = env.get('PANTS_PROFILE')
  
      return cls(
        build_root,
        exiter,
        options,
        options_bootstrapper,
        build_config,
        target_roots,
        graph_session,
        daemon_graph_session is not None,
        profile_path
      )
docs: Creates a new LocalPantsRunner instance by parsing options.
  
      :param Exiter exiter: The Exiter instance to use for this run.
      :param list args: The arguments (e.g. sys.argv) for this run.
      :param dict env: The environment (e.g. os.environ) for this run.
      :param TargetRoots target_roots: The target roots for this run.
      :param LegacyGraphSession daemon_graph_session: The graph helper for this session.
      :param OptionsBootstrapper options_bootstrapper: The OptionsBootstrapper instance to reuse.