declaringType = declaringType.ANY;
declaringType = TypePattern.ANY;
	public SignaturePattern parseMethodOrConstructorSignaturePattern() {		int startPos = tokenSource.peek().getStart();		ModifiersPattern modifiers = parseModifiersPattern();		TypePattern returnType = parseTypePattern();				TypePattern declaringType;		NamePattern name = null;		Member.Kind kind;		// here we can check for 'new'		if (maybeEatNew(returnType)) {			kind = Member.CONSTRUCTOR;			if (returnType.toString().length() == 0) {				declaringType = TypePattern.ANY;			} else {				declaringType = returnType;			}			returnType = TypePattern.ANY; 			name = NamePattern.ANY;		} else {			kind = Member.METHOD;			declaringType = parseTypePattern();			if (maybeEat(".")) {			    name = parseNamePattern();		    } else {		    	name = tryToExtractName(declaringType);		    	if (name == null) {		    		throw new ParserException("name pattern", tokenSource.peek());		    	}		    	String simpleName = name.maybeGetSimpleName();		    	//XXX should add check for any Java keywords		    	if (simpleName != null && simpleName.equals("new")) {		    		throw new ParserException("constructor patterns have no return type", 		    							tokenSource.peek());		    	}		    	if (declaringType.toString().equals("")) {		    		declaringType = declaringType.ANY;		    	}			}		}				TypePatternList parameterTypes = parseArgumentsPattern();				ThrowsPattern throwsPattern = parseOptionalThrowsPattern();		SignaturePattern ret = new SignaturePattern(kind, modifiers, returnType, declaringType, name, parameterTypes, throwsPattern);	    int endPos = tokenSource.peek(-1).getEnd();	    ret.setLocation(sourceContext, startPos, endPos);		return ret;	}