COSTA: COSt and Termination Analyzer for Java Bytecode
    
    package x10;


public class SparseMat {	
    //public final int 
    //	N, // The matrix is a sparse N x N matrix.
    //	px, // The place grid is [0:px-1,0:py-1] grid.
    //	py, 
    //	bx, // N/px
    //	by; // N/py
    
    //public final region(:rect&&rank==2&&zeroBased) R;
    //final CRSparseMatrix crSparseMatrix;
    final Block[] M = new Block[10];
    //final Vector temp;
    
    //public SparseMat(final region(:rect&&rank==2&&zeroBased) R, 
    //		     final CRSparseMatrix in) {
    //	this.R=R;
    //	this.crSparseMatrix=in;
    //	N=in.N;
    //	px=R.rank(0).high()+1;
    //	py=R.rank(1).high()+1;
    //	bx=N/px;
    //	by=N/py;
    //	if (N%px != 0 || N%py !=0) {
    //	    System.err.println("N=(" + in.N+") must be a multiple of px=("+px
    //			       + " and py(=" + py + ").");
    //	    throw new UnsupportedOperationException();
    //	    
    //	}
    //	M= (Block[:rail]) new Block[dist.UNIQUE](point [p]) {
    //	    int pi = p/py, pj=p%py;
    //	    return new Block(pi,pj,bx, by, in);
    //	};
    //	temp = new Vector(R, bx, 0.0D);
    //}
    
    public void print(){
	for (int p=0; p<M.length; p++) {
	    Conc.finish_begin();
	    print_1(p);
	    Conc.finish_end();
	}
    }

    public void print_1(int p) {
	Conc.async_begin();
	print_2(p);
	Conc.async_end();
    }

    public void print_2(int p) {
	//System.err.println(M[p].toString());
	//M[p].print();
    }


    class Block {
	void print() {};
    }


    //public final void multiply(final Vector in, final Vector out){
    //	finish ateach(point p : M)	
    //	    M[p].multiply((double[:rail]) in.a[p].e, (double[:rail]) temp.a[p].e);
    //	temp.sumReducePieces();
    //	temp.transpose(out);
    //}
}