The opaque type is dangerous, and rarely useful. However, there are particular times when an opaque type is the only way to solve a problem. When a SIDL file uses an opaque type, Babel guarantees only bits will be relayed exactly between caller and callee. If there is a need to pass more information than an opaque provides, than the developer can simply pass a pointer to that information.
Use of a opaque carries a heavy penalty.
When Babel matures enough to support distributed computing,
any method calls with opaque in the argument list
(or return type) will be restricted to in-process calls only.