// Path: src/main/java/com/orgzly/org/OrgStringUtils.java
// public class OrgStringUtils {
//     public static String trimLines(String str) {
//         return str.replaceFirst("\n+[\\s]*$", "").replaceFirst("^[\\s]*\n", "");
//     }
// 
//     public static boolean isEmpty(String s) {
//         return s == null || s.length() == 0;
//     }
// 
//     public static String join(Collection set, String d) {
//         StringBuilder result = new StringBuilder();
// 
//         int i = 0;
//         for (Object str: set) {
//             result.append(str);
// 
//             if (i++ < set.size() - 1) { /* Not last. */
//                 result.append(d);
//             }
//         }
// 
//         return result.toString();
//     }
// 
// 
// 
//     public static int stringWidth(String str) {
//         int total = 0;
// 
//         for (int i = 0; i < str.length(); ) {
//             int cp = str.codePointAt(i);
// 
//             int width = codePointWidth(cp);
// 
//             // System.out.printf("Code point %c width: %d\n", cp, width);
// 
//             total += width;
// 
//             i += Character.charCount(cp);
//         }
// 
//         return total;
//     }
// 
//     private static int codePointWidth(int cp) {
//         return EastAsianWidth.CP.contains(cp) ? 2 : 1;
//     }
// }


import com.orgzly.org.OrgStringUtils;
import java.util.ArrayList;
package com.orgzly.org.utils;



public class ArrayListSpaceSeparated extends ArrayList<String> {
    private static final String DELIMITER = " ";

    public ArrayListSpaceSeparated() {
        super();
    }

    public ArrayListSpaceSeparated(String str) {
        for (String s: str.split(DELIMITER)) {
            String st = s.trim();
            if (st.length() > 0) {
                add(st);
            }
        }
    }

    public String toString() {
// Path: src/main/java/com/orgzly/org/OrgStringUtils.java
// public class OrgStringUtils {
//     public static String trimLines(String str) {
//         return str.replaceFirst("\n+[\\s]*$", "").replaceFirst("^[\\s]*\n", "");
//     }
// 
//     public static boolean isEmpty(String s) {
//         return s == null || s.length() == 0;
//     }
// 
//     public static String join(Collection set, String d) {
//         StringBuilder result = new StringBuilder();
// 
//         int i = 0;
//         for (Object str: set) {
//             result.append(str);
// 
//             if (i++ < set.size() - 1) { /* Not last. */
//                 result.append(d);
//             }
//         }
// 
//         return result.toString();
//     }
// 
// 
// 
//     public static int stringWidth(String str) {
//         int total = 0;
// 
//         for (int i = 0; i < str.length(); ) {
//             int cp = str.codePointAt(i);
// 
//             int width = codePointWidth(cp);
// 
//             // System.out.printf("Code point %c width: %d\n", cp, width);
// 
//             total += width;
// 
//             i += Character.charCount(cp);
//         }
// 
//         return total;
//     }
// 
//     private static int codePointWidth(int cp) {
//         return EastAsianWidth.CP.contains(cp) ? 2 : 1;
//     }
// }


// Path: src/main/java/com/orgzly/org/utils/ArrayListSpaceSeparated.java
import com.orgzly.org.OrgStringUtils;
import java.util.ArrayList;

package com.orgzly.org.utils;



public class ArrayListSpaceSeparated extends ArrayList<String> {
    private static final String DELIMITER = " ";

    public ArrayListSpaceSeparated() {
        super();
    }

    public ArrayListSpaceSeparated(String str) {
        for (String s: str.split(DELIMITER)) {
            String st = s.trim();
            if (st.length() > 0) {
                add(st);
            }
        }
    }

    public String toString() {
        return OrgStringUtils.join(this, DELIMITER);