var rename = require("rename4");

function part1() {
  var xyz = new rename.XYZInt();
  notxyz = new rename.NotXYZInt();
  xyz.opIntPtrA();
  xyz.opIntPtrB();
  xyz.opAnother2();
  xyz.opT2();
  xyz.tMethod2(0);
  xyz.tMethodNotXYZ2(notxyz);
  xyz.opNotXYZ2();
}

function part2() {
  var xyz = new rename.XYZDouble();
  var notxyz = new rename.NotXYZDouble();
  xyz.opIntPtrA();
  xyz.opIntPtrB();
  xyz.opAnother1();
  xyz.opT1();
  xyz.tMethod1(0);
  xyz.tMethodNotXYZ1(notxyz);
  xyz.opNotXYZ1();
}

function part3(){
  var xyz = new rename.XYZKlass();
  var notxyz = new rename.NotXYZKlass();
  xyz.opIntPtrA();
  xyz.opIntPtrB();
  xyz.opAnother3();
  xyz.opT3();
  xyz.tMethod3(new rename.Klass());
  xyz.tMethodNotXYZ3(notxyz);
  xyz.opNotXYZ3();
}

function part4() {
  var xyz = new rename.XYZEnu();
  var notxyz = new rename.NotXYZEnu();
  xyz.opIntPtrA();
  xyz.opIntPtrB();
  xyz.opAnother4();
  xyz.opT4();
  xyz.tMethod4(rename.En1);
  xyz.tMethodNotXYZ4(notxyz);
  xyz.opNotXYZ4();
}

function part5() {
  var abc = new rename.ABC();
  abc.methodABC(abc);
  var k = new rename.Klass();
  abc.methodKlass(k);
  var a = abc.opABC();
  k = abc.opKlass();
}

part1();
part2();
part3();
part4();
part5();
