public Problem validate(final Object instance,
				final MatchField annotation, final Object target,
				final Object actualValue)
		{
			Object expectedValue;

			try
			{
				final String fieldName = annotation.value();

				final Field field = instance.getClass().getField(fieldName);

				expectedValue = field.get(instance);
			}
			catch (final Exception e)
			{
				throw new ValidationException(e);
			}

			Problem problem = null;

			if (actualValue == null)
			{
				if (expectedValue != null)
				{
					problem = new Problem(instance, annotation, target,
							expectedValue, actualValue);
				}
			}
			else if (expectedValue == null)
			{
				problem = new Problem(instance, annotation, target,
						expectedValue, actualValue);
			}
			else if (!actualValue.equals(expectedValue))
			{
				problem = new Problem(instance, annotation, target,
						expectedValue, actualValue);
			}

			return problem;
		}