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


public class Fib {
    
    int r;
    
    public void run(int n) {
	if (n<2) {
	    r = n;
	    return;
	}
	
	Fib f1 = new Fib();
	Fib f2 = new Fib();
	Conc.finish_begin();
	run_1(f1,n-1,f2,n-2);
	Conc.finish_end();
	
	r = f1.r + f2.r;
    }
    
    public static void run_1(Fib f1,int n1,Fib f2,int n2) {
	Conc.async_begin();
	f1.run(n1);
	Conc.async_end();
	f2.run(n2);
    }

    public static void main(String args[]) {
	int n = args.length; //int n = (args.length > 0) ? int.parse(args(0)) : 10; // DZ
	Fib f = new Fib();
	f.run(n);
    }
}