anchor.diff:        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);
  +}
  +
  +MeshData DirectionalLightVisualizer(
  +    ChronosGL cgl, double cubeLen, double delta, VM.Vector3 dir) {
  +  MeshData md = EmptyLightVisualizer(cgl, "dirLightViz");
  +  UpdateDirectionalLightVisualizer(md, cubeLen, delta, dir);
     return md;
   }
   
  
positive.code:   return md;
  }
  
  MeshData DirectionalLightVisualizer(
      ChronosGL cgl, double cubeLen, double delta, VM.Vector3 dir) {
    assert(dir.y != 0.0);
    final double d = cubeLen * 0.5;
    final double end = delta * (d / delta).floor();
    final double start = -end;
  
negative.code:   md.ChangeVertices(FlattenVector3List(points));
    md.ChangeFaces(faces);
    return md;
  }
  