docs: protected Node[][] initialLattice(Instance carrier) {
  		int[][] data = (int[][]) carrier.getData();
  
  		int length = carrier.length();
  
  		Node[][] lattice = new Node[length][];
  		for (int l = 0; l < length; l++) {
  			lattice[l] = new Node[ysize];
  			for (int c = 0; c < ysize; c++) {
  				lattice[l][c] = new Node(ysize);
  				for (int i = 0; i < orders.length; i++) {
  					if (data[l][i] == -1 || data[l][i]>=weights.length) //TODO: xpqiu 2013.2.1
  						continue;
  					if (orders[i] == 0) {
  						lattice[l][c].score += weights[data[l][i] + c];
  					} else if (orders[i] == 1) {
  						int offset = c;
  						for (int p = 0; p < ysize; p++) {
  							//weights对应trans(c,p)的按行展开
  							lattice[l][c].trans[p] += weights[data[l][i]
  									+ offset];
  							offset += ysize;
  						}
  					}
  				}
  			}
  		}
  
  		return lattice;
  	}