anchor.diff:      this.elevation: 0,
       this.color,
       this.textStyle,
  +    this.borderRadius,
       this.child
     }) : super(key: key) {
       assert(type != null);
       assert(elevation != null);
  +    assert(type != MaterialType.circle || borderRadius == null);
     }
   
     /// The widget below this widget in the tree.
  
positive.code:   Widget build(BuildContext context) {
      Color backgroundColor = _getBackgroundColor(context);
      Widget contents = config.child;
      if (contents != null) {
        contents = new AnimatedDefaultTextStyle(
          style: config.textStyle ?? Theme.of(context).textTheme.body1,
  
negative.code: /// placed inside Material.) Otherwise, in-progress ink features (e.g., ink
  /// splashes and ink highlights) won't move to account for the new layout.
  ///
  /// In general, the features of a [Material] should not change over time (e.g. a
  /// [Material] should not change its [color] or [type]). The one exception is
  /// the [elevation], changes to which will be animated.
  ///
  /// See also:
  ///
  /// * [MergeableMaterial], a piece of material that can split and remerge.
  /// * [Card], a wrapper for a [Material] of [type] [MaterialType.card].
  /// * <https://material.google.com/>
  class Material extends StatefulWidget {
    /// Creates a piece of material.
  