// Path: src/locales/Lang.java
// public abstract class Lang {
//     public static final String EN = "en";
//     public static final String ES = "es";
//     public static Properties en = new Properties();
//     public static Properties es = new Properties();
//     
//     public static String translate(String key, HashMap parameters, String locale) {
//         try {
//             readDirectory();
//         } catch (IOException ex) {
//             System.out.println(ex.getMessage());
//             Logger.getLogger(Lang.class.getName()).log(Level.SEVERE, null, ex);
//         }
//         String translate = "";
//         if (locale.equals("en"))
//             translate = en.getProperty(key);
//         if (locale.equals("es"))
//             translate = es.getProperty(key);
//         if (!parameters.isEmpty()) {
//             Iterator it = parameters.entrySet().iterator();
//             while (it.hasNext()) {
//                 Map.Entry pair = (Map.Entry)it.next();
//                 String k = (String) pair.getKey();
//                 String v = (String) pair.getValue();
//                 translate = translate.replace("%{"+ k.toLowerCase() +"}", v);
//                 it.remove(); // avoids a ConcurrentModificationException
//             }
//         }
//         return translate;
//     }
//     
//     protected static void readDirectory() throws IOException {
//         if (!en.isEmpty() && !es.isEmpty()) {
//             return;
//         }
//         InputStream inEn = Lang.class.getClassLoader().getResourceAsStream("locales/messages/en.properties");
//         InputStream inEs = Lang.class.getClassLoader().getResourceAsStream("locales/messages/es.properties");
//         en.load(inEn);
//         es.load(inEs);
//     }
// }


import java.lang.reflect.Field;
import java.util.HashMap;
import locales.Lang;
import org.json.JSONArray;
import org.json.JSONObject;
    public ConektaObject tags;
    public String brand;
    public String parent_id;
    public String object;
    public HashMap metadata;
    public Boolean deleted;
    
    // Helper method to access line item fields
    public String get(String key) {
        try {
            Field field;
            field = this.getClass().getField(key);
            return (String) field.get(this);
        } catch(NoSuchFieldException e) {
            return (String) antifraud_info.get(key);
        } catch(IllegalAccessException e) {
            return "";
        }
    }
    
    // Helper method to push key values to vertical related fields
    public void addVerticalRelatedField(String key, String value) {
        antifraud_info.put(key, value);
    }
    
    @Override
    public String instanceUrl() throws Error {
        if (id == null || id.length() == 0) {
            HashMap parameters = new HashMap();
            parameters.put("RESOURCE", this.getClass().getSimpleName());
// Path: src/locales/Lang.java
// public abstract class Lang {
//     public static final String EN = "en";
//     public static final String ES = "es";
//     public static Properties en = new Properties();
//     public static Properties es = new Properties();
//     
//     public static String translate(String key, HashMap parameters, String locale) {
//         try {
//             readDirectory();
//         } catch (IOException ex) {
//             System.out.println(ex.getMessage());
//             Logger.getLogger(Lang.class.getName()).log(Level.SEVERE, null, ex);
//         }
//         String translate = "";
//         if (locale.equals("en"))
//             translate = en.getProperty(key);
//         if (locale.equals("es"))
//             translate = es.getProperty(key);
//         if (!parameters.isEmpty()) {
//             Iterator it = parameters.entrySet().iterator();
//             while (it.hasNext()) {
//                 Map.Entry pair = (Map.Entry)it.next();
//                 String k = (String) pair.getKey();
//                 String v = (String) pair.getValue();
//                 translate = translate.replace("%{"+ k.toLowerCase() +"}", v);
//                 it.remove(); // avoids a ConcurrentModificationException
//             }
//         }
//         return translate;
//     }
//     
//     protected static void readDirectory() throws IOException {
//         if (!en.isEmpty() && !es.isEmpty()) {
//             return;
//         }
//         InputStream inEn = Lang.class.getClassLoader().getResourceAsStream("locales/messages/en.properties");
//         InputStream inEs = Lang.class.getClassLoader().getResourceAsStream("locales/messages/es.properties");
//         en.load(inEn);
//         es.load(inEs);
//     }
// }


// Path: src/io/conekta/LineItems.java
import java.lang.reflect.Field;
import java.util.HashMap;
import locales.Lang;
import org.json.JSONArray;
import org.json.JSONObject;

    public ConektaObject tags;
    public String brand;
    public String parent_id;
    public String object;
    public HashMap metadata;
    public Boolean deleted;
    
    // Helper method to access line item fields
    public String get(String key) {
        try {
            Field field;
            field = this.getClass().getField(key);
            return (String) field.get(this);
        } catch(NoSuchFieldException e) {
            return (String) antifraud_info.get(key);
        } catch(IllegalAccessException e) {
            return "";
        }
    }
    
    // Helper method to push key values to vertical related fields
    public void addVerticalRelatedField(String key, String value) {
        antifraud_info.put(key, value);
    }
    
    @Override
    public String instanceUrl() throws Error {
        if (id == null || id.length() == 0) {
            HashMap parameters = new HashMap();
            parameters.put("RESOURCE", this.getClass().getSimpleName());
            throw new Error(Lang.translate("error.resource.id", parameters, Lang.EN),