StringBuffer sig= new StringBuffer(); sig.append(signature);  int p= 0; while (p < sig.length() - 1) { switch (sig.charAt(p)) { case Signature.C_EXTENDS: switch (sig.charAt(p + 1)) { case Signature.C_EXTENDS: sig.replace(p, typeEnd(signature, p), NULL_TYPE_SIGNATURE); p+= NULL_TYPE_SIGNATURE_ARRAY.length; break; case Signature.C_SUPER: sig.deleteCharAt(p + 1); break; case Signature.C_STAR: sig.replace(p, p + 2, NULL_TYPE_SIGNATURE); p+= NULL_TYPE_SIGNATURE_ARRAY.length; break; default: p++; break; } break; case Signature.C_SUPER: switch (sig.charAt(p + 1)) { case Signature.C_EXTENDS: sig.replace(p, typeEnd(signature, p), "*"); p++; break; case Signature.C_SUPER: case Signature.C_STAR: sig.deleteCharAt(p); break; default: p++; break; } break; default: p++; } } return sig.toString().toCharArray();
return Signature.removeCapture(signature);
	public static char[] fix83600(char[] signature) {		if (signature == null || signature.length < 2)			return signature;				StringBuffer sig= new StringBuffer();		sig.append(signature);				int p= 0;		while (p < sig.length() - 1) {			switch (sig.charAt(p)) {				case Signature.C_EXTENDS:					switch (sig.charAt(p + 1)) {						case Signature.C_EXTENDS:							sig.replace(p, typeEnd(signature, p), NULL_TYPE_SIGNATURE);							p+= NULL_TYPE_SIGNATURE_ARRAY.length;							break;						case Signature.C_SUPER:							sig.deleteCharAt(p + 1);							break;						case Signature.C_STAR:							sig.replace(p, p + 2, NULL_TYPE_SIGNATURE);							p+= NULL_TYPE_SIGNATURE_ARRAY.length;							break;						default:							p++;							break;					}					break;				case Signature.C_SUPER:					switch (sig.charAt(p + 1)) {						case Signature.C_EXTENDS:							sig.replace(p, typeEnd(signature, p), "*"); //$NON-NLS-1$							p++;							break;						case Signature.C_SUPER:						case Signature.C_STAR:							sig.deleteCharAt(p);							break;						default:							p++;							break;					}					break;				default:					p++;			}		}		return sig.toString().toCharArray();	}