[486722] Add missing LetExp support
diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvti/AbstractRegion2Mapping.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvti/AbstractRegion2Mapping.java
index d0763f8..804321a 100644
--- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvti/AbstractRegion2Mapping.java
+++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvti/AbstractRegion2Mapping.java
@@ -21,6 +21,7 @@
 import org.eclipse.ocl.pivot.CallExp;
 import org.eclipse.ocl.pivot.CollectionType;
 import org.eclipse.ocl.pivot.CompleteClass;
+import org.eclipse.ocl.pivot.LetExp;
 import org.eclipse.ocl.pivot.OCLExpression;
 import org.eclipse.ocl.pivot.Operation;
 import org.eclipse.ocl.pivot.OppositePropertyCallExp;
@@ -285,6 +286,9 @@
 		if (qvtpTypedElement instanceof VariableExp) {
 			return getNode(((VariableExp)qvtpTypedElement).getReferredVariable());
 		}
+		if (qvtpTypedElement instanceof LetExp) {
+			return getNode(((LetExp)qvtpTypedElement).getOwnedIn());
+		}
 		if (qvtpTypedElement instanceof OppositePropertyCallExp) {
 			OppositePropertyCallExp propertyCallExp = (OppositePropertyCallExp)qvtpTypedElement;
 			Node sourceNode = getNode(propertyCallExp.getOwnedSource());
diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvti/BasicRegion2Mapping.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvti/BasicRegion2Mapping.java
index 83a16b0..ce4e0c6 100644
--- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvti/BasicRegion2Mapping.java
+++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvti/BasicRegion2Mapping.java
@@ -39,6 +39,7 @@
 import org.eclipse.ocl.pivot.IterateExp;
 import org.eclipse.ocl.pivot.Iteration;
 import org.eclipse.ocl.pivot.IteratorExp;
+import org.eclipse.ocl.pivot.LetExp;
 import org.eclipse.ocl.pivot.MapLiteralExp;
 import org.eclipse.ocl.pivot.MapLiteralPart;
 import org.eclipse.ocl.pivot.MapType;
@@ -380,6 +381,14 @@
 		}
 
 		@Override
+		public @NonNull OCLExpression visitLetExp(@NonNull LetExp pLetExp) {
+			Variable asVariable = createVariable(ClassUtil.nonNull(pLetExp.getOwnedVariable()));
+			OCLExpression asInExpression = create(pLetExp.getOwnedIn());
+			assert asInExpression != null;
+			return helper.createLetExp(asVariable, asInExpression);
+		}
+
+		@Override
 		public @NonNull OCLExpression visitMapLiteralExp(@NonNull MapLiteralExp pMapLiteralExp) {
 			List<@NonNull MapLiteralPart> clonedParts = new ArrayList<@NonNull MapLiteralPart>();
 			for (@NonNull MapLiteralPart pPart : ClassUtil.nullFree(pMapLiteralExp.getOwnedParts())) {