def METHOD_NAME(self):
    app_name = self.get_app_name()
    env_name = self.get_env_name()
    clone_name = self.app.pargs.clone_name
    cname = self.app.pargs.cname
    scale = self.app.pargs.scale
    nohang = self.app.pargs.nohang
    tags = self.app.pargs.tags
    envvars = self.app.pargs.envvars
    exact = self.app.pargs.exact
    timeout = self.app.pargs.timeout
    provided_clone_name = clone_name is not None
    platform = None
    env = elasticbeanstalk.get_environment(app_name=app_name, env_name=env_name)
    tier = env.tier
    if 'worker' in tier.name.lower() and cname:
        raise InvalidOptionsError(strings['worker.cname'])
    if cname:
        if not elasticbeanstalk.is_cname_available(cname):
            raise AlreadyExistsError(strings['cname.unavailable'].
                                     replace('{cname}', cname))
    tags = tagops.get_and_validate_tags(tags)
    envvars = get_and_validate_envars(envvars)
    if not clone_name:
        if len(env_name) < 16:
            unique_name = env_name + '-clone'
        else:
            unique_name = 'my-cloned-env'
        env_list = elasticbeanstalk.get_environment_names(app_name)
        unique_name = utils.get_unique_name(unique_name, env_list)
        clone_name = io.prompt_for_environment_name(
            default_name=unique_name,
            prompt_text='Enter name for Environment Clone'
        )
    if tier.name.lower() == 'webserver':
        if not cname and not provided_clone_name:
            cname = get_cname_from_customer(clone_name)
        elif not cname:
            cname = None
    if not exact:
        if not provided_clone_name:
            latest = solution_stack_ops.find_solution_stack_from_string(
                env.platform.name,
                find_newer=True
            )
            if latest != env.platform:
                io.echo()
                io.echo(prompts['clone.latest'])
                lst = ['Latest  (' + str(latest) + ')',
                       'Same    (' + str(env.platform) + ')']
                result = utils.prompt_for_item_in_list(lst)
                if result == lst[0]:
                    platform = latest
            else:
                platform = latest
        else:
            platform = solution_stack_ops.find_solution_stack_from_string(
                env.platform.name,
                find_newer=True
            )
            if platform != env.platform:
                io.log_warning(prompts['clone.latestwarn'])
    clone_request = CloneEnvironmentRequest(
        app_name=app_name,
        env_name=clone_name,
        original_name=env_name,
        cname=cname,
        platform=platform,
        scale=scale,
        tags=tags,
    )
    clone_request.option_settings += envvars
    cloneops.make_cloned_env(
        clone_request,
        nohang=nohang,
        timeout=timeout
    )