public static Vector wrap(Vector v, int jobId, boolean isAsync, PlayerEntry player) {
    if (v instanceof BlockVector) {
      return BlockVectorWrapper.wrap((BlockVector) v, jobId, isAsync, player);
    }

    VectorWrapper result;
    if (v instanceof VectorWrapper) {
      result = (VectorWrapper) v;
      result.setAsync(isAsync);
      result.setPlayer(player);
    } else {
      result = new VectorWrapper(v, jobId, isAsync, player);
    }

    return result;
  }
 @Override
 public BlockVector toBlockVector() {
   return BlockVectorWrapper.wrap(m_parent.toBlockVector(), m_jobId, m_isAsync, m_player);
 }