Program: 156301
Project: 156301
Buggy source:
@Override public FilledTemplate createTemplate(IFillerStatementContainer filler,IStatementParameter[] params){
  PatternParameterHollow hollow=getParam(0,params,PatternParameterHollow.FILLED_INNER);
  FilledTemplate tpl=new FilledTemplate(filler.getBox());
  double cx=tpl.maxX / 2.0;
  double cy=tpl.maxY / 2.0;
  double cz=tpl.maxZ / 2.0;
  double rx=cx + 0.5;
  double ry=cy + 0.5;
  double rz=cz + 0.5;
  BCLog.logger.info("String_Node_Str" + new Vec3d(cx,cy,cz).add(new Vec3d(tpl.min)) + "String_Node_Str"+ new Vec3d(rx,ry,rz));
  for (int x=0; x <= tpl.maxX; x++) {
    double dx=Math.abs(x - cx) / rx;
    double dxx=dx * dx;
    for (int y=0; y <= tpl.maxY; y++) {
      double dy=Math.abs(y - cy) / ry;
      double dyy=dy * dy;
      for (int z=0; z <= tpl.maxZ; z++) {
        double dz=Math.abs(z - cz) / rz;
        double dzz=dz * dz;
        if (dxx + dyy + dzz < 1) {
          tpl.fill(x,y,z);
        }
      }
    }
  }
  boolean removeInside=hollow != PatternParameterHollow.FILLED_INNER;
  boolean outerFilled=hollow.outerFilled;
  if (removeInside) {
    FilledTemplate tpl2=new FilledTemplate(filler.getBox());
    for (int x=0; x <= tpl.maxX; x++) {
      for (int y=0; y <= tpl.maxY; y++) {
        for (int z=0; z <= tpl.maxZ; z++) {
          if (tpl.get(x,y,z)) {
            tpl2.fill(x,y,z);
            break;
          }
          if (outerFilled) {
            tpl2.fill(x,y,z);
          }
        }
        for (int z=tpl.maxZ; z >= 0; z--) {
          if (tpl.get(x,y,z)) {
            tpl2.fill(x,y,z);
            break;
          }
          if (outerFilled) {
            tpl2.fill(x,y,z);
          }
        }
      }
    }
    for (int x=0; x <= tpl.maxX; x++) {
      for (int z=0; z <= tpl.maxZ; z++) {
        for (int y=0; y <= tpl.maxY; y++) {
          if (tpl.get(x,y,z)) {
            tpl2.fill(x,y,z);
            break;
          }
          if (outerFilled) {
            tpl2.fill(x,y,z);
          }
        }
        for (int y=tpl.maxY; y >= 0; y--) {
          if (tpl.get(x,y,z)) {
            tpl2.fill(x,y,z);
            break;
          }
          if (outerFilled) {
            tpl2.fill(x,y,z);
          }
        }
      }
    }
    for (int y=0; y <= tpl.maxY; y++) {
      for (int z=0; z <= tpl.maxZ; z++) {
        for (int x=0; x <= tpl.maxX; x++) {
          if (tpl.get(x,y,z)) {
            tpl2.fill(x,y,z);
            break;
          }
          if (outerFilled) {
            tpl2.fill(x,y,z);
          }
        }
        for (int x=tpl.maxX; x >= 0; x--) {
          if (tpl.get(x,y,z)) {
            tpl2.fill(x,y,z);
            break;
          }
          if (outerFilled) {
            tpl2.fill(x,y,z);
          }
        }
      }
    }
    tpl=tpl2;
  }
  return tpl;
}

Fixed version (ground truth):
@Override public FilledTemplate createTemplate(IFillerStatementContainer filler,IStatementParameter[] params){
  PatternParameterHollow hollow=getParam(0,params,PatternParameterHollow.FILLED_INNER);
  FilledTemplate tpl=new FilledTemplate(filler.getBox());
  double cx=tpl.maxX / 2.0;
  double cy=tpl.maxY / 2.0;
  double cz=tpl.maxZ / 2.0;
  double rx=cx + 0.5;
  double ry=cy + 0.5;
  double rz=cz + 0.5;
  for (int x=0; x <= tpl.maxX; x++) {
    double dx=Math.abs(x - cx) / rx;
    double dxx=dx * dx;
    for (int y=0; y <= tpl.maxY; y++) {
      double dy=Math.abs(y - cy) / ry;
      double dyy=dy * dy;
      for (int z=0; z <= tpl.maxZ; z++) {
        double dz=Math.abs(z - cz) / rz;
        double dzz=dz * dz;
        if (dxx + dyy + dzz < 1) {
          tpl.fill(x,y,z);
        }
      }
    }
  }
  boolean removeInside=hollow != PatternParameterHollow.FILLED_INNER;
  boolean outerFilled=hollow.outerFilled;
  if (removeInside) {
    FilledTemplate tpl2=new FilledTemplate(filler.getBox());
    for (int x=0; x <= tpl.maxX; x++) {
      for (int y=0; y <= tpl.maxY; y++) {
        for (int z=0; z <= tpl.maxZ; z++) {
          if (tpl.get(x,y,z)) {
            tpl2.fill(x,y,z);
            break;
          }
          if (outerFilled) {
            tpl2.fill(x,y,z);
          }
        }
        for (int z=tpl.maxZ; z >= 0; z--) {
          if (tpl.get(x,y,z)) {
            tpl2.fill(x,y,z);
            break;
          }
          if (outerFilled) {
            tpl2.fill(x,y,z);
          }
        }
      }
    }
    for (int x=0; x <= tpl.maxX; x++) {
      for (int z=0; z <= tpl.maxZ; z++) {
        for (int y=0; y <= tpl.maxY; y++) {
          if (tpl.get(x,y,z)) {
            tpl2.fill(x,y,z);
            break;
          }
          if (outerFilled) {
            tpl2.fill(x,y,z);
          }
        }
        for (int y=tpl.maxY; y >= 0; y--) {
          if (tpl.get(x,y,z)) {
            tpl2.fill(x,y,z);
            break;
          }
          if (outerFilled) {
            tpl2.fill(x,y,z);
          }
        }
      }
    }
    for (int y=0; y <= tpl.maxY; y++) {
      for (int z=0; z <= tpl.maxZ; z++) {
        for (int x=0; x <= tpl.maxX; x++) {
          if (tpl.get(x,y,z)) {
            tpl2.fill(x,y,z);
            break;
          }
          if (outerFilled) {
            tpl2.fill(x,y,z);
          }
        }
        for (int x=tpl.maxX; x >= 0; x--) {
          if (tpl.get(x,y,z)) {
            tpl2.fill(x,y,z);
            break;
          }
          if (outerFilled) {
            tpl2.fill(x,y,z);
          }
        }
      }
    }
    tpl=tpl2;
  }
  return tpl;
}