class PlaceholderResolver {

    @VisibleForTesting
    public static List<Placeholder> extractPlaceholders(String value) {
        List<Placeholder> namesAndDefaults = new ArrayList<>();

        for (String placeholder : extractPlaceholderStrings(value)) {
            Matcher placeholderMatcher = PLACEHOLDER_REGEX_CAPTURE_NAME_AND_DEFAULT.matcher(placeholder);

            if (placeholderMatcher.matches()) {
                namesAndDefaults.add(new Placeholder(placeholderMatcher.group(1), placeholderMatcher.group(2)));
            }
        }

        return namesAndDefaults;
    }

    public  PlaceholderResolver(ObjectNode rootNode, Map<String, String> externalProperties);

}