private Result configureSourceProjection() {
        LOGGER.info("Configuring SmithyBuild classpaths for the `source` projection");

        if (!projectionSourceTags.isEmpty()) {
            throw new SmithyBuildException("Projection source tags cannot be set when building a source projection.");
        }

        // Create a discovery classpath that ensures that sources are not added
        // to the discovery classpath.
        Set<String> computedDiscovery = new LinkedHashSet<>(libClasspath);
        computedDiscovery.removeAll(sources);

        if (!discover) {
            computedDiscovery.clear();
        }

        // Create the combined classpath that contains build and lib dependencies.
        Set<String> combined = new LinkedHashSet<>(libClasspath);
        combined.addAll(buildClasspath);

        String discoveryClasspath = String.join(System.getProperty(PATH_SEPARATOR), computedDiscovery);
        String classpath = String.join(System.getProperty(PATH_SEPARATOR), combined);
        return new Result(this, discoveryClasspath, classpath, sources);
    }
When building the source projection, classes will be loaded using
the lib and build tool classpath. However, models are discovered only
using the lib classpath, ensuring that consumers of the generated JAR
can find the required models using only the declared dependencies of
this package.

@return Returns the result.
smithy-cli/src/main/java/software/amazon/smithy/cli/BuildParameterBuilder.java