diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart
index ad79134..b65279b 100644
--- a/pkg/analyzer/lib/src/generated/resolver.dart
+++ b/pkg/analyzer/lib/src/generated/resolver.dart
@@ -4531,7 +4531,8 @@
     } else {
       _useIdentifierElement(node);
       if (element == null ||
-          element is! LocalElement && !identical(element, _enclosingExec)) {
+          element.enclosingElement is ClassElement &&
+              !identical(element, _enclosingExec)) {
         usedElements.members.add(node.name);
         if (isIdentifierRead) {
           usedElements.readMembers.add(node.name);
@@ -4540,11 +4541,6 @@
     }
   }
 
-  @override
-  visitTypeName(TypeName node) {
-    _useIdentifierElement(node.name);
-  }
-
   /**
    * Marks an [Element] of [node] as used in the library.
    */
diff --git a/pkg/analyzer/test/generated/resolver_test.dart b/pkg/analyzer/test/generated/resolver_test.dart
index 6afb5dc..fcb6c5c 100644
--- a/pkg/analyzer/test/generated/resolver_test.dart
+++ b/pkg/analyzer/test/generated/resolver_test.dart
@@ -3323,6 +3323,19 @@
     verify([source]);
   }
 
+  void test_unusedElement_class_isUsed_typeArgument() {
+    enableUnusedElement = true;
+    Source source = addSource(r'''
+class _A {}
+main() {
+  var v = new List<_A>();
+  print(v);
+}''');
+    resolve(source);
+    assertNoErrors(source);
+    verify([source]);
+  }
+
   void test_unusedElement_class_notUsed_inClassMember() {
     enableUnusedElement = true;
     Source source = addSource(r'''
@@ -3554,6 +3567,19 @@
     verify([source]);
   }
 
+  void test_unusedElement_functionTypeAlias_isUsed_typeArgument() {
+    enableUnusedElement = true;
+    Source source = addSource(r'''
+typedef _F(a, b);
+main() {
+  var v = new List<_F>();
+  print(v);
+}''');
+    resolve(source);
+    assertNoErrors(source);
+    verify([source]);
+  }
+
   void test_unusedElement_functionTypeAlias_isUsed_variableDeclaration() {
     enableUnusedElement = true;
     Source source = addSource(r'''
diff --git a/sdk/lib/_internal/pub/test/serve/404_page_test.dart b/sdk/lib/_internal/pub/test/serve/404_page_test.dart
index 7a77c40..f1f2ce3 100644
--- a/sdk/lib/_internal/pub/test/serve/404_page_test.dart
+++ b/sdk/lib/_internal/pub/test/serve/404_page_test.dart
@@ -39,7 +39,7 @@
       expect(response.statusCode, equals(404));
 
       // Should mention the asset that can't be found.
-      expect(response.body, contains('&quot;/packages&quot;'));
+      expect(response.body, contains('&quot;&#47;packages&quot;'));
     });
 
     endPubServe();
diff --git a/sdk/lib/convert/html_escape.dart b/sdk/lib/convert/html_escape.dart
index 2c54b91..ef4b02e 100644
--- a/sdk/lib/convert/html_escape.dart
+++ b/sdk/lib/convert/html_escape.dart
@@ -182,7 +182,7 @@
         case "'": if (mode.escapeApos) replacement = '&#39;'; break;
         case '<': if (mode.escapeLtGt) replacement = '&lt;'; break;
         case '>': if (mode.escapeLtGt) replacement = '&gt;'; break;
-        case '/': if (mode.escapeSlash) replacement = '&#46;'; break;
+        case '/': if (mode.escapeSlash) replacement = '&#47;'; break;
       }
       if (replacement != null) {
         if (result == null) result = new StringBuffer();
diff --git a/tests/lib/convert/html_escape_test.dart b/tests/lib/convert/html_escape_test.dart
index a4596dc..8a13773 100644
--- a/tests/lib/convert/html_escape_test.dart
+++ b/tests/lib/convert/html_escape_test.dart
@@ -10,7 +10,7 @@
 
 const _TEST_INPUT = """<A </test> of \xA0 "double" & 'single' values>""";
 
-const _OUTPUT_UNKNOWN = '&lt;A &lt;&#46;test&gt; of \xA0 &quot;double&quot; '
+const _OUTPUT_UNKNOWN = '&lt;A &lt;&#47;test&gt; of \xA0 &quot;double&quot; '
   '&amp; &#39;single&#39; values&gt;';
 
 const _OUTPUT_ATTRIBUTE =
diff --git a/tools/VERSION b/tools/VERSION
index 287630a..c1363d0 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -28,4 +28,4 @@
 MINOR 10
 PATCH 0
 PRERELEASE 1
-PRERELEASE_PATCH 3
+PRERELEASE_PATCH 4
