}  if (isStar()) {  int numDimensionsInTargetType = 0; if (dim > 0) { int index; while((index = targetTypeName.indexOf('[')) != -1) { numDimensionsInTargetType++; targetTypeName = targetTypeName.substring(index+1); } if (numDimensionsInTargetType == dim) { return true; } else { return false; } }
	private boolean matchesExactlyByName(String targetTypeName) {		//XXX hack		if (knownMatches == null && importedPrefixes == null) {			return innerMatchesExactly(targetTypeName);		}				// if our pattern is length 1, then known matches are exact matches		// if it's longer than that, then known matches are prefixes of a sort		if (namePatterns.length == 1) {			for (int i=0, len=knownMatches.length; i < len; i++) {				if (knownMatches[i].equals(targetTypeName)) return true;			}		} else {			for (int i=0, len=knownMatches.length; i < len; i++) {				String knownPrefix = knownMatches[i] + "$";				if (targetTypeName.startsWith(knownPrefix)) {					int pos = lastIndexOfDotOrDollar(knownMatches[i]);					if (innerMatchesExactly(targetTypeName.substring(pos+1))) {						return true;					}				}			}		}		// if any prefixes match, strip the prefix and check that the rest matches		// assumes that prefixes have a dot at the end		for (int i=0, len=importedPrefixes.length; i < len; i++) {			String prefix = importedPrefixes[i];			//System.err.println("prefix match? " + prefix + " to " + targetTypeName);			if (targetTypeName.startsWith(prefix)) {								if (innerMatchesExactly(targetTypeName.substring(prefix.length()))) {					return true;				}			}		}				return innerMatchesExactly(targetTypeName);	}