// Path: src/main/java/org/madlonkay/supertmxmerge/data/ITuv.java
// public interface ITuv {
//     
//     public String getContent();
//     
//     public String getLanguage();
//     
//     public Map<String, String> getMetadata();
//     
//     public Object getUnderlyingRepresentation();
//     
//     @Override
//     public boolean equals(Object o);
//     
//     public boolean equivalentTo(ITuv other);
// }
// 
// Path: src/main/java/org/madlonkay/supertmxmerge/util/ReflectionUtil.java
// public class ReflectionUtil {
//     
//     private static final Logger LOGGER = Logger.getLogger(ReflectionUtil.class.getName());
//     
//     public static Map<String, String> simplePropsToMap(Object object) {
//         if (object == null) {
//             return Collections.EMPTY_MAP;
//         }
//         
//         Method[] methods = object.getClass().getMethods();
//         if (methods.length == 0) {
//             return Collections.EMPTY_MAP;
//         }
//         
//         Map<String, String> result = new HashMap<String, String>();
//         
//         for (Method m : methods) {
//             if (m.getName().startsWith("get") && m.getParameterTypes().length == 0 &&
//                     (m.getReturnType().isPrimitive() || m.getReturnType().equals(String.class))) {
//                 try {
//                     Object value = m.invoke(object);
//                     result.put(m.getName().substring("get".length()),
//                             value == null ? "null" : value.toString());
//                 } catch (Exception ex) {
//                     LOGGER.log(Level.SEVERE, null, ex);
//                 }
//             }
//         }
//         return result;
//     }
//     
//     public static Map<String, String> simpleMembersToMap(Object object) {
//         if (object == null) {
//             return Collections.EMPTY_MAP;
//         }
//         
//         Field[] fields = object.getClass().getDeclaredFields();
//         if (fields.length == 0) {
//             return Collections.EMPTY_MAP;
//         }
//         
//         Map<String, String> result = new HashMap<String, String>();
//         
//         for (Field f : fields) {
//             if (f.getType().isPrimitive() || f.getType().equals(String.class)) {
//                 try {
//                     Object value = f.get(object);
//                     result.put(f.getName(),
//                             value == null ? "null" : value.toString());
//                 } catch (Exception ex) {
//                     LOGGER.log(Level.SEVERE, null, ex);
//                 }
//             }
//         }
//         return result;
//     }
// 
//     public static Map<String, String> listPropsToMap(List<Object> list) {
//         if (list == null || list.isEmpty()) {
//             return Collections.EMPTY_MAP;
//         }
//         
//         Map<String, String> result = new HashMap<String, String>();
//         Map<Class, Integer> count = new HashMap<Class, Integer>();
//         
//         for (Object o : list) {
//             try {
//                 Method m = o.getClass().getDeclaredMethod("getContent");
//                 if (m == null) {
//                     throw new RuntimeException("TUV contained item that didn't respond to getContent().");
//                 }
//                 if (!m.getReturnType().equals(String.class)) {
//                     continue;
//                 }
//                 Integer n = count.get(o.getClass());
//                 if (n == null) {
//                     n = 1;
//                 }
//                 result.put(o.getClass().getSimpleName() + n, (String) m.invoke(o));
//                 count.put(o.getClass(), n + 1);
//             } catch (Exception ex) {
//                 LOGGER.log(Level.SEVERE, null, ex);
//             }
//         }
//         return result;
//     }
// }


import gen.core.tmx14.Tuv;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import org.madlonkay.supertmxmerge.data.ITuv;
import org.madlonkay.supertmxmerge.util.ReflectionUtil;
                try {
                    Method m = o.getClass().getDeclaredMethod("getContent");
                    if (m == null) {
                        throw new RuntimeException("TUV contained item that didn't respond to getContent().");
                    }
                    Object subContent = m.invoke(o);
                    if (!(subContent instanceof List)) {
                        throw new RuntimeException("TUV contained item that didn't return a List from getContent().");
                    }
                    tmp.append(TAG_START_CHAR);
                    tmp.append(extractContent((List<Object>) subContent));
                    tmp.append(TAG_END_CHAR);
                } catch (NoSuchMethodException ex) {
                    // Nothing
                } catch (IllegalAccessException ex) {
                    // Nothing
                } catch (InvocationTargetException ex) {
                    // Nothing
                }
            }
        }
        return tmp.toString();
    }

    @Override
    public Map<String, String> getMetadata() {
        if (props == null) {
            if (tuv == null) {
                props = Collections.EMPTY_MAP;
            } else {
// Path: src/main/java/org/madlonkay/supertmxmerge/data/ITuv.java
// public interface ITuv {
//     
//     public String getContent();
//     
//     public String getLanguage();
//     
//     public Map<String, String> getMetadata();
//     
//     public Object getUnderlyingRepresentation();
//     
//     @Override
//     public boolean equals(Object o);
//     
//     public boolean equivalentTo(ITuv other);
// }
// 
// Path: src/main/java/org/madlonkay/supertmxmerge/util/ReflectionUtil.java
// public class ReflectionUtil {
//     
//     private static final Logger LOGGER = Logger.getLogger(ReflectionUtil.class.getName());
//     
//     public static Map<String, String> simplePropsToMap(Object object) {
//         if (object == null) {
//             return Collections.EMPTY_MAP;
//         }
//         
//         Method[] methods = object.getClass().getMethods();
//         if (methods.length == 0) {
//             return Collections.EMPTY_MAP;
//         }
//         
//         Map<String, String> result = new HashMap<String, String>();
//         
//         for (Method m : methods) {
//             if (m.getName().startsWith("get") && m.getParameterTypes().length == 0 &&
//                     (m.getReturnType().isPrimitive() || m.getReturnType().equals(String.class))) {
//                 try {
//                     Object value = m.invoke(object);
//                     result.put(m.getName().substring("get".length()),
//                             value == null ? "null" : value.toString());
//                 } catch (Exception ex) {
//                     LOGGER.log(Level.SEVERE, null, ex);
//                 }
//             }
//         }
//         return result;
//     }
//     
//     public static Map<String, String> simpleMembersToMap(Object object) {
//         if (object == null) {
//             return Collections.EMPTY_MAP;
//         }
//         
//         Field[] fields = object.getClass().getDeclaredFields();
//         if (fields.length == 0) {
//             return Collections.EMPTY_MAP;
//         }
//         
//         Map<String, String> result = new HashMap<String, String>();
//         
//         for (Field f : fields) {
//             if (f.getType().isPrimitive() || f.getType().equals(String.class)) {
//                 try {
//                     Object value = f.get(object);
//                     result.put(f.getName(),
//                             value == null ? "null" : value.toString());
//                 } catch (Exception ex) {
//                     LOGGER.log(Level.SEVERE, null, ex);
//                 }
//             }
//         }
//         return result;
//     }
// 
//     public static Map<String, String> listPropsToMap(List<Object> list) {
//         if (list == null || list.isEmpty()) {
//             return Collections.EMPTY_MAP;
//         }
//         
//         Map<String, String> result = new HashMap<String, String>();
//         Map<Class, Integer> count = new HashMap<Class, Integer>();
//         
//         for (Object o : list) {
//             try {
//                 Method m = o.getClass().getDeclaredMethod("getContent");
//                 if (m == null) {
//                     throw new RuntimeException("TUV contained item that didn't respond to getContent().");
//                 }
//                 if (!m.getReturnType().equals(String.class)) {
//                     continue;
//                 }
//                 Integer n = count.get(o.getClass());
//                 if (n == null) {
//                     n = 1;
//                 }
//                 result.put(o.getClass().getSimpleName() + n, (String) m.invoke(o));
//                 count.put(o.getClass(), n + 1);
//             } catch (Exception ex) {
//                 LOGGER.log(Level.SEVERE, null, ex);
//             }
//         }
//         return result;
//     }
// }


// Path: src/main/java/org/madlonkay/supertmxmerge/data/JAXB/JAXBTuv.java
import gen.core.tmx14.Tuv;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import org.madlonkay.supertmxmerge.data.ITuv;
import org.madlonkay.supertmxmerge.util.ReflectionUtil;

                try {
                    Method m = o.getClass().getDeclaredMethod("getContent");
                    if (m == null) {
                        throw new RuntimeException("TUV contained item that didn't respond to getContent().");
                    }
                    Object subContent = m.invoke(o);
                    if (!(subContent instanceof List)) {
                        throw new RuntimeException("TUV contained item that didn't return a List from getContent().");
                    }
                    tmp.append(TAG_START_CHAR);
                    tmp.append(extractContent((List<Object>) subContent));
                    tmp.append(TAG_END_CHAR);
                } catch (NoSuchMethodException ex) {
                    // Nothing
                } catch (IllegalAccessException ex) {
                    // Nothing
                } catch (InvocationTargetException ex) {
                    // Nothing
                }
            }
        }
        return tmp.toString();
    }

    @Override
    public Map<String, String> getMetadata() {
        if (props == null) {
            if (tuv == null) {
                props = Collections.EMPTY_MAP;
            } else {
                Map<String, String> temp = ReflectionUtil.simplePropsToMap(tuv);