diff --git a/eclipse/settings/code-style/gwt-checkstyle-tests.xml b/eclipse/settings/code-style/gwt-checkstyle-tests.xml
index b487425..fc45c2e 100644
--- a/eclipse/settings/code-style/gwt-checkstyle-tests.xml
+++ b/eclipse/settings/code-style/gwt-checkstyle-tests.xml
@@ -184,14 +184,6 @@
             <property name="severity" value="error"/>
             <property name="format" value="@author"/>
         </module>
-        <module name="Regexp">
-            <metadata name="com.atlassw.tools.eclipse.checkstyle.comment" value="No one line javadoc comments"/>
-            <metadata name="com.atlassw.tools.eclipse.checkstyle.lastEnabledSeverity" value="error"/>
-            <property name="severity" value="ignore"/>
-            <property name="format" value="[/][*][*][^\n]*[*][/]"/>
-            <property name="message" value="No one line javadoc comments"/>
-            <property name="illegalPattern" value="true"/>
-        </module>
         <module name="MemberName">
             <property name="severity" value="ignore"/>
             <property name="format" value="^[a-z_][a-zA-Z0-9_]*$"/>
diff --git a/eclipse/settings/code-style/gwt-checkstyle.xml b/eclipse/settings/code-style/gwt-checkstyle.xml
index 41fdcea..81da7af 100644
--- a/eclipse/settings/code-style/gwt-checkstyle.xml
+++ b/eclipse/settings/code-style/gwt-checkstyle.xml
@@ -171,13 +171,6 @@
             <property name="severity" value="error"/>
             <property name="format" value="@author"/>
         </module>
-        <module name="Regexp">
-            <metadata name="com.atlassw.tools.eclipse.checkstyle.comment" value="No one line javadoc comments"/>
-            <property name="severity" value="error"/>
-            <property name="format" value="[/][*][*][^\n]*[*][/]"/>
-            <property name="message" value="No one line javadoc comments"/>
-            <property name="illegalPattern" value="true"/>
-        </module>
         <module name="NoWhitespaceAfter">
             <property name="severity" value="error"/>
             <property name="allowLineBreaks" value="false"/>
diff --git a/user/src/jsinterop/annotations/JsAsync.java b/user/src/jsinterop/annotations/JsAsync.java
new file mode 100644
index 0000000..894856c
--- /dev/null
+++ b/user/src/jsinterop/annotations/JsAsync.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2017 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package jsinterop.annotations;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * JsAsync marks a method to be transpiled to an async JavaScript method.
+ *
+ * <p>Adding this annotation to a method adds an {@code async} keyword to the generated JavaScript
+ * function.
+ *
+ * <p>There are some limitations apply on JsAsync to make the annotation practical:
+ * <ul>
+ * <li>A @JsAsync method return type should be IThenable or Promise.
+ * <li>A @JsAsync method should not return {@code null}.
+ * </ul>
+ *
+ * <p>This is an EXPERIMENTAL annotation and only works in J2CL.
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.METHOD)
+@Documented
+public @interface JsAsync {
+}
diff --git a/user/src/jsinterop/annotations/JsEnum.java b/user/src/jsinterop/annotations/JsEnum.java
new file mode 100644
index 0000000..3332821
--- /dev/null
+++ b/user/src/jsinterop/annotations/JsEnum.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright 2018 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package jsinterop.annotations;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * JsEnum marks a Java enum as being represented as a Closure enum, either one that already exists
+ * from the external JavaScript environment, or one that will be accessible from the external
+ * JavaScript environment.
+ *
+ * <p>The underlying type of the Closure enum can be specified via {@link #hasCustomValue} and
+ * declaring an instance field named "value" of the desired type.
+ *
+ * <p>If the JsEnum is non-native and has custom values, a constructor is required to allow
+ * specifying the values for the enum constants, as in the following example
+ *
+ * <pre><code>
+ *  {@literal @}JsEnum(hasCustomValue=true)
+ *   enum IntJsEnum {
+ *     TEN(10),
+ *     TWENTY(20);
+ *
+ *     int value;
+ *
+ *     IntJsEnum(int value) { this.value = value; }
+ *   }
+ * </code></pre>
+ *
+ * <p>If the JsEnum is native and has custom values, the value field is still required but
+ * constructors are not needed nor allowed.
+ *
+ * <p>JsEnums do not support the full Java semantics:
+ *
+ * <ul>
+ *   <li>No instance fields are allowed other than {@code value},
+ *   <li>{@link Enum#name()} and {@link Enum#values()} are not supported.
+ *   <li>{@link Enum#ordinal()} is supported only for non-native JsEnums that don't have custom
+ *       values.
+ *   <li>The class is initialization might be delayed until a static field/method is accessed.
+ * </ul>
+ *
+ * <p>The JavaScript namespace and name can be specified in a manner similar to JsTypes via {@link
+ * #namespace} and {@link #name} respectively.
+ *
+ * <p>Methods and fields declared in the JsEnum are only accessible in Java code. Only the enum
+ * constants are accessible from JavaScript code.
+ *
+ * <p>This annotation is only supported by J2CL.
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.TYPE)
+@Documented
+public @interface JsEnum {
+
+  /**
+   * Customizes the name of the type in generated JavaScript. If not provided, the simple Java name
+   * will be used.
+   */
+  String name() default "<auto>";
+
+  /** Customizes the namespace of the type in generated JavaScript. */
+  String namespace() default "<auto>";
+
+  /** When set to {@code true}, this JsEnum is a native Closure enum type. */
+  boolean isNative() default false;
+
+  /**
+   * When set to {@code true}, this JsEnum will have a custom value defined by a field named
+   * 'value'. The only allowed types for the value field are String and primitive types with the
+   * exception of long.
+   */
+  boolean hasCustomValue() default false;
+}
