See I could believe that if the parameters you were passing resembled a process class, but that doesn't seem to be the case here. You have a "log string", whatever that is (I have no idea because the javadoc just says "string to be used for logging" which doesn't really help. You have a verbose flag, a color flag. And I have no idea what updateOut and generateOut are supposed to do.

As far as I can tell what you should have are the following:

    public interface Executable {
        public String[] getCommand();
        public long getTimeout();
        public TimeUnit getTimeUnit();
        public String getStdin();
        public boolean matchesStdout(String actual);
        public boolean matchesStderr(String actual);
        public boolean matchesReturnCode(int actual);
    }
    public class Proc<T extends Executable> {
        T executable;
        public Proc(T executable) { this.executable = executable; }
    }