public ParameterInfo(Type param, Annotation[] annotations) {
		this.type = param;
		for (Annotation annotation : annotations) {
			if (annotation instanceof Optional) {
				state = State.OPTIONAL;
			} else if (annotation instanceof Property) {
				increment = 0;
				state = State.CONTEXT_PROPERTY;
				this.parameter = ((Property) annotation).value();
			}
		}
		if (param == Scope.class) {
			state = State.SCOPE;
			increment = 0;
		}
		if (param == Reference.class) {
			state = State.REFERENCE;
		}
	}