code: def create(cls, env, config, known_scope_infos, args=None, bootstrap_option_values=None):
      
      # We need parsers for all the intermediate scopes, so inherited option values
      # can propagate through them.
      complete_known_scope_infos = cls.complete_scopes(known_scope_infos)
      splitter = ArgSplitter(complete_known_scope_infos)
      args = sys.argv if args is None else args
      goals, scope_to_flags, target_specs, passthru, passthru_owner, unknown_scopes = splitter.split_args(args)
  
      option_tracker = OptionTracker()
  
      if bootstrap_option_values:
        target_spec_files = bootstrap_option_values.target_spec_files
        if target_spec_files:
          for spec in target_spec_files:
            with open(spec, 'r') as f:
              target_specs.extend([line for line in [line.strip() for line in f] if line])
  
      help_request = splitter.help_request
  
      parser_hierarchy = ParserHierarchy(env, config, complete_known_scope_infos, option_tracker)
      bootstrap_option_values = bootstrap_option_values
      known_scope_to_info = {s.scope: s for s in complete_known_scope_infos}
      return cls(goals, scope_to_flags, target_specs, passthru, passthru_owner, help_request,
                 parser_hierarchy, bootstrap_option_values, known_scope_to_info,
                 option_tracker, unknown_scopes)
docs: Create an Options instance.
  
      :param env: a dict of environment variables.
      :param :class:`pants.option.config.Config` config: data from a config file.
      :param known_scope_infos: ScopeInfos for all scopes that may be encountered.
      :param args: a list of cmd-line args; defaults to `sys.argv` if None is supplied.
      :param bootstrap_option_values: An optional namespace containing the values of bootstrap
             options. We can use these values when registering other options.