// Path: src/main/java/org/psidnell/omnifocus/model/Node.java
// public interface Node {
// 
//     String getName();
// 
//     void setName(String name);
// 
//     String getId();
// 
//     void setId(String id);
// 
//     int getRank();
// 
//     void setRank(int rank);
// 
//     String getType();
// 
//     boolean isRoot();
// 
//     boolean isMarked();
// 
//     void setMarked(boolean marked);
// 
//     void cascadeMarked();
// 
//     void setConfigParams(ConfigParams config);
// 
//     java.util.Date getDateAdded();
// 
//     void setDateAdded(java.util.Date date);
// 
//     org.psidnell.omnifocus.expr.Date getAdded();
// 
//     java.util.Date getDateModified();
// 
//     void setDateModified(java.util.Date date);
// 
//     org.psidnell.omnifocus.expr.Date getModified();
// }
// 
// Path: src/main/java/org/psidnell/omnifocus/util/StringUtils.java
// public class StringUtils {
// 
//     public static String join(Collection<String> data, String delimiter) {
//         return join(data, new StringJoiner(delimiter));
//     }
// 
//     public static String join(Collection<String> data, String delimiter, String prefix, String suffix) {
//         return join(data, new StringJoiner(delimiter, prefix, suffix));
//     }
// 
//     public static String join(String data[], String delimiter) {
//         return join(Arrays.asList(data), new StringJoiner(delimiter));
//     }
// 
//     public static String join(String data[], String delimiter, String prefix, String suffix) {
//         return join(Arrays.asList(data), new StringJoiner(delimiter, prefix, suffix));
//     }
// 
//     public static String join(Collection<String> data, StringJoiner sj) {
//         data.stream().forEachOrdered((s) -> sj.add(s));
//         return sj.toString();
//     }
// 
//     public static String times(String str, int n) {
//         StringBuilder result = new StringBuilder();
//         for (int i = 0; i < n; i++) {
//             result.append(str);
//         }
//         return result.toString();
//     }
// }


import java.lang.reflect.Method;
import java.util.TreeMap;
import org.psidnell.omnifocus.model.Node;
import org.psidnell.omnifocus.util.StringUtils;
                String type = m.getReturnType().getSimpleName().toLowerCase();

                String nameAndArgs = name + processArgs(attrib);

                v.process(type, nameAndArgs, attrib.help());
            }
        }
    }

    private static String padL(String val, int pad) {
        String result = val;
        while (result.length() < pad) {
            result = " " + result;
        }
        return result;
    }

    private static String padR(String val, int pad) {
        String result = val;
        while (result.length() < pad) {
            result = result + " ";
        }
        return result;
    }

    private static String processArgs(ExprAttribute attrib) {
        if (attrib.args().length == 0) {
            return "";
        }
        else {
// Path: src/main/java/org/psidnell/omnifocus/model/Node.java
// public interface Node {
// 
//     String getName();
// 
//     void setName(String name);
// 
//     String getId();
// 
//     void setId(String id);
// 
//     int getRank();
// 
//     void setRank(int rank);
// 
//     String getType();
// 
//     boolean isRoot();
// 
//     boolean isMarked();
// 
//     void setMarked(boolean marked);
// 
//     void cascadeMarked();
// 
//     void setConfigParams(ConfigParams config);
// 
//     java.util.Date getDateAdded();
// 
//     void setDateAdded(java.util.Date date);
// 
//     org.psidnell.omnifocus.expr.Date getAdded();
// 
//     java.util.Date getDateModified();
// 
//     void setDateModified(java.util.Date date);
// 
//     org.psidnell.omnifocus.expr.Date getModified();
// }
// 
// Path: src/main/java/org/psidnell/omnifocus/util/StringUtils.java
// public class StringUtils {
// 
//     public static String join(Collection<String> data, String delimiter) {
//         return join(data, new StringJoiner(delimiter));
//     }
// 
//     public static String join(Collection<String> data, String delimiter, String prefix, String suffix) {
//         return join(data, new StringJoiner(delimiter, prefix, suffix));
//     }
// 
//     public static String join(String data[], String delimiter) {
//         return join(Arrays.asList(data), new StringJoiner(delimiter));
//     }
// 
//     public static String join(String data[], String delimiter, String prefix, String suffix) {
//         return join(Arrays.asList(data), new StringJoiner(delimiter, prefix, suffix));
//     }
// 
//     public static String join(Collection<String> data, StringJoiner sj) {
//         data.stream().forEachOrdered((s) -> sj.add(s));
//         return sj.toString();
//     }
// 
//     public static String times(String str, int n) {
//         StringBuilder result = new StringBuilder();
//         for (int i = 0; i < n; i++) {
//             result.append(str);
//         }
//         return result.toString();
//     }
// }


// Path: src/main/java/org/psidnell/omnifocus/expr/ExprAttributePrinter.java
import java.lang.reflect.Method;
import java.util.TreeMap;
import org.psidnell.omnifocus.model.Node;
import org.psidnell.omnifocus.util.StringUtils;

                String type = m.getReturnType().getSimpleName().toLowerCase();

                String nameAndArgs = name + processArgs(attrib);

                v.process(type, nameAndArgs, attrib.help());
            }
        }
    }

    private static String padL(String val, int pad) {
        String result = val;
        while (result.length() < pad) {
            result = " " + result;
        }
        return result;
    }

    private static String padR(String val, int pad) {
        String result = val;
        while (result.length() < pad) {
            result = result + " ";
        }
        return result;
    }

    private static String processArgs(ExprAttribute attrib) {
        if (attrib.args().length == 0) {
            return "";
        }
        else {
            return StringUtils.join(attrib.args(), ",", " (",")");