Program: 65199
Project: 65199
Buggy source:
/** 
 * Get a property from the JAXBMarshaller. Attempting to get any unsupported property will result in a javax.xml.bind.PropertyException  See <a href="#supportedProps">Supported Properties</a>.  
 */
public Object getProperty(String key) throws PropertyException {
  if (key == null) {
    throw new IllegalArgumentException();
  }
  if (key.equals(UnmarshallerProperties.MEDIA_TYPE)) {
    return xmlUnmarshaller.getMediaType().getName();
  }
 else   if (key.equals(UnmarshallerProperties.JSON_ATTRIBUTE_PREFIX)) {
    return xmlUnmarshaller.getAttributePrefix();
  }
 else   if (key.equals(UnmarshallerProperties.JSON_INCLUDE_ROOT)) {
    return xmlUnmarshaller.isIncludeRoot();
  }
 else   if (key.equals(UnmarshallerProperties.JSON_NAMESPACE_SEPARATOR)) {
    return xmlUnmarshaller.getNamespaceSeparator();
  }
 else   if (key.equals(UnmarshallerProperties.JSON_NAMESPACE_PREFIX_MAPPER)) {
    if (xmlUnmarshaller.getNamespaceResolver() == null) {
      return null;
    }
    if (xmlUnmarshaller.getNamespaceResolver() instanceof PrefixMapperNamespaceResolver) {
      PrefixMapperNamespaceResolver wrapper=(PrefixMapperNamespaceResolver)xmlUnmarshaller.getNamespaceResolver();
      return wrapper.getPrefixMapper();
    }
 else {
      Map<String,String> nsMap=new HashMap<String,String>();
      Map<String,String> prefixesToNS=xmlUnmarshaller.getNamespaceResolver().getPrefixesToNamespaces();
      Iterator<Entry<String,String>> namesapcesIter=prefixesToNS.entrySet().iterator();
      for (int i=0; i < prefixesToNS.size(); i++) {
        Entry<String,String> nextEntry=namesapcesIter.next();
        nsMap.put(nextEntry.getValue(),nextEntry.getKey());
      }
      return nsMap;
    }
  }
 else   if (key.equals(UnmarshallerProperties.JSON_VALUE_WRAPPER)) {
    return xmlUnmarshaller.getValueWrapper();
  }
 else   if (UnmarshallerProperties.ID_RESOLVER.equals(key)) {
    return xmlUnmarshaller.getIDResolver();
  }
 else   if (SUN_ID_RESOLVER.equals(key) || SUN_JSE_ID_RESOLVER.equals(key)) {
    IDResolverWrapper wrapper=(IDResolverWrapper)xmlUnmarshaller.getIDResolver();
    return wrapper.getResolver();
  }
  throw new PropertyException(key);
}

Fixed version (ground truth):
/** 
 * Get a property from the JAXBMarshaller. Attempting to get any unsupported property will result in a javax.xml.bind.PropertyException  See <a href="#supportedProps">Supported Properties</a>.  
 */
public Object getProperty(String key) throws PropertyException {
  if (key == null) {
    throw new IllegalArgumentException();
  }
  if (key.equals(UnmarshallerProperties.MEDIA_TYPE)) {
    return xmlUnmarshaller.getMediaType();
  }
 else   if (key.equals(UnmarshallerProperties.JSON_ATTRIBUTE_PREFIX)) {
    return xmlUnmarshaller.getAttributePrefix();
  }
 else   if (key.equals(UnmarshallerProperties.JSON_INCLUDE_ROOT)) {
    return xmlUnmarshaller.isIncludeRoot();
  }
 else   if (key.equals(UnmarshallerProperties.JSON_NAMESPACE_SEPARATOR)) {
    return xmlUnmarshaller.getNamespaceSeparator();
  }
 else   if (key.equals(UnmarshallerProperties.JSON_NAMESPACE_PREFIX_MAPPER)) {
    if (xmlUnmarshaller.getNamespaceResolver() == null) {
      return null;
    }
    if (xmlUnmarshaller.getNamespaceResolver() instanceof PrefixMapperNamespaceResolver) {
      PrefixMapperNamespaceResolver wrapper=(PrefixMapperNamespaceResolver)xmlUnmarshaller.getNamespaceResolver();
      return wrapper.getPrefixMapper();
    }
 else {
      Map<String,String> nsMap=new HashMap<String,String>();
      Map<String,String> prefixesToNS=xmlUnmarshaller.getNamespaceResolver().getPrefixesToNamespaces();
      Iterator<Entry<String,String>> namesapcesIter=prefixesToNS.entrySet().iterator();
      for (int i=0; i < prefixesToNS.size(); i++) {
        Entry<String,String> nextEntry=namesapcesIter.next();
        nsMap.put(nextEntry.getValue(),nextEntry.getKey());
      }
      return nsMap;
    }
  }
 else   if (key.equals(UnmarshallerProperties.JSON_VALUE_WRAPPER)) {
    return xmlUnmarshaller.getValueWrapper();
  }
 else   if (UnmarshallerProperties.ID_RESOLVER.equals(key)) {
    return xmlUnmarshaller.getIDResolver();
  }
 else   if (SUN_ID_RESOLVER.equals(key) || SUN_JSE_ID_RESOLVER.equals(key)) {
    IDResolverWrapper wrapper=(IDResolverWrapper)xmlUnmarshaller.getIDResolver();
    return wrapper.getResolver();
  }
  throw new PropertyException(key);
}