Program: 7930
Project: 7930
Buggy source:
public boolean createUnit(UnitType t,TilePosition area){
  if (area == null) {
    List<ROUnit> bases=UnitUtils.getAllMy(UnitType.getUnitType(hatchery));
    area=((Unit)bases.get(0)).getTilePosition();
  }
  if (t.equals(UnitType.getUnitType(spawningPool)) || t.equals(UnitType.getUnitType(den)) || t.equals(UnitType.getUnitType(hatchery))) {
    List<ROUnit> drones=UnitUtils.getAllMy(UnitType.getUnitType(drone));
    if (getMinerals() >= t.mineralPrice() && Game.getInstance().self().gas() >= t.gasPrice() && !drones.isEmpty()) {
      Unit morpher=(Unit)findClosest(drones,area);
      TilePosition tp;
      for (int i=8; i < 15; i++) {
        tp=findBuildRadius(area,i,morpher,t);
        if (tp != null) {
          morpher.build(tp,t);
          lastBuilder=morpher;
          buildLock=true;
          System.out.println("String_Node_Str" + t.getName());
          return true;
        }
      }
    }
  }
 else   if (t.equals(UnitType.getUnitType(zergling)) || t.equals(UnitType.getUnitType(hydralisk)) || t.equals(UnitType.getUnitType(drone))|| t.equals(UnitType.getUnitType(overlord))) {
    List<ROUnit> larvae=UnitUtils.getAllMy(UnitType.getUnitType(larva));
    if (getMinerals() >= t.mineralPrice() && getSupply() >= t.supplyRequired() && Game.getInstance().self().gas() >= t.gasPrice() && !larvae.isEmpty()) {
      Unit morpher=(Unit)findClosest(larvae,area);
      morpher.morph(t);
      return true;
    }
  }
 else   if (t.equals(UnitType.getUnitType(extractor))) {
    if (getMinerals() >= t.mineralPrice())     return false;
    Set<ROUnit> geysers=myMap.getGasSpots();
    ArrayList<ROUnit> geyserList=new ArrayList<ROUnit>();
    for (    ROUnit g : geysers) {
      geyserList.add(g);
    }
    ROUnit geyser=findClosest(geyserList,area);
    Unit morpher=(Unit)findClosest(UnitUtils.getAllMy(UnitType.getUnitType(drone)),area);
    morpher.build(geyser.getTilePosition(),t);
    lastBuilder=morpher;
    buildLock=true;
    System.out.println("String_Node_Str");
    return true;
  }
 else   if (t.equals(lurker)) {
    List<ROUnit> hydras=UnitUtils.getAllMy(UnitType.getUnitType(hydralisk));
    if (getMinerals() >= t.mineralPrice() && getSupply() >= 1 && Game.getInstance().self().gas() >= t.gasPrice() && !hydras.isEmpty()) {
      ((Unit)hydras.get(0)).morph(t);
      return true;
    }
  }
 else   if (t.equals(lair)) {
    if (getMinerals() >= t.mineralPrice() && Game.getInstance().self().gas() >= t.gasPrice()) {
      List<ROUnit> bases=UnitUtils.getAllMy(UnitType.getUnitType(hatchery));
      Unit morpher=(Unit)findClosest(bases,area);
      morpher.morph(t);
      System.out.println("String_Node_Str");
      return true;
    }
  }
  return false;
}

Fixed version (ground truth):
public boolean createUnit(UnitType t,TilePosition area){
  if (area == null) {
    List<ROUnit> bases=UnitUtils.getAllMy(UnitType.getUnitType(hatchery));
    area=((Unit)bases.get(0)).getTilePosition();
  }
  if (t.equals(UnitType.getUnitType(spawningPool)) || t.equals(UnitType.getUnitType(den)) || t.equals(UnitType.getUnitType(hatchery))) {
    if (getMinerals() >= t.mineralPrice() && Game.getInstance().self().gas() >= t.gasPrice() && !drones.isEmpty()) {
      Unit morpher=(Unit)findClosest(drones,area);
      TilePosition tp;
      for (int i=8; i < 15; i++) {
        tp=findBuildRadius(area,i,morpher,t);
        if (tp != null) {
          morpher.build(tp,t);
          lastBuilder=morpher;
          buildLock=true;
          System.out.println("String_Node_Str" + t.getName());
          return true;
        }
      }
    }
  }
 else   if (t.equals(UnitType.getUnitType(zergling)) || t.equals(UnitType.getUnitType(hydralisk)) || t.equals(UnitType.getUnitType(drone))|| t.equals(UnitType.getUnitType(overlord))) {
    if (getMinerals() >= t.mineralPrice() && getSupply() >= t.supplyRequired() && Game.getInstance().self().gas() >= t.gasPrice() && !larvae.isEmpty()) {
      Unit morpher=(Unit)findClosest(larvae,area);
      morpher.morph(t);
      return true;
    }
  }
 else   if (t.equals(UnitType.getUnitType(extractor))) {
    if (getMinerals() >= t.mineralPrice())     return false;
    Set<ROUnit> geysers=myMap.getGasSpots();
    ArrayList<Unit> geyserList=new ArrayList<Unit>();
    for (    ROUnit g : geysers) {
      geyserList.add((Unit)g);
    }
    ROUnit geyser=findClosest(geyserList,area);
    Unit morpher=(Unit)findClosest(drones,area);
    morpher.build(geyser.getTilePosition(),t);
    lastBuilder=morpher;
    buildLock=true;
    System.out.println("String_Node_Str");
    return true;
  }
 else   if (t.equals(lurker)) {
    List<ROUnit> hydras=UnitUtils.getAllMy(UnitType.getUnitType(hydralisk));
    if (getMinerals() >= t.mineralPrice() && getSupply() >= 1 && Game.getInstance().self().gas() >= t.gasPrice() && !hydras.isEmpty()) {
      ((Unit)hydras.get(0)).morph(t);
      return true;
    }
  }
 else   if (t.equals(lair)) {
    if (getMinerals() >= t.mineralPrice() && Game.getInstance().self().gas() >= t.gasPrice()) {
      Unit morpher=(Unit)findClosest(bases,area);
      morpher.morph(t);
      System.out.println("String_Node_Str");
      return true;
    }
  }
  return false;
}