protected boolean equals(Class<?> conParamType, Class<?> paramType) {

		if ((conParamType.isPrimitive() && paramType.isPrimitive())
				|| !(conParamType.isPrimitive() || paramType.isPrimitive())) {
			// return equals if conParamType and paramTypes are all primitive or
			// neither of them are primitive
			return conParamType.equals(paramType);
		} else {

			// if one of conParamType and paramTypes is primitive
			// do auto boxing convert
			conParamType = autoBoxing(conParamType);
			paramType = autoBoxing(paramType);

			if (conParamType.equals(paramType)) {
				return true;
			} else {
				// paramType type can be casted to conParamType
				return conParamType.isAssignableFrom(paramType);
			}

		}

	}