anchor.diff:    return out;
   }
   
  +// Merges a two-dimensional contour (plus corresponding gradient) with
  +// a two-dimension bevel support.
  +// the contour remains in the x,y plane but is replicated at different
  +// z-levels based on the y-coordinate of the bevel support.
  +// At each level the contour is extended based on the gradient and the supports
  +// x-coordinate.
  +// Typically supports[0] == (0,0) which means thet contour will appear
  +// a level z=0 unchanged.
   List<List<VM.Vector3>> BevelStrips(List<VM.Vector2> contour,
       List<VM.Vector2> gradient, List<VM.Vector2> supports, VM.Matrix3 m) {
     assert(contour.length == gradient.length);
  
positive.code:                        x
  
   */
  
  double EasingCosine(double t) => 1.0 - Math.cos(t * Math.PI / 2);
  
  
negative.code:   "Linear": EasingLinear,
  };
  
  // returns a sequence of x,y coordinates  describing the bevel cur
  // through view (see above)
  List<VM.Vector2> BevelSupportPoints(double width, double height, int nSupports,
      {Easing widthEasing = EasingCosine, Easing heightEasing = EasingSine}) {
    // out[0]
  