public Member(String display, boolean isMethod, boolean manageModifier) {
		this.hasUrl = new UrlBuilder(null, ModeUrl.ANYWHERE).getUrl(display) != null;
		final Pattern pstart = MyPattern.cmpile("^(" + UrlBuilder.getRegexp() + ")([^\\[\\]]+)$");
		final Matcher mstart = pstart.matcher(display);

		if (mstart.matches()) {
			if (mstart.groupCount() != 5) {
				throw new IllegalStateException();
			}
			final UrlBuilder urlBuilder = new UrlBuilder(null, ModeUrl.AT_START);
			url = urlBuilder.getUrl(mstart.group(1));
			url.setMember(true);
			display = /* mstart.group(1).trim() + */mstart.group(mstart.groupCount()).trim();
		} else {
			final Pattern pend = MyPattern.cmpile("^([^\\[\\]]+)(" + UrlBuilder.getRegexp() + ")$");
			final Matcher mend = pend.matcher(display);

			if (mend.matches()) {
				if (mend.groupCount() != 5) {
					throw new IllegalStateException();
				}
				final UrlBuilder urlBuilder = new UrlBuilder(null, ModeUrl.AT_END);
				url = urlBuilder.getUrl(mend.group(2));
				url.setMember(true);
				display = mend.group(1).trim();
			} else {
				url = null;
			}
		}

		final String lower = display.toLowerCase();

		if (manageModifier) {
			this.staticModifier = lower.contains("{static}") || lower.contains("{classifier}");
			this.abstractModifier = lower.contains("{abstract}");
			String displayClean = display.replaceAll("(?i)\\{(static|classifier|abstract)\\}", "").trim();
			if (displayClean.length() == 0) {
				displayClean = " ";
			}

			if (VisibilityModifier.isVisibilityCharacter(displayClean.charAt(0))) {
				visibilityModifier = VisibilityModifier.getVisibilityModifier(display.charAt(0), isMethod == false);
				this.display = displayClean.substring(1).trim();
			} else {
				this.display = displayClean;
				visibilityModifier = null;
			}
		} else {
			this.staticModifier = false;
			this.visibilityModifier = null;
			this.abstractModifier = false;
			display = display.trim();
			this.display = display.length() == 0 ? " " : display.trim();
		}
	}