@Override
	public boolean canRead(EvaluationContext context, Object target, String name) throws AccessException {
		if (target instanceof Message && !PAYLOAD.equals(name) && !HEADERS.equals(name)) {
			boolean containsKey = ((Message<?>) target).getHeaders().containsKey(name);
			if (containsKey) {
				this.typeDescriptor = CodeFlow.toDescriptorFromObject(((Message<?>) target).getHeaders().get(name));
			}
			return containsKey;
		}
		return super.canRead(context, target, name);
	}
A {@link PropertyAccessor} reading values from a backing {@link Message} used by a
partition key. In a way this is similar than {@link MapAccessor} for header but also
adds 'payload' and 'headers' to be resolved. Having 'payload' or 'headers' keywords
in headers is not possible to access via this accessor.

@author Janne Valkealahti
spring-xd-hadoop/src/main/java/org/springframework/xd/integration/hadoop/expression/MessagePartitionKeyPropertyAccessor.java