[releng] Improve documentation for 6.6
diff --git a/doc/org.eclipse.ocl.doc/doc/0000-introduction.textile b/doc/org.eclipse.ocl.doc/doc/0000-introduction.textile
index 260681e..d989eb4 100644
--- a/doc/org.eclipse.ocl.doc/doc/0000-introduction.textile
+++ b/doc/org.eclipse.ocl.doc/doc/0000-introduction.textile
@@ -2,7 +2,7 @@
 
 For a quick demonstration of OCL enrichment of an Ecore meta-model with computed constraints go to "Getting Started":#GettingStarted.
 
-A PDF version of this documentation is available at "OCL 6.5.0 Documentation":http://download.eclipse.org/ocl/doc/6.5.0/ocl.pdf.
+A PDF version of this documentation is available at "OCL 6.6.0 Documentation":http://download.eclipse.org/ocl/doc/6.6.0/ocl.pdf.
 
 h2. What is OCL?
 
diff --git a/doc/org.eclipse.ocl.doc/doc/4700-extensions.textile b/doc/org.eclipse.ocl.doc/doc/4700-extensions.textile
index 268db8a..a5e346a 100644
--- a/doc/org.eclipse.ocl.doc/doc/4700-extensions.textile
+++ b/doc/org.eclipse.ocl.doc/doc/4700-extensions.textile
@@ -3,13 +3,74 @@
 
 This section highlights some of the OCL extensions prototyped by the Pivot OCL.
 
+h3. Models
+
+The Abstract Syntax classes and interfaces are autogenerated from Pivot.ecore using standard EMF tooling. Pivot.ecore is auto-generated by custom QVTo transformations from OMG's UML.xmi and prototype OCL.uml models. This gives some degree of UML alignment.
+
+The Standard Library is defined by OCL-2.5.oclstdlib for which an OCLstdlib Xtext editor is available. The library is therefore modelled.
+
+The Concrete Syntax classes and editors are also autogenerated from Ecore modesl using standard EMF tooling. Autogeneation of the Ecore models from UML modesl is still work in progress.
+
+The grammars are defined by Xtext models.
+
+The run-time Value classes and interfaces are partially generated from Values.ecore. Full auto-generation is still work in progress.
+
+There is also a model of the code generation intermediate.
+
+h3. XMI
+
+The abstract syntax models are fully persistable as standard XMI using the *.oclas file extension. Pivot.oclas and OCL-2.5.oclas models form part of the Eclipse OCL distribution.
+
+The problem of interchange of synthetic types such as Sequence(String) is solved by an orphan package in which a singleton copy of every singleton is maintained.
+
+The problem of Complete OCL's open classes allowing additional features is solved by CompleteModel/CompletePackage/CompleteClass additions to the abstract syntax so that a CompleteClass may aggregate many ordinary Classes; one from the primary user (UML/Ecore) model, any number of further (Compete OCL or OCLstdlib) over;ays.
+
+The problem of references to unnavigable opposites is solved by an OppositePropertyCallExp class.
+
+The problem of references to modelled Iterations is resolved by adding a referredIteration property to IterateExp/IteratorExp.
+
+The problem of references to Stereotype properties is resolved by normalizing the UML representation to exploit regular Class/Property usage.
+
+The problem of references to Association properties is resolved by normalizing the UML representation to exploit regular Class/Property usage.
+
+h3. Templates
+
+In OMG OCL, types such as Sequence(String) magically associate String and an ill-defined concept of T. In UML and consequently the UML-aligned pivot OCL, String is a TemplateParameter for which further classes such as TemplateParameterSubstitution define bindings. The use of magic T for library classes is genertalized to arbitrary user
+classes and operations; jusr like UML. Template types of cource conform and since in OCL all values are immutable a
+Set(Integer) is conformat to a Sert(Real) and a Set(OclAny). This can bew slightly surprising since typos may not lead immediately to type errors, rather an expression with inferred OclAny errors. Use the hovertext to inspect your expression types.
+
+h3. Extensibility
+
+The Pivot OCL is extended by the Eclipse QVTd project to support QVTc and QVTr. The models are therefore extensible, but not readily so. Rather too mauch Java programming is required. True extensibilitty and in partocular a modular OCL Standrad Library is still work in progress.
+
+h3. Operation Overloading
+
+The buck passing between UML and OCL in regards to operation overloading is resolved in the Pivot OCL by implementing a Java-style dynamic dispatch to the most derived implmentation with a matching signature.
+
+h3. Stereotypes
+
+The UML specification hinyts in regards to base_XXX and extension_XXX properties are followed through in conjunction with an ElementExtension lass to model  the instance of a Stereotype. Typesafe stereotype navigation is therefore possible without resorting to the proprietary getXXX Java API of Eclipse UML2.
+
+h3. Safe Navigation
+
+The UML [ 1 ] and [ ?  ] multiplicities are exploited to distinguish nullable and non-null objects and diagnose unsafe navigations. To make this useful an extension to null-free collections is possible by defing e.g Set(String[*|1]) as
+a Set of String with unbounded [ * ] collection multiplity and never-null [ 1 ] element multiplicity. The additional ?. and "?->" safe navigation operators avoid nullhazards. See "Safe Navigation in OCL":http://www.eclipse.org/modeling/mdt/ocl/docs/publications/OCL2015SafeNavigation/SafeNavigation.pdf for more details.
+
+h3. Reflection
+
+In the Pivot OCL the oclType() libary method has a pivot::Class return type allowing further navigation to make reflective access to the user metamodel.
+
+h3. Lambda Expressions
+
+OCL has always had hidden lambda expressions in order to define iteratpr bodies. The Pivot OCL reifies these so that the Standard Library uses a templated LambdaType as part of its modelling. Variables and Parameters may use LamabdaType and so ooffer full lambda expression capability.
+
 h3. Map(K,V)
 
 The Map type provides a familiar functionality comprising a set of keys with associated values.
 
-Like all other OCL types, the Map type is immutable; there are therefore not *put* or *set* operations, rather a new Map may be created by *including* a key-value pair tigether with an old Map.
+Like all other OCL types, the Map type is immutable; there are therefore no *put* or *set* operations, rather a new Map may be created by *including* a key-value pair tigether with an old Map.
 
-The content of a Map may be accessed using *at*, which returns invalid for an unknown key in the same way as an ordered collection returns invalid for an unknwon index.
+The content of a Map may be accessed using *at*, which returns invalid for an unknown key in the same way as an ordered collection returns invalid for an unknown index.
 
 A Map may be created explicitly using the new Map Literal Syntax. Thus *Map(Integer,String){1 <- 'one',2 <- 'two'}*
 creates a Map of Integer to String with *'one'* bound to *1* and *'two'* bound to *2*. The type *(Integer,String)*
diff --git a/doc/org.eclipse.ocl.doc/help/ContentAssistSupport.html b/doc/org.eclipse.ocl.doc/help/ContentAssistSupport.html
index 27f3f52..6adf3c3 100644
--- a/doc/org.eclipse.ocl.doc/help/ContentAssistSupport.html
+++ b/doc/org.eclipse.ocl.doc/help/ContentAssistSupport.html
@@ -103,7 +103,7 @@
 					<code class="code">Choice</code> s is supported for the

 					following tokens, which may be used by a client as auto-assist triggers:

 				</p>

-<table id="N14D37">

+<table id="N14DF1">

 <tr>

 						

 <th>Token</th>

diff --git a/doc/org.eclipse.ocl.doc/help/Extensions.html b/doc/org.eclipse.ocl.doc/help/Extensions.html
new file mode 100644
index 0000000..583ef83
--- /dev/null
+++ b/doc/org.eclipse.ocl.doc/help/Extensions.html
@@ -0,0 +1,196 @@
+<html>

+<head>

+<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Extensions (in the Unified/Pivot OCL prototype)</title>

+<link href="book.css" rel="stylesheet" type="text/css">

+<meta content="DocBook XSL Stylesheets V1.75.1" name="generator">

+<link rel="home" href="index.html" title="OCL Documentation">

+<link rel="up" href="Tutorials.html" title="Tutorials">

+<link rel="prev" href="OCLInterpreterTutorial.html" title="Working with Classic OCL">

+<link rel="next" href="Installation.html" title="Installing the Eclipse OCL Examples and Editors">

+</head>

+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">

+<h1 xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0">Extensions (in the Unified/Pivot OCL prototype)</h1>

+<div class="section" title="Extensions (in the Unified/Pivot OCL prototype)">

+<div class="titlepage">

+<div>

+<div>

+<h2 class="title" style="clear: both">

+<a name="Extensions"></a>Extensions (in the Unified/Pivot OCL prototype)</h2>

+</div>

+</div>

+</div>

+<p>This section highlights some of the OCL extensions prototyped by the Pivot OCL.</p>

+<div class="section" title="Models">

+<div class="titlepage">

+<div>

+<div>

+<h3 class="title">

+<a name="Models"></a>Models</h3>

+</div>

+</div>

+</div>

+<p>The Abstract Syntax classes and interfaces are autogenerated from Pivot.ecore using standard EMF tooling. Pivot.ecore is auto-generated by custom QVTo transformations from OMG&rsquo;s UML.xmi and prototype OCL.uml models. This gives some degree of UML alignment.</p>

+<p>The Standard Library is defined by OCL-2.5.oclstdlib for which an OCLstdlib Xtext editor is available. The library is therefore modelled.</p>

+<p>The Concrete Syntax classes and editors are also autogenerated from Ecore modesl using standard EMF tooling. Autogeneation of the Ecore models from UML modesl is still work in progress.</p>

+<p>The grammars are defined by Xtext models.</p>

+<p>The run-time Value classes and interfaces are partially generated from Values.ecore. Full auto-generation is still work in progress.</p>

+<p>There is also a model of the code generation intermediate.</p>

+</div>

+<div class="section" title="XMI">

+<div class="titlepage">

+<div>

+<div>

+<h3 class="title">

+<a name="XMI"></a>XMI</h3>

+</div>

+</div>

+</div>

+<p>The abstract syntax models are fully persistable as standard XMI using the *.oclas file extension. Pivot.oclas and OCL-2.5.oclas models form part of the Eclipse OCL distribution.</p>

+<p>The problem of interchange of synthetic types such as Sequence(String) is solved by an orphan package in which a singleton copy of every singleton is maintained.</p>

+<p>The problem of Complete OCL&rsquo;s open classes allowing additional features is solved by CompleteModel/CompletePackage/CompleteClass additions to the abstract syntax so that a CompleteClass may aggregate many ordinary Classes; one from the primary user (UML/Ecore) model, any number of further (Compete OCL or OCLstdlib) over;ays.</p>

+<p>The problem of references to unnavigable opposites is solved by an OppositePropertyCallExp class.</p>

+<p>The problem of references to modelled Iterations is resolved by adding a referredIteration property to IterateExp/IteratorExp.</p>

+<p>The problem of references to Stereotype properties is resolved by normalizing the UML representation to exploit regular Class/Property usage.</p>

+<p>The problem of references to Association properties is resolved by normalizing the UML representation to exploit regular Class/Property usage.</p>

+</div>

+<div class="section" title="Templates">

+<div class="titlepage">

+<div>

+<div>

+<h3 class="title">

+<a name="Templates"></a>Templates</h3>

+</div>

+</div>

+</div>

+<p>In OMG OCL, types such as Sequence(String) magically associate String and an ill-defined concept of T. In UML and consequently the UML-aligned pivot OCL, String is a TemplateParameter for which further classes such as TemplateParameterSubstitution define bindings. The use of magic T for library classes is genertalized to arbitrary user

+					classes and operations; jusr like UML. Template types of cource conform and since in OCL all values are immutable a

+					Set(Integer) is conformat to a Sert(Real) and a Set(OclAny). This can bew slightly surprising since typos may not lead immediately to type errors, rather an expression with inferred OclAny errors. Use the hovertext to inspect your expression types.</p>

+</div>

+<div class="section" title="Extensibility">

+<div class="titlepage">

+<div>

+<div>

+<h3 class="title">

+<a name="Extensibility"></a>Extensibility</h3>

+</div>

+</div>

+</div>

+<p>The Pivot OCL is extended by the Eclipse QVTd project to support QVTc and QVTr. The models are therefore extensible, but not readily so. Rather too mauch Java programming is required. True extensibilitty and in partocular a modular OCL Standrad Library is still work in progress.</p>

+</div>

+<div class="section" title="Operation Overloading">

+<div class="titlepage">

+<div>

+<div>

+<h3 class="title">

+<a name="OperationOverloading"></a>Operation Overloading</h3>

+</div>

+</div>

+</div>

+<p>The buck passing between UML and OCL in regards to operation overloading is resolved in the Pivot OCL by implementing a Java-style dynamic dispatch to the most derived implmentation with a matching signature.</p>

+</div>

+<div class="section" title="Stereotypes">

+<div class="titlepage">

+<div>

+<div>

+<h3 class="title">

+<a name="Stereotypes"></a>Stereotypes</h3>

+</div>

+</div>

+</div>

+<p>The UML specification hinyts in regards to base_XXX and extension_XXX properties are followed through in conjunction with an ElementExtension lass to model  the instance of a Stereotype. Typesafe stereotype navigation is therefore possible without resorting to the proprietary getXXX Java API of Eclipse UML2.</p>

+</div>

+<div class="section" title="Safe Navigation">

+<div class="titlepage">

+<div>

+<div>

+<h3 class="title">

+<a name="SafeNavigation"></a>Safe Navigation</h3>

+</div>

+</div>

+</div>

+<p>The UML [ 1 ] and [ ?  ] multiplicities are exploited to distinguish nullable and non-null objects and diagnose unsafe navigations. To make this useful an extension to null-free collections is possible by defing e.g Set(String[*|1]) as

+					a Set of String with unbounded [ * ] collection multiplity and never-null [ 1 ] element multiplicity. The additional ?. and &ldquo;?-&gt;&rdquo; safe navigation operators avoid nullhazards. See 

+					<a class="ulink" href="http://www.eclipse.org/modeling/mdt/ocl/docs/publications/OCL2015SafeNavigation/SafeNavigation.pdf" target="_new">Safe Navigation in OCL</a> for more details.

+				</p>

+</div>

+<div class="section" title="Reflection">

+<div class="titlepage">

+<div>

+<div>

+<h3 class="title">

+<a name="Reflection"></a>Reflection</h3>

+</div>

+</div>

+</div>

+<p>In the Pivot OCL the oclType() libary method has a pivot::Class return type allowing further navigation to make reflective access to the user metamodel.</p>

+</div>

+<div class="section" title="Lambda Expressions">

+<div class="titlepage">

+<div>

+<div>

+<h3 class="title">

+<a name="LambdaExpressions"></a>Lambda Expressions</h3>

+</div>

+</div>

+</div>

+<p>OCL has always had hidden lambda expressions in order to define iteratpr bodies. The Pivot OCL reifies these so that the Standard Library uses a templated LambdaType as part of its modelling. Variables and Parameters may use LamabdaType and so ooffer full lambda expression capability.</p>

+</div>

+<div class="section" title="Map(K,V)">

+<div class="titlepage">

+<div>

+<div>

+<h3 class="title">

+<a name="MapKV"></a>Map(K,V)</h3>

+</div>

+</div>

+</div>

+<p>The Map type provides a familiar functionality comprising a set of keys with associated values.</p>

+<p>Like all other OCL types, the Map type is immutable; there are therefore no 

+					<span class="bold"><strong>put</strong></span> or 

+					<span class="bold"><strong>set</strong></span> operations, rather a new Map may be created by 

+					<span class="bold"><strong>including</strong></span> a key-value pair tigether with an old Map.

+				</p>

+<p>The content of a Map may be accessed using 

+					<span class="bold"><strong>at</strong></span>, which returns invalid for an unknown key in the same way as an ordered collection returns invalid for an unknown index.

+				</p>

+<p>A Map may be created explicitly using the new Map Literal Syntax. Thus 

+					<span class="bold"><strong>Map(Integer,String){1 &lt;- &lsquo;one&rsquo;,2 &lt;- &lsquo;two&rsquo;}</strong></span>

+					creates a Map of Integer to String with 

+					<span class="bold"><strong>'one'</strong></span> bound to 

+					<span class="bold"><strong>1</strong></span> and 

+					<span class="bold"><strong>'two'</strong></span> bound to 

+					<span class="bold"><strong>2</strong></span>. The type 

+					<span class="bold"><strong>(Integer,String)</strong></span>

+					parameterisation can be omitted. 

+					<span class="bold"><strong>null</strong></span> but not 

+					<span class="bold"><strong>invalid</strong></span> values are permitted as keys and values.

+				</p>

+<p>The new 

+					<span class="bold"><strong>collectBy</strong></span> iteration may be used to construct a map from a collection or map. The iterators of the 

+					<span class="bold"><strong>collectBy</strong></span> define the keys and the value of the body of defines the values. For instance 

+					<span class="bold"><strong>Sequence{1..10}-&gt;collectBy(i | i+i)}</strong></span> builds a map from the values 1 to 10 to the even values 2 to 20.

+				</p>

+<p>Most standard collection iteration operations are available for Maps using the map keys as the (primary) iterator. A secondary value iterator may be specified using the new binds-to syntax. Thus 

+					<span class="bold"><strong>Map{1&lt;-1,2&lt;-4,3&lt;-9}-&gt;reject(k&lt;-v | k = 2 or v = 9}</strong></span> defines a reject iteration over the three entry map, with a primary iterator 

+					<span class="bold"><strong>k</strong></span> over the set of keys and a secondary co-iterator 

+					<span class="bold"><strong>v</strong></span> over the values bound to each key. The body causes the second entry with key 2, and the third entry with value 9 to be rejected leaving just a one entry map.

+				</p>

+<div class="section" title="Details">

+<div class="titlepage">

+<div>

+<div>

+<h4 class="title">

+<a name="Details"></a>Details</h4>

+</div>

+</div>

+</div>

+<p>The OCL metamodel is extended by a MapLiteralExp and MapType. A new abstract IterableType captures the iterable commonality of CollectionType and MapType without making map a collection.</p>

+<p>The OCL standard library defines the new Map operations and the new Collection::collectBy itetation.</p>

+<p>The OCL syntax is extended by the MapLiteralExp syntax and the binds-to co-iterator syntax for all iterators.</p>

+<p>The OCL run-time is extended by a MapValue and an abstract IteravleValue to capture the commonality with CollectionValue.</p>

+</div>

+</div>

+</div>

+</body>

+</html>

diff --git a/doc/org.eclipse.ocl.doc/help/Installation.html b/doc/org.eclipse.ocl.doc/help/Installation.html
index d6c8683..801058a 100644
--- a/doc/org.eclipse.ocl.doc/help/Installation.html
+++ b/doc/org.eclipse.ocl.doc/help/Installation.html
@@ -6,7 +6,7 @@
 <meta content="DocBook XSL Stylesheets V1.75.1" name="generator">

 <link rel="home" href="index.html" title="OCL Documentation">

 <link rel="up" href="Tutorials.html" title="Tutorials">

-<link rel="prev" href="OCLInterpreterTutorial.html" title="Working with Classic OCL">

+<link rel="prev" href="Extensions.html" title="Extensions (in the Unified/Pivot OCL prototype)">

 <link rel="next" href="Examples.html" title="Examples">

 </head>

 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">

diff --git a/doc/org.eclipse.ocl.doc/help/OCLInterpreterTutorial.html b/doc/org.eclipse.ocl.doc/help/OCLInterpreterTutorial.html
index 7615658..93affbc 100644
--- a/doc/org.eclipse.ocl.doc/help/OCLInterpreterTutorial.html
+++ b/doc/org.eclipse.ocl.doc/help/OCLInterpreterTutorial.html
@@ -7,7 +7,7 @@
 <link rel="home" href="index.html" title="OCL Documentation">

 <link rel="up" href="Tutorials.html" title="Tutorials">

 <link rel="prev" href="ValidationTutorial.html" title="Validation tutorial">

-<link rel="next" href="Installation.html" title="Installing the Eclipse OCL Examples and Editors">

+<link rel="next" href="Extensions.html" title="Extensions (in the Unified/Pivot OCL prototype)">

 </head>

 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">

 <h1 xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0">Working with Classic OCL</h1>

diff --git a/doc/org.eclipse.ocl.doc/help/OverviewandGettingStarted.html b/doc/org.eclipse.ocl.doc/help/OverviewandGettingStarted.html
index 8ad7890..463102c 100644
--- a/doc/org.eclipse.ocl.doc/help/OverviewandGettingStarted.html
+++ b/doc/org.eclipse.ocl.doc/help/OverviewandGettingStarted.html
@@ -46,7 +46,7 @@
 			<a class="link" href="GettingStarted.html" title="Getting Started">Getting Started</a>.

 		</p>

 <p>A PDF version of this documentation is available at 

-			<a class="ulink" href="http://download.eclipse.org/ocl/doc/6.4.0/ocl.pdf" target="_new">OCL 6.4.0 Documentation</a>.

+			<a class="ulink" href="http://download.eclipse.org/ocl/doc/6.6.0/ocl.pdf" target="_new">OCL 6.6.0 Documentation</a>.

 		</p>

 <div class="section" title="What is OCL?">

 <div class="titlepage">

diff --git a/doc/org.eclipse.ocl.doc/help/PivotEvaluatingConstraints.html b/doc/org.eclipse.ocl.doc/help/PivotEvaluatingConstraints.html
index 94f7a4f..199e7e4 100644
--- a/doc/org.eclipse.ocl.doc/help/PivotEvaluatingConstraints.html
+++ b/doc/org.eclipse.ocl.doc/help/PivotEvaluatingConstraints.html
@@ -171,7 +171,7 @@
 </li>

 </ul>

 </div>

-<table id="N1595A">

+<table id="N15A14">

 <tr>

 						

 <th>OCL</th>

diff --git a/doc/org.eclipse.ocl.doc/help/PivotStandalone.html b/doc/org.eclipse.ocl.doc/help/PivotStandalone.html
index ca0c57c..80e5b5b 100644
--- a/doc/org.eclipse.ocl.doc/help/PivotStandalone.html
+++ b/doc/org.eclipse.ocl.doc/help/PivotStandalone.html
@@ -45,7 +45,7 @@
 <div>

 <div>

 <h3 class="title">

-<a name="Models"></a>Models</h3>

+<a name="Models2"></a>Models</h3>

 </div>

 </div>

 </div>

diff --git a/doc/org.eclipse.ocl.doc/help/TargetMetamodels.html b/doc/org.eclipse.ocl.doc/help/TargetMetamodels.html
index 09293cb..3add969 100644
--- a/doc/org.eclipse.ocl.doc/help/TargetMetamodels.html
+++ b/doc/org.eclipse.ocl.doc/help/TargetMetamodels.html
@@ -68,7 +68,7 @@
 					<code class="code">EcoreEnvironmentFactory.INSTANCE</code> is most practical.

 				</p>

 <p>The Ecore binding for OCL provides the following capabilities, reflecting the subset of Ecore&rsquo;s modeling constructs with respect to UML:</p>

-<table id="N14983">

+<table id="N14A3D">

 <tr>

 						

 <th>Capability</th>

@@ -293,7 +293,7 @@
 					<code class="code">EPackage</code> names corresponding to UML models.  A custom package registry may be provided by the client if necessary.

 				</p>

 <p>The UML binding for OCL provides the following capabilities:</p>

-<table id="N14B38">

+<table id="N14BF2">

 <tr>

 						

 <th>Capability</th>

diff --git a/doc/org.eclipse.ocl.doc/help/Tutorials.html b/doc/org.eclipse.ocl.doc/help/Tutorials.html
index 7d7139d..cb9a919 100644
--- a/doc/org.eclipse.ocl.doc/help/Tutorials.html
+++ b/doc/org.eclipse.ocl.doc/help/Tutorials.html
@@ -44,6 +44,9 @@
 <span class="section"><a href="OCLInterpreterTutorial.html">Working with Classic OCL</a></span>

 </dt>

 <dt>

+<span class="section"><a href="Extensions.html">Extensions (in the Unified/Pivot OCL prototype)</a></span>

+</dt>

+<dt>

 <span class="section"><a href="Installation.html">Installing the Eclipse OCL Examples and Editors</a></span>

 </dt>

 </dl>

diff --git a/doc/org.eclipse.ocl.doc/html/ocl.html b/doc/org.eclipse.ocl.doc/html/ocl.html
index 2531c3d..8881a72 100644
--- a/doc/org.eclipse.ocl.doc/html/ocl.html
+++ b/doc/org.eclipse.ocl.doc/html/ocl.html
@@ -358,6 +358,9 @@
 <span class="section"><a href="#OCLInterpreterTutorial">Working with Classic OCL</a></span>

 </dt>

 <dt>

+<span class="section"><a href="#Extensions">Extensions (in the Unified/Pivot OCL prototype)</a></span>

+</dt>

+<dt>

 <span class="section"><a href="#Installation">Installing the Eclipse OCL Examples and Editors</a></span>

 </dt>

 </dl>

@@ -502,7 +505,7 @@
 			<a class="link" href="#GettingStarted" title="Getting Started">Getting Started</a>.

 		</p>

 <p>A PDF version of this documentation is available at 

-			<a class="ulink" href="http://download.eclipse.org/ocl/doc/6.4.0/ocl.pdf" target="_new">OCL 6.4.0 Documentation</a>.

+			<a class="ulink" href="http://download.eclipse.org/ocl/doc/6.6.0/ocl.pdf" target="_new">OCL 6.6.0 Documentation</a>.

 		</p>

 <div class="section" title="What is OCL?">

 <div class="titlepage">

@@ -16950,6 +16953,187 @@
 </div>

 </div>

 </div>

+<div class="section" title="Extensions (in the Unified/Pivot OCL prototype)">

+<div class="titlepage">

+<div>

+<div>

+<h2 class="title" style="clear: both">

+<a name="Extensions"></a>Extensions (in the Unified/Pivot OCL prototype)</h2>

+</div>

+</div>

+</div>

+<p>This section highlights some of the OCL extensions prototyped by the Pivot OCL.</p>

+<div class="section" title="Models">

+<div class="titlepage">

+<div>

+<div>

+<h3 class="title">

+<a name="Models"></a>Models</h3>

+</div>

+</div>

+</div>

+<p>The Abstract Syntax classes and interfaces are autogenerated from Pivot.ecore using standard EMF tooling. Pivot.ecore is auto-generated by custom QVTo transformations from OMG&rsquo;s UML.xmi and prototype OCL.uml models. This gives some degree of UML alignment.</p>

+<p>The Standard Library is defined by OCL-2.5.oclstdlib for which an OCLstdlib Xtext editor is available. The library is therefore modelled.</p>

+<p>The Concrete Syntax classes and editors are also autogenerated from Ecore modesl using standard EMF tooling. Autogeneation of the Ecore models from UML modesl is still work in progress.</p>

+<p>The grammars are defined by Xtext models.</p>

+<p>The run-time Value classes and interfaces are partially generated from Values.ecore. Full auto-generation is still work in progress.</p>

+<p>There is also a model of the code generation intermediate.</p>

+</div>

+<div class="section" title="XMI">

+<div class="titlepage">

+<div>

+<div>

+<h3 class="title">

+<a name="XMI"></a>XMI</h3>

+</div>

+</div>

+</div>

+<p>The abstract syntax models are fully persistable as standard XMI using the *.oclas file extension. Pivot.oclas and OCL-2.5.oclas models form part of the Eclipse OCL distribution.</p>

+<p>The problem of interchange of synthetic types such as Sequence(String) is solved by an orphan package in which a singleton copy of every singleton is maintained.</p>

+<p>The problem of Complete OCL&rsquo;s open classes allowing additional features is solved by CompleteModel/CompletePackage/CompleteClass additions to the abstract syntax so that a CompleteClass may aggregate many ordinary Classes; one from the primary user (UML/Ecore) model, any number of further (Compete OCL or OCLstdlib) over;ays.</p>

+<p>The problem of references to unnavigable opposites is solved by an OppositePropertyCallExp class.</p>

+<p>The problem of references to modelled Iterations is resolved by adding a referredIteration property to IterateExp/IteratorExp.</p>

+<p>The problem of references to Stereotype properties is resolved by normalizing the UML representation to exploit regular Class/Property usage.</p>

+<p>The problem of references to Association properties is resolved by normalizing the UML representation to exploit regular Class/Property usage.</p>

+</div>

+<div class="section" title="Templates">

+<div class="titlepage">

+<div>

+<div>

+<h3 class="title">

+<a name="Templates"></a>Templates</h3>

+</div>

+</div>

+</div>

+<p>In OMG OCL, types such as Sequence(String) magically associate String and an ill-defined concept of T. In UML and consequently the UML-aligned pivot OCL, String is a TemplateParameter for which further classes such as TemplateParameterSubstitution define bindings. The use of magic T for library classes is genertalized to arbitrary user

+					classes and operations; jusr like UML. Template types of cource conform and since in OCL all values are immutable a

+					Set(Integer) is conformat to a Sert(Real) and a Set(OclAny). This can bew slightly surprising since typos may not lead immediately to type errors, rather an expression with inferred OclAny errors. Use the hovertext to inspect your expression types.</p>

+</div>

+<div class="section" title="Extensibility">

+<div class="titlepage">

+<div>

+<div>

+<h3 class="title">

+<a name="Extensibility"></a>Extensibility</h3>

+</div>

+</div>

+</div>

+<p>The Pivot OCL is extended by the Eclipse QVTd project to support QVTc and QVTr. The models are therefore extensible, but not readily so. Rather too mauch Java programming is required. True extensibilitty and in partocular a modular OCL Standrad Library is still work in progress.</p>

+</div>

+<div class="section" title="Operation Overloading">

+<div class="titlepage">

+<div>

+<div>

+<h3 class="title">

+<a name="OperationOverloading"></a>Operation Overloading</h3>

+</div>

+</div>

+</div>

+<p>The buck passing between UML and OCL in regards to operation overloading is resolved in the Pivot OCL by implementing a Java-style dynamic dispatch to the most derived implmentation with a matching signature.</p>

+</div>

+<div class="section" title="Stereotypes">

+<div class="titlepage">

+<div>

+<div>

+<h3 class="title">

+<a name="Stereotypes"></a>Stereotypes</h3>

+</div>

+</div>

+</div>

+<p>The UML specification hinyts in regards to base_XXX and extension_XXX properties are followed through in conjunction with an ElementExtension lass to model  the instance of a Stereotype. Typesafe stereotype navigation is therefore possible without resorting to the proprietary getXXX Java API of Eclipse UML2.</p>

+</div>

+<div class="section" title="Safe Navigation">

+<div class="titlepage">

+<div>

+<div>

+<h3 class="title">

+<a name="SafeNavigation"></a>Safe Navigation</h3>

+</div>

+</div>

+</div>

+<p>The UML [ 1 ] and [ ?  ] multiplicities are exploited to distinguish nullable and non-null objects and diagnose unsafe navigations. To make this useful an extension to null-free collections is possible by defing e.g Set(String[*|1]) as

+					a Set of String with unbounded [ * ] collection multiplity and never-null [ 1 ] element multiplicity. The additional ?. and &ldquo;?-&gt;&rdquo; safe navigation operators avoid nullhazards. See 

+					<a class="ulink" href="http://www.eclipse.org/modeling/mdt/ocl/docs/publications/OCL2015SafeNavigation/SafeNavigation.pdf" target="_new">Safe Navigation in OCL</a> for more details.

+				</p>

+</div>

+<div class="section" title="Reflection">

+<div class="titlepage">

+<div>

+<div>

+<h3 class="title">

+<a name="Reflection"></a>Reflection</h3>

+</div>

+</div>

+</div>

+<p>In the Pivot OCL the oclType() libary method has a pivot::Class return type allowing further navigation to make reflective access to the user metamodel.</p>

+</div>

+<div class="section" title="Lambda Expressions">

+<div class="titlepage">

+<div>

+<div>

+<h3 class="title">

+<a name="LambdaExpressions"></a>Lambda Expressions</h3>

+</div>

+</div>

+</div>

+<p>OCL has always had hidden lambda expressions in order to define iteratpr bodies. The Pivot OCL reifies these so that the Standard Library uses a templated LambdaType as part of its modelling. Variables and Parameters may use LamabdaType and so ooffer full lambda expression capability.</p>

+</div>

+<div class="section" title="Map(K,V)">

+<div class="titlepage">

+<div>

+<div>

+<h3 class="title">

+<a name="MapKV"></a>Map(K,V)</h3>

+</div>

+</div>

+</div>

+<p>The Map type provides a familiar functionality comprising a set of keys with associated values.</p>

+<p>Like all other OCL types, the Map type is immutable; there are therefore no 

+					<span class="bold"><strong>put</strong></span> or 

+					<span class="bold"><strong>set</strong></span> operations, rather a new Map may be created by 

+					<span class="bold"><strong>including</strong></span> a key-value pair tigether with an old Map.

+				</p>

+<p>The content of a Map may be accessed using 

+					<span class="bold"><strong>at</strong></span>, which returns invalid for an unknown key in the same way as an ordered collection returns invalid for an unknown index.

+				</p>

+<p>A Map may be created explicitly using the new Map Literal Syntax. Thus 

+					<span class="bold"><strong>Map(Integer,String){1 &lt;- &lsquo;one&rsquo;,2 &lt;- &lsquo;two&rsquo;}</strong></span>

+					creates a Map of Integer to String with 

+					<span class="bold"><strong>'one'</strong></span> bound to 

+					<span class="bold"><strong>1</strong></span> and 

+					<span class="bold"><strong>'two'</strong></span> bound to 

+					<span class="bold"><strong>2</strong></span>. The type 

+					<span class="bold"><strong>(Integer,String)</strong></span>

+					parameterisation can be omitted. 

+					<span class="bold"><strong>null</strong></span> but not 

+					<span class="bold"><strong>invalid</strong></span> values are permitted as keys and values.

+				</p>

+<p>The new 

+					<span class="bold"><strong>collectBy</strong></span> iteration may be used to construct a map from a collection or map. The iterators of the 

+					<span class="bold"><strong>collectBy</strong></span> define the keys and the value of the body of defines the values. For instance 

+					<span class="bold"><strong>Sequence{1..10}-&gt;collectBy(i | i+i)}</strong></span> builds a map from the values 1 to 10 to the even values 2 to 20.

+				</p>

+<p>Most standard collection iteration operations are available for Maps using the map keys as the (primary) iterator. A secondary value iterator may be specified using the new binds-to syntax. Thus 

+					<span class="bold"><strong>Map{1&lt;-1,2&lt;-4,3&lt;-9}-&gt;reject(k&lt;-v | k = 2 or v = 9}</strong></span> defines a reject iteration over the three entry map, with a primary iterator 

+					<span class="bold"><strong>k</strong></span> over the set of keys and a secondary co-iterator 

+					<span class="bold"><strong>v</strong></span> over the values bound to each key. The body causes the second entry with key 2, and the third entry with value 9 to be rejected leaving just a one entry map.

+				</p>

+<div class="section" title="Details">

+<div class="titlepage">

+<div>

+<div>

+<h4 class="title">

+<a name="Details"></a>Details</h4>

+</div>

+</div>

+</div>

+<p>The OCL metamodel is extended by a MapLiteralExp and MapType. A new abstract IterableType captures the iterable commonality of CollectionType and MapType without making map a collection.</p>

+<p>The OCL standard library defines the new Map operations and the new Collection::collectBy itetation.</p>

+<p>The OCL syntax is extended by the MapLiteralExp syntax and the binds-to co-iterator syntax for all iterators.</p>

+<p>The OCL run-time is extended by a MapValue and an abstract IteravleValue to capture the commonality with CollectionValue.</p>

+</div>

+</div>

+</div>

 <div class="section" title="Installing the Eclipse OCL Examples and Editors">

 <div class="titlepage">

 <div>

@@ -18149,7 +18333,7 @@
 					<code class="code">EcoreEnvironmentFactory.INSTANCE</code> is most practical.

 				</p>

 <p>The Ecore binding for OCL provides the following capabilities, reflecting the subset of Ecore&rsquo;s modeling constructs with respect to UML:</p>

-<table id="N14983">

+<table id="N14A3D">

 <tr>

 						

 <th>Capability</th>

@@ -18374,7 +18558,7 @@
 					<code class="code">EPackage</code> names corresponding to UML models.  A custom package registry may be provided by the client if necessary.

 				</p>

 <p>The UML binding for OCL provides the following capabilities:</p>

-<table id="N14B38">

+<table id="N14BF2">

 <tr>

 						

 <th>Capability</th>

@@ -18684,7 +18868,7 @@
 					<code class="code">Choice</code> s is supported for the

 					following tokens, which may be used by a client as auto-assist triggers:

 				</p>

-<table id="N14D37">

+<table id="N14DF1">

 <tr>

 						

 <th>Token</th>

@@ -21297,7 +21481,7 @@
 <div>

 <div>

 <h3 class="title">

-<a name="Models"></a>Models</h3>

+<a name="Models2"></a>Models</h3>

 </div>

 </div>

 </div>

@@ -22051,7 +22235,7 @@
 </li>

 </ul>

 </div>

-<table id="N1595A">

+<table id="N15A14">

 <tr>

 						

 <th>OCL</th>

diff --git a/doc/org.eclipse.ocl.doc/manual/ocl.pdf b/doc/org.eclipse.ocl.doc/manual/ocl.pdf
index bf49583..c7eece5 100644
--- a/doc/org.eclipse.ocl.doc/manual/ocl.pdf
+++ b/doc/org.eclipse.ocl.doc/manual/ocl.pdf
Binary files differ
diff --git a/doc/org.eclipse.ocl.doc/styles/xmpp.xsl b/doc/org.eclipse.ocl.doc/styles/xmpp.xsl
index e9ba7b8..31fa5d1 100644
--- a/doc/org.eclipse.ocl.doc/styles/xmpp.xsl
+++ b/doc/org.eclipse.ocl.doc/styles/xmpp.xsl
@@ -39,7 +39,7 @@
                       <xsl:text>Eclipse OCL </xsl:text><xsl:value-of select="//releaseinfo"/>
               </xsl:when>
               <xsl:otherwise>
-                  Eclipse OCL 6.5.0
+                  Eclipse OCL 6.6.0
               </xsl:otherwise>
           </xsl:choose>
       </xsl:variable>
diff --git a/doc/org.eclipse.ocl.doc/toc.xml b/doc/org.eclipse.ocl.doc/toc.xml
index bf11e84..b33df9b 100644
--- a/doc/org.eclipse.ocl.doc/toc.xml
+++ b/doc/org.eclipse.ocl.doc/toc.xml
@@ -454,6 +454,20 @@
 <topic href="help/OCLInterpreterTutorial.html#Serialization" label="Serialization"></topic>

 <topic href="help/OCLInterpreterTutorial.html#Summary3" label="Summary"></topic>

 </topic>

+<topic href="help/Extensions.html" label="Extensions (in the Unified/Pivot OCL prototype)">

+<topic href="help/Extensions.html#Models" label="Models"></topic>

+<topic href="help/Extensions.html#XMI" label="XMI"></topic>

+<topic href="help/Extensions.html#Templates" label="Templates"></topic>

+<topic href="help/Extensions.html#Extensibility" label="Extensibility"></topic>

+<topic href="help/Extensions.html#OperationOverloading" label="Operation Overloading"></topic>

+<topic href="help/Extensions.html#Stereotypes" label="Stereotypes"></topic>

+<topic href="help/Extensions.html#SafeNavigation" label="Safe Navigation"></topic>

+<topic href="help/Extensions.html#Reflection" label="Reflection"></topic>

+<topic href="help/Extensions.html#LambdaExpressions" label="Lambda Expressions"></topic>

+<topic href="help/Extensions.html#MapKV" label="Map(K,V)">

+<topic href="help/Extensions.html#Details" label="Details"></topic>

+</topic>

+</topic>

 <topic href="help/Installation.html" label="Installing the Eclipse OCL Examples and Editors">

 <topic href="help/Installation.html#Troubleshooting2" label="Troubleshooting"></topic>

 </topic>

@@ -548,7 +562,7 @@
 <topic href="help/PivotEvaluator.html#PolymorphicImplementations" label="Polymorphic Implementations"></topic>

 </topic>

 <topic href="help/PivotStandalone.html" label="Pivot Standalone Configuration">

-<topic href="help/PivotStandalone.html#Models" label="Models"></topic>

+<topic href="help/PivotStandalone.html#Models2" label="Models"></topic>

 <topic href="help/PivotStandalone.html#OCLStandardLibrary" label="OCL Standard Library"></topic>

 <topic href="help/PivotStandalone.html#PivotDelegates" label="Pivot Delegates"></topic>

 <topic href="help/PivotStandalone.html#XtextParsers" label="Xtext Parsers"></topic>