// Path: lib/src/main/java/tk/zielony/randomdata/DataContext.java
// public class DataContext {
// 
//     private static final String LOCALE = "locale";
//     public static final String NAME = "name";
// 
//     protected final List<Map<String, Object>> stack = new ArrayList<>();
// 
//     void save() {
//         HashMap<String, Object> contextData = (HashMap<String, Object>) stack.get(stack.size() - 1);
//         HashMap<String, Object> clone = (HashMap<String, Object>) contextData.clone();
//         stack.add(clone);
//     }
// 
//     public DataContext() {
//         stack.add(new HashMap<>());
//     }
// 
//     void restore() {
//         stack.remove(stack.size() - 1);
//     }
// 
//     public <Type> Type get(String key) {
//         return (Type) stack.get(stack.size() - 1).get(key);
//     }
// 
//     public <Type> void set(String key, Type value) {
//         stack.get(stack.size() - 1).put(key, value);
//     }
// }
// 
// Path: lib/src/main/java/tk/zielony/randomdata/Matcher.java
// public interface Matcher {
//     boolean matches(Target target);
// }


import java.util.Currency;
import java.util.Locale;
import tk.zielony.randomdata.DataContext;
import tk.zielony.randomdata.Matcher;
package tk.zielony.randomdata.finance;



public class StringAmountGenerator extends AmountGenerator<String> {

    public StringAmountGenerator() {
        super();
    }

    public StringAmountGenerator(int max, boolean useCommon) {
        super(max, useCommon);
    }

    @Override
// Path: lib/src/main/java/tk/zielony/randomdata/DataContext.java
// public class DataContext {
// 
//     private static final String LOCALE = "locale";
//     public static final String NAME = "name";
// 
//     protected final List<Map<String, Object>> stack = new ArrayList<>();
// 
//     void save() {
//         HashMap<String, Object> contextData = (HashMap<String, Object>) stack.get(stack.size() - 1);
//         HashMap<String, Object> clone = (HashMap<String, Object>) contextData.clone();
//         stack.add(clone);
//     }
// 
//     public DataContext() {
//         stack.add(new HashMap<>());
//     }
// 
//     void restore() {
//         stack.remove(stack.size() - 1);
//     }
// 
//     public <Type> Type get(String key) {
//         return (Type) stack.get(stack.size() - 1).get(key);
//     }
// 
//     public <Type> void set(String key, Type value) {
//         stack.get(stack.size() - 1).put(key, value);
//     }
// }
// 
// Path: lib/src/main/java/tk/zielony/randomdata/Matcher.java
// public interface Matcher {
//     boolean matches(Target target);
// }


// Path: finance/src/main/java/tk/zielony/randomdata/finance/StringAmountGenerator.java
import java.util.Currency;
import java.util.Locale;
import tk.zielony.randomdata.DataContext;
import tk.zielony.randomdata.Matcher;

package tk.zielony.randomdata.finance;



public class StringAmountGenerator extends AmountGenerator<String> {

    public StringAmountGenerator() {
        super();
    }

    public StringAmountGenerator(int max, boolean useCommon) {
        super(max, useCommon);
    }

    @Override
    protected Matcher getDefaultMatcher() {