class Config implements DiagnosticsProvider, Configuration {

    public Set<String> identifiersFromGroup( Class<?> groupClass )
    {
        if ( !groupClass.isAnnotationPresent( Group.class ) )
        {
            throw new IllegalArgumentException( "Class must be annotated with @Group" );
        }

        String prefix = groupClass.getAnnotation( Group.class ).value();
        Pattern pattern = Pattern.compile( Pattern.quote( prefix ) + "\\.([^.]+)\\.(.+)" );

        Set<String> identifiers = new TreeSet<>();
        for ( String setting : params.keySet() )
        {
            Matcher matcher = pattern.matcher( setting );
            if ( matcher.matches() )
            {
                identifiers.add( matcher.group( 1 ) );
            }
        }
        return identifiers;
    }

    private  Config( File configFile,
            boolean throwOnFileLoadFailure,
            Map<String,String> initialSettings,
            Map<String,String> overriddenDefaults,
            Collection<ConfigurationValidator> additionalValidators,
            List<LoadableConfig> settingsClasses );

}