} else if (obj instanceof String) {
result = new StringPropertyInfo((String)obj);
} else if (obj instanceof Category) {
result = new StringPropertyInfo(((Category) obj).getCategory());
} else if (obj instanceof Date) {
result = new DatePropertyInfo((Date)obj);
} else if (obj instanceof Email) {
result = new StringPropertyInfo(((Email) obj).getEmail());
} else if (obj instanceof Long) { // short, int, long are all stored as long value
result = new LongPropertyInfo((Long)obj);
} else if (obj instanceof Double) {// float and double are both stored as 64-bit double precision, IEEE 754