docs: public List<Dependency> getDependencies(List<String> scopes) {
          log.debug( "Valid scopes: {}", scopes );
          List<Dependency> dependencies = new ArrayList<Dependency>();
  
          for (Dependency dependency : getMavenModel().getDependencies()) {
  
              // Substitute Properties
              // XXX: There has to be a way maven handles this automatically
              log.debug( "Project properties: {} ", this.mavenModel.getProperties() );
              String artifactId = substituteProperty(dependency.getArtifactId());
              String groupId    = substituteProperty(dependency.getGroupId());
              String version    = substituteProperty(dependency.getVersion());
              String type       = substituteProperty(dependency.getType());
              String classifier = substituteProperty(dependency.getClassifier());
              String systemPath = substituteProperty(dependency.getSystemPath());
  
              dependency.setSystemPath(systemPath);
              dependency.setArtifactId(artifactId);
              dependency.setGroupId(groupId);
              dependency.setVersion(version);
              dependency.setType(type);
              dependency.setClassifier( classifier );
  
              dependencies.add(dependency);
          }
  
  
          if ( scopes == null ) {
              scopes = Arrays.asList( "compile", "runtime" );
          }
  
          for ( Iterator<Dependency> iterator = dependencies.iterator(); iterator.hasNext(); ) {
              Dependency dependency = iterator.next();
  
              String scope = dependency.getScope();
  
              // Default scope for dependencies is compile
              if ( scope == null ) {
                  scope = "compile";
              }
  
              if ( !scopes.contains( scope ) ) {
                  log.debug( "Removing {} with scope {}", dependency, dependency.getScope() );
                  iterator.remove();
              }
          }
  
          return dependencies;
      }