AlgoMirror(Construction cons, Mirrorable in, GeoLine g, GeoPoint p, GeoConic c) {
    super(cons);
    // this.in = in;
    mirrorLine = g;
    mirrorPoint = p;
    mirrorConic = c; // Michael Borcherds 2008-02-10

    if (g != null) mirror = g;
    else if (p != null) mirror = p;
    else mirror = c; // Michael Borcherds 2008-02-10

    geoIn = in.toGeoElement();
    out = (Mirrorable) geoIn.copy();
    geoOut = out.toGeoElement();
    setInputOutput();

    cons.registerEuclidianViewAlgo(this);

    compute();
  }