// Path: cathandsgendroid-apt/src/main/java/net/cattaka/util/cathandsgendroid/apt/util/Functions.java
// public class Functions {
//     public static String join(List<?> objects, String delim) {
//         if (objects == null) {
//             return "";
//         }
//         StringBuilder sb = new StringBuilder();
//         int i = 0;
//         for (Object object : objects) {
//             if (i > 0) {
//                 sb.append(delim);
//             }
//             sb.append(String.valueOf(object));
//             i++;
//         }
//         return sb.toString();
//     }
//     
//     public static List<String> pullTypes(DeclaredType tm) {
//         List<String> results = new ArrayList<String>();
//         results.add(String.valueOf(tm.asElement()));
//         if (tm instanceof DeclaredType) {
//             for (TypeMirror t : ((DeclaredType)tm).getTypeArguments()) {
//                 results.addAll(pullTypes((DeclaredType)t));
//             }
//         }
//         return results;
//     }
// }


import net.cattaka.util.cathandsgendroid.apt.util.Functions;
import java.util.Locale;
import javax.lang.model.type.DeclaredType;
import javax.lang.model.type.TypeMirror;
            "Accessors.PrimitiveShortAccessor.createAccessor(Short.class)", "INTEGER", "Short", "short");
    public static final InnerFieldType PARCELABLE = new InnerFieldType(false, false,
            "Accessors.ParcelableAccessor.createAccessor(android.os.Parcelable.class)", "BLOB", "android.os.Parcelable",
            null);
    public static final InnerFieldType SHORT = new InnerFieldType(false, true,
            "Accessors.ShortAccessor.createAccessor(Short.class)", "INTEGER", "Short", "short");
    public static final InnerFieldType STRING = new InnerFieldType(false, false,
            "Accessors.StringAccessor.createAccessor(String.class)", "TEXT", "String", null);

    public final String accessor;
    public final String dbDataType;
    public final String javaDataType;
    public final String origJavaDataType;
    public final String primitiveJavaDataType;
    public final boolean primitiveType;
    public final boolean isNumber;

    public InnerFieldType(boolean primitiveType, boolean isNumber, String accessor, String dbDataType,
            String javaDataType, String primitiveJavaDataType) {
        this(primitiveType, isNumber, accessor, dbDataType, javaDataType, javaDataType, primitiveJavaDataType);
    }

    private InnerFieldType(boolean primitiveType, boolean isNumber, String accessor, String dbDataType,
            String javaDataType, String origJavaDataType, String primitiveJavaDataType) {
        super();
        this.primitiveType = primitiveType;
        this.accessor = accessor;
        this.dbDataType = dbDataType;
        this.javaDataType = javaDataType;
        this.origJavaDataType = origJavaDataType;
// Path: cathandsgendroid-apt/src/main/java/net/cattaka/util/cathandsgendroid/apt/util/Functions.java
// public class Functions {
//     public static String join(List<?> objects, String delim) {
//         if (objects == null) {
//             return "";
//         }
//         StringBuilder sb = new StringBuilder();
//         int i = 0;
//         for (Object object : objects) {
//             if (i > 0) {
//                 sb.append(delim);
//             }
//             sb.append(String.valueOf(object));
//             i++;
//         }
//         return sb.toString();
//     }
//     
//     public static List<String> pullTypes(DeclaredType tm) {
//         List<String> results = new ArrayList<String>();
//         results.add(String.valueOf(tm.asElement()));
//         if (tm instanceof DeclaredType) {
//             for (TypeMirror t : ((DeclaredType)tm).getTypeArguments()) {
//                 results.addAll(pullTypes((DeclaredType)t));
//             }
//         }
//         return results;
//     }
// }


// Path: cathandsgendroid-apt/src/main/java/net/cattaka/util/cathandsgendroid/apt/InnerFieldType.java
import net.cattaka.util.cathandsgendroid.apt.util.Functions;
import java.util.Locale;
import javax.lang.model.type.DeclaredType;
import javax.lang.model.type.TypeMirror;

            "Accessors.PrimitiveShortAccessor.createAccessor(Short.class)", "INTEGER", "Short", "short");
    public static final InnerFieldType PARCELABLE = new InnerFieldType(false, false,
            "Accessors.ParcelableAccessor.createAccessor(android.os.Parcelable.class)", "BLOB", "android.os.Parcelable",
            null);
    public static final InnerFieldType SHORT = new InnerFieldType(false, true,
            "Accessors.ShortAccessor.createAccessor(Short.class)", "INTEGER", "Short", "short");
    public static final InnerFieldType STRING = new InnerFieldType(false, false,
            "Accessors.StringAccessor.createAccessor(String.class)", "TEXT", "String", null);

    public final String accessor;
    public final String dbDataType;
    public final String javaDataType;
    public final String origJavaDataType;
    public final String primitiveJavaDataType;
    public final boolean primitiveType;
    public final boolean isNumber;

    public InnerFieldType(boolean primitiveType, boolean isNumber, String accessor, String dbDataType,
            String javaDataType, String primitiveJavaDataType) {
        this(primitiveType, isNumber, accessor, dbDataType, javaDataType, javaDataType, primitiveJavaDataType);
    }

    private InnerFieldType(boolean primitiveType, boolean isNumber, String accessor, String dbDataType,
            String javaDataType, String origJavaDataType, String primitiveJavaDataType) {
        super();
        this.primitiveType = primitiveType;
        this.accessor = accessor;
        this.dbDataType = dbDataType;
        this.javaDataType = javaDataType;
        this.origJavaDataType = origJavaDataType;
        this.primitiveJavaDataType = (primitiveJavaDataType != null) ? primitiveJavaDataType : "(not supported)";