package p1;

import p2.B;

public class A {

	/**
	 * This is a comment
	 * @param j
	 * @param b
	 * @param foo
	 * @param bar
	 */
	public void mA1(float j, B b, int foo, String bar) {
		b.mA1(j, foo, bar);
	}
	
	public void mA2() {}
}