diff --git a/CHANGELOG.md b/CHANGELOG.md
index fc10126..59705c9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,8 @@
 #### 0.10.5+3
   * Fix normalization of relative paths inside of deep relative imports,
     https://github.com/dart-lang/polymer-dart/issues/30.
+  * Update analyzer and code_transformers versions and use new mock sdk from
+    code_transformers.
 
 #### 0.10.5+2
   * Append html imports in front of the dart script tag, if one exists in
diff --git a/lib/build/html_import_annotation_recorder.dart b/lib/build/html_import_annotation_recorder.dart
index c320862..ba5d2ab 100644
--- a/lib/build/html_import_annotation_recorder.dart
+++ b/lib/build/html_import_annotation_recorder.dart
@@ -34,6 +34,10 @@
       type = annotationElement.returnType;
     } else if (annotationElement is PropertyAccessorElement) {
       type = annotationElement.variable.propagatedType;
+      if (type == null) {
+        type = pluginData.resolver.evaluateConstant(annotationElement.library,
+            pluginData.initializer.annotationNode.name).value.type;
+      }
     } else {
       logger.error('Unsupported annotation type. Only constructors and '
           'properties are supported as initializers.');
diff --git a/lib/build/web_components.dart b/lib/build/web_components.dart
index a5bf002..52b1a28 100644
--- a/lib/build/web_components.dart
+++ b/lib/build/web_components.dart
@@ -10,6 +10,7 @@
 import 'package:code_transformers/assets.dart';
 import 'package:code_transformers/messages/build_logger.dart';
 import 'package:code_transformers/resolver.dart';
+import 'package:code_transformers/src/dart_sdk.dart' as dart_sdk;
 import 'package:html5lib/dom.dart' as dom;
 import 'package:initialize/transformer.dart' show generateBootstrapFile;
 import 'package:initialize/build/initializer_plugin.dart';
@@ -51,49 +52,8 @@
   final Resolvers _resolvers;
   TransformOptions options;
 
-  WebComponentsTransformer(this.options) : _resolvers = new Resolvers.fromMock({
-        // The list of types below is derived from:
-        //   * types that are used internally by the resolver (see
-        //   _initializeFrom in resolver.dart).
-        // TODO(jakemac): Move this into code_transformers so it can be shared.
-        'dart:core': '''
-          library dart.core;
-          class Object {}
-          class Function {}
-          class StackTrace {}
-          class Symbol {}
-          class Type {}
-
-          class String extends Object {}
-          class bool extends Object {}
-          class num extends Object {}
-          class int extends num {}
-          class double extends num {}
-          class DateTime extends Object {}
-          class Null extends Object {}
-
-          class Deprecated extends Object {
-            final String expires;
-            const Deprecated(this.expires);
-          }
-          const Object deprecated = const Deprecated("next release");
-          class _Override { const _Override(); }
-          const Object override = const _Override();
-          class _Proxy { const _Proxy(); }
-          const Object proxy = const _Proxy();
-
-          class List<V> extends Object {}
-          class Map<K, V> extends Object {}
-          ''',
-        'dart:html': '''
-          library dart.html;
-          class HtmlElement {}
-          ''',
-        'dart:async': '''
-          library dart.async;
-          class Future<T> {}
-        ''',
-      });
+  WebComponentsTransformer(this.options)
+      : _resolvers = new Resolvers.fromMock(dart_sdk.mockSdkSources);
 
   bool isPrimary(AssetId id) {
     if (options.entryPoints != null) {
diff --git a/pubspec.yaml b/pubspec.yaml
index fa01acf..1274e1d 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -10,9 +10,9 @@
   elements, by hiding DOM subtrees under shadow roots. HTML Imports let authors
   bundle code and HTML as if they were libraries.
 dependencies:
-  analyzer: '^0.22.4'
+  analyzer: '>=0.22.4 <0.25.0'
   barback: '>=0.14.2 <0.16.0'
-  code_transformers: '^0.2.4'
+  code_transformers: '^0.2.7'
   html5lib: '^0.12.0'
   initialize: '^0.5.0+1'
   path: '^1.3.0'
