 }
 
 /// Converts a CXToken to a Token, returning `nil` if it was unsuccessful
-func convertToken(_ clang: CXToken) -> Token {
+public func convertToken(_ clang: CXToken) -> Token {
   switch clang_getTokenKind(clang) {
   case CXToken_Punctuation: return PunctuationToken(clang: clang)
   case CXToken_Keyword: return KeywordToken(clang: clang)


/// Represents a half-open character range in the source code.
public struct SourceRange {
  let clang: CXSourceRange
  
  /// Retrieve a source location representing the first character within a
  /// source range.

  /// Retrieve a source range that covers the given token.
  /// - param translationUnit: The translation unit in which you're looking
  ///                          for this token.
  public func range(in translationUnit: TranslationUnit) -> SourceRange {
    return SourceRange(clang: clang_getTokenExtent(translationUnit.clang,
                                                   clang))
  }
