public int[][] e2f(){
  int eDim=tgtEndExclusive - tgtStartInclusive;
  int[][] e2f=new int[eDim][];
  for (int i=tgtStartInclusive; i < tgtEndExclusive; ++i) {
    int localIdx=i - tgtStartInclusive;
    int[] e2fI=sentencePair.e2f(i);
    int srcAlignDim=e2fI.length;
    e2f[localIdx]=new int[srcAlignDim];
    if (srcAlignDim > 0) {
      System.arraycopy(e2fI,0,e2f[localIdx],0,srcAlignDim);
      for (int j=0; j < srcAlignDim; ++j) {
        e2f[localIdx][j]-=srcStartInclusive;
      }
    }
  }
  return e2f;
}

public int [ ] [ ] e2f ( ) { int eDim = tgtEndExclusive - tgtStartInclusive ; int [ ] [ ] e2f = new int [ eDim ] [ ] ; for ( int i = tgtStartInclusive ; i < tgtEndExclusive ; ++ i ) { int localIdx = i - tgtStartInclusive ; int [ ] e2fI = sentencePair . e2f ( i ) ; int srcAlignDim = e2fI . length ; e2f [ localIdx ] = new int [ srcAlignDim ] ; if ( srcAlignDim > 0 ) { System . arraycopy ( e2fI , 0 , e2f [ localIdx ] , 0 , srcAlignDim ) ; for ( int j = 0 ; j < srcAlignDim ; ++ j ) { e2f [ localIdx ] [ j ] -= srcStartInclusive ; } } } return e2f ; }
return the rule - internal target - source alignment grid .
