public Field findFieldWithAnnotationAttributeAndValue(Class<? extends Annotation> annotationClass,String attributeName, String attributeValue) {
		for(Field field : getFields()) {
			if(field.isAnnotationPresent(annotationClass)) {
				Annotation annotation = field.getAnnotation(annotationClass);
				try {
					Method nameMethod = annotationClass.getDeclaredMethod(attributeName);
					Object invokeResult = nameMethod.invoke(annotation);
					if(attributeValue.matches((String) invokeResult)) {
                                                getFieldDetailStore().add(field);
                                                getFieldDetailStore().addAnnotation(field, annotationClass);
						return field;
                                        } else {
						continue;
                                        }
				} catch (IllegalArgumentException e) {
					System.err.println("<ClassInspect> Failed to execute Annotation Method <" + attributeName +">. Method should accept no arguments.");
				} catch (IllegalAccessException e) {
					System.err.println("<ClassInspect> Failed to execute Annotation Method <" + attributeName +">. Method should be public");
				} catch (InvocationTargetException e) {
					System.err.println("<ClassInspect> Failed to execute Annotation Method <" + attributeName +">. Exception: \n" + e.getMessage());
				} catch (SecurityException e) {
					System.err.println("<ClassInspect> Failed to execute Annotation Method <" + attributeName +">. Exception: \n" + e.getMessage());
				} catch (NoSuchMethodException e) {
					System.err.println("<ClassInspect> Failed to execute Annotation Method <" + attributeName +">. Method was not found on <class : " + annotationClass.getName() + ">");
				}
			}
		}
		return null;
	}