@Override
  @SuppressWarnings("unchecked")
  public void processReference(IEntity currentEntity, MetaRelationship metaRelationship) {
    ParseQueryNode oldPrevQueryNode = prevQueryNode;
    ParseQueryNode oldCurrQueryNode = currQueryNode;

    String relationName = metaRelationship.getName();
    List<ParseQueryNode> nextNodes = currQueryNode.getNextQueryNode(metaRelationship);

    for (ParseQueryNode nextNode : nextNodes) {
      prevQueryNode = currQueryNode;
      currQueryNode = nextNode;

      List<IEntity> relationEntityList = (List<IEntity>) currentEntity.getFieldValues(relationName);
      for (IEntity entity : relationEntityList) {
        entity.traverse(this);
      }

      prevQueryNode = oldPrevQueryNode;
      currQueryNode = oldCurrQueryNode;
    }
  }
 public String getMetaFieldValueName(MetaRelationship relationship) {
   return relationship.getFlattenValueDbName();
 }