public double worldValue(float realx, float realy, float realz, InterpolationFunction3D interp) {
   return operation.isTrue(
           left.worldValue(realx, realy, realz, interp),
           right.worldValue(realx, realy, realz, interp))
       ? 1
       : 0;
 }
 @Override
 public Dimension3D<Integer> dim() {
   return left.dim();
 }
 public Anatomy3D getAnatomy() {
   return left.getAnatomy();
 }
 public Index3D indexToGrid(int idx) {
   return left.indexToGrid(idx);
 }
 public int indexOf(int x, int y, int z) {
   return left.indexOf(x, y, z);
 }
 public double value(int x, int y, int z) {
   return operation.isTrue(left.value(x, y, z), right.value(x, y, z)) ? 1 : 0;
 }
 public double value(float x, float y, float z, InterpolationFunction3D interp) {
   return operation.isTrue(left.value(x, y, z, interp), right.value(x, y, z, interp)) ? 1 : 0;
 }
 public IImageSpace3D getImageSpace() {
   return left.getImageSpace();
 }
 public boolean isTrue(int index) {
   return operation.isTrue(left.value(index), right.value(index));
 }
 public boolean isTrue(int x, int y, int z) {
   return operation.isTrue(left.value(x, y, z), right.value(x, y, z));
 }
 public String toString() {
   return left.getImageLabel() + " " + operation + " " + right.getImageLabel();
 }
 public int length() {
   return left.length();
 }
 public double value(int index) {
   return operation.isTrue(left.value(index), right.value(index)) ? 1 : 0;
 }
 public String getImageLabel() {
   return left.getImageLabel() + operation.operand() + right.getImageLabel();
 }
 public int getDimension(Axis axisNum) {
   return left.getDimension(axisNum);
 }