@Override
    public void cloneFields( Cloner cloner, Object original ) {
        super.cloneFields(cloner, original);

        this.stepScale = cloner.clone(stepScale);
        this.offset = cloner.clone(offset);

        this.leftNeighbour = null;
        this.topNeighbour = null;
        this.rightNeighbour = null;
        this.bottomNeighbour = null;

        // Don't feel like making geomap cloneable tonight,
        // so I'll copy the old logic.
        this.geomap = new LODGeomap(size, geomap.getHeightArray());
        Mesh m = geomap.createMesh(stepScale, Vector2f.UNIT_XY, offset, offsetAmount, totalSize, false);
        this.setMesh(m);

        // In this case, we always clone material even if the cloner is set up
        // not to clone it.  Terrain uses mutable textures and stuff, so it's important
        // to clone it.  (At least that's my understanding and is evidenced by the old
        // clone code specifically cloning material.)  -pspeed
        // Also note that Geometry will have potentially already cloned this but the pre-JmeCloner
        // code didn't care about that extra garbage, either. -pspeed:2020-08-21
        this.material = material == null ? null : material.clone();
    }
Called internally by com.jme3.util.clone.Cloner.  Do not call directly.
jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/TerrainPatch.java