code: public static ConcatVector readFromProto(ConcatVectorProto.ConcatVector m) {
      int components = m.getComponentCount();
  
      ConcatVector vec = new ConcatVector();
      vec.pointers = new double[components][];
      vec.sparse = new boolean[components];
      vec.copyOnWrite = new boolean[components];
      for (int i = 0; i < components; i++) {
        ConcatVectorProto.ConcatVector.Component c = m.getComponent(i);
        vec.sparse[i] = c.getSparse();
        int dataSize = c.getDataCount();
        vec.pointers[i] = new double[dataSize];
        for (int j = 0; j < dataSize; j++) {
          vec.pointers[i][j] = c.getData(j);
        }
      }
  
      return vec;
    }
docs: Recreates an in-memory concat vector object from a Proto serialization.
  
  @param m the concat vector proto
  @return an in-memory concat vector object