private void buildBuilders() {
		
		StringBuilder importBuilder = new StringBuilder();
		StringBuilder hint = new StringBuilder();
		for (Class<?> modelClass : this.classesToBuild) {
			importBuilder.append("import ")
				.append(modelClass.getName())
				.append(";\n")
				.append("import ")
				.append(modelClass.getName())
				.append(builderSuffix)
				.append(";\n");
			
			hint.append(".put(")
				.append(modelClass.getSimpleName())
				.append(".class, ")
				.append(modelClass.getSimpleName())
				.append(builderSuffix)
				.append(".class)\n\t\t\t\t");
		}
		if (hint.length() >= 5)
			hint.delete(hint.length() - 5, hint.length());
		
		
		StringBuilder builder = new StringBuilder();

		builder.append(new StringReplacer(getTemplates().getProperty("builders_declare"))
				.replace("packageName", this.buildersPackageName)
				.replace("BuilderSpecs", buildersClassName)
				.replace("import Person;", importBuilder.toString())
				.replace(".put(Person.class, PersonBuilder.class)", hint.toString())
				);
		
		StringBuilder ignoredTypesBuilder = new StringBuilder();
		for (Class<?> ignoredType : this.ignoredTypes) {
			ignoredTypesBuilder.append(".add(").append(ignoredType.getName()).append(".class)\n\t\t\t");
		}
		
		if (ignoredTypesBuilder.length() > 0) {
			builder.insert(builder.indexOf(".toList();"), ignoredTypesBuilder);
		}
		
		for (Class<?> modelClass : this.classesToBuild) {
			
			if (modelClass.isInterface()) {
				continue;
			}
			
			ClassHolder srcClassHolder = ClassHolder.newInstance(modelClass);
			ClassHolder destClassHolder = srcClassHolder.toBuilderClassHolder(builderSuffix, "?", classesToBuild);
			
			String className = modelClass.getSimpleName();
			String classCamelCase = StringUtils.toCamelCase(className);
			
			builder.append(new StringReplacer(getTemplates().getProperty("builders_each_model_class"))
					.replace("BookBuilderSpec<?>", destClassHolder.toString())
					.replace("BookBuilderSpec", destClassHolder.getName())
					.replace("Book", srcClassHolder.getName())
					.replace("book", classCamelCase));
				
		}

		
		
		
		builder.append(getTemplates().getProperty("custom_code_marker"));
		
		builder.append("}\n");

		generateJavaFile(baseFolder, buildersPackageName, buildersClassName, builder.toString());

		
	}