Function innerBuffer2 = ff.function("buffer", ff.property("other_geom"), ff.literal(2));
Function geomTx = ff.function("intersection", innerBuffer1, innerBuffer2);
ReferencedEnvelope re = new ReferencedEnvelope(0, 2, 0, 2, null);
GeometryTransformationVisitor visitor = new GeometryTransformationVisitor();
ReferencedEnvelope result = (ReferencedEnvelope) geomTx.accept(visitor, re);
ReferencedEnvelope expected = new ReferencedEnvelope(-3, 5, -3, 5, null);
assertEquals(expected, result);