 	}
 
 	private func describe(n: Int) -> String {
-		let description = String(count: n, repeatedValue: "\t" as Character) + "\(index): \(reason)"
+		let description = String(count: n, repeatedValue: "\t" as Character) + "\(sourcePos): \(reason)"
 		if children.count > 0 {
 			return description + "\n" + children.lazy.map { $0.describe(n + 1) }.joinWithSeparator("\n")
 		}


/// A composite error.
public enum Error<I: ForwardIndexType>: CustomStringConvertible {
	indirect case Branch(String, I, [Error])

	/// Constructs a leaf error, e.g. for terminal parsers.
	public static func leaf(reason: String, _ index: I) -> Error {
		return .Branch(reason, index, [])
	}

	public static func withReason(reason: String, _ index: I) -> (Error, Error) -> Error {
		return { Error(reason: reason, index: index, children: [$0, $1]) }
	}

	public init(reason: String, index: I, children: [Error]) {
		self = .Branch(reason, index, children)
	}



		}
	}

	public var sourcePos: SourcePos<I> {
		switch self {
		case let .Branch(_, sourcePos, _):
			return sourcePos
		}
	}

