[out] Parametertlb2java maps COM methods to Java methods with the same
      name. If name collisions occur you can use the -rename option. Java does not have a
      pass-by address syntax. To support COM methods that have
      [out] parameters, tlb2java generates an array type
      for [out] parameters. So, the pVal
      parameter in this IDL fragment:
      
GetBSTR([out] BSTR *pVal)
gets generated with this Java signature:
    public void GetBSTR(/*[out]*/ String[] p0) {
      Furthermore, the tlb2java generated code expects you to pass
      an array of size one as the parameter to receive the
      output. Below are some example calls to
      GetBSTR. Notice, if you pass null to
      the method, you will receive a COM exception.
      
private void useDual(Dual dual) {
    String[] out_v = { null };
    dual.GetBSTR(out_v);
    System.out.println(out_v[0]);
    String[] out_v2 = new String[1];
    dual.GetBSTR(out_v);
    System.out.println(out_v[0]);
    try {
        dual.GetBSTR(null);
    } catch (COMException e) {
        assertEquals("The parameter is incorrect.", e.getMessage());
    }
}