private byte[] make(Class<?> target, Bytes ab, String name, Class<?> sup,
ArrayList<Constructor<?>> ts, ArrayList<Method> ms)
{
Bytecode y = new Bytecode(ab);
Constants cs = y.cons;
y.head.setModifier(Mod2.PUBLIC | Mod2.SYNTHETIC);
int classCi = cs.addClass(name);
y.head.setSuperCi(cs.addClass(sup));
Bytes n = cs.getUtf(cs.getClass(y.head.getClassCi()));
for (int i = 1; i < cs.getConN(); i++)
if (cs.getTag(i) == Constants.TAG_CLASS && cs.equalsUtf(cs.getClass(i), n))
cs.setClass(i, cs.getClass(classCi));
Field f = new Field(cs);
f.setModifier(Mod2.PUBLIC | Mod2.STATIC);
f.setNameCi(cs.addUcs(DATAS_NAME));
f.setDescCi(cs.addUcs(Class2.descript(Object[].class)));
y.getFields().addField(f);
int datasCi = cs.addField(y.head.getClassCi(), cs.addNameDesc(f.getNameCi(),
f.getDescCi()));
Code ato = y.getProcs().removeProc(y.getProcs().searchProc(CTOR_NAME, null)).getCode();
for (Constructor<?> t: ts)
new WeaveProc(target, y, ato).ctor(t);