 				return
 			}
 
-			switch (Dependency.fromScanner(scanner)) {
+			switch (Dependency<VersionSpecifier>.fromScanner(scanner)) {
 			case let .Success(dep):
 				cartfile.dependencies.append(dep.unbox)
 

		return success(self(major: major!, minor: minor ?? 0, patch: patch ?? 0))
	}
}

public func <(lhs: Version, rhs: Version) -> Bool {
    return lexicographicalCompare(lhs.components, rhs.components)

	}
}

/// An abstract type representing a way to specify versions.
public protocol VersionType: Scannable, Equatable {}

/// Represents a single dependency of a project.
public struct Dependency<V: VersionType>: Equatable {
	/// The GitHub repository in which this dependency lives.
	public var repository: Repository

	/// The version(s) that are required to satisfy this dependency.
	public var version: V
}

public func ==<V>(lhs: Dependency<V>, rhs: Dependency<V>) -> Bool {
	return lhs.repository == rhs.repository && lhs.version == rhs.version
}

