Program: 10244
Project: 10244
Buggy source:
@Override public String getAttribute(Attribute attribute){
  if (attribute == null)   return null;
  if (attribute.startsWith("String_Node_Str"))   return new dLocation(this.add(0,1,0)).getAttribute(attribute.fulfill(1));
  if (attribute.startsWith("String_Node_Str"))   return new dLocation(this.add(0,-1,0)).getAttribute(attribute.fulfill(1));
  if (attribute.startsWith("String_Node_Str")) {
    return new dLocation(getWorld(),getBlockX(),getBlockY(),getBlockZ()).getAttribute(attribute.fulfill(1));
  }
  if (attribute.startsWith("String_Node_Str")) {
    return new dLocation(getWorld().getHighestBlockAt(this).getLocation().add(0,-1,0)).getAttribute(attribute.fulfill(1));
  }
  if (attribute.startsWith("String_Node_Str")) {
    return new Element(getBlock().getState() instanceof InventoryHolder).getAttribute(attribute.fulfill(1));
  }
  if (attribute.startsWith("String_Node_Str")) {
    return Element.HandleNull(identify() + "String_Node_Str",getInventory(),"String_Node_Str").getAttribute(attribute.fulfill(1));
  }
  if (attribute.startsWith("String_Node_Str"))   return dMaterial.getMaterialFrom(getBlock().getType(),getBlock().getData()).getAttribute(attribute.fulfill(1));
  if (attribute.startsWith("String_Node_Str"))   return new Element((getBlock().getData() & 0x8) > 0).getAttribute(attribute.fulfill(1));
  if (attribute.startsWith("String_Node_Str")) {
    if (getBlock().getState() instanceof Sign) {
      dList toReturn=new dList();
      for (      String line : ((Sign)getBlock().getState()).getLines())       toReturn.add(EscapeTags.Escape(line));
      return toReturn.getAttribute(attribute.fulfill(2));
    }
 else     return "String_Node_Str";
  }
  if (attribute.startsWith("String_Node_Str")) {
    if (getBlock().getState() instanceof Sign) {
      return new dList(Arrays.asList(((Sign)getBlock().getState()).getLines())).getAttribute(attribute.fulfill(1));
    }
 else     return "String_Node_Str";
  }
  if (attribute.startsWith("String_Node_Str"))   return new Element("String_Node_Str" + getBlockX() + "String_Node_Str"+ getBlockY()+ "String_Node_Str"+ getBlockZ()+ "String_Node_Str"+ getWorld().getName()+ "String_Node_Str").getAttribute(attribute.fulfill(2));
  if (attribute.startsWith("String_Node_Str"))   return new Element(getBlockX() + "String_Node_Str" + getBlockY()+ "String_Node_Str"+ getBlockZ()+ "String_Node_Str"+ getWorld().getName()).getAttribute(attribute.fulfill(1));
  if (attribute.startsWith("String_Node_Str")) {
    double xzLen=Math.cos((getPitch() % 360) * (Math.PI / 180));
    double nx=xzLen * Math.sin(-getYaw() * (Math.PI / 180));
    double ny=Math.sin(getPitch() * (Math.PI / 180));
    double nz=xzLen * Math.cos(getYaw() * (Math.PI / 180));
    return new dLocation(getWorld(),nx,-ny,nz).getAttribute(attribute.fulfill(2));
  }
  if (attribute.startsWith("String_Node_Str")) {
    if (attribute.hasContext(1) && dLocation.matches(attribute.getContext(1))) {
      dLocation target=dLocation.valueOf(attribute.getContext(1));
      attribute=attribute.fulfill(1);
      if (attribute.startsWith("String_Node_Str"))       return new Element(Rotation.normalizeYaw(Rotation.getYaw(target.toVector().subtract(this.toVector()).normalize()))).getAttribute(attribute.fulfill(1));
 else       return new Element(Rotation.getCardinal(Rotation.getYaw(target.toVector().subtract(this.toVector()).normalize()))).getAttribute(attribute);
    }
 else {
      return new Element(Rotation.getCardinal(getYaw())).getAttribute(attribute.fulfill(1));
    }
  }
  if (attribute.startsWith("String_Node_Str")) {
    if (attribute.hasContext(1)) {
      int degrees=45;
      int attributePos=1;
      if (attribute.getAttribute(2).startsWith("String_Node_Str") && attribute.hasContext(2) && aH.matchesInteger(attribute.getContext(2))) {
        degrees=attribute.getIntContext(2);
        attributePos++;
      }
      if (dLocation.matches(attribute.getContext(1))) {
        return new Element(Rotation.isFacingLocation(this,dLocation.valueOf(attribute.getContext(1)),degrees)).getAttribute(attribute.fulfill(attributePos));
      }
 else       if (dEntity.matches(attribute.getContext(1))) {
        return new Element(Rotation.isFacingLocation(this,dEntity.valueOf(attribute.getContext(1)).getBukkitEntity().getLocation(),degrees)).getAttribute(attribute.fulfill(attributePos));
      }
    }
  }
  if (attribute.startsWith("String_Node_Str")) {
    return new Element(getPitch()).getAttribute(attribute.fulfill(1));
  }
  if (attribute.startsWith("String_Node_Str")) {
    String context=attribute.getContext(1);
    Float pitch=0f;
    Float yaw=0f;
    if (dEntity.matches(context)) {
      dEntity ent=dEntity.valueOf(context);
      if (ent.isSpawned()) {
        pitch=ent.getBukkitEntity().getLocation().getPitch();
        yaw=ent.getBukkitEntity().getLocation().getYaw();
      }
    }
 else     if (context.split("String_Node_Str").length == 2) {
      String[] split=context.split("String_Node_Str");
      pitch=Float.valueOf(split[0]);
      yaw=Float.valueOf(split[1]);
    }
    dLocation loc=dLocation.valueOf(identify());
    loc.setPitch(pitch);
    loc.setYaw(yaw);
    return loc.getAttribute(attribute.fulfill(1));
  }
  if (attribute.startsWith("String_Node_Str")) {
    float yaw=Rotation.normalizeYaw(getYaw());
    if (yaw < 45)     return new Element("String_Node_Str").getAttribute(attribute.fulfill(2));
 else     if (yaw < 135)     return new Element("String_Node_Str").getAttribute(attribute.fulfill(2));
 else     if (yaw < 225)     return new Element("String_Node_Str").getAttribute(attribute.fulfill(2));
 else     if (yaw < 315)     return new Element("String_Node_Str").getAttribute(attribute.fulfill(2));
 else     return new Element("String_Node_Str").getAttribute(attribute.fulfill(2));
  }
  if (attribute.startsWith("String_Node_Str")) {
    return new Element(getYaw()).getAttribute(attribute.fulfill(2));
  }
  if (attribute.startsWith("String_Node_Str")) {
    return new Element(Rotation.normalizeYaw(getYaw())).getAttribute(attribute.fulfill(1));
  }
  if (attribute.startsWith("String_Node_Str") || attribute.startsWith("String_Node_Str")) {
    attribute.fulfill(1);
    if (attribute.startsWith("String_Node_Str") && attribute.getAttribute(2).startsWith("String_Node_Str") && attribute.hasContext(2)) {
      ArrayList<dLocation> found=new ArrayList<dLocation>();
      double radius=aH.matchesDouble(attribute.getContext(2)) ? attribute.getDoubleContext(2) : 10;
      List<dMaterial> materials=new ArrayList<dMaterial>();
      if (attribute.hasContext(1))       materials=dList.valueOf(attribute.getContext(1)).filter(dMaterial.class);
      if (materials == null)       return Element.NULL.getAttribute(attribute.fulfill(2));
      attribute.fulfill(2);
      for (double x=-(radius); x <= radius; x++)       for (double y=-(radius); y <= radius; y++)       for (double z=-(radius); z <= radius; z++)       if (!materials.isEmpty()) {
        for (        dMaterial material : materials)         if (material.matchesMaterialData(getBlock().getLocation().add(x,y,z).getBlock().getType().getNewData(getBlock().getLocation().add(x,y,z).getBlock().getData())))         found.add(new dLocation(getBlock().getLocation().add(x + 0.5,y,z + 0.5)));
      }
 else       found.add(new dLocation(getBlock().getLocation().add(x + 0.5,y,z + 0.5)));
      Collections.sort(found,new Comparator<dLocation>(){
        @Override public int compare(        dLocation loc1,        dLocation loc2){
          return Compare(loc1,loc2);
        }
      }
);
      return new dList(found).getAttribute(attribute);
    }
 else     if (attribute.startsWith("String_Node_Str") && attribute.getAttribute(2).startsWith("String_Node_Str") && attribute.hasContext(2)) {
      ArrayList<dLocation> found=new ArrayList<dLocation>();
      double radius=aH.matchesDouble(attribute.getContext(2)) ? attribute.getDoubleContext(2) : 10;
      List<dMaterial> materials=new ArrayList<dMaterial>();
      if (attribute.hasContext(1))       materials=dList.valueOf(attribute.getContext(1)).filter(dMaterial.class);
      if (materials == null)       return Element.NULL.getAttribute(attribute.fulfill(2));
      attribute.fulfill(2);
      for (double x=-(radius); x <= radius; x++)       for (double y=-(radius); y <= radius; y++)       for (double z=-(radius); z <= radius; z++) {
        Location l=getBlock().getLocation().clone().add(x,y,z);
        if (!materials.isEmpty()) {
          for (          dMaterial material : materials) {
            if (material.matchesMaterialData(getBlock().getLocation().clone().add(x,y,z).getBlock().getType().getNewData(getBlock().getLocation().clone().add(x,y,z).getBlock().getData()))) {
              if (l.clone().add(0,1,0).getBlock().getType() == Material.AIR && l.clone().add(0,2,0).getBlock().getType() == Material.AIR && l.getBlock().getType() != Material.AIR)               found.add(new dLocation(getBlock().getLocation().clone().add(x + 0.5,y,z + 0.5)));
            }
          }
        }
 else {
          if (l.clone().add(0,1,0).getBlock().getType() == Material.AIR && l.clone().add(0,2,0).getBlock().getType() == Material.AIR && l.getBlock().getType() != Material.AIR) {
            found.add(new dLocation(getBlock().getLocation().clone().add(x + 0.5,y,z + 0.5)));
          }
        }
      }
      Collections.sort(found,new Comparator<dLocation>(){
        @Override public int compare(        dLocation loc1,        dLocation loc2){
          return Compare(loc1,loc2);
        }
      }
);
      return new dList(found).getAttribute(attribute);
    }
 else     if (attribute.startsWith("String_Node_Str") && attribute.getAttribute(2).startsWith("String_Node_Str") && attribute.hasContext(2)) {
      ArrayList<dPlayer> found=new ArrayList<dPlayer>();
      double radius=aH.matchesDouble(attribute.getContext(2)) ? attribute.getDoubleContext(2) : 10;
      attribute.fulfill(2);
      for (      Player player : Bukkit.getOnlinePlayers())       if (!player.isDead() && Utilities.checkLocation(this,player.getLocation(),radius))       found.add(new dPlayer(player));
      Collections.sort(found,new Comparator<dPlayer>(){
        @Override public int compare(        dPlayer pl1,        dPlayer pl2){
          return Compare(pl1.getLocation(),pl2.getLocation());
        }
      }
);
      return new dList(found).getAttribute(attribute);
    }
 else     if (attribute.startsWith("String_Node_Str") && attribute.getAttribute(2).startsWith("String_Node_Str") && attribute.hasContext(2)) {
      ArrayList<dNPC> found=new ArrayList<dNPC>();
      double radius=aH.matchesDouble(attribute.getContext(2)) ? attribute.getDoubleContext(2) : 10;
      attribute.fulfill(2);
      for (      dNPC npc : DenizenAPI.getSpawnedNPCs())       if (Utilities.checkLocation(this,npc.getLocation(),radius))       found.add(npc);
      Collections.sort(found,new Comparator<dNPC>(){
        @Override public int compare(        dNPC npc1,        dNPC npc2){
          return Compare(npc1.getLocation(),npc2.getLocation());
        }
      }
);
      return new dList(found).getAttribute(attribute);
    }
 else     if (attribute.startsWith("String_Node_Str") && attribute.getAttribute(2).startsWith("String_Node_Str") && attribute.hasContext(2)) {
      dList ent_list=new dList();
      if (attribute.hasContext(1)) {
        for (        String ent : dList.valueOf(attribute.getContext(1))) {
          if (dEntity.matches(ent))           ent_list.add(ent.toUpperCase());
        }
      }
      ArrayList<dEntity> found=new ArrayList<dEntity>();
      double radius=aH.matchesDouble(attribute.getContext(2)) ? attribute.getDoubleContext(2) : 10;
      attribute.fulfill(2);
      for (      Entity entity : getWorld().getEntities()) {
        if (Utilities.checkLocation(this,entity.getLocation(),radius)) {
          dEntity current=new dEntity(entity);
          if (!ent_list.isEmpty()) {
            for (            String ent : ent_list) {
              if (entity.getType().name().equals(ent) || current.identify().equalsIgnoreCase(ent)) {
                found.add(current);
                break;
              }
            }
          }
 else           found.add(current);
        }
      }
      Collections.sort(found,new Comparator<dEntity>(){
        @Override public int compare(        dEntity ent1,        dEntity ent2){
          return Compare(ent1.getLocation(),ent2.getLocation());
        }
      }
);
      return new dList(found).getAttribute(attribute);
    }
 else     if (attribute.startsWith("String_Node_Str") && attribute.getAttribute(2).startsWith("String_Node_Str") && attribute.hasContext(2)) {
      ArrayList<dEntity> found=new ArrayList<dEntity>();
      double radius=aH.matchesDouble(attribute.getContext(2)) ? attribute.getDoubleContext(2) : 10;
      attribute.fulfill(2);
      for (      Entity entity : getWorld().getEntities())       if (entity instanceof LivingEntity && Utilities.checkLocation(this,entity.getLocation(),radius))       found.add(new dEntity(entity));
      Collections.sort(found,new Comparator<dEntity>(){
        @Override public int compare(        dEntity ent1,        dEntity ent2){
          return Compare(ent1.getLocation(),ent2.getLocation());
        }
      }
);
      return new dList(found).getAttribute(attribute);
    }
    return new Element("String_Node_Str").getAttribute(attribute);
  }
  if (attribute.startsWith("String_Node_Str"))   return new Element(getX() + "String_Node_Str" + getY()+ "String_Node_Str"+ getZ()+ "String_Node_Str"+ getWorld().getName()).getAttribute(attribute.fulfill(2));
  if (attribute.startsWith("String_Node_Str"))   return new Element("String_Node_Str" + getX() + "String_Node_Str"+ getY()+ "String_Node_Str"+ getZ()+ "String_Node_Str"+ getWorld().getName()+ "String_Node_Str").getAttribute(attribute.fulfill(1));
  if (attribute.startsWith("String_Node_Str") || attribute.startsWith("String_Node_Str"))   return new dChunk(this).getAttribute(attribute.fulfill(1));
  if (attribute.startsWith("String_Node_Str")) {
    dLocation rawLocation=new dLocation(this);
    rawLocation.setRaw(true);
    return rawLocation.getAttribute(attribute.fulfill(1));
  }
  if (attribute.startsWith("String_Node_Str")) {
    return dWorld.mirrorBukkitWorld(getWorld()).getAttribute(attribute.fulfill(1));
  }
  if (attribute.startsWith("String_Node_Str")) {
    return new Element(getX()).getAttribute(attribute.fulfill(1));
  }
  if (attribute.startsWith("String_Node_Str")) {
    return new Element(getY()).getAttribute(attribute.fulfill(1));
  }
  if (attribute.startsWith("String_Node_Str")) {
    return new Element(getZ()).getAttribute(attribute.fulfill(1));
  }
  if (attribute.startsWith("String_Node_Str") && attribute.hasContext(1)) {
    if (attribute.getContext(1).split("String_Node_Str").length == 3) {
      String[] ints=attribute.getContext(1).split("String_Node_Str",3);
      if ((aH.matchesDouble(ints[0]) || aH.matchesInteger(ints[0])) && (aH.matchesDouble(ints[1]) || aH.matchesInteger(ints[1])) && (aH.matchesDouble(ints[2]) || aH.matchesInteger(ints[2]))) {
        return new dLocation(this.clone().add(Double.valueOf(ints[0]),Double.valueOf(ints[1]),Double.valueOf(ints[2]))).getAttribute(attribute.fulfill(1));
      }
    }
 else     if (dLocation.matches(attribute.getContext(1))) {
      return new dLocation(this.clone().add(dLocation.valueOf(attribute.getContext(1)))).getAttribute(attribute.fulfill(1));
    }
  }
  if (attribute.startsWith("String_Node_Str") && attribute.hasContext(1)) {
    if (attribute.getContext(1).split("String_Node_Str").length == 3) {
      String[] ints=attribute.getContext(1).split("String_Node_Str",3);
      if ((aH.matchesDouble(ints[0]) || aH.matchesInteger(ints[0])) && (aH.matchesDouble(ints[1]) || aH.matchesInteger(ints[1])) && (aH.matchesDouble(ints[2]) || aH.matchesInteger(ints[2]))) {
        return new dLocation(this.clone().subtract(Double.valueOf(ints[0]),Double.valueOf(ints[1]),Double.valueOf(ints[2]))).getAttribute(attribute.fulfill(1));
      }
    }
 else     if (dLocation.matches(attribute.getContext(1))) {
      return new dLocation(this.clone().subtract(dLocation.valueOf(attribute.getContext(1)))).getAttribute(attribute.fulfill(1));
    }
  }
  if (attribute.startsWith("String_Node_Str") && attribute.hasContext(1)) {
    return new dLocation(this.clone().multiply(Double.parseDouble(attribute.getContext(1)))).getAttribute(attribute.fulfill(1));
  }
  if (attribute.startsWith("String_Node_Str") && attribute.hasContext(1)) {
    return new dLocation(this.clone().multiply(1D / Double.parseDouble(attribute.getContext(1)))).getAttribute(attribute.fulfill(1));
  }
  if (attribute.startsWith("String_Node_Str")) {
    return new Element(Math.sqrt(Math.pow(getX(),2) + Math.pow(getY(),2) + Math.pow(getZ(),2))).getAttribute(attribute.fulfill(1));
  }
  if (attribute.startsWith("String_Node_Str") && attribute.hasContext(1)) {
    if (dLocation.matches(attribute.getContext(1))) {
      dLocation toLocation=dLocation.valueOf(attribute.getContext(1));
      if (attribute.getAttribute(2).startsWith("String_Node_Str")) {
        if (attribute.getAttribute(3).startsWith("String_Node_Str"))         return new Element(Math.sqrt(Math.pow(this.getX() - toLocation.getX(),2) + Math.pow(this.getZ() - toLocation.getZ(),2))).getAttribute(attribute.fulfill(3));
 else         if (this.getWorld() == toLocation.getWorld())         return new Element(Math.sqrt(Math.pow(this.getX() - toLocation.getX(),2) + Math.pow(this.getZ() - toLocation.getZ(),2))).getAttribute(attribute.fulfill(2));
      }
 else       if (attribute.getAttribute(2).startsWith("String_Node_Str")) {
        if (attribute.getAttribute(3).startsWith("String_Node_Str"))         return new Element(Math.abs(this.getY() - toLocation.getY())).getAttribute(attribute.fulfill(3));
 else         if (this.getWorld() == toLocation.getWorld())         return new Element(Math.abs(this.getY() - toLocation.getY())).getAttribute(attribute.fulfill(2));
      }
 else       return new Element(this.distance(toLocation)).getAttribute(attribute.fulfill(1));
    }
  }
  if (attribute.startsWith("String_Node_Str") && attribute.hasContext(1)) {
    dCuboid cuboid=dCuboid.valueOf(attribute.getContext(1));
    if (cuboid != null)     return new Element(cuboid.isInsideCuboid(this)).getAttribute(attribute.fulfill(1));
  }
  if (attribute.startsWith("String_Node_Str"))   return new Element(getBlock().getBiome().name().toLowerCase().replace('_',' ')).getAttribute(attribute.fulfill(2));
  if (attribute.startsWith("String_Node_Str"))   return new Element(getBlock().getHumidity()).getAttribute(attribute.fulfill(2));
  if (attribute.startsWith("String_Node_Str"))   return new Element(getBlock().getTemperature()).getAttribute(attribute.fulfill(2));
  if (attribute.startsWith("String_Node_Str"))   return new Element(getBlock().getBiome().name()).getAttribute(attribute.fulfill(1));
  if (attribute.startsWith("String_Node_Str")) {
    List<dCuboid> cuboids=dCuboid.getNotableCuboidsContaining(this);
    dList cuboid_list=new dList();
    for (    dCuboid cuboid : cuboids) {
      cuboid_list.add(cuboid.identify());
    }
    return cuboid_list.getAttribute(attribute.fulfill(1));
  }
  if (attribute.startsWith("String_Node_Str"))   return new Element(getBlock().isLiquid()).getAttribute(attribute.fulfill(1));
  if (attribute.startsWith("String_Node_Str") || attribute.startsWith("String_Node_Str"))   return new Element(getBlock().getLightFromBlocks()).getAttribute(attribute.fulfill(2));
  if (attribute.startsWith("String_Node_Str") || attribute.startsWith("String_Node_Str"))   return new Element(getBlock().getLightFromSky()).getAttribute(attribute.fulfill(2));
  if (attribute.startsWith("String_Node_Str"))   return new Element(getBlock().getLightLevel()).getAttribute(attribute.fulfill(1));
  if (attribute.startsWith("String_Node_Str"))   return new Element(getBlock().getBlockPower()).getAttribute(attribute.fulfill(1));
  if (attribute.startsWith("String_Node_Str")) {
    if (Depends.worldGuard == null) {
      dB.echoError("String_Node_Str");
      return null;
    }
    if (attribute.hasContext(1)) {
      dList region_list=dList.valueOf(attribute.getContext(1));
      for (      String region : region_list)       if (WorldGuardUtilities.inRegion(this,region))       return Element.TRUE.getAttribute(attribute.fulfill(1));
      return Element.FALSE.getAttribute(attribute.fulfill(1));
    }
 else {
      return new Element(WorldGuardUtilities.inRegion(this)).getAttribute(attribute.fulfill(1));
    }
  }
  if (attribute.startsWith("String_Node_Str")) {
    if (Depends.worldGuard == null) {
      dB.echoError("String_Node_Str");
      return null;
    }
    return new dList(WorldGuardUtilities.getRegions(this)).getAttribute(attribute.fulfill(1));
  }
  for (  Property property : PropertyParser.getProperties(this)) {
    String returned=property.getAttribute(attribute);
    if (returned != null)     return returned;
  }
  return new Element(identify()).getAttribute(attribute);
}

Fixed version (ground truth):
@Override public String getAttribute(Attribute attribute){
  if (attribute == null)   return null;
  if (attribute.startsWith("String_Node_Str"))   return new dLocation(this.add(0,1,0)).getAttribute(attribute.fulfill(1));
  if (attribute.startsWith("String_Node_Str"))   return new dLocation(this.add(0,-1,0)).getAttribute(attribute.fulfill(1));
  if (attribute.startsWith("String_Node_Str")) {
    return new dLocation(getWorld(),getBlockX(),getBlockY(),getBlockZ()).getAttribute(attribute.fulfill(1));
  }
  if (attribute.startsWith("String_Node_Str")) {
    return new dLocation(getWorld().getHighestBlockAt(this).getLocation().add(0,-1,0)).getAttribute(attribute.fulfill(1));
  }
  if (attribute.startsWith("String_Node_Str")) {
    return new Element(getBlock().getState() instanceof InventoryHolder).getAttribute(attribute.fulfill(1));
  }
  if (attribute.startsWith("String_Node_Str")) {
    return Element.HandleNull(identify() + "String_Node_Str",getInventory(),"String_Node_Str").getAttribute(attribute.fulfill(1));
  }
  if (attribute.startsWith("String_Node_Str"))   return dMaterial.getMaterialFrom(getBlock().getType(),getBlock().getData()).getAttribute(attribute.fulfill(1));
  if (attribute.startsWith("String_Node_Str"))   return new Element((getBlock().getData() & 0x8) > 0).getAttribute(attribute.fulfill(1));
  if (attribute.startsWith("String_Node_Str")) {
    if (getBlock().getState() instanceof Sign) {
      dList toReturn=new dList();
      for (      String line : ((Sign)getBlock().getState()).getLines())       toReturn.add(EscapeTags.Escape(line));
      return toReturn.getAttribute(attribute.fulfill(2));
    }
 else     return "String_Node_Str";
  }
  if (attribute.startsWith("String_Node_Str")) {
    if (getBlock().getState() instanceof Sign) {
      return new dList(Arrays.asList(((Sign)getBlock().getState()).getLines())).getAttribute(attribute.fulfill(1));
    }
 else     return "String_Node_Str";
  }
  if (attribute.startsWith("String_Node_Str"))   return new Element("String_Node_Str" + getBlockX() + "String_Node_Str"+ getBlockY()+ "String_Node_Str"+ getBlockZ()+ "String_Node_Str"+ getWorld().getName()+ "String_Node_Str").getAttribute(attribute.fulfill(2));
  if (attribute.startsWith("String_Node_Str"))   return new Element(getBlockX() + "String_Node_Str" + getBlockY()+ "String_Node_Str"+ getBlockZ()+ "String_Node_Str"+ getWorld().getName()).getAttribute(attribute.fulfill(1));
  if (attribute.startsWith("String_Node_Str")) {
    double xzLen=Math.cos((getPitch() % 360) * (Math.PI / 180));
    double nx=xzLen * Math.sin(-getYaw() * (Math.PI / 180));
    double ny=Math.sin(getPitch() * (Math.PI / 180));
    double nz=xzLen * Math.cos(getYaw() * (Math.PI / 180));
    return new dLocation(getWorld(),nx,-ny,nz).getAttribute(attribute.fulfill(2));
  }
  if (attribute.startsWith("String_Node_Str")) {
    if (attribute.hasContext(1) && dLocation.matches(attribute.getContext(1))) {
      dLocation target=dLocation.valueOf(attribute.getContext(1));
      attribute=attribute.fulfill(1);
      if (attribute.startsWith("String_Node_Str"))       return new Element(Rotation.normalizeYaw(Rotation.getYaw(target.toVector().subtract(this.toVector()).normalize()))).getAttribute(attribute.fulfill(1));
 else       return new Element(Rotation.getCardinal(Rotation.getYaw(target.toVector().subtract(this.toVector()).normalize()))).getAttribute(attribute);
    }
 else {
      return new Element(Rotation.getCardinal(getYaw())).getAttribute(attribute.fulfill(1));
    }
  }
  if (attribute.startsWith("String_Node_Str")) {
    if (attribute.hasContext(1)) {
      int degrees=45;
      int attributePos=1;
      if (attribute.getAttribute(2).startsWith("String_Node_Str") && attribute.hasContext(2) && aH.matchesInteger(attribute.getContext(2))) {
        degrees=attribute.getIntContext(2);
        attributePos++;
      }
      if (dLocation.matches(attribute.getContext(1))) {
        return new Element(Rotation.isFacingLocation(this,dLocation.valueOf(attribute.getContext(1)),degrees)).getAttribute(attribute.fulfill(attributePos));
      }
 else       if (dEntity.matches(attribute.getContext(1))) {
        return new Element(Rotation.isFacingLocation(this,dEntity.valueOf(attribute.getContext(1)).getBukkitEntity().getLocation(),degrees)).getAttribute(attribute.fulfill(attributePos));
      }
    }
  }
  if (attribute.startsWith("String_Node_Str")) {
    return new Element(getPitch()).getAttribute(attribute.fulfill(1));
  }
  if (attribute.startsWith("String_Node_Str")) {
    String context=attribute.getContext(1);
    Float pitch=0f;
    Float yaw=0f;
    if (dEntity.matches(context)) {
      dEntity ent=dEntity.valueOf(context);
      if (ent.isSpawned()) {
        pitch=ent.getBukkitEntity().getLocation().getPitch();
        yaw=ent.getBukkitEntity().getLocation().getYaw();
      }
    }
 else     if (context.split("String_Node_Str").length == 2) {
      String[] split=context.split("String_Node_Str");
      pitch=Float.valueOf(split[0]);
      yaw=Float.valueOf(split[1]);
    }
    dLocation loc=dLocation.valueOf(identify());
    loc.setPitch(pitch);
    loc.setYaw(yaw);
    return loc.getAttribute(attribute.fulfill(1));
  }
  if (attribute.startsWith("String_Node_Str")) {
    float yaw=Rotation.normalizeYaw(getYaw());
    if (yaw < 45)     return new Element("String_Node_Str").getAttribute(attribute.fulfill(2));
 else     if (yaw < 135)     return new Element("String_Node_Str").getAttribute(attribute.fulfill(2));
 else     if (yaw < 225)     return new Element("String_Node_Str").getAttribute(attribute.fulfill(2));
 else     if (yaw < 315)     return new Element("String_Node_Str").getAttribute(attribute.fulfill(2));
 else     return new Element("String_Node_Str").getAttribute(attribute.fulfill(2));
  }
  if (attribute.startsWith("String_Node_Str")) {
    return new Element(getYaw()).getAttribute(attribute.fulfill(2));
  }
  if (attribute.startsWith("String_Node_Str")) {
    return new Element(Rotation.normalizeYaw(getYaw())).getAttribute(attribute.fulfill(1));
  }
  if (attribute.startsWith("String_Node_Str") || attribute.startsWith("String_Node_Str")) {
    attribute.fulfill(1);
    if (attribute.startsWith("String_Node_Str") && attribute.getAttribute(2).startsWith("String_Node_Str") && attribute.hasContext(2)) {
      ArrayList<dLocation> found=new ArrayList<dLocation>();
      double radius=aH.matchesDouble(attribute.getContext(2)) ? attribute.getDoubleContext(2) : 10;
      List<dMaterial> materials=new ArrayList<dMaterial>();
      if (attribute.hasContext(1))       materials=dList.valueOf(attribute.getContext(1)).filter(dMaterial.class);
      if (materials == null)       return Element.NULL.getAttribute(attribute.fulfill(2));
      attribute.fulfill(2);
      for (double x=-(radius); x <= radius; x++)       for (double y=-(radius); y <= radius; y++)       for (double z=-(radius); z <= radius; z++)       if (!materials.isEmpty()) {
        for (        dMaterial material : materials)         if (material.matchesMaterialData(getBlock().getLocation().add(x,y,z).getBlock().getType().getNewData(getBlock().getLocation().add(x,y,z).getBlock().getData())))         found.add(new dLocation(getBlock().getLocation().add(x + 0.5,y,z + 0.5)));
      }
 else       found.add(new dLocation(getBlock().getLocation().add(x + 0.5,y,z + 0.5)));
      Collections.sort(found,new Comparator<dLocation>(){
        @Override public int compare(        dLocation loc1,        dLocation loc2){
          return Compare(loc1,loc2);
        }
      }
);
      return new dList(found).getAttribute(attribute);
    }
 else     if (attribute.startsWith("String_Node_Str") && attribute.getAttribute(2).startsWith("String_Node_Str") && attribute.hasContext(2)) {
      ArrayList<dLocation> found=new ArrayList<dLocation>();
      double radius=aH.matchesDouble(attribute.getContext(2)) ? attribute.getDoubleContext(2) : 10;
      List<dMaterial> materials=new ArrayList<dMaterial>();
      if (attribute.hasContext(1))       materials=dList.valueOf(attribute.getContext(1)).filter(dMaterial.class);
      if (materials == null)       return Element.NULL.getAttribute(attribute.fulfill(2));
      attribute.fulfill(2);
      for (double x=-(radius); x <= radius; x++)       for (double y=-(radius); y <= radius; y++)       for (double z=-(radius); z <= radius; z++) {
        Location l=getBlock().getLocation().clone().add(x,y,z);
        if (!materials.isEmpty()) {
          for (          dMaterial material : materials) {
            if (material.matchesMaterialData(getBlock().getLocation().clone().add(x,y,z).getBlock().getType().getNewData(getBlock().getLocation().clone().add(x,y,z).getBlock().getData()))) {
              if (l.clone().add(0,1,0).getBlock().getType() == Material.AIR && l.clone().add(0,2,0).getBlock().getType() == Material.AIR && l.getBlock().getType() != Material.AIR)               found.add(new dLocation(getBlock().getLocation().clone().add(x + 0.5,y,z + 0.5)));
            }
          }
        }
 else {
          if (l.clone().add(0,1,0).getBlock().getType() == Material.AIR && l.clone().add(0,2,0).getBlock().getType() == Material.AIR && l.getBlock().getType() != Material.AIR) {
            found.add(new dLocation(getBlock().getLocation().clone().add(x + 0.5,y,z + 0.5)));
          }
        }
      }
      Collections.sort(found,new Comparator<dLocation>(){
        @Override public int compare(        dLocation loc1,        dLocation loc2){
          return Compare(loc1,loc2);
        }
      }
);
      return new dList(found).getAttribute(attribute);
    }
 else     if (attribute.startsWith("String_Node_Str") && attribute.getAttribute(2).startsWith("String_Node_Str") && attribute.hasContext(2)) {
      ArrayList<dPlayer> found=new ArrayList<dPlayer>();
      double radius=aH.matchesDouble(attribute.getContext(2)) ? attribute.getDoubleContext(2) : 10;
      attribute.fulfill(2);
      for (      Player player : Bukkit.getOnlinePlayers())       if (!player.isDead() && Utilities.checkLocation(this,player.getLocation(),radius))       found.add(new dPlayer(player));
      Collections.sort(found,new Comparator<dPlayer>(){
        @Override public int compare(        dPlayer pl1,        dPlayer pl2){
          return Compare(pl1.getLocation(),pl2.getLocation());
        }
      }
);
      return new dList(found).getAttribute(attribute);
    }
 else     if (attribute.startsWith("String_Node_Str") && attribute.getAttribute(2).startsWith("String_Node_Str") && attribute.hasContext(2)) {
      ArrayList<dNPC> found=new ArrayList<dNPC>();
      double radius=aH.matchesDouble(attribute.getContext(2)) ? attribute.getDoubleContext(2) : 10;
      attribute.fulfill(2);
      for (      dNPC npc : DenizenAPI.getSpawnedNPCs())       if (Utilities.checkLocation(this,npc.getLocation(),radius))       found.add(npc);
      Collections.sort(found,new Comparator<dNPC>(){
        @Override public int compare(        dNPC npc1,        dNPC npc2){
          return Compare(npc1.getLocation(),npc2.getLocation());
        }
      }
);
      return new dList(found).getAttribute(attribute);
    }
 else     if (attribute.startsWith("String_Node_Str") && attribute.getAttribute(2).startsWith("String_Node_Str") && attribute.hasContext(2)) {
      dList ent_list=new dList();
      if (attribute.hasContext(1)) {
        for (        String ent : dList.valueOf(attribute.getContext(1))) {
          if (dEntity.matches(ent))           ent_list.add(ent.toUpperCase());
        }
      }
      ArrayList<dEntity> found=new ArrayList<dEntity>();
      double radius=aH.matchesDouble(attribute.getContext(2)) ? attribute.getDoubleContext(2) : 10;
      attribute.fulfill(2);
      for (      Entity entity : getWorld().getEntities()) {
        if (Utilities.checkLocation(this,entity.getLocation(),radius)) {
          dEntity current=new dEntity(entity);
          if (!ent_list.isEmpty()) {
            for (            String ent : ent_list) {
              if ((entity.getType().name().equals(ent) || current.identify().equalsIgnoreCase(ent)) && entity.isValid()) {
                found.add(current);
                break;
              }
            }
          }
 else           found.add(current);
        }
      }
      Collections.sort(found,new Comparator<dEntity>(){
        @Override public int compare(        dEntity ent1,        dEntity ent2){
          return Compare(ent1.getLocation(),ent2.getLocation());
        }
      }
);
      return new dList(found).getAttribute(attribute);
    }
 else     if (attribute.startsWith("String_Node_Str") && attribute.getAttribute(2).startsWith("String_Node_Str") && attribute.hasContext(2)) {
      ArrayList<dEntity> found=new ArrayList<dEntity>();
      double radius=aH.matchesDouble(attribute.getContext(2)) ? attribute.getDoubleContext(2) : 10;
      attribute.fulfill(2);
      for (      Entity entity : getWorld().getEntities())       if (entity instanceof LivingEntity && Utilities.checkLocation(this,entity.getLocation(),radius))       found.add(new dEntity(entity));
      Collections.sort(found,new Comparator<dEntity>(){
        @Override public int compare(        dEntity ent1,        dEntity ent2){
          return Compare(ent1.getLocation(),ent2.getLocation());
        }
      }
);
      return new dList(found).getAttribute(attribute);
    }
    return new Element("String_Node_Str").getAttribute(attribute);
  }
  if (attribute.startsWith("String_Node_Str"))   return new Element(getX() + "String_Node_Str" + getY()+ "String_Node_Str"+ getZ()+ "String_Node_Str"+ getWorld().getName()).getAttribute(attribute.fulfill(2));
  if (attribute.startsWith("String_Node_Str"))   return new Element("String_Node_Str" + getX() + "String_Node_Str"+ getY()+ "String_Node_Str"+ getZ()+ "String_Node_Str"+ getWorld().getName()+ "String_Node_Str").getAttribute(attribute.fulfill(1));
  if (attribute.startsWith("String_Node_Str") || attribute.startsWith("String_Node_Str"))   return new dChunk(this).getAttribute(attribute.fulfill(1));
  if (attribute.startsWith("String_Node_Str")) {
    dLocation rawLocation=new dLocation(this);
    rawLocation.setRaw(true);
    return rawLocation.getAttribute(attribute.fulfill(1));
  }
  if (attribute.startsWith("String_Node_Str")) {
    return dWorld.mirrorBukkitWorld(getWorld()).getAttribute(attribute.fulfill(1));
  }
  if (attribute.startsWith("String_Node_Str")) {
    return new Element(getX()).getAttribute(attribute.fulfill(1));
  }
  if (attribute.startsWith("String_Node_Str")) {
    return new Element(getY()).getAttribute(attribute.fulfill(1));
  }
  if (attribute.startsWith("String_Node_Str")) {
    return new Element(getZ()).getAttribute(attribute.fulfill(1));
  }
  if (attribute.startsWith("String_Node_Str") && attribute.hasContext(1)) {
    if (attribute.getContext(1).split("String_Node_Str").length == 3) {
      String[] ints=attribute.getContext(1).split("String_Node_Str",3);
      if ((aH.matchesDouble(ints[0]) || aH.matchesInteger(ints[0])) && (aH.matchesDouble(ints[1]) || aH.matchesInteger(ints[1])) && (aH.matchesDouble(ints[2]) || aH.matchesInteger(ints[2]))) {
        return new dLocation(this.clone().add(Double.valueOf(ints[0]),Double.valueOf(ints[1]),Double.valueOf(ints[2]))).getAttribute(attribute.fulfill(1));
      }
    }
 else     if (dLocation.matches(attribute.getContext(1))) {
      return new dLocation(this.clone().add(dLocation.valueOf(attribute.getContext(1)))).getAttribute(attribute.fulfill(1));
    }
  }
  if (attribute.startsWith("String_Node_Str") && attribute.hasContext(1)) {
    if (attribute.getContext(1).split("String_Node_Str").length == 3) {
      String[] ints=attribute.getContext(1).split("String_Node_Str",3);
      if ((aH.matchesDouble(ints[0]) || aH.matchesInteger(ints[0])) && (aH.matchesDouble(ints[1]) || aH.matchesInteger(ints[1])) && (aH.matchesDouble(ints[2]) || aH.matchesInteger(ints[2]))) {
        return new dLocation(this.clone().subtract(Double.valueOf(ints[0]),Double.valueOf(ints[1]),Double.valueOf(ints[2]))).getAttribute(attribute.fulfill(1));
      }
    }
 else     if (dLocation.matches(attribute.getContext(1))) {
      return new dLocation(this.clone().subtract(dLocation.valueOf(attribute.getContext(1)))).getAttribute(attribute.fulfill(1));
    }
  }
  if (attribute.startsWith("String_Node_Str") && attribute.hasContext(1)) {
    return new dLocation(this.clone().multiply(Double.parseDouble(attribute.getContext(1)))).getAttribute(attribute.fulfill(1));
  }
  if (attribute.startsWith("String_Node_Str") && attribute.hasContext(1)) {
    return new dLocation(this.clone().multiply(1D / Double.parseDouble(attribute.getContext(1)))).getAttribute(attribute.fulfill(1));
  }
  if (attribute.startsWith("String_Node_Str")) {
    return new Element(Math.sqrt(Math.pow(getX(),2) + Math.pow(getY(),2) + Math.pow(getZ(),2))).getAttribute(attribute.fulfill(1));
  }
  if (attribute.startsWith("String_Node_Str") && attribute.hasContext(1)) {
    if (dLocation.matches(attribute.getContext(1))) {
      dLocation toLocation=dLocation.valueOf(attribute.getContext(1));
      if (attribute.getAttribute(2).startsWith("String_Node_Str")) {
        if (attribute.getAttribute(3).startsWith("String_Node_Str"))         return new Element(Math.sqrt(Math.pow(this.getX() - toLocation.getX(),2) + Math.pow(this.getZ() - toLocation.getZ(),2))).getAttribute(attribute.fulfill(3));
 else         if (this.getWorld() == toLocation.getWorld())         return new Element(Math.sqrt(Math.pow(this.getX() - toLocation.getX(),2) + Math.pow(this.getZ() - toLocation.getZ(),2))).getAttribute(attribute.fulfill(2));
      }
 else       if (attribute.getAttribute(2).startsWith("String_Node_Str")) {
        if (attribute.getAttribute(3).startsWith("String_Node_Str"))         return new Element(Math.abs(this.getY() - toLocation.getY())).getAttribute(attribute.fulfill(3));
 else         if (this.getWorld() == toLocation.getWorld())         return new Element(Math.abs(this.getY() - toLocation.getY())).getAttribute(attribute.fulfill(2));
      }
 else       return new Element(this.distance(toLocation)).getAttribute(attribute.fulfill(1));
    }
  }
  if (attribute.startsWith("String_Node_Str") && attribute.hasContext(1)) {
    dCuboid cuboid=dCuboid.valueOf(attribute.getContext(1));
    if (cuboid != null)     return new Element(cuboid.isInsideCuboid(this)).getAttribute(attribute.fulfill(1));
  }
  if (attribute.startsWith("String_Node_Str"))   return new Element(getBlock().getBiome().name().toLowerCase().replace('_',' ')).getAttribute(attribute.fulfill(2));
  if (attribute.startsWith("String_Node_Str"))   return new Element(getBlock().getHumidity()).getAttribute(attribute.fulfill(2));
  if (attribute.startsWith("String_Node_Str"))   return new Element(getBlock().getTemperature()).getAttribute(attribute.fulfill(2));
  if (attribute.startsWith("String_Node_Str"))   return new Element(getBlock().getBiome().name()).getAttribute(attribute.fulfill(1));
  if (attribute.startsWith("String_Node_Str")) {
    List<dCuboid> cuboids=dCuboid.getNotableCuboidsContaining(this);
    dList cuboid_list=new dList();
    for (    dCuboid cuboid : cuboids) {
      cuboid_list.add(cuboid.identify());
    }
    return cuboid_list.getAttribute(attribute.fulfill(1));
  }
  if (attribute.startsWith("String_Node_Str"))   return new Element(getBlock().isLiquid()).getAttribute(attribute.fulfill(1));
  if (attribute.startsWith("String_Node_Str") || attribute.startsWith("String_Node_Str"))   return new Element(getBlock().getLightFromBlocks()).getAttribute(attribute.fulfill(2));
  if (attribute.startsWith("String_Node_Str") || attribute.startsWith("String_Node_Str"))   return new Element(getBlock().getLightFromSky()).getAttribute(attribute.fulfill(2));
  if (attribute.startsWith("String_Node_Str"))   return new Element(getBlock().getLightLevel()).getAttribute(attribute.fulfill(1));
  if (attribute.startsWith("String_Node_Str"))   return new Element(getBlock().getBlockPower()).getAttribute(attribute.fulfill(1));
  if (attribute.startsWith("String_Node_Str")) {
    if (Depends.worldGuard == null) {
      dB.echoError("String_Node_Str");
      return null;
    }
    if (attribute.hasContext(1)) {
      dList region_list=dList.valueOf(attribute.getContext(1));
      for (      String region : region_list)       if (WorldGuardUtilities.inRegion(this,region))       return Element.TRUE.getAttribute(attribute.fulfill(1));
      return Element.FALSE.getAttribute(attribute.fulfill(1));
    }
 else {
      return new Element(WorldGuardUtilities.inRegion(this)).getAttribute(attribute.fulfill(1));
    }
  }
  if (attribute.startsWith("String_Node_Str")) {
    if (Depends.worldGuard == null) {
      dB.echoError("String_Node_Str");
      return null;
    }
    return new dList(WorldGuardUtilities.getRegions(this)).getAttribute(attribute.fulfill(1));
  }
  for (  Property property : PropertyParser.getProperties(this)) {
    String returned=property.getAttribute(attribute);
    if (returned != null)     return returned;
  }
  return new Element(identify()).getAttribute(attribute);
}