Name simpleClassName = eachBuildableTypeElement.getSimpleName();
Name qualifiedClassName = eachBuildableTypeElement.getQualifiedName();
String packageName = getPackageNameFrom(qualifiedClassName);
try {
final Buildable theBuildable = eachBuildableTypeElement.getAnnotation(Buildable.class);
final JavaFileObject javaFileObject = processingEnv.getFiler().createSourceFile(packageName + "." +
createBuilderName(theBuildable, simpleClassName), eachBuildableClass);
final OutputStream outputStream = javaFileObject.openOutputStream();
final OutputStreamWriter out = new OutputStreamWriter(outputStream);
writePackageAndImports(qualifiedClassName, out);
writeClassDeclaration(simpleClassName, theBuildable, out);
writeFactoryMethodAndConstructor(theBuildable, simpleClassName, out);
if (!theBuildable.cloneMethod().equals(Buildable.USE_SENSIBLE_DEFAULT)){
writeCloneableMethod(theBuildable, out, simpleClassName,
buildableToFluentlyMap.get(eachBuildableTypeElement));
}
for (VariableElement eachFluently : buildableToFluentlyMap.get(eachBuildableTypeElement)) {