text: console.log("SideEffects.None=" + binaryen.SideEffects.None);
  console.log("SideEffects.Branches=" + binaryen.SideEffects.Branches);
  console.log("SideEffects.Calls=" + binaryen.SideEffects.Calls);
  console.log("SideEffects.ReadsLocal=" + binaryen.SideEffects.ReadsLocal);
  console.log("SideEffects.WritesLocal=" + binaryen.SideEffects.WritesLocal);
  console.log("SideEffects.ReadsGlobal=" + binaryen.SideEffects.ReadsGlobal);
  console.log("SideEffects.WritesGlobal=" + binaryen.SideEffects.WritesGlobal);
  console.log("SideEffects.ReadsMemory=" + binaryen.SideEffects.ReadsMemory);
  console.log("SideEffects.WritesMemory=" + binaryen.SideEffects.WritesMemory);
  console.log("SideEffects.ReadsTable=" + binaryen.SideEffects.ReadsTable);
  console.log("SideEffects.WritesTable=" + binaryen.SideEffects.WritesTable);
  console.log("SideEffects.ImplicitTrap=" + binaryen.SideEffects.ImplicitTrap);
  console.log("SideEffects.IsAtomic=" + binaryen.SideEffects.IsAtomic);
  console.log("SideEffects.Throws=" + binaryen.SideEffects.Throws);
  console.log("SideEffects.DanglingPop=" + binaryen.SideEffects.DanglingPop);
  console.log("SideEffects.TrapsNeverHappen=" + binaryen.SideEffects.TrapsNeverHappen);
  console.log("SideEffects.Any=" + binaryen.SideEffects.Any);
  
  var module = new binaryen.Module();
  assert(
    binaryen.getSideEffects(
      module.i32.const(1),
      module
    )
    ==
    binaryen.SideEffects.None
  );
  assert(
    binaryen.getSideEffects(
      module.br("test"),
      module
    )
    ==
    binaryen.SideEffects.Branches
  );
  assert(
    binaryen.getSideEffects(
      module.call("test", [], binaryen.i32),
      module
    )
    ==
    binaryen.SideEffects.Calls
  );
  assert(
    binaryen.getSideEffects(
      module.local.get("test", binaryen.i32),
      module
    )
    ==
    binaryen.SideEffects.ReadsLocal
  );
  assert(
    binaryen.getSideEffects(
      module.local.set("test",
        module.i32.const(1)
      ),
      module
    )
    ==
    binaryen.SideEffects.WritesLocal
  );
  
  // Add a global for the test, as computing side effects will look for it.
  module.addGlobal('test', binaryen.i32, true, module.i32.const(42));
  
  assert(
    binaryen.getSideEffects(
      module.global.get("test", binaryen.i32),
      module
    )
    ==
    binaryen.SideEffects.ReadsGlobal
  );
  assert(
    binaryen.getSideEffects(
      module.global.set("test", module.i32.const(1)),
      module
    )
    ==
    binaryen.SideEffects.WritesGlobal
  );
  assert(
    binaryen.getSideEffects(
      module.i32.load(0, 0,
        module.i32.const(0)
      ),
      module
    )
    ==
    binaryen.SideEffects.ReadsMemory | binaryen.SideEffects.ImplicitTrap
  );
  assert(
    binaryen.getSideEffects(
      module.i32.store(0, 0,
        module.i32.const(0),
        module.i32.const(1)
      ),
      module
    )
    ==
    binaryen.SideEffects.WritesMemory | binaryen.SideEffects.ImplicitTrap
  );
  assert(
    binaryen.getSideEffects(
      module.i32.div_s(
        module.i32.const(1),
        module.i32.const(0)
      ),
      module
    )
    ==
    binaryen.SideEffects.ImplicitTrap
  );
  
  // If exception handling feature is enabled, calls can throw
  module.setFeatures(binaryen.Features.All);
  assert(
    binaryen.getSideEffects(
      module.call("test", [], binaryen.i32),
      module
    )
    ==
    binaryen.SideEffects.Calls | binaryen.SideEffects.Throws
  );
  
  assert(
    binaryen.getSideEffects(
      module.drop(module.i32.pop()),
      module
    )
    ==
    binaryen.SideEffects.DanglingPop
  );
  