anchor.diff:        return dir.getChild("custom-project-config.txt").exists();
      }
   
  +   @Override
  +   public Iterable<Class<? extends BuildSystemFacet>> getProvidedFacetTypes() {
  +      return Arrays.asList(CustomBuildSystemFacet.class);
  +   }
  +
  +   @Override
  +   public int priority()
  +      return 0;
  +   }
   }
   ----
   
  
positive.code: +
  In summary, the `FacetFactory` and `ProjectFactory` services will recursively check for and install missing prerequisite `ProjectFacet` types, before proceeding to install the requsted facet type. This allows for very simple dependency management, and avoids many opportunities for `NullPointerException`.
  
  ProjectLocator services for custom project types::
  If you wish to implement a custom project type in your addon, you will need to use the `ProjectLocator` service API. Each time a method in the `ProjectFactory` is called, all available `ProjectLocator` instances are queried until a valid project result is found.
  +
  [source,java]
  ----
  public class CustomProjectLocator implements ProjectLocator {
  
     @Inject
     private FacetFactory factory;
  
     @Override
     public Project createProject(final DirectoryResource dir) {
  
negative.code: 
  
  Consistent programming experience::
   Because the Project API provides an abstract model for interacting with existing and creating new projects, it is used in a number of addons and should be considered the standard approach for project manipulation.