Program: 171390
Project: 171390
Buggy source:
/** 
 * Adds standard commands related to the baseCommand.</br> Commands include:</br> Race</br> Skin</br> Skin+</br> Colour</br> name</br> name+</br> names</br> names+</br>
 */
private static void addStandardParsingCommands(List<String> tags,List<String> tagsPlural,BodyPartType bodyPart){
  commandsList.add(new ParserCommand(getModifiedTags(tags,tagsPlural,"String_Node_Str"),true,true,"String_Node_Str","String_Node_Str",bodyPart){
    @Override public String parse(    String command,    String arguments,    String target){
      return getRaceName(getBodyPartFromType(bodyPart).getType().getRace());
    }
  }
);
  commandsList.add(new ParserCommand(getModifiedTags(tags,tagsPlural,"String_Node_Str"),true,true,"String_Node_Str","String_Node_Str",bodyPart){
    @Override public String parse(    String command,    String arguments,    String target){
      return getRaceName(getBodyPartFromType(bodyPart).getType().getRace());
    }
  }
);
  commandsList.add(new ParserCommand(getModifiedTags(tags,tagsPlural,"String_Node_Str"),true,true,"String_Node_Str","String_Node_Str",bodyPart){
    @Override public String parse(    String command,    String arguments,    String target){
      return getSkinName(getBodyPartFromType(bodyPart).getType());
    }
  }
);
  commandsList.add(new ParserCommand(getModifiedTags(tags,tagsPlural,"String_Node_Str","String_Node_Str"),true,true,"String_Node_Str","String_Node_Str",bodyPart){
    @Override public String parse(    String command,    String arguments,    String target){
      return getSkinNameWithDescriptor(getBodyPartFromType(bodyPart).getType());
    }
  }
);
  commandsList.add(new ParserCommand(getModifiedTags(tags,tagsPlural,"String_Node_Str"),true,true,"String_Node_Str","String_Node_Str",bodyPart){
    @Override public String parse(    String command,    String arguments,    String target){
      if (arguments != null) {
        if (arguments.equalsIgnoreCase("String_Node_Str")) {
          return character.getCovering(getBodyPartFromType(bodyPart).getType().getBodyCoveringType()).getFullDescription(character,true);
        }
      }
      return character.getCovering(getBodyPartFromType(bodyPart).getType().getBodyCoveringType()).getFullDescription(character,false);
    }
  }
);
  commandsList.add(new ParserCommand(getModifiedTags(tags,tagsPlural,"String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str"),true,true,"String_Node_Str","String_Node_Str",bodyPart){
    @Override public String parse(    String command,    String arguments,    String target){
      return character.getCovering(getBodyPartFromType(bodyPart).getType().getBodyCoveringType()).getFullDescription(character,true);
    }
  }
);
  commandsList.add(new ParserCommand(getModifiedTags(tags,tagsPlural,"String_Node_Str","String_Node_Str"),true,true,"String_Node_Str","String_Node_Str",bodyPart){
    @Override public String parse(    String command,    String arguments,    String target){
      if (arguments != null) {
        if (arguments.equalsIgnoreCase("String_Node_Str")) {
          return character.getCovering(getBodyPartFromType(bodyPart).getType().getBodyCoveringType()).getColourDescriptor(true);
        }
      }
      return character.getCovering(getBodyPartFromType(bodyPart).getType().getBodyCoveringType()).getColourDescriptor(false);
    }
  }
);
  commandsList.add(new ParserCommand(getModifiedTags(tags,tagsPlural,"String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str"),true,true,"String_Node_Str","String_Node_Str",bodyPart){
    @Override public String parse(    String command,    String arguments,    String target){
      if (arguments != null) {
        if (arguments.equalsIgnoreCase("String_Node_Str")) {
          return character.getCovering(getBodyPartFromType(bodyPart).getType().getBodyCoveringType()).getPrimaryColourDescriptor(true);
        }
      }
      return character.getCovering(getBodyPartFromType(bodyPart).getType().getBodyCoveringType()).getPrimaryColourDescriptor(false);
    }
  }
);
  commandsList.add(new ParserCommand(getModifiedTags(tags,tagsPlural,"String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str"),true,true,"String_Node_Str","String_Node_Str",bodyPart){
    @Override public String parse(    String command,    String arguments,    String target){
      if (arguments != null) {
        if (arguments.equalsIgnoreCase("String_Node_Str")) {
          return character.getCovering(getBodyPartFromType(bodyPart).getType().getBodyCoveringType()).getSecondaryColourDescriptor(true);
        }
      }
      return character.getCovering(getBodyPartFromType(bodyPart).getType().getBodyCoveringType()).getSecondaryColourDescriptor(false);
    }
  }
);
  commandsList.add(new ParserCommand(getModifiedTags(tags,tagsPlural,"String_Node_Str","String_Node_Str"),true,true,"String_Node_Str","String_Node_Str",bodyPart){
    @Override public String parse(    String command,    String arguments,    String target){
      return character.getCovering(getBodyPartFromType(bodyPart).getType().getBodyCoveringType()).getPrimaryColour().toWebHexString();
    }
  }
);
  commandsList.add(new ParserCommand(tags,true,true,"String_Node_Str","String_Node_Str",bodyPart){
    @Override public String parse(    String command,    String arguments,    String target){
      return getBodyPartFromType(bodyPart).getNameSingular(character);
    }
  }
);
  commandsList.add(new ParserCommand(tagsPlural,true,true,"String_Node_Str","String_Node_Str",bodyPart){
    @Override public String parse(    String command,    String arguments,    String target){
      if (parseAddPronoun) {
        parseAddPronoun=false;
        return applyDeterminer(getBodyPartFromType(bodyPart).getDeterminer(character),getBodyPartFromType(bodyPart).getNamePlural(character));
      }
 else {
        return getBodyPartFromType(bodyPart).getNamePlural(character);
      }
    }
  }
);
  commandsList.add(new ParserCommand(getModifiedTags(tags,null,"String_Node_Str","String_Node_Str"),true,true,"String_Node_Str","String_Node_Str",bodyPart){
    @Override public String parse(    String command,    String arguments,    String target){
      return applyDescriptor(getBodyPartFromType(bodyPart).getDescriptor(character),getBodyPartFromType(bodyPart).getNameSingular(character));
    }
  }
);
  commandsList.add(new ParserCommand(getModifiedTags(null,tagsPlural,"String_Node_Str","String_Node_Str"),true,true,"String_Node_Str","String_Node_Str",bodyPart){
    @Override public String parse(    String command,    String arguments,    String target){
      if (parseAddPronoun) {
        parseAddPronoun=false;
        return applyDeterminer(getBodyPartFromType(bodyPart).getDeterminer(character),applyDescriptor(getBodyPartFromType(bodyPart).getDescriptor(character),getBodyPartFromType(bodyPart).getNamePlural(character)));
      }
 else {
        return applyDescriptor(getBodyPartFromType(bodyPart).getDescriptor(character),getBodyPartFromType(bodyPart).getNamePlural(character));
      }
    }
  }
);
}

Fixed version (ground truth):
/** 
 * Adds standard commands related to the baseCommand.</br> Commands include:</br> Race</br> Skin</br> Skin+</br> Colour</br> name</br> name+</br> names</br> names+</br>
 */
private static void addStandardParsingCommands(List<String> tags,List<String> tagsPlural,BodyPartType bodyPart){
  commandsList.add(new ParserCommand(getModifiedTags(tags,tagsPlural,"String_Node_Str"),true,true,"String_Node_Str","String_Node_Str",bodyPart){
    @Override public String parse(    String command,    String arguments,    String target){
      return getRaceName(getBodyPartFromType(bodyPart).getType().getRace());
    }
  }
);
  commandsList.add(new ParserCommand(getModifiedTags(tags,tagsPlural,"String_Node_Str"),true,true,"String_Node_Str","String_Node_Str",bodyPart){
    @Override public String parse(    String command,    String arguments,    String target){
      return getRaceName(getBodyPartFromType(bodyPart).getType().getRace());
    }
  }
);
  commandsList.add(new ParserCommand(getModifiedTags(tags,tagsPlural,"String_Node_Str"),true,true,"String_Node_Str","String_Node_Str",bodyPart){
    @Override public String parse(    String command,    String arguments,    String target){
      return getSkinName(getBodyPartFromType(bodyPart).getType());
    }
  }
);
  commandsList.add(new ParserCommand(getModifiedTags(tags,tagsPlural,"String_Node_Str","String_Node_Str"),true,true,"String_Node_Str","String_Node_Str",bodyPart){
    @Override public String parse(    String command,    String arguments,    String target){
      return getSkinNameWithDescriptor(getBodyPartFromType(bodyPart).getType());
    }
  }
);
  commandsList.add(new ParserCommand(getModifiedTags(tags,tagsPlural,"String_Node_Str"),true,true,"String_Node_Str","String_Node_Str",bodyPart){
    @Override public String parse(    String command,    String arguments,    String target){
      if (character.getCovering(getBodyPartFromType(bodyPart).getType().getBodyCoveringType()) == null) {
        return "String_Node_Str";
      }
      if (arguments != null) {
        if (arguments.equalsIgnoreCase("String_Node_Str")) {
          return character.getCovering(getBodyPartFromType(bodyPart).getType().getBodyCoveringType()).getFullDescription(character,true);
        }
      }
      return character.getCovering(getBodyPartFromType(bodyPart).getType().getBodyCoveringType()).getFullDescription(character,false);
    }
  }
);
  commandsList.add(new ParserCommand(getModifiedTags(tags,tagsPlural,"String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str"),true,true,"String_Node_Str","String_Node_Str",bodyPart){
    @Override public String parse(    String command,    String arguments,    String target){
      if (character.getCovering(getBodyPartFromType(bodyPart).getType().getBodyCoveringType()) == null) {
        return "String_Node_Str";
      }
      return character.getCovering(getBodyPartFromType(bodyPart).getType().getBodyCoveringType()).getFullDescription(character,true);
    }
  }
);
  commandsList.add(new ParserCommand(getModifiedTags(tags,tagsPlural,"String_Node_Str","String_Node_Str"),true,true,"String_Node_Str","String_Node_Str",bodyPart){
    @Override public String parse(    String command,    String arguments,    String target){
      if (character.getCovering(getBodyPartFromType(bodyPart).getType().getBodyCoveringType()) == null) {
        return "String_Node_Str";
      }
      if (arguments != null) {
        if (arguments.equalsIgnoreCase("String_Node_Str")) {
          return character.getCovering(getBodyPartFromType(bodyPart).getType().getBodyCoveringType()).getColourDescriptor(true);
        }
      }
      return character.getCovering(getBodyPartFromType(bodyPart).getType().getBodyCoveringType()).getColourDescriptor(false);
    }
  }
);
  commandsList.add(new ParserCommand(getModifiedTags(tags,tagsPlural,"String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str"),true,true,"String_Node_Str","String_Node_Str",bodyPart){
    @Override public String parse(    String command,    String arguments,    String target){
      if (character.getCovering(getBodyPartFromType(bodyPart).getType().getBodyCoveringType()) == null) {
        return "String_Node_Str";
      }
      if (arguments != null) {
        if (arguments.equalsIgnoreCase("String_Node_Str")) {
          return character.getCovering(getBodyPartFromType(bodyPart).getType().getBodyCoveringType()).getPrimaryColourDescriptor(true);
        }
      }
      return character.getCovering(getBodyPartFromType(bodyPart).getType().getBodyCoveringType()).getPrimaryColourDescriptor(false);
    }
  }
);
  commandsList.add(new ParserCommand(getModifiedTags(tags,tagsPlural,"String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str"),true,true,"String_Node_Str","String_Node_Str",bodyPart){
    @Override public String parse(    String command,    String arguments,    String target){
      if (character.getCovering(getBodyPartFromType(bodyPart).getType().getBodyCoveringType()) == null) {
        return "String_Node_Str";
      }
      if (arguments != null) {
        if (arguments.equalsIgnoreCase("String_Node_Str")) {
          return character.getCovering(getBodyPartFromType(bodyPart).getType().getBodyCoveringType()).getSecondaryColourDescriptor(true);
        }
      }
      return character.getCovering(getBodyPartFromType(bodyPart).getType().getBodyCoveringType()).getSecondaryColourDescriptor(false);
    }
  }
);
  commandsList.add(new ParserCommand(getModifiedTags(tags,tagsPlural,"String_Node_Str","String_Node_Str"),true,true,"String_Node_Str","String_Node_Str",bodyPart){
    @Override public String parse(    String command,    String arguments,    String target){
      if (character.getCovering(getBodyPartFromType(bodyPart).getType().getBodyCoveringType()) == null) {
        return "String_Node_Str";
      }
      return character.getCovering(getBodyPartFromType(bodyPart).getType().getBodyCoveringType()).getPrimaryColour().toWebHexString();
    }
  }
);
  commandsList.add(new ParserCommand(tags,true,true,"String_Node_Str","String_Node_Str",bodyPart){
    @Override public String parse(    String command,    String arguments,    String target){
      return getBodyPartFromType(bodyPart).getNameSingular(character);
    }
  }
);
  commandsList.add(new ParserCommand(tagsPlural,true,true,"String_Node_Str","String_Node_Str",bodyPart){
    @Override public String parse(    String command,    String arguments,    String target){
      if (parseAddPronoun) {
        parseAddPronoun=false;
        return applyDeterminer(getBodyPartFromType(bodyPart).getDeterminer(character),getBodyPartFromType(bodyPart).getNamePlural(character));
      }
 else {
        return getBodyPartFromType(bodyPart).getNamePlural(character);
      }
    }
  }
);
  commandsList.add(new ParserCommand(getModifiedTags(tags,null,"String_Node_Str","String_Node_Str"),true,true,"String_Node_Str","String_Node_Str",bodyPart){
    @Override public String parse(    String command,    String arguments,    String target){
      return applyDescriptor(getBodyPartFromType(bodyPart).getDescriptor(character),getBodyPartFromType(bodyPart).getNameSingular(character));
    }
  }
);
  commandsList.add(new ParserCommand(getModifiedTags(null,tagsPlural,"String_Node_Str","String_Node_Str"),true,true,"String_Node_Str","String_Node_Str",bodyPart){
    @Override public String parse(    String command,    String arguments,    String target){
      if (parseAddPronoun) {
        parseAddPronoun=false;
        return applyDeterminer(getBodyPartFromType(bodyPart).getDeterminer(character),applyDescriptor(getBodyPartFromType(bodyPart).getDescriptor(character),getBodyPartFromType(bodyPart).getNamePlural(character)));
      }
 else {
        return applyDescriptor(getBodyPartFromType(bodyPart).getDescriptor(character),getBodyPartFromType(bodyPart).getNamePlural(character));
      }
    }
  }
);
}