// Path: src/main/java/com/presidentio/testdatagenerator/model/Schema.java
// public class Schema {
// 
//     private List<Template> templates = new ArrayList<>();
// 
//     private List<String> root = new ArrayList<>();
// 
//     private List<Variable> variables = new ArrayList<>();
// 
//     private Output output;
// 
//     public List<Template> getTemplates() {
//         return templates;
//     }
// 
//     public void setTemplates(List<Template> templates) {
//         this.templates = templates;
//     }
// 
//     public List<String> getRoot() {
//         return root;
//     }
// 
//     public void setRoot(List<String> root) {
//         this.root = root;
//     }
// 
//     public List<Variable> getVariables() {
//         return variables;
//     }
// 
//     public void setVariables(List<Variable> variables) {
//         this.variables = variables;
//     }
// 
//     public Output getOutput() {
//         return output;
//     }
// 
//     public void setOutput(Output output) {
//         this.output = output;
//     }
// }
// 
// Path: src/main/java/com/presidentio/testdatagenerator/model/Template.java
// public class Template {
// 
//     private String id;
// 
//     private String extend;
// 
//     @JsonIgnore
//     private Template extendTemplate;
// 
//     private Integer count;
// 
//     private String name;
// 
//     private List<Field> fields;
// 
//     private List<String> childs = new ArrayList<>();
// 
//     public String getId() {
//         return id;
//     }
// 
//     public void setId(String id) {
//         this.id = id;
//     }
// 
//     public String getExtend() {
//         return extend;
//     }
// 
//     public void setExtend(String extend) {
//         this.extend = extend;
//     }
// 
//     public Template getExtendTemplate() {
//         return extendTemplate;
//     }
// 
//     public void setExtendTemplate(Template extendTemplate) {
//         this.extendTemplate = extendTemplate;
//     }
// 
//     public Integer getCount() {
//         if (count == null && extendTemplate != null) {
//             return extendTemplate.getCount();
//         }
//         return count;
//     }
// 
//     public void setCount(Integer count) {
//         this.count = count;
//     }
// 
//     public String getName() {
//         if (name == null && extendTemplate != null) {
//             return extendTemplate.getName();
//         }
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public List<Field> getFields() {
//         List<Field> result = new ArrayList<>();
//         if (extendTemplate != null && extendTemplate.getFields() != null) {
//             result.addAll(extendTemplate.getFields());
//         }
//         if (fields != null) {
//             result.addAll(fields);
//         }
//         return result;
//     }
// 
//     public void setFields(List<Field> fields) {
//         this.fields = fields;
//     }
// 
//     public List<String> getChilds() {
//         List<String> result = new ArrayList<>();
//         if (extendTemplate != null && extendTemplate.getChilds() != null) {
//             result.addAll(extendTemplate.getChilds());
//         }
//         if (childs != null) {
//             result.addAll(childs);
//         }
//         return result;
//     }
// 
//     public void setChilds(List<String> childs) {
//         this.childs = childs;
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if (this == o) return true;
//         if (o == null || getClass() != o.getClass()) return false;
// 
//         Template template = (Template) o;
// 
//         if (name != null ? !name.equals(template.name) : template.name != null) return false;
// 
//         return true;
//     }
// 
//     @Override
//     public int hashCode() {
//         return name != null ? name.hashCode() : 0;
//     }
// }


import com.presidentio.testdatagenerator.model.Schema;
import com.presidentio.testdatagenerator.model.Template;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
            Schema schema = schemaSerializer.deserialize(
                    SchemaBuilder.class.getClassLoader().getResourceAsStream(resource));
            schemas.add(schema);
            return this;
        } catch (IOException e) {
            throw new IllegalStateException(e);
        }
    }

    public SchemaBuilder fromFile(String file) {
        SchemaSerializer schemaSerializer = new JsonSchemaSerializer();
        try {
            Schema schema = schemaSerializer.deserialize(new FileInputStream(file));
            schemas.add(schema);
            return this;
        } catch (IOException e) {
            throw new IllegalStateException(e);
        }
    }

    public Schema build() {
        Schema schema = null;
        for (Schema schema1 : schemas) {
            if (schema == null) {
                schema = schema1;
            } else {
                schema = merge(schema, schema1);
            }
        }
        if (schema != null) {
// Path: src/main/java/com/presidentio/testdatagenerator/model/Schema.java
// public class Schema {
// 
//     private List<Template> templates = new ArrayList<>();
// 
//     private List<String> root = new ArrayList<>();
// 
//     private List<Variable> variables = new ArrayList<>();
// 
//     private Output output;
// 
//     public List<Template> getTemplates() {
//         return templates;
//     }
// 
//     public void setTemplates(List<Template> templates) {
//         this.templates = templates;
//     }
// 
//     public List<String> getRoot() {
//         return root;
//     }
// 
//     public void setRoot(List<String> root) {
//         this.root = root;
//     }
// 
//     public List<Variable> getVariables() {
//         return variables;
//     }
// 
//     public void setVariables(List<Variable> variables) {
//         this.variables = variables;
//     }
// 
//     public Output getOutput() {
//         return output;
//     }
// 
//     public void setOutput(Output output) {
//         this.output = output;
//     }
// }
// 
// Path: src/main/java/com/presidentio/testdatagenerator/model/Template.java
// public class Template {
// 
//     private String id;
// 
//     private String extend;
// 
//     @JsonIgnore
//     private Template extendTemplate;
// 
//     private Integer count;
// 
//     private String name;
// 
//     private List<Field> fields;
// 
//     private List<String> childs = new ArrayList<>();
// 
//     public String getId() {
//         return id;
//     }
// 
//     public void setId(String id) {
//         this.id = id;
//     }
// 
//     public String getExtend() {
//         return extend;
//     }
// 
//     public void setExtend(String extend) {
//         this.extend = extend;
//     }
// 
//     public Template getExtendTemplate() {
//         return extendTemplate;
//     }
// 
//     public void setExtendTemplate(Template extendTemplate) {
//         this.extendTemplate = extendTemplate;
//     }
// 
//     public Integer getCount() {
//         if (count == null && extendTemplate != null) {
//             return extendTemplate.getCount();
//         }
//         return count;
//     }
// 
//     public void setCount(Integer count) {
//         this.count = count;
//     }
// 
//     public String getName() {
//         if (name == null && extendTemplate != null) {
//             return extendTemplate.getName();
//         }
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public List<Field> getFields() {
//         List<Field> result = new ArrayList<>();
//         if (extendTemplate != null && extendTemplate.getFields() != null) {
//             result.addAll(extendTemplate.getFields());
//         }
//         if (fields != null) {
//             result.addAll(fields);
//         }
//         return result;
//     }
// 
//     public void setFields(List<Field> fields) {
//         this.fields = fields;
//     }
// 
//     public List<String> getChilds() {
//         List<String> result = new ArrayList<>();
//         if (extendTemplate != null && extendTemplate.getChilds() != null) {
//             result.addAll(extendTemplate.getChilds());
//         }
//         if (childs != null) {
//             result.addAll(childs);
//         }
//         return result;
//     }
// 
//     public void setChilds(List<String> childs) {
//         this.childs = childs;
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if (this == o) return true;
//         if (o == null || getClass() != o.getClass()) return false;
// 
//         Template template = (Template) o;
// 
//         if (name != null ? !name.equals(template.name) : template.name != null) return false;
// 
//         return true;
//     }
// 
//     @Override
//     public int hashCode() {
//         return name != null ? name.hashCode() : 0;
//     }
// }


// Path: src/main/java/com/presidentio/testdatagenerator/parser/SchemaBuilder.java
import com.presidentio.testdatagenerator.model.Schema;
import com.presidentio.testdatagenerator.model.Template;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

            Schema schema = schemaSerializer.deserialize(
                    SchemaBuilder.class.getClassLoader().getResourceAsStream(resource));
            schemas.add(schema);
            return this;
        } catch (IOException e) {
            throw new IllegalStateException(e);
        }
    }

    public SchemaBuilder fromFile(String file) {
        SchemaSerializer schemaSerializer = new JsonSchemaSerializer();
        try {
            Schema schema = schemaSerializer.deserialize(new FileInputStream(file));
            schemas.add(schema);
            return this;
        } catch (IOException e) {
            throw new IllegalStateException(e);
        }
    }

    public Schema build() {
        Schema schema = null;
        for (Schema schema1 : schemas) {
            if (schema == null) {
                schema = schema1;
            } else {
                schema = merge(schema, schema1);
            }
        }
        if (schema != null) {
            for (Template template : schema.getTemplates()) {