nus-yam/ex-repair huggingface dataset:
Program: 136390
Project: 136390
Buggy source:
@Test public void testMajor(){
  Assert.assertTrue(chain.isEditable());
  LibraryNode newMajor=rc.createMajorVersion(chain.getHead());
  TotalDescendents=TotalDescendents - 2;
  ActiveComplex--;
  Assert.assertFalse(chain.isEditable());
  LibraryChainNode newChain=newMajor.getChain();
  BusinessObjectNode majorBO=ml.addBusinessObjectToLibrary(newMajor,"String_Node_Str");
  checkCounts(newChain);
  for (  Node n : newMajor.getDescendants_NamedTypes()) {
    if (n.getName().equals(bo.getName()))     bo=(BusinessObjectNode)n;
    if (n.getName().equals(co.getName()))     co=(CoreObjectNode)n;
  }
  Assert.assertTrue(majorBO.isDeleteable());
  Assert.assertTrue(bo.isDeleteable());
  Assert.assertTrue(co.isDeleteable());
}

Fixed version (ground truth):
@Test public void testMajor(){
  Assert.assertTrue(chain.isEditable());
  LibraryNode newMajor=rc.createMajorVersion(chain.getHead());
  TotalDescendents=TotalDescendents - 3;
  ActiveComplex--;
  Assert.assertFalse(chain.isEditable());
  LibraryChainNode newChain=newMajor.getChain();
  BusinessObjectNode majorBO=ml.addBusinessObjectToLibrary(newMajor,"String_Node_Str");
  checkCounts(newChain);
  for (  Node n : newMajor.getDescendants_NamedTypes()) {
    if (n.getName().equals(bo.getName()))     bo=(BusinessObjectNode)n;
    if (n.getName().equals(co.getName()))     co=(CoreObjectNode)n;
  }
  Assert.assertTrue(majorBO.isDeleteable());
  Assert.assertTrue(bo.isDeleteable());
  Assert.assertTrue(co.isDeleteable());
}
Program: 136392
Project: 136392
Buggy source:
@Test public void testFacets(){
  int facetCount=bo.getChildren().size();
  bo.addFacet("String_Node_Str","String_Node_Str",TLFacetType.CUSTOM);
  Assert.assertEquals(facetCount,bo.getChildren().size());
  nbo=(BusinessObjectNode)bo.createMinorVersionComponent();
  MinorComplex+=1;
  nbo.isInHead();
  List<String> contextIDs=minorLibrary.getContextIds();
  Assert.assertFalse(contextIDs.isEmpty());
  nbo.addFacet("String_Node_Str",contextIDs.get(0),TLFacetType.CUSTOM);
  Assert.assertEquals(4,nbo.getChildren().size());
  Assert.assertEquals(MinorComplex,minorLibrary.getDescendants_NamedTypes().size());
  Assert.assertTrue(chain.isValid());
  nbo.delete();
  MinorComplex-=1;
  checkCounts(chain);
}

Fixed version (ground truth):
@Test public void testFacets(){
  int facetCount=bo.getChildren().size();
  bo.addFacet("String_Node_Str","String_Node_Str",TLFacetType.CUSTOM);
  Assert.assertEquals(facetCount,bo.getChildren().size());
  nbo=(BusinessObjectNode)bo.createMinorVersionComponent();
  MinorComplex+=1;
  nbo.isInHead();
  List<String> contextIDs=minorLibrary.getContextIds();
  Assert.assertFalse(contextIDs.isEmpty());
  nbo.addFacet("String_Node_Str",contextIDs.get(0),TLFacetType.CUSTOM);
  Assert.assertEquals(4,nbo.getChildren().size());
  Assert.assertEquals(MinorComplex + 1,minorLibrary.getDescendants_NamedTypes().size());
  Assert.assertTrue(chain.isValid());
  nbo.delete();
  MinorComplex-=1;
  checkCounts(chain);
}
Program: 136394
Project: 136394
Buggy source:
@Override public String getLabel(){
  String label="String_Node_Str";
  if (head != null) {
    label=head.getLabel();
  }
  return label;
}

Fixed version (ground truth):
@Override public String getLabel(){
  String label="String_Node_Str";
  if (getHead() != null) {
    label=getHead().getLabel();
  }
  return label;
}
Program: 136395
Project: 136395
Buggy source:
@Override public String getName(){
  String label="String_Node_Str";
  if (head != null) {
    NamespaceHandler handler=head.getNsHandler();
    if (handler != null)     label=head.getName() + "String_Node_Str" + handler.getNSVersion(head.getNamespace());
  }
  return label;
}

Fixed version (ground truth):
@Override public String getName(){
  String label="String_Node_Str";
  if (getHead() != null) {
    NamespaceHandler handler=getHead().getNsHandler();
    if (handler != null)     label=getHead().getName() + "String_Node_Str" + handler.getNSVersion(getHead().getNamespace());
  }
  return label;
}
Program: 136396
Project: 136396
Buggy source:
public LibraryNode getHead(){
  return head;
}

Fixed version (ground truth):
public LibraryNode getHead(){
  return getLibrary();
}
Program: 136397
Project: 136397
Buggy source:
/** 
 * Create a new chain and add to passed project. Model the project item and add to the new chain.
 * @param pi - project item to be modeled and added to chain
 * @param project - parent of the chain
 */
public LibraryChainNode(ProjectItem pi,ProjectNode project){
  super();
  if (pi == null || pi.getContent() == null) {
    LOGGER.debug("String_Node_Str");
    return;
  }
  setIdentity(pi.getBaseNamespace());
  setParent(project);
  project.getChildren().add(this);
  head=null;
  chain=new ArrayList<LibraryNode>();
  createAggregates();
  List<ProjectItem> piChain=null;
  try {
    piChain=pi.getProjectManager().getVersionChain(pi);
  }
 catch (  VersionSchemeException e1) {
    throw (new IllegalStateException("String_Node_Str"));
  }
  for (  ProjectItem item : piChain) {
    add(item);
  }
  setLibrary(head);
}

Fixed version (ground truth):
/** 
 * Create a new chain and add to passed project. Model the project item and add to the new chain.
 * @param pi - project item to be modeled and added to chain
 * @param project - parent of the chain
 */
public LibraryChainNode(ProjectItem pi,ProjectNode project){
  super();
  if (pi == null || pi.getContent() == null) {
    LOGGER.debug("String_Node_Str");
    return;
  }
  setIdentity(pi.getBaseNamespace());
  setParent(project);
  project.getChildren().add(this);
  setHead(null);
  chain=new ArrayList<LibraryNode>();
  createAggregates();
  List<ProjectItem> piChain=null;
  try {
    piChain=pi.getProjectManager().getVersionChain(pi);
  }
 catch (  VersionSchemeException e1) {
    throw (new IllegalStateException("String_Node_Str"));
  }
  for (  ProjectItem item : piChain) {
    add(item);
  }
  setLibrary(getHead());
}
Program: 136398
Project: 136398
Buggy source:
/** 
 * See also   {@link ProjectNode#makeChainIdentity(ProjectItem)} 9/23/2013 - this method does notuse the repository for managed base namespaces. It matches the behavior or makeChainIdentity in ProjectNode.
 */
public String makeChainIdentity(){
  String name=head.getName();
  NamespaceHandler handler=head.getNsHandler();
  String baseNS=handler.removeVersion(head.getNamespace());
  return makeIdentity(name,baseNS,handler.getNS_Major(head.getNamespace()));
}

Fixed version (ground truth):
/** 
 * See also   {@link ProjectNode#makeChainIdentity(ProjectItem)} 9/23/2013 - this method does notuse the repository for managed base namespaces. It matches the behavior or makeChainIdentity in ProjectNode.
 */
public String makeChainIdentity(){
  String name=getHead().getName();
  NamespaceHandler handler=getHead().getNsHandler();
  String baseNS=handler.removeVersion(getHead().getNamespace());
  return makeIdentity(name,baseNS,handler.getNS_Major(getHead().getNamespace()));
}
Program: 136399
Project: 136399
Buggy source:
/** 
 * Return the Simple/Complex/Service navNode in the latest library that matches the type of this node. 
 * @param parent
 */
public NavNode getLatestNavNode(ComponentNode node){
  Node parent=node.getOwningNavNode();
  for (  Node nav : head.getChildren()) {
    if (parent.getComponentType().equals(nav.getComponentType()))     return (NavNode)nav;
  }
  return null;
}

Fixed version (ground truth):
/** 
 * Return the Simple/Complex/Service navNode in the latest library that matches the type of this node. 
 * @param parent
 */
public NavNode getLatestNavNode(ComponentNode node){
  Node parent=node.getOwningNavNode();
  for (  Node nav : getHead().getChildren()) {
    if (parent.getComponentType().equals(nav.getComponentType()))     return (NavNode)nav;
  }
  return null;
}
Program: 136400
Project: 136400
Buggy source:
public boolean isMinor(){
  return head.isMinorVersion();
}

Fixed version (ground truth):
public boolean isMinor(){
  return getHead().isMinorVersion();
}
Program: 136401
Project: 136401
Buggy source:
/** 
 * All members of the chain must have the same name, base namespace and major version number.
 */
@Override public String getIdentity(){
  String identity="String_Node_Str";
  if (head != null) {
    NamespaceHandler handler=head.getNsHandler();
    if (handler != null)     identity=makeIdentity();
  }
  return identity;
}

Fixed version (ground truth):
/** 
 * All members of the chain must have the same name, base namespace and major version number.
 */
@Override public String getIdentity(){
  String identity="String_Node_Str";
  if (getHead() != null) {
    NamespaceHandler handler=getHead().getNsHandler();
    if (handler != null)     identity=makeIdentity();
  }
  return identity;
}
Program: 136402
Project: 136402
Buggy source:
public boolean isMajor(){
  return head.isMajorVersion();
}

Fixed version (ground truth):
public boolean isMajor(){
  return getHead().isMajorVersion();
}
Program: 136403
Project: 136403
Buggy source:
public boolean isPatch(){
  return head.isPatchVersion();
}

Fixed version (ground truth):
public boolean isPatch(){
  return getHead().isPatchVersion();
}
Program: 136404
Project: 136404
Buggy source:
@Test public void unlockWithCommitShouldCommitChanges() throws RepositoryException, LibrarySaveException {
  ProjectNode uploadProject=createProject("String_Node_Str",getRepositoryForTest(),"String_Node_Str");
  LibraryNode testLibary=LibraryNodeBuilder.create("String_Node_Str",getRepositoryForTest().getNamespace() + "String_Node_Str","String_Node_Str",new Version(1,0,0)).build(uploadProject,pc);
  LibraryChainNode library=rc.manage(getRepositoryForTest(),Collections.singletonList(testLibary)).get(0);
  library.getHead().lock();
  String coreObjectName="String_Node_Str";
  library.getHead().addMember(ComponentNodeBuilder.createCoreObject(coreObjectName).addProperty("String_Node_Str").setSimpleType().get());
  mc.getRepositoryController().unlock(library.getHead());
  Assert.assertEquals(1,library.getDescendants_NamedTypes().size());
  library.close();
  RepositoryItemNode nodeToRetrive=findRepositoryItem(library,getRepositoryForTest());
  pc.add(defaultProject,nodeToRetrive.getItem());
  Assert.assertEquals(1,defaultProject.getChildren().size());
  LibraryChainNode nodes=(LibraryChainNode)defaultProject.getChildren().get(0);
  Assert.assertEquals(library.getName(),nodes.getName());
  Assert.assertEquals(library.getHead().getNamespace(),nodes.getHead().getNamespace());
  Assert.assertEquals(1,nodes.getDescendants_NamedTypes().size());
}

Fixed version (ground truth):
@Test public void unlockWithCommitShouldCommitChanges() throws RepositoryException, LibrarySaveException {
  ProjectNode uploadProject=createProject("String_Node_Str",getRepositoryForTest(),"String_Node_Str");
  LibraryNode testLibary=LibraryNodeBuilder.create("String_Node_Str",getRepositoryForTest().getNamespace() + "String_Node_Str","String_Node_Str",new Version(1,0,0)).build(uploadProject,pc);
  LibraryChainNode library=rc.manage(getRepositoryForTest(),Collections.singletonList(testLibary)).get(0);
  library.getHead().lock();
  String coreObjectName="String_Node_Str";
  library.getHead().addMember(ComponentNodeBuilder.createCoreObject(coreObjectName).addProperty("String_Node_Str").setSimpleType().get());
  mc.getRepositoryController().unlock(library.getHead());
  Assert.assertEquals(1,library.getDescendants_NamedTypes().size());
  String libraryName=library.getHead().getName();
  String libraryChainName=library.getName();
  String namespace=library.getNamespace();
  library.close();
  RepositoryItemNode nodeToRetrive=findRepositoryItem(libraryName,namespace,getRepositoryForTest());
  pc.add(defaultProject,nodeToRetrive.getItem());
  Assert.assertEquals(1,defaultProject.getChildren().size());
  LibraryChainNode nodes=(LibraryChainNode)defaultProject.getChildren().get(0);
  Assert.assertEquals(libraryChainName,nodes.getName());
  Assert.assertEquals(namespace,nodes.getHead().getNamespace());
  Assert.assertEquals(1,nodes.getDescendants_NamedTypes().size());
}
Program: 136407
Project: 136407
Buggy source:
/** 
 * Versioning - major, minor, patch Project controller Legal library, illegal library (duplicate VWA namespace:name) Assure new version is in LibraryChain correctly. Assure old version is not directly in TLProject or projectNode.children Assure new version is in repository. Assure versions can start with 0.0.0 and variations.
 */
@Test public void createMajorVersionWithSimpleCoreWithoutType() throws RepositoryException, LibrarySaveException {
  ProjectNode uploadProject=createProject("String_Node_Str",getRepositoryForTest(),"String_Node_Str");
  LibraryNode testLibary=LibraryNodeBuilder.create("String_Node_Str",getRepositoryForTest().getNamespace() + "String_Node_Str","String_Node_Str",new Version(1,0,0)).makeFinal().build(uploadProject,pc);
  testLibary.addMember(ComponentNodeBuilder.createCoreObject("String_Node_Str").addProperty("String_Node_Str").get());
  LibraryChainNode chain=rc.manage(getRepositoryForTest(),Collections.singletonList(testLibary)).get(0);
  LibraryNode newMajor=rc.createMajorVersion(chain.getHead());
  ValidationFindings findings=newMajor.validate();
  Assert.assertEquals(0,findings.getFindingsAsList(FindingType.ERROR).size());
}

Fixed version (ground truth):
@Test public void createMajorVersionWithSimpleCoreWithoutType() throws RepositoryException, LibrarySaveException {
  ProjectNode uploadProject=createProject("String_Node_Str",getRepositoryForTest(),"String_Node_Str");
  LibraryNode testLibary=LibraryNodeBuilder.create("String_Node_Str",getRepositoryForTest().getNamespace() + "String_Node_Str","String_Node_Str",new Version(1,0,0)).makeFinal().build(uploadProject,pc);
  testLibary.addMember(ComponentNodeBuilder.createCoreObject("String_Node_Str").addProperty("String_Node_Str").get());
  LibraryChainNode chain=rc.manage(getRepositoryForTest(),Collections.singletonList(testLibary)).get(0);
  LibraryNode newMajor=rc.createMajorVersion(chain.getHead());
  ValidationFindings findings=newMajor.validate();
  Assert.assertEquals(0,findings.getFindingsAsList(FindingType.ERROR).size());
}
Program: 136408
Project: 136408
Buggy source:
private void assertAllLibrariesLoadedCorrectly(LibraryChainNode baseChain,LibraryChainNode extChain){
  mc.getLibraryController().remove(Collections.singletonList(baseChain));
  mc.getLibraryController().remove(Collections.singletonList(extChain));
  Assert.assertEquals(0,uploadProject.getChildren().size());
  RepositoryItemNode nodeToRetrive=findRepositoryItem(extChain,getRepositoryForTest());
  pc.add(uploadProject,nodeToRetrive.getItem());
  Assert.assertEquals(2,uploadProject.getChildren().size());
  LibraryChainNode lib=findLibrary(extLib.getName(),uploadProject.getChildren());
  VWA_Node vwaNode=(VWA_Node)lib.getDescendants_NamedTypes().get(0);
  AttributeNode attr=(AttributeNode)vwaNode.getAttributeFacet().getChildren().get(0);
  Assert.assertNotSame(ModelNode.getUnassignedNode(),attr.getTypeNode());
  Assert.assertSame(attr.getTypeNode().getModelObject().getTLModelObj(),attr.getTLTypeObject());
}

Fixed version (ground truth):
private void assertAllLibrariesLoadedCorrectly(LibraryChainNode baseChain,LibraryChainNode extChain){
  mc.getLibraryController().remove(Collections.singletonList(baseChain));
  RepositoryItemNode nodeToRetrive=findRepositoryItem(extChain,getRepositoryForTest());
  mc.getLibraryController().remove(Collections.singletonList(extChain));
  Assert.assertEquals(0,uploadProject.getChildren().size());
  pc.add(uploadProject,nodeToRetrive.getItem());
  Assert.assertEquals(2,uploadProject.getChildren().size());
  LibraryChainNode lib=findLibrary(extLib.getName(),uploadProject.getChildren());
  VWA_Node vwaNode=(VWA_Node)lib.getDescendants_NamedTypes().get(0);
  AttributeNode attr=(AttributeNode)vwaNode.getAttributeFacet().getChildren().get(0);
  Assert.assertNotSame(ModelNode.getUnassignedNode(),attr.getTypeNode());
  Assert.assertSame(attr.getTypeNode().getModelObject().getTLModelObj(),attr.getTLTypeObject());
}
Program: 136409
Project: 136409
Buggy source:
/** 
 * Move one node to the new destination library. Links the node, the tl object and corrects context.
 * @param source
 * @param destination
 */
public void moveNode(final ComponentNode source,final LibraryNode destination){
  if (destination == null || source == null) {
    LOGGER.warn("String_Node_Str");
    return;
  }
  if (!destination.isTLLibrary()) {
    LOGGER.warn("String_Node_Str");
    DialogUserNotifier.openInformation("String_Node_Str","String_Node_Str");
    return;
  }
  if (source.isInTLLibrary() && source.isTopLevelObject()) {
    source.getLibrary().moveMember(source,destination);
  }
 else {
    LOGGER.warn("String_Node_Str" + source.getName() + "String_Node_Str");
    LOGGER.debug("String_Node_Str" + source.isInTLLibrary() + "String_Node_Str"+ source.isTopLevelObject());
    DialogUserNotifier.openInformation("String_Node_Str","String_Node_Str");
    return;
  }
  LOGGER.info("String_Node_Str" + source.getName() + "String_Node_Str"+ destination.getName());
}

Fixed version (ground truth):
/** 
 * Move one node to the new destination library. Links the node, the tl object and corrects context.
 * @param source
 * @param destination
 */
public void moveNode(final ComponentNode source,final LibraryNode destination){
  if (destination == null || source == null) {
    LOGGER.warn("String_Node_Str");
    return;
  }
  if (!destination.isTLLibrary()) {
    LOGGER.warn("String_Node_Str");
    DialogUserNotifier.openInformation("String_Node_Str","String_Node_Str");
    return;
  }
  if (source.getChain() == destination.getChain()) {
    DialogUserNotifier.openInformation("String_Node_Str","String_Node_Str");
    return;
  }
  if (source.isInTLLibrary() && source.isTopLevelObject()) {
    source.getLibrary().moveMember(source,destination);
  }
 else {
    LOGGER.warn("String_Node_Str" + source.getName() + "String_Node_Str");
    LOGGER.debug("String_Node_Str" + source.isInTLLibrary() + "String_Node_Str"+ source.isTopLevelObject());
    DialogUserNotifier.openInformation("String_Node_Str","String_Node_Str");
    return;
  }
  LOGGER.info("String_Node_Str" + source.getName() + "String_Node_Str"+ destination.getName());
}
Program: 136411
Project: 136411
Buggy source:
public FacetNode addFacet(String name,String context,TLFacetType type){
  if (getLibrary().isMajorVersion() || versionNode == null) {
    TLFacet newTlFacet=getModelObject().addFacet(name,context,type);
    FacetNode ff=(FacetNode)NodeFactory.newComponentMember(this,newTlFacet);
    return ff;
  }
  LOGGER.debug("String_Node_Str");
  return null;
}

Fixed version (ground truth):
public FacetNode addFacet(String name,String context,TLFacetType type){
  if (isInHead() || versionNode == null) {
    TLFacet newTlFacet=getModelObject().addFacet(name,context,type);
    FacetNode ff=(FacetNode)NodeFactory.newComponentMember(this,newTlFacet);
    return ff;
  }
  LOGGER.debug("String_Node_Str");
  return null;
}
Program: 136412
Project: 136412
Buggy source:
/** 
 * Remove the node from its library. Remove from the library node and from the underlying tl library. Navigation and family nodes are NOT deleted. Does NOT delete the node or its TL Object contents. TL type assignments are assured to match the assignments in TypeNode.
 */
protected void removeMember(final Node n){
  if (n == null || n.getTLModelObject() == null) {
    LOGGER.debug("String_Node_Str" + n.getName() + "String_Node_Str"+ n.getClass().getSimpleName());
    return;
  }
  if (!(n.getTLModelObject() instanceof LibraryMember)) {
    LOGGER.warn("String_Node_Str" + n);
    return;
  }
  n.unlinkNode();
  n.getLibrary().getTLLibrary().removeNamedMember((LibraryMember)n.getTLModelObject());
  n.setLibrary(null);
  n.fixAssignments();
}

Fixed version (ground truth):
/** 
 * Remove the node from its library. Remove from the library node and from the underlying tl library. Navigation and family nodes are NOT deleted. Does NOT delete the node or its TL Object contents. TL type assignments are assured to match the assignments in TypeNode. NOTE - does not replace this node with an earlier version in a version chain.
 */
protected void removeMember(final Node n){
  if (n == null || n.getTLModelObject() == null) {
    LOGGER.debug("String_Node_Str" + n.getName() + "String_Node_Str"+ n.getClass().getSimpleName());
    return;
  }
  if (!(n.getTLModelObject() instanceof LibraryMember)) {
    LOGGER.warn("String_Node_Str" + n);
    return;
  }
  n.unlinkNode();
  n.getLibrary().getTLLibrary().removeNamedMember((LibraryMember)n.getTLModelObject());
  n.setLibrary(null);
  n.fixAssignments();
}
Program: 136413
Project: 136413
Buggy source:
/** 
 * Move a node from its library to a different library. Moves the node and underlying TL object.
 * @param source
 * @param destination
 */
public void moveMember(final Node source,LibraryNode destination){
  if (source == null || source.getModelObject() == null || source.getTLModelObject() == null)   throw new IllegalArgumentException("String_Node_Str");
  if (destination == null)   throw new IllegalArgumentException("String_Node_Str");
  if (!(destination.getTLaLib() instanceof TLLibrary))   throw new IllegalArgumentException("String_Node_Str");
  if (source.isService() && destination.hasService())   return;
  ContextController cc=OtmRegistry.getMainController().getContextController();
  cc.copyContext(source,destination);
  source.unlinkNode();
  source.getLibrary().getTLLibrary().moveNamedMember((LibraryMember)source.getTLModelObject(),destination.getLibrary().getTLLibrary());
  destination.linkMember(source);
  if (isInChain()) {
    destination.getChain().add((ComponentNode)source);
  }
}

Fixed version (ground truth):
/** 
 * Move a node from its library to a different library. Moves the node and underlying TL object.
 * @param source
 * @param destination
 */
public void moveMember(final Node source,LibraryNode destination){
  if (source == null || source.getModelObject() == null || source.getTLModelObject() == null)   throw new IllegalArgumentException("String_Node_Str");
  if (destination == null)   throw new IllegalArgumentException("String_Node_Str");
  if (!(destination.getTLaLib() instanceof TLLibrary))   throw new IllegalArgumentException("String_Node_Str");
  if (source.isService() && destination.hasService())   return;
  ContextController cc=OtmRegistry.getMainController().getContextController();
  cc.copyContext(source,destination);
  if (isInChain()) {
    if (source instanceof ComplexComponentInterface)     getChain().getComplexAggregate().getChildren().remove(source);
 else     if (source instanceof SimpleComponentInterface)     getChain().getSimpleAggregate().getChildren().remove(source);
    LOGGER.debug("String_Node_Str" + source);
  }
  source.unlinkNode();
  source.getLibrary().getTLLibrary().moveNamedMember((LibraryMember)source.getTLModelObject(),destination.getLibrary().getTLLibrary());
  destination.linkMember(source);
  if (destination.isInChain()) {
    destination.getChain().add((ComponentNode)source);
  }
}
Program: 136414
Project: 136414
Buggy source:
@Override public List<Node> getDescendants_NamedTypes(){
  HashSet<Node> namedKids=new HashSet<Node>();
  for (  Node c : getChildren()) {
    if (c.isService())     namedKids.add(c);
 else     if (c.isTypeProvider()) {
      namedKids.add(c);
    }
 else     if (c.hasChildren())     namedKids.addAll(c.getDescendants_NamedTypes());
  }
  return new ArrayList<Node>(namedKids);
}

Fixed version (ground truth):
/** 
 * Traverse via hasChildren. For version chains, it uses the version node and does not touch aggregates.
 */
@Override public List<Node> getDescendants_NamedTypes(){
  HashSet<Node> namedKids=new HashSet<Node>();
  for (  Node c : getChildren()) {
    if (c.isService())     namedKids.add(c);
 else     if (c.isTypeProvider()) {
      namedKids.add(c);
    }
 else     if (c.hasChildren())     namedKids.addAll(c.getDescendants_NamedTypes());
  }
  return new ArrayList<Node>(namedKids);
}
Program: 136415
Project: 136415
Buggy source:
/** 
 * Get the editing status of the node based on chain and library.
 */
public NodeEditStatus getEditStatus(){
  NodeEditStatus status=NodeEditStatus.FULL;
  if (getLibrary() == null)   return status;
  if (getChain() == null) {
    if (getLibrary().isEditable())     status=NodeEditStatus.FULL;
 else     status=NodeEditStatus.NOT_EDITABLE;
  }
 else {
    if (!getChain().isEditable())     status=NodeEditStatus.MANAGED_READONLY;
 else     if (getChain().getHead().isMajorVersion())     status=NodeEditStatus.FULL;
 else     if (getChain().getHead().isMinorVersion())     status=NodeEditStatus.MINOR;
 else     status=NodeEditStatus.PATCH;
  }
  return status;
}

Fixed version (ground truth):
/** 
 * Get the editing status of the node based on chain head library or unmanaged library.
 */
public NodeEditStatus getEditStatus(){
  NodeEditStatus status=NodeEditStatus.FULL;
  if (getLibrary() == null)   return status;
  if (getChain() == null) {
    if (getLibrary().isEditable())     status=NodeEditStatus.FULL;
 else     status=NodeEditStatus.NOT_EDITABLE;
  }
 else {
    if (!getChain().isEditable())     status=NodeEditStatus.MANAGED_READONLY;
 else     if (getChain().getHead().isMajorVersion())     status=NodeEditStatus.FULL;
 else     if (getChain().getHead().isMinorVersion())     status=NodeEditStatus.MINOR;
 else     status=NodeEditStatus.PATCH;
  }
  return status;
}
Program: 136416
Project: 136416
Buggy source:
@Override public void delete(){
  if (getLibrary() != null && getLibrary().isInChain())   getLibrary().getChain().removeAggregate((ComponentNode)this);
  NodeVisitor visitor=new NodeVisitors().new deleteVisitor();
  this.visitAllNodes(visitor);
}

Fixed version (ground truth):
@Override public void delete(){
  if (isDeleteable() && getLibrary() != null && getLibrary().isInChain())   getLibrary().getChain().removeAggregate((ComponentNode)this);
  NodeVisitor visitor=new NodeVisitors().new deleteVisitor();
  this.visitAllNodes(visitor);
}
Program: 136417
Project: 136417
Buggy source:
/** 
 * Locates the source node for the selected finding in the library navigation view.
 */
private void selectFindingSource(ValidationFinding finding){
  Validatable findingSource=getNodeMappableFindingSource(finding);
  String validationIdentity=findingSource.getValidationIdentity();
  if (validationIdentity == null)   return;
  Node n=NodeFinders.findNodeByValidationIentity(validationIdentity);
  if (n == null)   return;
  LOGGER.debug("String_Node_Str" + validationIdentity);
  int e=finding.getMessageKey().lastIndexOf("String_Node_Str");
  String error=finding.getMessageKey().substring(++e);
  LOGGER.debug("String_Node_Str" + error);
  if (error.equals(TLValidationBuilder.UNRESOLVED_NAMED_ENTITY_REFERENCE)) {
    OtmEventData wd=new OtmEventData();
    wd.setBusinessEvent(OtmActions.typeSelector());
    wd.setNode(null);
    wd.setNodeList(findMatching(finding,error));
    if (!wd.getNodeList().isEmpty() && wd.getNodeList().get(0).isEditable())     otmActions.doEvent(wd);
    validateNode((Node)currentNode);
  }
  LOGGER.debug("String_Node_Str" + n + "String_Node_Str"+ validationIdentity);
  mc.selectNavigatorNodeAndRefresh(n);
}

Fixed version (ground truth):
/** 
 * Locates the source node for the selected finding in the library navigation view.
 */
private void selectFindingSource(ValidationFinding finding){
  Validatable findingSource=getNodeMappableFindingSource(finding);
  String validationIdentity=findingSource.getValidationIdentity();
  if (validationIdentity == null)   return;
  Node n=NodeFinders.findNodeByValidationIentity(validationIdentity);
  if (n == null)   return;
  LOGGER.debug("String_Node_Str" + validationIdentity);
  int e=finding.getMessageKey().lastIndexOf("String_Node_Str");
  String error=finding.getMessageKey().substring(++e);
  LOGGER.debug("String_Node_Str" + error);
  if (error.equals(TLValidationBuilder.UNRESOLVED_NAMED_ENTITY_REFERENCE)) {
    OtmEventData wd=new OtmEventData();
    wd.setBusinessEvent(OtmActions.typeSelector());
    wd.setNode(null);
    wd.setNodeList(findMatching(finding,error));
    if (wd.getNodeList() != null && !wd.getNodeList().isEmpty() && wd.getNodeList().get(0).isEditable())     otmActions.doEvent(wd);
    validateNode((Node)currentNode);
  }
  LOGGER.debug("String_Node_Str" + n + "String_Node_Str"+ validationIdentity);
  mc.selectNavigatorNodeAndRefresh(n);
}
Program: 136418
Project: 136418
Buggy source:
/** 
 * Move one node to the new destination library. Links the node, the tl object and corrects context.
 * @param source
 * @param destination
 */
public void moveNode(final ComponentNode source,final LibraryNode destination){
  if (destination == null || source == null) {
    LOGGER.warn("String_Node_Str");
    return;
  }
  if (!destination.isTLLibrary()) {
    LOGGER.warn("String_Node_Str");
    DialogUserNotifier.openInformation("String_Node_Str","String_Node_Str");
    return;
  }
  if (source.isInTLLibrary() && source.isTopLevelObject()) {
    source.getLibrary().moveMember(source,destination);
  }
 else {
    LOGGER.warn("String_Node_Str" + source.getName() + "String_Node_Str");
    LOGGER.debug("String_Node_Str" + source.isInTLLibrary() + "String_Node_Str"+ source.isTopLevelObject());
    DialogUserNotifier.openInformation("String_Node_Str","String_Node_Str");
    return;
  }
  LOGGER.info("String_Node_Str" + source.getName() + "String_Node_Str"+ destination.getName());
}

Fixed version (ground truth):
/** 
 * Move one node to the new destination library. Links the node, the tl object and corrects context.
 * @param source
 * @param destination
 */
public void moveNode(final ComponentNode source,final LibraryNode destination){
  if (destination == null || source == null) {
    LOGGER.warn("String_Node_Str");
    return;
  }
  if (!destination.isTLLibrary()) {
    LOGGER.warn("String_Node_Str");
    DialogUserNotifier.openInformation("String_Node_Str","String_Node_Str");
    return;
  }
  if (source.getChain() == destination.getChain()) {
    DialogUserNotifier.openInformation("String_Node_Str","String_Node_Str");
    return;
  }
  if (source.isInTLLibrary() && source.isTopLevelObject()) {
    source.getLibrary().moveMember(source,destination);
  }
 else {
    LOGGER.warn("String_Node_Str" + source.getName() + "String_Node_Str");
    LOGGER.debug("String_Node_Str" + source.isInTLLibrary() + "String_Node_Str"+ source.isTopLevelObject());
    DialogUserNotifier.openInformation("String_Node_Str","String_Node_Str");
    return;
  }
  LOGGER.info("String_Node_Str" + source.getName() + "String_Node_Str"+ destination.getName());
}
Program: 136420
Project: 136420
Buggy source:
public FacetNode addFacet(String name,String context,TLFacetType type){
  if (getLibrary().isMajorVersion() || versionNode == null) {
    TLFacet newTlFacet=getModelObject().addFacet(name,context,type);
    FacetNode ff=(FacetNode)NodeFactory.newComponentMember(this,newTlFacet);
    return ff;
  }
  LOGGER.debug("String_Node_Str");
  return null;
}

Fixed version (ground truth):
public FacetNode addFacet(String name,String context,TLFacetType type){
  if (isInHead() || versionNode == null) {
    TLFacet newTlFacet=getModelObject().addFacet(name,context,type);
    FacetNode ff=(FacetNode)NodeFactory.newComponentMember(this,newTlFacet);
    return ff;
  }
  LOGGER.debug("String_Node_Str");
  return null;
}
Program: 136421
Project: 136421
Buggy source:
/** 
 * Remove the node from its library. Remove from the library node and from the underlying tl library. Navigation and family nodes are NOT deleted. Does NOT delete the node or its TL Object contents. TL type assignments are assured to match the assignments in TypeNode.
 */
protected void removeMember(final Node n){
  if (n == null || n.getTLModelObject() == null) {
    LOGGER.debug("String_Node_Str" + n.getName() + "String_Node_Str"+ n.getClass().getSimpleName());
    return;
  }
  if (!(n.getTLModelObject() instanceof LibraryMember)) {
    LOGGER.warn("String_Node_Str" + n);
    return;
  }
  n.unlinkNode();
  n.getLibrary().getTLLibrary().removeNamedMember((LibraryMember)n.getTLModelObject());
  n.setLibrary(null);
  n.fixAssignments();
}

Fixed version (ground truth):
/** 
 * Remove the node from its library. Remove from the library node and from the underlying tl library. Navigation and family nodes are NOT deleted. Does NOT delete the node or its TL Object contents. TL type assignments are assured to match the assignments in TypeNode. NOTE - does not replace this node with an earlier version in a version chain.
 */
protected void removeMember(final Node n){
  if (n == null || n.getTLModelObject() == null) {
    LOGGER.debug("String_Node_Str" + n.getName() + "String_Node_Str"+ n.getClass().getSimpleName());
    return;
  }
  if (!(n.getTLModelObject() instanceof LibraryMember)) {
    LOGGER.warn("String_Node_Str" + n);
    return;
  }
  n.unlinkNode();
  n.getLibrary().getTLLibrary().removeNamedMember((LibraryMember)n.getTLModelObject());
  n.setLibrary(null);
  n.fixAssignments();
}
Program: 136422
Project: 136422
Buggy source:
/** 
 * Move a node from its library to a different library. Moves the node and underlying TL object.
 * @param source
 * @param destination
 */
public void moveMember(final Node source,LibraryNode destination){
  if (source == null || source.getModelObject() == null || source.getTLModelObject() == null)   throw new IllegalArgumentException("String_Node_Str");
  if (destination == null)   throw new IllegalArgumentException("String_Node_Str");
  if (!(destination.getTLaLib() instanceof TLLibrary))   throw new IllegalArgumentException("String_Node_Str");
  if (source.isService() && destination.hasService())   return;
  ContextController cc=OtmRegistry.getMainController().getContextController();
  cc.copyContext(source,destination);
  source.unlinkNode();
  source.getLibrary().getTLLibrary().moveNamedMember((LibraryMember)source.getTLModelObject(),destination.getLibrary().getTLLibrary());
  destination.linkMember(source);
  if (isInChain()) {
    destination.getChain().add((ComponentNode)source);
  }
}

Fixed version (ground truth):
/** 
 * Move a node from its library to a different library. Moves the node and underlying TL object.
 * @param source
 * @param destination
 */
public void moveMember(final Node source,LibraryNode destination){
  if (source == null || source.getModelObject() == null || source.getTLModelObject() == null)   throw new IllegalArgumentException("String_Node_Str");
  if (destination == null)   throw new IllegalArgumentException("String_Node_Str");
  if (!(destination.getTLaLib() instanceof TLLibrary))   throw new IllegalArgumentException("String_Node_Str");
  if (source.isService() && destination.hasService())   return;
  ContextController cc=OtmRegistry.getMainController().getContextController();
  cc.copyContext(source,destination);
  if (isInChain()) {
    if (source instanceof ComplexComponentInterface)     getChain().getComplexAggregate().getChildren().remove(source);
 else     if (source instanceof SimpleComponentInterface)     getChain().getSimpleAggregate().getChildren().remove(source);
    LOGGER.debug("String_Node_Str" + source);
  }
  source.unlinkNode();
  source.getLibrary().getTLLibrary().moveNamedMember((LibraryMember)source.getTLModelObject(),destination.getLibrary().getTLLibrary());
  destination.linkMember(source);
  if (destination.isInChain()) {
    destination.getChain().add((ComponentNode)source);
  }
}
Program: 136423
Project: 136423
Buggy source:
@Override public List<Node> getDescendants_NamedTypes(){
  HashSet<Node> namedKids=new HashSet<Node>();
  for (  Node c : getChildren()) {
    if (c.isService())     namedKids.add(c);
 else     if (c.isTypeProvider()) {
      namedKids.add(c);
    }
 else     if (c.hasChildren())     namedKids.addAll(c.getDescendants_NamedTypes());
  }
  return new ArrayList<Node>(namedKids);
}

Fixed version (ground truth):
/** 
 * Traverse via hasChildren. For version chains, it uses the version node and does not touch aggregates.
 */
@Override public List<Node> getDescendants_NamedTypes(){
  HashSet<Node> namedKids=new HashSet<Node>();
  for (  Node c : getChildren()) {
    if (c.isService())     namedKids.add(c);
 else     if (c.isTypeProvider()) {
      namedKids.add(c);
    }
 else     if (c.hasChildren())     namedKids.addAll(c.getDescendants_NamedTypes());
  }
  return new ArrayList<Node>(namedKids);
}
Program: 136424
Project: 136424
Buggy source:
/** 
 * Get the editing status of the node based on chain and library.
 */
public NodeEditStatus getEditStatus(){
  NodeEditStatus status=NodeEditStatus.FULL;
  if (getLibrary() == null)   return status;
  if (getChain() == null) {
    if (getLibrary().isEditable())     status=NodeEditStatus.FULL;
 else     status=NodeEditStatus.NOT_EDITABLE;
  }
 else {
    if (!getChain().isEditable())     status=NodeEditStatus.MANAGED_READONLY;
 else     if (getChain().getHead().isMajorVersion())     status=NodeEditStatus.FULL;
 else     if (getChain().getHead().isMinorVersion())     status=NodeEditStatus.MINOR;
 else     status=NodeEditStatus.PATCH;
  }
  return status;
}

Fixed version (ground truth):
/** 
 * Get the editing status of the node based on chain head library or unmanaged library.
 */
public NodeEditStatus getEditStatus(){
  NodeEditStatus status=NodeEditStatus.FULL;
  if (getLibrary() == null)   return status;
  if (getChain() == null) {
    if (getLibrary().isEditable())     status=NodeEditStatus.FULL;
 else     status=NodeEditStatus.NOT_EDITABLE;
  }
 else {
    if (!getChain().isEditable())     status=NodeEditStatus.MANAGED_READONLY;
 else     if (getChain().getHead().isMajorVersion())     status=NodeEditStatus.FULL;
 else     if (getChain().getHead().isMinorVersion())     status=NodeEditStatus.MINOR;
 else     status=NodeEditStatus.PATCH;
  }
  return status;
}
Program: 136425
Project: 136425
Buggy source:
@Override public void delete(){
  if (getLibrary() != null && getLibrary().isInChain())   getLibrary().getChain().removeAggregate((ComponentNode)this);
  NodeVisitor visitor=new NodeVisitors().new deleteVisitor();
  this.visitAllNodes(visitor);
}

Fixed version (ground truth):
@Override public void delete(){
  if (isDeleteable() && getLibrary() != null && getLibrary().isInChain())   getLibrary().getChain().removeAggregate((ComponentNode)this);
  NodeVisitor visitor=new NodeVisitors().new deleteVisitor();
  this.visitAllNodes(visitor);
}
Program: 136426
Project: 136426
Buggy source:
/** 
 * Locates the source node for the selected finding in the library navigation view.
 */
private void selectFindingSource(ValidationFinding finding){
  Validatable findingSource=getNodeMappableFindingSource(finding);
  String validationIdentity=findingSource.getValidationIdentity();
  if (validationIdentity == null)   return;
  Node n=NodeFinders.findNodeByValidationIentity(validationIdentity);
  if (n == null)   return;
  LOGGER.debug("String_Node_Str" + validationIdentity);
  int e=finding.getMessageKey().lastIndexOf("String_Node_Str");
  String error=finding.getMessageKey().substring(++e);
  LOGGER.debug("String_Node_Str" + error);
  if (error.equals(TLValidationBuilder.UNRESOLVED_NAMED_ENTITY_REFERENCE)) {
    OtmEventData wd=new OtmEventData();
    wd.setBusinessEvent(OtmActions.typeSelector());
    wd.setNode(null);
    wd.setNodeList(findMatching(finding,error));
    if (!wd.getNodeList().isEmpty() && wd.getNodeList().get(0).isEditable())     otmActions.doEvent(wd);
    validateNode((Node)currentNode);
  }
  LOGGER.debug("String_Node_Str" + n + "String_Node_Str"+ validationIdentity);
  mc.selectNavigatorNodeAndRefresh(n);
}

Fixed version (ground truth):
/** 
 * Locates the source node for the selected finding in the library navigation view.
 */
private void selectFindingSource(ValidationFinding finding){
  Validatable findingSource=getNodeMappableFindingSource(finding);
  String validationIdentity=findingSource.getValidationIdentity();
  if (validationIdentity == null)   return;
  Node n=NodeFinders.findNodeByValidationIentity(validationIdentity);
  if (n == null)   return;
  LOGGER.debug("String_Node_Str" + validationIdentity);
  int e=finding.getMessageKey().lastIndexOf("String_Node_Str");
  String error=finding.getMessageKey().substring(++e);
  LOGGER.debug("String_Node_Str" + error);
  if (error.equals(TLValidationBuilder.UNRESOLVED_NAMED_ENTITY_REFERENCE)) {
    OtmEventData wd=new OtmEventData();
    wd.setBusinessEvent(OtmActions.typeSelector());
    wd.setNode(null);
    wd.setNodeList(findMatching(finding,error));
    if (wd.getNodeList() != null && !wd.getNodeList().isEmpty() && wd.getNodeList().get(0).isEditable())     otmActions.doEvent(wd);
    validateNode((Node)currentNode);
  }
  LOGGER.debug("String_Node_Str" + n + "String_Node_Str"+ validationIdentity);
  mc.selectNavigatorNodeAndRefresh(n);
}
Program: 136427
Project: 136427
Buggy source:
@Override public String getLabel(){
  String label="String_Node_Str";
  if (head != null) {
    label=head.getLabel();
  }
  return label;
}

Fixed version (ground truth):
@Override public String getLabel(){
  String label="String_Node_Str";
  if (getHead() != null) {
    label=getHead().getLabel();
  }
  return label;
}
Program: 136428
Project: 136428
Buggy source:
@Override public String getName(){
  String label="String_Node_Str";
  if (head != null) {
    NamespaceHandler handler=head.getNsHandler();
    if (handler != null)     label=head.getName() + "String_Node_Str" + handler.getNSVersion(head.getNamespace());
  }
  return label;
}

Fixed version (ground truth):
@Override public String getName(){
  String label="String_Node_Str";
  if (getHead() != null) {
    NamespaceHandler handler=getHead().getNsHandler();
    if (handler != null)     label=getHead().getName() + "String_Node_Str" + handler.getNSVersion(getHead().getNamespace());
  }
  return label;
}
Program: 136429
Project: 136429
Buggy source:
public LibraryNode getHead(){
  return head;
}

Fixed version (ground truth):
public LibraryNode getHead(){
  return getLibrary();
}
Program: 136430
Project: 136430
Buggy source:
/** 
 * Create a new chain and add to passed project. Model the project item and add to the new chain.
 * @param pi - project item to be modeled and added to chain
 * @param project - parent of the chain
 */
public LibraryChainNode(ProjectItem pi,ProjectNode project){
  super();
  if (pi == null || pi.getContent() == null) {
    LOGGER.debug("String_Node_Str");
    return;
  }
  setIdentity(pi.getBaseNamespace());
  setParent(project);
  project.getChildren().add(this);
  head=null;
  chain=new ArrayList<LibraryNode>();
  createAggregates();
  List<ProjectItem> piChain=null;
  try {
    piChain=pi.getProjectManager().getVersionChain(pi);
  }
 catch (  VersionSchemeException e1) {
    throw (new IllegalStateException("String_Node_Str"));
  }
  for (  ProjectItem item : piChain) {
    add(item);
  }
  setLibrary(head);
}

Fixed version (ground truth):
/** 
 * Create a new chain and add to passed project. Model the project item and add to the new chain.
 * @param pi - project item to be modeled and added to chain
 * @param project - parent of the chain
 */
public LibraryChainNode(ProjectItem pi,ProjectNode project){
  super();
  if (pi == null || pi.getContent() == null) {
    LOGGER.debug("String_Node_Str");
    return;
  }
  setIdentity(pi.getBaseNamespace());
  setParent(project);
  project.getChildren().add(this);
  setHead(null);
  chain=new ArrayList<LibraryNode>();
  createAggregates();
  List<ProjectItem> piChain=null;
  try {
    piChain=pi.getProjectManager().getVersionChain(pi);
  }
 catch (  VersionSchemeException e1) {
    throw (new IllegalStateException("String_Node_Str"));
  }
  for (  ProjectItem item : piChain) {
    add(item);
  }
  setLibrary(getHead());
}
Program: 136431
Project: 136431
Buggy source:
/** 
 * See also   {@link ProjectNode#makeChainIdentity(ProjectItem)} 9/23/2013 - this method does notuse the repository for managed base namespaces. It matches the behavior or makeChainIdentity in ProjectNode.
 */
public String makeChainIdentity(){
  String name=head.getName();
  NamespaceHandler handler=head.getNsHandler();
  String baseNS=handler.removeVersion(head.getNamespace());
  return makeIdentity(name,baseNS,handler.getNS_Major(head.getNamespace()));
}

Fixed version (ground truth):
/** 
 * See also   {@link ProjectNode#makeChainIdentity(ProjectItem)} 9/23/2013 - this method does notuse the repository for managed base namespaces. It matches the behavior or makeChainIdentity in ProjectNode.
 */
public String makeChainIdentity(){
  String name=getHead().getName();
  NamespaceHandler handler=getHead().getNsHandler();
  String baseNS=handler.removeVersion(getHead().getNamespace());
  return makeIdentity(name,baseNS,handler.getNS_Major(getHead().getNamespace()));
}
Program: 136432
Project: 136432
Buggy source:
/** 
 * Return the Simple/Complex/Service navNode in the latest library that matches the type of this node. 
 * @param parent
 */
public NavNode getLatestNavNode(ComponentNode node){
  Node parent=node.getOwningNavNode();
  for (  Node nav : head.getChildren()) {
    if (parent.getComponentType().equals(nav.getComponentType()))     return (NavNode)nav;
  }
  return null;
}

Fixed version (ground truth):
/** 
 * Return the Simple/Complex/Service navNode in the latest library that matches the type of this node. 
 * @param parent
 */
public NavNode getLatestNavNode(ComponentNode node){
  Node parent=node.getOwningNavNode();
  for (  Node nav : getHead().getChildren()) {
    if (parent.getComponentType().equals(nav.getComponentType()))     return (NavNode)nav;
  }
  return null;
}
Program: 136433
Project: 136433
Buggy source:
public boolean isMinor(){
  return head.isMinorVersion();
}

Fixed version (ground truth):
public boolean isMinor(){
  return getHead().isMinorVersion();
}
Program: 136434
Project: 136434
Buggy source:
/** 
 * All members of the chain must have the same name, base namespace and major version number.
 */
@Override public String getIdentity(){
  String identity="String_Node_Str";
  if (head != null) {
    NamespaceHandler handler=head.getNsHandler();
    if (handler != null)     identity=makeIdentity();
  }
  return identity;
}

Fixed version (ground truth):
/** 
 * All members of the chain must have the same name, base namespace and major version number.
 */
@Override public String getIdentity(){
  String identity="String_Node_Str";
  if (getHead() != null) {
    NamespaceHandler handler=getHead().getNsHandler();
    if (handler != null)     identity=makeIdentity();
  }
  return identity;
}
Program: 136435
Project: 136435
Buggy source:
public boolean isMajor(){
  return head.isMajorVersion();
}

Fixed version (ground truth):
public boolean isMajor(){
  return getHead().isMajorVersion();
}
Program: 136436
Project: 136436
Buggy source:
public boolean isPatch(){
  return head.isPatchVersion();
}

Fixed version (ground truth):
public boolean isPatch(){
  return getHead().isPatchVersion();
}