anchor.diff:  
         expect(component.lifecycleCalls, equals([
           matchCall('componentWillUnmount'),
  +      ]));
  +    });
  +
  +    test('does not call getChildContext when childContextKeys is empty', () {
  +      var mountNode = new DivElement();
  +      var instance = react_dom.render(ContextWrapperWithoutKeys({'foo': false}, LifecycleTestWithContext({})), mountNode);
  +      _ContextWrapperWithoutKeys component = getDartComponent(instance);
  +
  +      expect(component.lifecycleCalls, isEmpty);
  +    });
  +
  +    test('calls getChildContext when childContextKeys exist', () {
  +      var mountNode = new DivElement();
  +      var instance = react_dom.render(ContextWrapper({'foo': false}, LifecycleTestWithContext({})), mountNode);
  +      _ContextWrapper component = getDartComponent(instance);
  +
  +      expect(component.lifecycleCalls, equals([
  +        matchCall('getChildContext'),
         ]));
       });
   
  
positive.code:   render() => false;
  }
  
  ReactDartComponentFactoryProxy ContextWrapper = react.registerComponent(() => new _ContextWrapper());
  class _ContextWrapper extends react.Component {
    @override
    Iterable<String> get childContextKeys => const ['foo'];
  
    @override
    Map<String, dynamic> getChildContext() => {
      'foo': props['foo']
    };
  
    dynamic render() => react.div({}, props['children']);
  }
  
negative.code: ReactDartComponentFactoryProxy LifecycleTestWithContext = react.registerComponent(() => new _LifecycleTestWithContext());
  class _LifecycleTestWithContext extends _LifecycleTest {
    @override
    Iterable<String> get contextKeys => const ['foo']; // only listening to one context key
  }
  
  ReactDartComponentFactoryProxy LifecycleTest = react.registerComponent(() => new _LifecycleTest());
  class _LifecycleTest extends react.Component with LifecycleTestHelper {
    void componentWillMount() => lifecycleCall('componentWillMount');
    void componentDidMount() => lifecycleCall('componentDidMount');
    void componentWillUnmount() => lifecycleCall('componentWillUnmount');
  