}
@Override
public <Type> Type getValue(FieldInformer<Type> propertyDescriptor) {
VertexPathNavigator navigator = new VertexPathNavigator(service.getStrategy(), service.getDriver(), input);
VertexLocation destination = navigator.navigateOn(propertyDescriptor.getFieldPath());
Vertex destinationVertex = destination.vertex();
try {
// There may remain one unevaluated property - in which case it's a literal one
Property destinationProperty = destination.property();
Loader loader = new Loader();
if(loader.hasLiteralProperty(destinationProperty, destinationVertex)) {
return (Type) loader.loadSingleLiteral(getClass().getClassLoader(), destinationProperty, destinationVertex, cache);
}
} catch(EmptyStackException e) {