private Helper defineOperation( org.eclipse.m2m.internal.qvt.oml.expressions.Library opModule, QvtOperationalModuleEnv opEnv, LibraryOperation libOp) throws LibraryCreationException { QvtLibraryOperation qvtLibOp = new QvtLibraryOperation(opEnv, libOp); Helper helper = org.eclipse.m2m.internal.qvt.oml.expressions.ExpressionsFactory.eINSTANCE.createHelper(); helper.setName(libOp.getName()); helper.setEType(qvtLibOp.getReturnType()); int index = 1; for (EClassifier type : qvtLibOp.getParamTypes()) { VarParameter varParam = org.eclipse.m2m.internal.qvt.oml.expressions.ExpressionsFactory.eINSTANCE .createVarParameter(); varParam.setKind(DirectionKind.IN); varParam.setEType(type); varParam.setName("arg" + index); // $NON-NLS-1$; ++index; helper.getEParameters().add(varParam); } if (qvtLibOp.getContextType() != opModule) { VarParameter varParam = org.eclipse.m2m.internal.qvt.oml.expressions.ExpressionsFactory.eINSTANCE .createVarParameter(); varParam.setKind(DirectionKind.IN); varParam.setEType(qvtLibOp.getContextType()); varParam.setName(Environment.SELF_VARIABLE_NAME); helper.setContext(varParam); } Class<?> returnClass = (helper.getEType() != null) ? helper.getEType().getInstanceClass() : null; CallHandlerAdapter.attach(helper, new Handler(libOp, returnClass)); return helper; }