protected boolean supportsPatch(StringBuffer patchString, IPatch ip) { Patch p = (Patch)ip;
protected boolean supportsPatch(StringBuffer patchString, Patch p) {
    protected boolean supportsPatch(StringBuffer patchString, IPatch ip) {    		Patch p = (Patch)ip;	// check the length of Patch        if ((patchSize != p.sysex.length) && (patchSize != 0))	    return false;        if (sysexID == null || patchString.length() < sysexID.length())	    return false;        StringBuffer compareString = new StringBuffer();        for (int i = 0; i < sysexID.length(); i++) {	    switch (sysexID.charAt(i)) {	    case '*':		compareString.append(patchString.charAt(i));		break;	    default:		compareString.append(sysexID.charAt(i));            }        }// 	ErrorMsg.reportStatus(toString());// 	ErrorMsg.reportStatus("Comp.String: " + compareString);// 	ErrorMsg.reportStatus("DriverString:" + driverString);// 	ErrorMsg.reportStatus("PatchString: " + patchString);        return (compareString.toString().equalsIgnoreCase		(patchString.toString().substring(0, sysexID.length())));    }