String cleanname = annotationType.getClassName();
String cleanname = annotationType.getName();
	public AnnotationTypePattern resolveBindings(IScope scope,			Bindings bindings, boolean allowBinding) {		if (resolved) return this;		resolved = true;		if (formalName != null) {			FormalBinding formalBinding = scope.lookupFormal(formalName);			if (formalBinding != null) {				if (bindings == null) {					scope.message(IMessage.ERROR, this, "negation doesn't allow binding");					return this;				}				if (!allowBinding) {					scope.message(IMessage.ERROR, this, 						"name binding only allowed in @pcds, args, this, and target");					return this;				}				verifyIsAnnotationType(formalBinding.getType(),scope);				BindingAnnotationTypePattern binding = new BindingAnnotationTypePattern(formalBinding);				binding.copyLocationFrom(this);				bindings.register(binding, scope);				binding.resolveBinding(scope.getWorld());								return binding;			} else {				scope.message(IMessage.ERROR,this,"unbound formal " + formalName);				return this;			}		} else {			// Non binding case			String cleanname = annotationType.getClassName();			annotationType = scope.getWorld().resolve(annotationType,true);						// We may not have found it if it is in a package, lets look it up...			if (annotationType == ResolvedTypeX.MISSING) {				TypeX type = null;				while ((type = scope.lookupType(cleanname,this)) == ResolvedTypeX.MISSING) {					int lastDot = cleanname.lastIndexOf('.');					if (lastDot == -1) break;					cleanname = cleanname.substring(0,lastDot)+"$"+cleanname.substring(lastDot+1);				}				annotationType = scope.getWorld().resolve(type,true);			}						verifyIsAnnotationType(annotationType,scope);			return this;		}	}