anchor.diff:    md.ChangeVertices(FlattenVector3List(points));
     md.ChangeFaces(faces);
     return md;
  -}+}
  
positive.code:       points.add(new VM.Vector3(x, 0.0, z)..sub(dir2y));
      }
    }
    MeshData md = EmptyLightVisualizer(cgl, "dirLightViz");
    md.ChangeVertices(FlattenVector3List(points));
    List<int> faces = new List<int>(points.length);
    for (int i = 0; i < points.length; ++i) faces[i] = i;
    md.ChangeFaces(faces);
    return md;
  }
  
  
negative.code:   return md;
  }
  
  void UpdateDirectionalLightVisualizer(
      MeshData md, double cubeLen, double delta, VM.Vector3 dir) {
    if (dir.y == 0.0) {
      return;
    }
    final double d = cubeLen * 0.5;
    final double end = delta * (d / delta).floor();
    final double start = -end;
  