Program: 68228
Project: 68228
Buggy source:
/** 
 * INTERNAL: Create and return the appropriate accessor based on the accessible  object given. Order of checking is important, careful when modifying or adding, check what the isXyz call does to determine if the accessor is of type xyz.
 */
protected MappingAccessor buildAccessor(MetadataAnnotatedElement accessibleObject){
  if (accessibleObject.isBasicCollection(getDescriptor())) {
    return new BasicCollectionAccessor(accessibleObject.getAnnotation(BasicCollection.class),accessibleObject,this);
  }
 else   if (accessibleObject.isBasicMap(getDescriptor())) {
    return new BasicMapAccessor(accessibleObject.getAnnotation(BasicMap.class),accessibleObject,this);
  }
 else   if (accessibleObject.isId(getDescriptor())) {
    return new IdAccessor(accessibleObject.getAnnotation(Id.class),accessibleObject,this);
  }
 else   if (accessibleObject.isVersion(getDescriptor())) {
    return new VersionAccessor(accessibleObject.getAnnotation(Version.class),accessibleObject,this);
  }
 else   if (accessibleObject.isBasic(getDescriptor())) {
    return new BasicAccessor(accessibleObject.getAnnotation(Basic.class),accessibleObject,this);
  }
 else   if (accessibleObject.isEmbedded(getDescriptor())) {
    return new EmbeddedAccessor(accessibleObject.getAnnotation(Embedded.class),accessibleObject,this);
  }
 else   if (accessibleObject.isEmbeddedId(getDescriptor())) {
    return new EmbeddedIdAccessor(accessibleObject.getAnnotation(EmbeddedId.class),accessibleObject,this);
  }
 else   if (accessibleObject.isTransformation(getDescriptor())) {
    return new TransformationAccessor(accessibleObject.getAnnotation(Transformation.class),accessibleObject,this);
  }
 else   if (accessibleObject.isManyToMany(getDescriptor())) {
    return new ManyToManyAccessor(accessibleObject.getAnnotation(ManyToMany.class),accessibleObject,this);
  }
 else   if (accessibleObject.isManyToOne(getDescriptor())) {
    return new ManyToOneAccessor(accessibleObject.getAnnotation(ManyToOne.class),accessibleObject,this);
  }
 else   if (accessibleObject.isOneToMany(getDescriptor())) {
    return new OneToManyAccessor(accessibleObject.getAnnotation(OneToMany.class),accessibleObject,this);
  }
 else   if (accessibleObject.isOneToOne(getDescriptor())) {
    return new OneToOneAccessor(accessibleObject.getAnnotation(OneToOne.class),accessibleObject,this);
  }
 else   if (accessibleObject.isVariableOneToOne(getDescriptor())) {
    return new VariableOneToOneAccessor(accessibleObject.getAnnotation(VariableOneToOne.class),accessibleObject,this);
  }
 else   if (getDescriptor().ignoreDefaultMappings() || ValueHolderInterface.class.isAssignableFrom(accessibleObject.getRawClass(getDescriptor()))) {
    return null;
  }
 else {
    return new BasicAccessor(accessibleObject.getAnnotation(Basic.class),accessibleObject,this);
  }
}

Fixed version (ground truth):
/** 
 * INTERNAL: Create and return the appropriate accessor based on the accessible  object given. Order of checking is important, careful when modifying or adding, check what the isXyz call does to determine if the accessor is of type xyz.
 */
protected MappingAccessor buildAccessor(MetadataAnnotatedElement accessibleObject){
  if (accessibleObject.isBasicCollection(getDescriptor())) {
    return new BasicCollectionAccessor(accessibleObject.getAnnotation(BasicCollection.class),accessibleObject,this);
  }
 else   if (accessibleObject.isBasicMap(getDescriptor())) {
    return new BasicMapAccessor(accessibleObject.getAnnotation(BasicMap.class),accessibleObject,this);
  }
 else   if (accessibleObject.isId(getDescriptor())) {
    return new IdAccessor(accessibleObject.getAnnotation(Id.class),accessibleObject,this);
  }
 else   if (accessibleObject.isVersion(getDescriptor())) {
    return new VersionAccessor(accessibleObject.getAnnotation(Version.class),accessibleObject,this);
  }
 else   if (accessibleObject.isBasic(getDescriptor())) {
    return new BasicAccessor(accessibleObject.getAnnotation(Basic.class),accessibleObject,this);
  }
 else   if (accessibleObject.isEmbedded(getDescriptor())) {
    return new EmbeddedAccessor(accessibleObject.getAnnotation(Embedded.class),accessibleObject,this);
  }
 else   if (accessibleObject.isEmbeddedId(getDescriptor())) {
    return new EmbeddedIdAccessor(accessibleObject.getAnnotation(EmbeddedId.class),accessibleObject,this);
  }
 else   if (accessibleObject.isTransformation(getDescriptor())) {
    return new TransformationAccessor(accessibleObject.getAnnotation(Transformation.class),accessibleObject,this);
  }
 else   if (accessibleObject.isManyToMany(getDescriptor())) {
    return new ManyToManyAccessor(accessibleObject.getAnnotation(ManyToMany.class),accessibleObject,this);
  }
 else   if (accessibleObject.isManyToOne(getDescriptor())) {
    return new ManyToOneAccessor(accessibleObject.getAnnotation(ManyToOne.class),accessibleObject,this);
  }
 else   if (accessibleObject.isOneToMany(getDescriptor())) {
    return new OneToManyAccessor(accessibleObject.getAnnotation(OneToMany.class),accessibleObject,this);
  }
 else   if (accessibleObject.isOneToOne(getDescriptor())) {
    return new OneToOneAccessor(accessibleObject.getAnnotation(OneToOne.class),accessibleObject,this);
  }
 else   if (accessibleObject.isVariableOneToOne(getDescriptor())) {
    return new VariableOneToOneAccessor(accessibleObject.getAnnotation(VariableOneToOne.class),accessibleObject,this);
  }
 else   if (getDescriptor().ignoreDefaultMappings()) {
    return null;
  }
 else {
    return new BasicAccessor(accessibleObject.getAnnotation(Basic.class),accessibleObject,this);
  }
}