} else if ("..".equals(ref)) {
ParseContext parentContext = context.getParentContext();
if (parentContext.getObject() != null) {
refValue = this.getContext().getObject();
} else {
MapResolveFieldDeserializer fieldResolver = new MapResolveFieldDeserializer(object, (String) key);
addResolveTask(new ResolveTask(parentContext, ref, parentContext, fieldResolver));
setResolveStatus(DefaultJSONParser.NeedToResolve);
}
} else if ("$".equals(ref)) {
ParseContext rootContext = context;
while (rootContext.getParentContext() != null) {
rootContext = rootContext.getParentContext();
}
if (rootContext.getObject() != null) {
refValue = rootContext.getObject();
} else {
addResolveTask(new ResolveTask(rootContext, ref));
setResolveStatus(DefaultJSONParser.NeedToResolve);
}
} else {
MapResolveFieldDeserializer fieldResolver = new MapResolveFieldDeserializer(object, (String) key);
addResolveTask(new ResolveTask(context, ref, context.getParentContext(), fieldResolver));
setResolveStatus(DefaultJSONParser.NeedToResolve);
}
if (lexer.token() != JSONToken.RBRACE) {