=== tests/cases/compiler/lib/lib.d.ts ===
declare module "lib/result" {
>"lib/result" : Symbol("lib/result", Decl(lib.d.ts, --, --))

    export type Result<E extends Error, T> = (E & Failure<E>) | (T & Success<T>);
>Result : Symbol(Result, Decl(lib.d.ts, --, --))
>E : Symbol(E, Decl(lib.d.ts, --, --))
>Error : Symbol(Error, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
>T : Symbol(T, Decl(lib.d.ts, --, --))
>E : Symbol(E, Decl(lib.d.ts, --, --))
>Failure : Symbol(Failure, Decl(lib.d.ts, --, --))
>E : Symbol(E, Decl(lib.d.ts, --, --))
>T : Symbol(T, Decl(lib.d.ts, --, --))
>Success : Symbol(Success, Decl(lib.d.ts, --, --))
>T : Symbol(T, Decl(lib.d.ts, --, --))

    export interface Failure<E extends Error> { }
>Failure : Symbol(Failure, Decl(lib.d.ts, --, --))
>E : Symbol(E, Decl(lib.d.ts, --, --))
>Error : Symbol(Error, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))

    export interface Success<T> { }
>Success : Symbol(Success, Decl(lib.d.ts, --, --))
>T : Symbol(T, Decl(lib.d.ts, --, --))
}

=== tests/cases/compiler/src/datastore_result.ts ===
import { Result } from "lib/result";
>Result : Symbol(Result, Decl(datastore_result.ts, 0, 8))

export type T<T> = Result<Error, T>;
>T : Symbol(T, Decl(datastore_result.ts, 0, 36))
>T : Symbol(T, Decl(datastore_result.ts, 2, 14))
>Result : Symbol(Result, Decl(datastore_result.ts, 0, 8))
>Error : Symbol(Error, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
>T : Symbol(T, Decl(datastore_result.ts, 2, 14))

=== tests/cases/compiler/src/conditional_directive_field.ts ===
import * as DatastoreResult from "src/datastore_result";
>DatastoreResult : Symbol(DatastoreResult, Decl(conditional_directive_field.ts, 0, 6))

export const build = (): DatastoreResult.T<string> => {
>build : Symbol(build, Decl(conditional_directive_field.ts, 2, 12))
>DatastoreResult : Symbol(DatastoreResult, Decl(conditional_directive_field.ts, 0, 6))
>T : Symbol(DatastoreResult.T, Decl(datastore_result.ts, 0, 36))

	return null;
};

