def METHOD_NAME(self, varname):
    parts = varname.split('.')
    num_dots = varname.count('.')
    # Logic to deal with predefined sections like [preview], [plugin] and
    # etc.
    if num_dots == 1 and parts[0] in PREDEFINED_SECTION_NAMES:
        full_config = self._session.full_config
        section, config_name = varname.split('.')
        value = full_config.get(section, {}).get(config_name)
        if value is None:
            # Try to retrieve it from the profile config.
            value = full_config['profiles'].get(
                section, {}).get(config_name)
        return value
    if parts[0] == 'profile':
        profile_name = parts[1]
        config_name = parts[2]
        remaining = parts[3:]
    # Check if varname starts with 'default' profile (e.g.
    # default.emr-dev.emr.instance_profile) If not, go further to check
    # if varname starts with a known profile name
    elif parts[0] == 'default' or (
            parts[0] in self._session.full_config['profiles']):
        profile_name = parts[0]
        config_name = parts[1]
        remaining = parts[2:]
    else:
        profile_name = self._session.get_config_variable('profile')
        if profile_name is None:
            profile_name = 'default'
        config_name = parts[0]
        remaining = parts[1:]
    value = self._session.full_config['profiles'].get(
        profile_name, {}).get(config_name)
    if len(remaining) == 1:
        try:
            value = value.get(remaining[-1])
        except AttributeError:
            value = None
    return value