@Override
  public boolean accept(final ProjectRelationship<?, ?> rel) {
    // ACCEPT all BOMs, parents.
    switch (rel.getType()) {
      case PARENT:
        {
          return true;
        }
      case BOM:
        {
          return true;
        }
      case DEPENDENCY:
        {
          if (scope == null) {
            return false;
          }

          if (excludes != null && excludes.contains(rel.getTarget().asProjectRef())) {
            return false;
          }

          if (!rel.isManaged() && scope.implies(((DependencyRelationship) rel).getScope())) {
            return true;
          }
        }
      default:
    }

    return false;
  }
  @Override
  public String getLongId() {
    final StringBuilder sb =
        new StringBuilder("PARENTS || BOMS || DEPENDENCIES[scope:").append(scope.realName());
    if (excludes != null && !excludes.isEmpty()) {
      sb.append(", excludes:{");
      boolean first = true;
      for (final ProjectRef exclude : excludes) {
        if (!first) {
          sb.append(',');
        }

        first = false;
        sb.append(exclude);
      }

      sb.append("}");
    }

    sb.append(']');

    return sb.toString();
  }