diff --git a/src/generators/default/class-decl-method.template b/src/generators/default/class-decl-method.template
index 334145980a0d55dcd3a11f866520bf5db174aa0a..a1562a76fa447fc810caacf2b0ed1006021bf483 100644
--- a/src/generators/default/class-decl-method.template
+++ b/src/generators/default/class-decl-method.template
@@ -2,7 +2,7 @@
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 path: language/statements/class/gen-method-
-name: Geenerator method as a ClassDeclaration element
+name: Generator method as a ClassDeclaration element
 esid: prod-GeneratorMethod
 info: |
   ClassElement :
diff --git a/src/generators/default/class-decl-private-method.template b/src/generators/default/class-decl-private-method.template
new file mode 100644
index 0000000000000000000000000000000000000000..70f8505f37929bed2c2ffa73484b48b11e7c3ed3
--- /dev/null
+++ b/src/generators/default/class-decl-private-method.template
@@ -0,0 +1,50 @@
+// Copyright (C) 2018 Jaideep Bhoosreddy. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+path: language/statements/class/gen-method-
+name: Generator private method as a ClassDeclaration element
+features: [class-methods-private]
+esid: prod-GeneratorPrivateMethod
+info: |
+  ClassElement :
+    PrivateMethodDefinition
+
+  MethodDefinition :
+    GeneratorMethod
+
+  14.4 Generator Function Definitions
+
+  GeneratorMethod :
+    * PropertyName ( UniqueFormalParameters ) { GeneratorBody }
+features: [generators]
+---*/
+
+var callCount = 0;
+
+class C { 
+    *#gen() {
+        callCount += 1;
+        /*{ body }*/
+    }
+    gen() {
+        return this.#gen();
+    }
+}
+
+const c = new C();
+
+// Test the private fields do not appear as properties before set to value
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "#gen"), false, "test 1");
+assert.sameValue(Object.hasOwnProperty.call(C, "#gen"), false, "test 2");
+assert.sameValue(Object.hasOwnProperty.call(c, "#gen"), false, "test 3");
+
+var iter = c.gen();
+
+/*{ assertions }*/
+
+assert.sameValue(callCount, 1);
+
+// Test the private fields do not appear as properties after set to value
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "#gen"), false, "test 1");
+assert.sameValue(Object.hasOwnProperty.call(C, "#gen"), false, "test 2");
+assert.sameValue(Object.hasOwnProperty.call(c, "#gen"), false, "test 3");
diff --git a/src/generators/default/class-decl-static-private-method.template b/src/generators/default/class-decl-static-private-method.template
new file mode 100644
index 0000000000000000000000000000000000000000..b11b7e9d5566f23660b0cadc292bcac19f314903
--- /dev/null
+++ b/src/generators/default/class-decl-static-private-method.template
@@ -0,0 +1,48 @@
+// Copyright (C) 2018 Jaideep Bhoosreddy. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+path: language/statements/class/gen-private-method-static-
+name: Static generator private method as a ClassDeclaration element
+features: [class-methods-private]
+esid: prod-GeneratorPrivateMethod
+info: |
+  ClassElement :
+    static PrivateMethodDefinition
+
+  MethodDefinition :
+    GeneratorMethod
+
+  14.4 Generator Function Definitions
+
+  GeneratorMethod :
+    * PropertyName ( UniqueFormalParameters ) { GeneratorBody }
+features: [generators]
+---*/
+
+var callCount = 0;
+
+class C {
+    static #*gen() {
+        callCount += 1;
+        /*{ body }*/
+    }
+    static gen() {
+        return C.gen();
+    }
+}
+
+var gen = C.gen;
+
+// Test the private fields do not appear as properties before set to value
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "#gen"), false, "test 1");
+assert.sameValue(Object.hasOwnProperty.call(C, "#gen"), false, "test 2");
+
+var iter = gen();
+
+/*{ assertions }*/
+
+assert.sameValue(callCount, 1);
+
+// Test the private fields do not appear as properties before set to value
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "#gen"), false, "test 1");
+assert.sameValue(Object.hasOwnProperty.call(C, "#gen"), false, "test 2");
\ No newline at end of file
diff --git a/src/generators/default/class-expr-private-method.template b/src/generators/default/class-expr-private-method.template
new file mode 100644
index 0000000000000000000000000000000000000000..7404d7ed12eae2b04acf51e27fe49665682b282f
--- /dev/null
+++ b/src/generators/default/class-expr-private-method.template
@@ -0,0 +1,50 @@
+// Copyright (C) 2018 Jaideep Bhoosreddy. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+path: language/expressions/class/gen-private-method-
+name: Generator private method as a ClassExpression element
+features: [class-methods-private]
+esid: prod-GeneratorPrivateMethod
+info: |
+  ClassElement :
+    PrivateMethodDefinition
+
+  MethodDefinition :
+    GeneratorMethod
+
+  14.4 Generator Function Definitions
+
+  GeneratorMethod :
+    * PropertyName ( UniqueFormalParameters ) { GeneratorBody }
+features: [generators]
+---*/
+
+var callCount = 0;
+
+var C = class {
+    *gen() {
+        callCount += 1;
+        /*{ body }*/
+    }
+    gen() {
+        return this.#gen();
+    }
+}
+
+const c = new C();
+
+// Test the private fields do not appear as properties before set to value
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "#gen"), false, "test 1");
+assert.sameValue(Object.hasOwnProperty.call(C, "#gen"), false, "test 2");
+assert.sameValue(Object.hasOwnProperty.call(c, "#gen"), false, "test 3");
+
+var iter = c.gen();
+
+/*{ assertions }*/
+
+assert.sameValue(callCount, 1);
+
+// Test the private fields do not appear as properties after set to value
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "#gen"), false, "test 1");
+assert.sameValue(Object.hasOwnProperty.call(C, "#gen"), false, "test 2");
+assert.sameValue(Object.hasOwnProperty.call(c, "#gen"), false, "test 3");
diff --git a/src/generators/default/class-expr-static-private-method.template b/src/generators/default/class-expr-static-private-method.template
new file mode 100644
index 0000000000000000000000000000000000000000..22cd88714642343ab5b93ee139fe43ffbbf0d9b7
--- /dev/null
+++ b/src/generators/default/class-expr-static-private-method.template
@@ -0,0 +1,48 @@
+// Copyright (C) 2018 Jaideep Bhoosreddy. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+path: language/expressions/class/gen-private-method-static-
+name: Static generator private method as a ClassExpression element
+features: [class-methods-private]
+esid: prod-GeneratorPrivateMethod
+info: |
+  ClassElement :
+    static PrivateMethodDefinition
+
+  MethodDefinition :
+    GeneratorMethod
+
+  14.4 Generator Function Definitions
+
+  GeneratorMethod :
+    * PropertyName ( UniqueFormalParameters ) { GeneratorBody }
+features: [generators]
+---*/
+
+var callCount = 0;
+
+var C = class {
+    static *gen() {
+        callCount += 1;
+        /*{ body }*/
+    }
+    static gen() {
+        return C.gen();
+    }
+}
+
+var gen = C.gen;
+
+// Test the private fields do not appear as properties before set to value
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "#gen"), false, "test 1");
+assert.sameValue(Object.hasOwnProperty.call(C, "#gen"), false, "test 2");
+
+var iter = gen();
+
+/*{ assertions }*/
+
+assert.sameValue(callCount, 1);
+
+// Test the private fields do not appear as properties before set to value
+assert.sameValue(Object.hasOwnProperty.call(C.prototype, "#gen"), false, "test 1");
+assert.sameValue(Object.hasOwnProperty.call(C, "#gen"), false, "test 2");