@SuppressWarnings("unchecked") @Override public void initialize(T instance, int constructorId, Object... args) { if (instance instanceof CPPObject) { // instance.peer = allocate(instance.getClass(), constructorId, args); int[] position = new int[] {0}; Type cppType = CPPType.parseCPPType( CPPType.cons((Class<? extends CPPObject>) typeClass, args), position); // int actualArgsOffset = position[0] - 1, nActualArgs = args.length - actualArgsOffset; // System.out.println("actualArgsOffset = " + actualArgsOffset); // Object[] actualArgs = new Object[nActualArgs]; // System.arraycopy(args, actualArgsOffset, actualArgs, 0, nActualArgs); setNativeObjectPeer( instance, newCPPInstance((CPPObject) instance, cppType, constructorId, args)); super.initialize(instance, DEFAULT_CONSTRUCTOR); } else { super.initialize(instance, constructorId, args); } }