Inital check-in for Cameron Bateman.
diff --git a/jsf/tests/org.eclipse.jst.jsf.contentassist.tests/.classpath b/jsf/tests/org.eclipse.jst.jsf.contentassist.tests/.classpath
new file mode 100644
index 0000000..1beb9b3
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.contentassist.tests/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="/org.eclipse.jst.jsf.contentassist.el"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/jsf/tests/org.eclipse.jst.jsf.contentassist.tests/.project b/jsf/tests/org.eclipse.jst.jsf.contentassist.tests/.project
new file mode 100644
index 0000000..2e0c667
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.contentassist.tests/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.jst.jsf.contentassist.tests</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/jsf/tests/org.eclipse.jst.jsf.contentassist.tests/META-INF/MANIFEST.MF b/jsf/tests/org.eclipse.jst.jsf.contentassist.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..f114c59
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.contentassist.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.jst.jsf.contentassist Tests Plug-in
+Bundle-SymbolicName: org.eclipse.jst.jsf.contentassist.tests
+Bundle-Version: 1.0.0
+Bundle-Activator: org.eclipse.jst.jsf.contentassist.tests.Activator
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.junit
+Eclipse-LazyStart: true
diff --git a/jsf/tests/org.eclipse.jst.jsf.contentassist.tests/bin/org/eclipse/jst/jsf/contentassist/tests/Activator.class b/jsf/tests/org.eclipse.jst.jsf.contentassist.tests/bin/org/eclipse/jst/jsf/contentassist/tests/Activator.class
new file mode 100644
index 0000000..ec7c88a
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.contentassist.tests/bin/org/eclipse/jst/jsf/contentassist/tests/Activator.class
Binary files differ
diff --git a/jsf/tests/org.eclipse.jst.jsf.contentassist.tests/bin/org/eclipse/jst/jsf/contentassist/tests/CompletionPrefixTest.class b/jsf/tests/org.eclipse.jst.jsf.contentassist.tests/bin/org/eclipse/jst/jsf/contentassist/tests/CompletionPrefixTest.class
new file mode 100644
index 0000000..5c8543b
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.contentassist.tests/bin/org/eclipse/jst/jsf/contentassist/tests/CompletionPrefixTest.class
Binary files differ
diff --git a/jsf/tests/org.eclipse.jst.jsf.contentassist.tests/build.properties b/jsf/tests/org.eclipse.jst.jsf.contentassist.tests/build.properties
new file mode 100644
index 0000000..34d2e4d
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.contentassist.tests/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .
diff --git a/jsf/tests/org.eclipse.jst.jsf.contentassist.tests/src/org/eclipse/jst/jsf/contentassist/tests/Activator.java b/jsf/tests/org.eclipse.jst.jsf.contentassist.tests/src/org/eclipse/jst/jsf/contentassist/tests/Activator.java
new file mode 100644
index 0000000..0a0c710
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.contentassist.tests/src/org/eclipse/jst/jsf/contentassist/tests/Activator.java
@@ -0,0 +1,52 @@
+package org.eclipse.jst.jsf.contentassist.tests;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+	/**
+	 * The plug-in ID
+	 */
+	public static final String PLUGIN_ID = "org.eclipse.jst.jsf.contentassist.tests";
+
+	// The shared instance
+	private static Activator plugin;
+	
+	/**
+	 * The constructor
+	 */
+	public Activator() {
+		plugin = this;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext context) throws Exception {
+		plugin = null;
+		super.stop(context);
+	}
+
+	/**
+	 * Returns the shared instance
+	 *
+	 * @return the shared instance
+	 */
+	public static Activator getDefault() {
+		return plugin;
+	}
+
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.contentassist.tests/src/org/eclipse/jst/jsf/contentassist/tests/CompletionPrefixTest.java b/jsf/tests/org.eclipse.jst.jsf.contentassist.tests/src/org/eclipse/jst/jsf/contentassist/tests/CompletionPrefixTest.java
new file mode 100644
index 0000000..7218690
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.contentassist.tests/src/org/eclipse/jst/jsf/contentassist/tests/CompletionPrefixTest.java
@@ -0,0 +1,499 @@
+package org.eclipse.jst.jsf.contentassist.tests;
+
+import org.eclipse.jst.jsf.contentassist.el.ContentAssistParser;
+import org.eclipse.jst.jsf.contentassist.el.ContentAssistStrategy;
+
+import junit.framework.TestCase;
+
+/**
+ * @author cbateman
+ *
+ */
+public class CompletionPrefixTest extends TestCase 
+{
+    /* empty expresion */
+    private final static String empty_ = " ";
+    
+    /* simple value expressions */
+    private final static String xxx = "xxx";
+    private final static String xxxDot = "xxx.";
+    private final static String xxxYYY = "xxx.yyy";
+    private final static String xxxYYYZZZ = "xxx.yyy.zzz";
+    
+    /* value expressions with comparisons */
+    private final static String xxxLtYYY = "xxx < yyy";
+    private final static String xxxDotYYYLtZZZ = "xxx.yyy < zzz";
+    
+    /* expressions using the ['yyy'] map syntax */
+    private final static String xxxMapYYY = "xxx['yyy']";
+    
+    
+    /**
+     * 
+     */
+    public void testPrefix_empty_()
+    {
+        /* Test   */
+        /*      ^        */
+        {
+            final ContentAssistStrategy prefix = ContentAssistParser.getPrefix(1, empty_);
+            
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_ID_COMPLETION
+                    && "".equals(prefix.getValue()));
+        }
+    }
+    
+    /**
+     * 
+     */
+    public void testPrefix_xxx()
+    {
+        /* Test  x x x */
+        /*      ^        */
+        {
+            final ContentAssistStrategy prefix = ContentAssistParser.getPrefix(1, xxx);
+            
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_ID_COMPLETION
+                    && "xxx".equals(prefix.getValue()));
+        }
+        
+        /* Test  x x x */
+        /*        ^                    */
+        {
+            final ContentAssistStrategy prefix = ContentAssistParser.getPrefix(2, xxx);
+            
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_ID_COMPLETION
+                    && "xxx".equals(prefix.getValue()));
+        }
+        
+        /* Test  x x x */
+        /*            ^                */
+        {
+            final ContentAssistStrategy prefix = ContentAssistParser.getPrefix(4, xxx);
+            
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_ID_COMPLETION
+                    && "xxx".equals(prefix.getValue()));
+        }
+    }
+    
+    /**
+     * 
+     */
+    public void testPrefix_xxxDot()
+    {
+        /* Test  x x x . */
+        /*      ^        */
+        {
+            final ContentAssistStrategy prefix = ContentAssistParser.getPrefix(1, xxxDot);
+            
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_ID_COMPLETION
+                    && "xxx".equals(prefix.getValue()));
+        }
+        
+        /* Test  x x x . */
+        /*        ^                    */
+        {
+            final ContentAssistStrategy prefix = ContentAssistParser.getPrefix(2, xxxDot);
+            
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_ID_COMPLETION
+                    && "xxx".equals(prefix.getValue()));
+        }
+        
+        /* Test  x x x .  */
+        /*            ^                */
+        {
+            final ContentAssistStrategy prefix = ContentAssistParser.getPrefix(4, xxxDot);
+            
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_ID_COMPLETION
+                    && "xxx".equals(prefix.getValue()));
+        }
+    }
+    
+    /**
+     * 
+     */
+    public void testSuffix_xxxDot()
+    {
+        /* Test  x x x . */
+        /*              ^*/
+        {
+            final ContentAssistStrategy prefix = ContentAssistParser.getPrefix(5, xxxDot);
+            
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_DOT_COMPLETION
+                    && "xxx".equals(prefix.getValue()));
+        }
+    }
+    
+    /**
+     * 
+     */
+    public void testPrefix_xxxYYY()
+    {
+        /* Test  x x x . y y y . z z z */
+        /*      ^                      */
+        {
+            final ContentAssistStrategy prefix = ContentAssistParser.getPrefix(1, xxxYYY);
+            
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_ID_COMPLETION
+                    && "xxx".equals(prefix.getValue()));
+        }
+        
+        /* Test  x x x . y y y . z z z */
+        /*        ^                    */
+        {
+            final ContentAssistStrategy prefix = ContentAssistParser.getPrefix(2, xxxYYY);
+            
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_ID_COMPLETION
+                    && "xxx".equals(prefix.getValue()));
+        }
+        
+        /* Test  x x x . y y y . z z z */
+        /*            ^                */
+        {
+            final ContentAssistStrategy prefix = ContentAssistParser.getPrefix(4, xxxYYY);
+            
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_ID_COMPLETION
+                    && "xxx".equals(prefix.getValue()));
+        }
+    }
+    
+    /**
+     * 
+     */
+    public void testFirstSuffix_xxxYYY()
+    {
+        /* Test  x x x . y y y . z z z */
+        /*              ^              */
+        {
+            ContentAssistStrategy prefix = ContentAssistParser.getPrefix(5, xxxYYY);
+            
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_DOT_COMPLETION
+                            && "xxx".equals(prefix.getValue()));
+        }
+
+        /* Test  x x x . y y y . z z z */
+        /*                ^            */
+        {
+            ContentAssistStrategy prefix = ContentAssistParser.getPrefix(6, xxxYYY);
+            
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_DOT_COMPLETION
+                            && "xxx".equals(prefix.getValue()));
+        }
+        
+        /* Test  x x x . y y y . z z z */
+        /*                    ^        */
+        {
+            ContentAssistStrategy prefix = ContentAssistParser.getPrefix(8, xxxYYY);
+            
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_DOT_COMPLETION
+                            && "xxx".equals(prefix.getValue()));
+        }
+    }
+
+    /**
+     * Test code completion on an EL prefix expression such as prefix.suffix
+     */
+    public void testPrefix_xxxYYYZZZ()
+    {
+        /* Test  x x x . y y y . z z z */
+        /*      ^                      */
+        {
+            final ContentAssistStrategy prefix = ContentAssistParser.getPrefix(1, xxxYYYZZZ);
+            
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_ID_COMPLETION
+                    && "xxx".equals(prefix.getValue()));
+        }
+        
+        /* Test  x x x . y y y . z z z */
+        /*        ^                    */
+        {
+            final ContentAssistStrategy prefix = ContentAssistParser.getPrefix(2, xxxYYYZZZ);
+            
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_ID_COMPLETION
+                    && "xxx".equals(prefix.getValue()));
+        }
+        
+        /* Test  x x x . y y y . z z z */
+        /*            ^                */
+        {
+            final ContentAssistStrategy prefix = ContentAssistParser.getPrefix(4, xxxYYYZZZ);
+            
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_ID_COMPLETION
+                    && "xxx".equals(prefix.getValue()));
+        }
+    }
+    
+
+    /**
+     * 
+     */
+    public void testFirstSuffix_xxxYYYZZZ()
+    {
+        /* Test  x x x . y y y . z z z */
+        /*              ^              */
+        {
+            ContentAssistStrategy prefix = ContentAssistParser.getPrefix(5, xxxYYYZZZ);
+            
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_DOT_COMPLETION
+                            && "xxx".equals(prefix.getValue()));
+        }
+
+        /* Test  x x x . y y y . z z z */
+        /*                ^            */
+        {
+            ContentAssistStrategy prefix = ContentAssistParser.getPrefix(6, xxxYYYZZZ);
+            
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_DOT_COMPLETION
+                            && "xxx".equals(prefix.getValue()));
+        }
+        
+        /* Test  x x x . y y y . z z z */
+        /*                    ^        */
+        {
+            ContentAssistStrategy prefix = ContentAssistParser.getPrefix(8, xxxYYYZZZ);
+            
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_DOT_COMPLETION
+                            && "xxx".equals(prefix.getValue()));
+        }
+    }
+    
+    
+    /**
+     * 
+     */
+    public void testSecondSuffix_xxxYYYZZZ()
+    {
+        /* Test  x x x . y y y . z z z */
+        /*                      ^      */
+        {
+            ContentAssistStrategy prefix = ContentAssistParser.getPrefix(9, xxxYYYZZZ);
+            
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_DOT_COMPLETION
+                            && "xxx.yyy".equals(prefix.getValue()));
+        }
+
+        /* Test  x x x . y y y . z z z */
+        /*                        ^    */
+        {
+            ContentAssistStrategy prefix = ContentAssistParser.getPrefix(10, xxxYYYZZZ);
+            
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_DOT_COMPLETION
+                            && "xxx.yyy".equals(prefix.getValue()));
+        }
+        
+        /* Test  x x x . y y y . z z z */
+        /*                            ^*/
+        {
+            ContentAssistStrategy prefix = ContentAssistParser.getPrefix(12, xxxYYYZZZ);
+            
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_DOT_COMPLETION
+                            && "xxx.yyy".equals(prefix.getValue()));
+        }
+    }
+    
+    /**
+     * 
+     */
+    public void testPrefix_xxxLtYYY()
+    {
+        /* Test  x x x  < y y y */
+        /*      ^               */
+        {
+            ContentAssistStrategy prefix = ContentAssistParser.getPrefix(1, xxxLtYYY);
+            
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_ID_COMPLETION
+                            && "xxx".equals(prefix.getValue()));
+        }
+        
+        /* Test  x x x  < y y y */
+        /*        ^             */
+        {
+            ContentAssistStrategy prefix = ContentAssistParser.getPrefix(2, xxxLtYYY);
+            
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_ID_COMPLETION
+                            && "xxx".equals(prefix.getValue()));
+        }
+        
+        /* Test  x x x  < y y y */
+        /*            ^         */
+        {
+            ContentAssistStrategy prefix = ContentAssistParser.getPrefix(4, xxxLtYYY);
+            
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_ID_COMPLETION
+                            && "xxx".equals(prefix.getValue()));
+        }
+        
+        /* Test  x x x  < y y y */
+        /*               ^      */
+        {
+            ContentAssistStrategy prefix = ContentAssistParser.getPrefix(7, xxxLtYYY);
+            
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_ID_COMPLETION
+                            && "yyy".equals(prefix.getValue()));
+        }
+
+        /* Test  x x x  < y y y */
+        /*                 ^    */
+        {
+            ContentAssistStrategy prefix = ContentAssistParser.getPrefix(8, xxxLtYYY);
+            
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_ID_COMPLETION
+                            && "yyy".equals(prefix.getValue()));
+        }
+        
+        /* Test  x x x  < y y y */
+        /*                 ^    */
+        {
+            ContentAssistStrategy prefix = ContentAssistParser.getPrefix(10, xxxLtYYY);
+            
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_ID_COMPLETION
+                            && "yyy".equals(prefix.getValue()));
+        }
+    }
+
+    /**
+     * 
+     */
+    public void testPrefix_xxxDotYYYLtZZZ()
+    {
+        /* Test  x x x . y y y < z z z */
+        /*      ^                      */
+        {
+            ContentAssistStrategy prefix = ContentAssistParser.getPrefix(1, xxxDotYYYLtZZZ);
+            
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_ID_COMPLETION
+                            && "xxx".equals(prefix.getValue()));
+        }
+
+        /* Test  x x x . y y y < z z z */
+        /*        ^                    */
+        {
+            ContentAssistStrategy prefix = ContentAssistParser.getPrefix(2, xxxDotYYYLtZZZ);
+            
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_ID_COMPLETION
+                            && "xxx".equals(prefix.getValue()));
+        }
+
+        /* Test  x x x . y y y < z z z */
+        /*            ^                */
+        {
+            ContentAssistStrategy prefix = ContentAssistParser.getPrefix(4, xxxDotYYYLtZZZ);
+            
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_ID_COMPLETION
+                            && "xxx".equals(prefix.getValue()));
+        }
+
+        /* Test  x x x . y y y < z z z */
+        /*              ^              */
+        {
+            ContentAssistStrategy prefix = ContentAssistParser.getPrefix(5, xxxDotYYYLtZZZ);
+            
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_DOT_COMPLETION
+                            && "xxx".equals(prefix.getValue()));
+        }
+
+        /* Test  x x x . y y y < z z z */
+        /*                ^            */
+        {
+            ContentAssistStrategy prefix = ContentAssistParser.getPrefix(6, xxxDotYYYLtZZZ);
+            
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_DOT_COMPLETION
+                            && "xxx".equals(prefix.getValue()));
+        }
+
+        /* Test  x x x . y y y < z z z */
+        /*                    ^        */
+        {
+            ContentAssistStrategy prefix = ContentAssistParser.getPrefix(8, xxxDotYYYLtZZZ);
+            
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_DOT_COMPLETION
+                            && "xxx".equals(prefix.getValue()));
+        }
+
+        /* Test  x x x . y y y < z z z */
+        /*                      ^      */
+        {
+            ContentAssistStrategy prefix = ContentAssistParser.getPrefix(11, xxxDotYYYLtZZZ);
+            
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_ID_COMPLETION
+                            && "zzz".equals(prefix.getValue()));
+        }
+        
+        /* Test  x x x . y y y < z z z */
+        /*                            ^*/
+        {
+            ContentAssistStrategy prefix = ContentAssistParser.getPrefix(14, xxxDotYYYLtZZZ);
+            
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_ID_COMPLETION
+                            && "zzz".equals(prefix.getValue()));
+        }
+    }
+    
+    /**
+     * 
+     */
+    public void testSuffix_xxxDotYYYLtZZZ()
+    {
+        /* Test  x x x . y y y < z z z . */
+        /*                              ^*/
+        {
+            ContentAssistStrategy prefix = ContentAssistParser.getPrefix(15, xxxDotYYYLtZZZ+".");
+            
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_DOT_COMPLETION
+                            && "zzz".equals(prefix.getValue()));
+        }
+    }
+    
+    /**
+     * 
+     */
+    public void testPrefix_xxxMapYYY()
+    {
+        /* Test  x x x [ ' y y y ' ] */
+        /*      ^                    */
+        {
+            ContentAssistStrategy prefix = ContentAssistParser.getPrefix(1, xxxMapYYY);
+
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_ID_COMPLETION
+                    && "xxx".equals(prefix.getValue()));
+        }
+        
+        /* Test  x x x [ ' y y y ' ] */
+        /*        ^                  */
+        {
+            ContentAssistStrategy prefix = ContentAssistParser.getPrefix(2, xxxMapYYY);
+
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_ID_COMPLETION
+                    && "xxx".equals(prefix.getValue()));
+        }
+
+        /* Test  x x x [ ' y y y ' ] */
+        /*            ^              */
+        {
+            ContentAssistStrategy prefix = ContentAssistParser.getPrefix(4, xxxMapYYY);
+
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_ID_COMPLETION
+                    && "xxx".equals(prefix.getValue()));
+        }
+        
+        /* Test x x x [ ' y y y ' ]  */
+        /*                         ^ */
+//        {
+//            ContentAssistStrategy prefix = ContentAssistParser.getPrefix(11, xxxMapYYY);
+//
+//            System.out.println(prefix.getValue());
+//            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_DOT_COMPLETION
+//                    && "xxx['yyy']".equals(prefix.getValue()));
+//        }
+        
+        /* Test x x x [ ' y y y ' ] .  */
+        /*                           ^ */
+        {
+            ContentAssistStrategy prefix = ContentAssistParser.getPrefix(12, xxxMapYYY+".");
+
+            System.out.println(prefix.getValue());
+            assertTrue(prefix.getType() == ContentAssistStrategy.PREFIX_TYPE_DOT_COMPLETION
+                    && "xxx['yyy']".equals(prefix.getValue()));
+        }
+    }
+}