Program: 39648
Project: 39648
Buggy source:
@Override protected Chromattic boot(Options options,Set<Class> classes) throws BuilderException {
  TypeResolver<Type> typeResolver=TypeResolverImpl.create(JavaLangReflectReflectionModel.getInstance());
  SimpleTypeResolver propertyTypeResolver=new SimpleTypeResolver();
  TypeMappingDomain mappingBuilder=new TypeMappingDomain(propertyTypeResolver,true);
  Set<NodeTypeMapping> mappings=new HashSet<NodeTypeMapping>();
  for (  Class clazz : classes) {
    ClassTypeInfo typeInfo=(ClassTypeInfo)typeResolver.resolve(clazz);
    mappingBuilder.add(typeInfo);
  }
  mappings.addAll(mappingBuilder.build());
  Boolean optimizeJCREnabled=options.getValue(JCR_OPTIMIZE_ENABLED);
  final boolean hasPropertyOptimized;
  if (optimizeJCREnabled != null) {
    hasPropertyOptimized=optimizeJCREnabled;
  }
 else {
    hasPropertyOptimized=options.getValue(JCR_OPTIMIZE_HAS_PROPERTY_ENABLED);
  }
  final boolean hasNodeOptimized;
  if (optimizeJCREnabled != null) {
    hasNodeOptimized=optimizeJCREnabled;
  }
 else {
    hasNodeOptimized=options.getValue(JCR_OPTIMIZE_HAS_NODE_ENABLED);
  }
  String rootNodePath;
  try {
    rootNodePath=Path.normalizeAbsolutePath(options.getValue(ROOT_NODE_PATH));
  }
 catch (  PathException e) {
    throw new BuilderException("String_Node_Str");
  }
  int rootCreateMode;
  if (options.getValue(CREATE_ROOT_NODE)) {
    boolean lazyCreateMode=options.getValue(LAZY_CREATE_ROOT_NODE);
    if (lazyCreateMode) {
      rootCreateMode=Domain.LAZY_CREATE_MODE;
    }
 else {
      rootCreateMode=Domain.CREATE_MODE;
    }
  }
 else {
    rootCreateMode=Domain.NO_CREATE_MODE;
  }
  boolean propertyCacheEnabled=options.getValue(PROPERTY_CACHE_ENABLED);
  boolean propertyReadAheadEnabled=options.getValue(PROPERTY_READ_AHEAD_ENABLED);
  Instrumentor instrumentor=create(options.getInstance(INSTRUMENTOR_CLASSNAME),Instrumentor.class);
  ObjectFormatter objectFormatter=create(options.getInstance(OBJECT_FORMATTER_CLASSNAME),ObjectFormatter.class);
  SessionLifeCycle sessionLifeCycle=create(options.getInstance(SESSION_LIFECYCLE_CLASSNAME),SessionLifeCycle.class);
  Domain domain=new Domain(propertyTypeResolver,mappings,instrumentor,objectFormatter,propertyCacheEnabled,propertyReadAheadEnabled,hasPropertyOptimized,hasNodeOptimized,rootNodePath,rootCreateMode);
  return new ChromatticImpl(domain,sessionLifeCycle);
}

Fixed version (ground truth):
@Override protected Chromattic boot(Options options,Set<Class> classes) throws BuilderException {
  TypeResolver<Type> typeResolver=TypeResolverImpl.create(JavaLangReflectReflectionModel.getInstance());
  SimpleTypeResolver propertyTypeResolver=new SimpleTypeResolver();
  TypeMappingDomain mappingBuilder=new TypeMappingDomain(propertyTypeResolver,true);
  Set<NodeTypeMapping> mappings=new HashSet<NodeTypeMapping>();
  for (  Class clazz : classes) {
    ClassTypeInfo typeInfo=(ClassTypeInfo)typeResolver.resolve(clazz);
    mappingBuilder.add(typeInfo);
  }
  mappings.addAll(mappingBuilder.build());
  Boolean optimizeJCREnabled=options.getValue(JCR_OPTIMIZE_ENABLED);
  final boolean hasPropertyOptimized;
  if (optimizeJCREnabled != null) {
    hasPropertyOptimized=optimizeJCREnabled;
  }
 else {
    hasPropertyOptimized=options.getValue(JCR_OPTIMIZE_HAS_PROPERTY_ENABLED);
  }
  final boolean hasNodeOptimized;
  if (optimizeJCREnabled != null) {
    hasNodeOptimized=optimizeJCREnabled;
  }
 else {
    hasNodeOptimized=options.getValue(JCR_OPTIMIZE_HAS_NODE_ENABLED);
  }
  String rootNodePath;
  try {
    rootNodePath=Path.normalizeAbsolutePath(options.getValue(ROOT_NODE_PATH));
  }
 catch (  PathException e) {
    throw new BuilderException("String_Node_Str");
  }
  int rootCreateMode;
  if (options.getValue(CREATE_ROOT_NODE)) {
    boolean lazyCreateMode=options.getValue(LAZY_CREATE_ROOT_NODE);
    if (lazyCreateMode) {
      rootCreateMode=Domain.LAZY_CREATE_MODE;
    }
 else {
      rootCreateMode=Domain.CREATE_MODE;
    }
  }
 else {
    rootCreateMode=Domain.NO_CREATE_MODE;
  }
  String rootNodeType=options.getValue(ROOT_NODE_TYPE);
  boolean propertyCacheEnabled=options.getValue(PROPERTY_CACHE_ENABLED);
  boolean propertyReadAheadEnabled=options.getValue(PROPERTY_READ_AHEAD_ENABLED);
  Instrumentor instrumentor=create(options.getInstance(INSTRUMENTOR_CLASSNAME),Instrumentor.class);
  ObjectFormatter objectFormatter=create(options.getInstance(OBJECT_FORMATTER_CLASSNAME),ObjectFormatter.class);
  SessionLifeCycle sessionLifeCycle=create(options.getInstance(SESSION_LIFECYCLE_CLASSNAME),SessionLifeCycle.class);
  Domain domain=new Domain(propertyTypeResolver,mappings,instrumentor,objectFormatter,propertyCacheEnabled,propertyReadAheadEnabled,hasPropertyOptimized,hasNodeOptimized,rootNodePath,rootCreateMode,rootNodeType);
  return new ChromatticImpl(domain,sessionLifeCycle);
}