anchor.diff:          this.defaultProps = new JsBackedMap.fromJs(reactClass.defaultProps);
   
     ReactClass get type => reactClass;
  -
  -  ReactElement build(Map props, [List childrenArgs = const []]) {
  -    // TODO 3.1.0-wip if we don't pass in a list into React, we don't get a list back in Dart...
  -
  -    List children;
  -    if (childrenArgs.isEmpty) {
  -      children = childrenArgs;
  -    } else if (childrenArgs.length == 1) {
  -      final singleChild = listifyChildren(childrenArgs[0]);
  -      if (singleChild is List) {
  -        children = singleChild;
  -      }
  -    }
  -
  -    if (children == null) {
  -      // FIXME 3.1.0-wip are we cool to modify this list?
  -      // FIXME 3.1.0-wip why are there unmodifiable lists here?
  -      children = childrenArgs.map(listifyChildren).toList();
  -      markChildrenValidated(children);
  -    }
  -
  -    return reactComponentFactory(
  -      generateExtendedJsProps(props),
  -      children,
  -    );
  -  }
  -
  -  /// Returns a JavaScript version of the specified [props], preprocessed for consumption by ReactJS and prepared for
  -  /// consumption by the [react] library internals.
  -  static JsMap generateExtendedJsProps(Map props) {
  -    final propsForJs = new JsBackedMap.from(props);
  -
  -    final ref = propsForJs['ref'];
  -    if (ref != null) {
  -      // If the ref is a callback, pass ReactJS a function that will call it
  -      // with the Dart Component instance, not the ReactComponent instance.
  -      if (ref is _CallbackRef) {
  -        propsForJs['ref'] = allowInterop((ReactComponent instance) => ref(instance?.dartComponent));
  -      }
  -
  -      if (ref is Ref) {
  -        propsForJs['ref'] = ref.jsRef;
  -      }
  -    }
  -
  -    return propsForJs.jsObject;
  -  }
   }
   
   /// Converts a list of variadic children arguments to children that should be passed to ReactJS.
  
positive.code: 
    @override
    ReactElement build(Map props, [List childrenArgs = const []]) {
      var children = _convertArgsToChildren(childrenArgs);
      children = listifyChildren(children);
  
      // We can't mutate the original since we can't be certain that the value of the
      // the converted event handler will be compatible with the Map's type parameters.
      var convertibleProps = new Map.from(props);
      convertProps(convertibleProps);
  
      // jsifyAndAllowInterop also handles converting props with nested Map/List structures, like `style`
      return factory(jsifyAndAllowInterop(convertibleProps), children);
    }
  
    /// Performs special handling of certain props for consumption by ReactJS DOM components.
  
negative.code:       }
      }
  
      return React.createElement(type, generateExtendedJsProps(props), children);
    }
  
    /// Returns a JavaScript version of the specified [props], preprocessed for consumption by ReactJS and prepared for
  