anchor.diff:  //    inherit Node("Decorator", ?loc = loc)
   //    member __.Value = value
   //
  -//type DirectiveLiteral(value, ?loc) =
  -//    inherit Literal("DirectiveLiteral", ?loc = loc)
  -//    member __.Value: string = value
  +type DirectiveLiteral(value, ?loc) =
  +    inherit Literal("DirectiveLiteral", ?loc = loc)
  +    member __.Value: string = value
  +    override _.Print(_) = failwith "not implemented"
   
   /// e.g. "use strict";
  -//type Directive(value, ?loc) =
  -//    inherit Node("Directive", ?loc = loc)
  -//    new (str, ?loc) = Directive(DirectiveLiteral str, ?loc = loc)
  -//    member __.Value: DirectiveLiteral = value
  +type Directive(value, ?loc) =
  +    inherit Node("Directive", ?loc = loc)
  +    new (str, ?loc) = Directive(DirectiveLiteral str, ?loc = loc)
  +    member __.Value: DirectiveLiteral = value
  +    override _.Print(_) = failwith "not implemented"
   
   // Program
   
  
positive.code: /// A block statement, i.e., a sequence of statements surrounded by braces.
  type BlockStatement(body, ?loc) = // ?directives_,
      inherit Statement("BlockStatement", ?loc = loc)
  //    let directives = defaultArg directives_ [||]
      member __.Body: Statement array = body
  //    member __.Directives: Directive array = directives
      override _.Print(printer) =
          printer.PrintBlock(body)
  
  
negative.code:     let logs = defaultArg logs_ Map.empty
      let sourceFiles = defaultArg sourceFiles_ [||]
      let dependencies = defaultArg dependencies_ [||]
      let directives = [||] // defaultArg directives_ [||]
      member __.Directives: Directive array = directives
      member __.SourceType: string = sourceType
      member __.Body: U2<Statement, ModuleDeclaration> array = body
      // Properties below don't belong to babel specs
  