library;
import self as self;
import "dart:async" as asy;
import "dart:typed_data" as typ;
import "dart:core" as core;

import "dart:typed_data";

static method getBinaryTestProto() → asy::Future<typ::Uint8List>
  return self::readFileWeb("test.binary.pb");
static method readFileWeb(core::String path) → asy::Future<typ::Uint8List> async /* emittedValueType= typ::Uint8List */ {
  throw "";
}
static method runBench([typ::Uint8List? data = #C1]) → void async /* emittedValueType= void */ {
  data == null ?{typ::Uint8List?} data = await self::getBinaryTestProto() : null;
  core::print(data{typ::Uint8List});
}
static method main() → void async /* emittedValueType= void */ {
  typ::Uint8List data = await self::getBinaryTestProto();
  core::print("File successfully read, contents: ${data}");
  self::runBench(data);
}

constants  {
  #C1 = null
}
