Using Vine in 3-way interactions (was Re: Question on redirectors/whenMoreResolved in the 3-way case, in the middle vat)

Rob Withers <[email protected]> Sun, 01 Mar 2015 04:24:52 -0700
Newsgroups gmane.comp.lang.e.general
Message-ID <[email protected]>
--===============2599022600263236687==
Content-Type: text/html; charset=windows-1252
Content-Transfer-Encoding: quoted-printable

<html>
  <head>
    <meta content=3D"text/html; charset=3Dwindows-1252"
      http-equiv=3D"Content-Type">
  </head>
  <body bgcolor=3D"#FFFFFF" text=3D"#000000">
    Mark, your instincts were right on, it seems.=A0 I have an issue with
    my use of the Vine and on reflection it makes perfect sense. I am
    bending the send from Carol to Alice over to Bob, so as it is a
    3-way interaction, I need a Vine.=A0 In analyzing ELib code, you have
    9 references to the Vine's constructor, while I only have 7 (minus
    an extra unused constructor I have).=A0 It is going to require some
    digging to unearth what I am missing, but the direction is clear.=A0
    The place it blows up is in my ProxyResolver.resolve() method, as
    the WeakReference has lost the ref.=A0 However, this is not where the
    reference is maintained.=A0 I suspect it may be a lack of an
    IdentityManager.<br>
    <br>
    I republished my code to: <a class=3D"moz-txt-link-freetext" href=3D"=
https://github.com/tooantuh/pauwau">https://github.com/tooantuh/pauwau</a=
>.=A0 The
    tests pass, though there is an issue with the RefTests and
    TestPauwau2VatException, as well as this issue affecting
    TestPauwau3VatFollowOnSend.=A0 Additionally, the presentation tests
    need to be run one at a time as stopping and starting the
    Introducers can step on each other.<br>
    <br>
    thank you,<br>
    Robert<br>
    <br>
    <div class=3D"moz-cite-prefix">On 2/22/2015 8:02 PM, Mark S. Miller
      wrote:<br>
    </div>
    <blockquote
cite=3D"mid:CABHxS9hp0ay46GV3A7xy2dw1uj+FYzxeTVz=3Dun5UO=3DKEZsfPvA@mail.=
gmail.com"
      type=3D"cite">
      <div dir=3D"ltr">Have you looked at the Vine? Search for "Vine" at=A0=
<a
          moz-do-not-send=3D"true"
          href=3D"http://erights.org/elib/distrib/captp/index.html">http:=
//erights.org/elib/distrib/captp/index.html</a>
        <div>and in the source code of=A0<a moz-do-not-send=3D"true"
            href=3D"https://code.google.com/p/caja-captp/">https://code.g=
oogle.com/p/caja-captp/</a></div>
        <div><br>
        </div>
        <div>I don't quite understand your question, so I'm not sure if
          this is even relevant to the answer. Is it?</div>
        <div><br>
        </div>
        <div><br>
        </div>
      </div>
      <div class=3D"gmail_extra"><br>
        <div class=3D"gmail_quote">On Sun, Feb 22, 2015 at 5:51 PM, Rob
          Withers <span dir=3D"ltr">&lt;<a moz-do-not-send=3D"true"
              href=3D"mailto:[email protected]" target=3D"_blank=
">[email protected]</a>&gt;</span>
          wrote:<br>
          <blockquote class=3D"gmail_quote" style=3D"margin:0 0 0
            .8ex;border-left:1px #ccc solid;padding-left:1ex">
            <div bgcolor=3D"#FFFFFF" text=3D"#000000"> I found some more
              info: it looks as if the Ref in Alice's ProxyResolver is
              being GCed, before resolution from Bob.=A0 This is specific
              to my machinery, but knowing how Elib maintains a
              reference to the Ref, in this case, may help make mine
              better. How does Elib handle this?<br>
              <br>
              Thank you,<br>
              - Robert
              <div>
                <div class=3D"h5"><br>
                  <br>
                  <div>On 2/22/2015 6:19 PM, Rob Withers wrote:<br>
                  </div>
                  <blockquote type=3D"cite"> I am stuck, both
                    conceptually, as well as understanding code I wrote
                    a long while ago.=A0 I was hoping to gain a little
                    insight from the list of the insides of resolution
                    redirection in the 3-way case.=A0 The recent change I
                    have made results from my thinking I finally
                    understand the ordering that MirandaMethods ensure.=A0
                    I made changes such that a whenMoreResolved directly
                    follows the message that generates is by adding to
                    the front of the msg queue.=A0 <br>
                    <br>
                    In the 3-way case, Carol is sending a message to
                    Alice, passing Bob.=A0 Alice receives the message and
                    executes, which sends a message to Bob, then returns
                    the result to Carol.=A0 In Alice's vat, the
                    DelayedRedirector is resolved to the RemotePromise
                    of the call to Bob, the return of Alice's
                    computation and I think it sends whenMoreResolved to
                    the proxy of the new promise resolver of the send to
                    Bob.=A0 What little tracing I have I am posting below=
,
                    as well as the DelayedRedirector value() and the
                    ProxyResolver resolve() code, at the bottom.=A0
                    However, this is my question, what should the
                    redirector do in Alice's Vat to propagate the
                    resolution from Bob, back to Carol?<br>
                    <br>
                    Thank you,<br>
                    - Robert<br>
                    <br>
                    <br>
                    // There are 3 messages sent to Bob, from Alice:<br>
                    // =A0=A0=A0 1) getTheAnswer, which returns 42, <br>
                    // =A0=A0=A0 2) <b>hashCode, again 42</b> and <br>
                    //=A0=A0 =A0 3) <b>whenMoreResolved</b>, to forward t=
o
                    the redirector back in Alice.<br>
                    <br>
                    0 [main] INFO
                    cc.ganymede.pauwau.presentation.AbstractPauwauTest=A0
                    - 3 Introducers starting<br>
                    549 [main] INFO
                    cc.ganymede.pauwau.presentation.AbstractPauwauTest=A0
                    - 3 Introducers on the air<br>
                    4553 [main] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    sending message: DeliverMessage(receiverId: 0
                    answerId: -1 resolverId: -1 action: lookupSwiss
                    args:
                    [497273074681788564315291637588644948944089734358])<b=
r>
                    4952 [first-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    receiving message: DeliverMessage(receiverId: 0
                    answerId: -1 resolverId: null action: lookupSwiss
                    args:
                    [497273074681788564315291637588644948944089734358])<b=
r>
                    4958 [first-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    sending message: DeliverOnlyMessage(receiverId: 1
                    action: value args: [NearRefImpl(hash: 109537538,
                    receiver: TestObject)])<br>
                    4998 [third-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    receiving message: DeliverOnlyMessage(receiverId: 1
                    action: value args: [FarRefImpl(hash: 68783569)])<br>
                    5353 [main] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    sending message: DeliverMessage(receiverId: 0
                    answerId: -1 resolverId: -1 action: lookupSwiss
                    args:
                    [-686254831702855955980329529540587585277617841038])<=
br>
                    5593 [second-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    receiving message: DeliverMessage(receiverId: 0
                    answerId: -1 resolverId: null action: lookupSwiss
                    args:
                    [-686254831702855955980329529540587585277617841038])<=
br>
                    5593 [second-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    sending message: DeliverOnlyMessage(receiverId: 1
                    action: value args: [NearRefImpl(hash: 1530099003,
                    receiver: TestObject)])<br>
                    6201 [main] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    sending message: DeliverMessage(receiverId: -1
                    answerId: -2 resolverId: -2 action:
                    redirectForTheAnswer args:
                    [RemotePromiseRefImpl(hash: 1034568234)])<br>
                    6203 [main] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    sending message: DeliverMessage(receiverId: 0
                    answerId: -2 resolverId: -2 action: provideFor args:
                    [-568687285196004884954480990488973591228663758441,
                    RemotePromiseRefImpl(hash: 1034568234),
                    -676914875674370369045480105305401075435688776666])<b=
r>
                    6239 [main] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    sending message: DeliverMessage(receiverId: -2
                    answerId: -3 resolverId: -3 action: hashCode args:
                    [])<br>
                    6255 [second-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    receiving message: DeliverMessage(receiverId: 0
                    answerId: -2 resolverId: null action: provideFor
                    args:
                    [-568687285196004884954480990488973591228663758441,
                    NearRefImpl(hash: 1530099003, receiver: TestObject),
                    -676914875674370369045480105305401075435688776666])<b=
r>
                    6259 [second-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    sending message: DeliverOnlyMessage(receiverId: 2
                    action: value args: [NearRefImpl(hash: 1323165787,
                    receiver:
                    cc.ganymede.pauwau.presentation.lib.vat.Vine@4842def1=
)])<br>
                    6403 [first-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    sending message: DeliverMessage(receiverId: 0
                    answerId: -1 resolverId: -1 action: acceptFrom args:
                    [HouseAtreides:10003/-6879340178615732923349555673501=
02524989066643525,

                    -676914875674370369045480105305401075435688776666,
                    cc.ganymede.pauwau.presentation.lib.vat.Vine@6a8400ff=
])<br>
                    6410 [first-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    receiving message: DeliverMessage(receiverId: -1
                    answerId: -2 resolverId: null action:
                    redirectForTheAnswer args:
                    [RemotePromiseRefImpl(hash: 598908224)])<br>
                    6411 [first-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    receiving message: DeliverMessage(receiverId: -2
                    answerId: -3 resolverId: null action: hashCode args:
                    [])<br>
                    6411 [first-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    sending message: DeliverMessage(receiverId: -1
                    answerId: -2 resolverId: -2 action: getTheAnswer
                    args: [])<br>
                    6412 [first-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    sending message: DeliverMessage(receiverId: -2
                    answerId: -3 resolverId: -3 action: hashCode args:
                    [])<br>
                    6412 [first-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    sending message: DeliverOnlyMessage(receiverId: -2
                    action: whenMoreResolved args: [RedirectorProxy:
                    FarRefImpl(hash: 177595052)])<br>
                    6766 [second-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    receiving message: DeliverMessage(receiverId: 0
                    answerId: -1 resolverId: null action: acceptFrom
                    args:
                    [HouseAtreides:10003/-6879340178615732923349555673501=
02524989066643525,
                    -676914875674370369045480105305401075435688776666,
                    FarRefImpl(hash: 690984748)])<br>
                    6767 [second-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    receiving message: DeliverMessage(receiverId: -1
                    answerId: -2 resolverId: null action: getTheAnswer
                    args: [])<br>
                    6767 [second-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    receiving message: DeliverMessage(receiverId: -2
                    answerId: -3 resolverId: null action: hashCode args:
                    [])<br>
                    6767 [second-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    receiving message: DeliverOnlyMessage(receiverId: -2
                    action: whenMoreResolved args: [NearRefImpl(hash:
                    363771261, receiver: RedirectorProxy:
                    FarRefImpl(hash: 196981675))])<br>
                    6768 [second-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    sending message: DeliverOnlyMessage(receiverId: 2
                    action: value args: [NearRefImpl(hash: 1530099003,
                    receiver: TestObject)])<br>
                    6769 [second-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    sending message: DeliverOnlyMessage(receiverId: 3
                    action: value args: [NearRefImpl(hash: 790206055,
                    receiver: 42)])<br>
                    <b>6770 [second-vat] DEBUG
                      cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                      sending message: DeliverOnlyMessage(receiverId: 4
                      action: value args: [NearRefImpl(hash: 878991039,
                      receiver: 42)])</b><b><br>
                    </b><b>6771 [second-vat] DEBUG
                      cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                      sending message: DeliverOnlyMessage(receiverId: 5
                      action: value args: [NearRefImpl(hash: 790206055,
                      receiver: 42)])</b><b><br>
                    </b>6805 [first-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    receiving message: DeliverOnlyMessage(receiverId: 2
                    action: value args: [FarRefImpl(hash: 1332394016)])<b=
r>
                    6805 [first-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    receiving message: DeliverOnlyMessage(receiverId: 3
                    action: value args: [42])<br>
                    <b>6805 [first-vat] DEBUG
                      cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                      receiving message: DeliverOnlyMessage(receiverId:
                      4 action: value args: [42])</b><b><br>
                    </b><b>6805 [first-vat] DEBUG
                      cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                      receiving message: DeliverOnlyMessage(receiverId:
                      5 action: value args: [42])</b><b><br>
                    </b>6806 [first-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    sending message: DeliverOnlyMessage(receiverId: 3
                    action: value args: [42])<br>
                    19932 [first-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    sending message: GCAnswerMessage(answerId: -1)<br>
                    19934 [first-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    sending message: GCAnswerMessage(answerId: -2)<br>
                    19934 [first-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    sending message: GCAnswerMessage(answerId: -3)<br>
                    19984 [second-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    receiving message: GCAnswerMessage(answerId: -1)<br>
                    19984 [second-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    receiving message: GCAnswerMessage(answerId: -2)<br>
                    19985 [second-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    receiving message: GCAnswerMessage(answerId: -3)<br>
                    29679 [third-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    sending message: GCAnswerMessage(answerId: -1)<br>
                    29680 [third-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    receiving message: DeliverOnlyMessage(receiverId: 1
                    action: value args: [FarRefImpl(hash: 734824022)])<br=
>
                    29680 [third-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    receiving message: DeliverOnlyMessage(receiverId: 2
                    action: value args: [FarRefImpl(hash: 1223086084)])<b=
r>
                    29680 [third-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    receiving message: DeliverOnlyMessage(receiverId: 3
                    action: value args: [42])<br>
                    29681 [third-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    sending message: GCAnswerMessage(answerId: -1)<br>
                    29681 [third-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    sending message: GCAnswerMessage(answerId: -2)<br>
                    29682 [third-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    sending message: GCAnswerMessage(answerId: -2)<br>
                    29722 [second-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    receiving message: GCAnswerMessage(answerId: -1)<br>
                    29722 [second-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    receiving message: GCAnswerMessage(answerId: -2)<br>
                    29726 [first-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    receiving message: GCAnswerMessage(answerId: -1)<br>
                    29726 [first-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                    receiving message: GCAnswerMessage(answerId: -2)<br>
                    <br>
                    <br>
                    <br>
                    <b>// DelayedRedirector code:</b><br>
                    =A0=A0=A0 public void value(Object obj) throws
                    NotResolvedException {<br>
                    =A0=A0=A0 =A0=A0=A0 if(resolver =3D=3D null)<br>
                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 return;<br>
                    <br>
                    =A0=A0=A0 =A0=A0=A0 if(resolver.isFresh()) {<br>
                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 resolver.resolve(obj);<=
br>
                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 resolver =3D null;<br>
                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 return;<br>
                    =A0=A0=A0 =A0=A0=A0 }<br>
                    <br>
                    =A0=A0=A0 =A0=A0=A0 if(RefUtil.isLocal(obj)) {<br>
                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 resolver.resolve(obj);<=
br>
                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 resolver =3D null;<br>
                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 return;<br>
                    =A0=A0=A0 =A0=A0=A0 }<br>
                    <br>
                    =A0=A0=A0 =A0=A0=A0 Ref ref =3D (Ref)RefUtil.wrap(obj=
,
                    resolver.handler.getVat());<br>
                    =A0=A0=A0 =A0=A0=A0 boolean isLocalToResolverScope =3D=
 false;<br>
                    =A0=A0=A0 =A0=A0=A0 try {<br>
                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 isLocalToResolverScope =
=3D
                    RefUtil.isLocalToScope(resolver.handler.scope, ref);<=
br>
                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 if(isLocalToResolverSco=
pe) {<br>
                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 resolver.reso=
lve(obj);<br>
                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 resolver =3D =
null;<br>
                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 return;<br>
                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 }<br>
                    =A0=A0=A0 =A0=A0=A0 } catch (Exception e) {<br>
                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 reactToLostClient(e);<b=
r>
                    =A0=A0=A0 =A0=A0=A0 }<br>
                    <br>
                    =A0=A0=A0 =A0=A0=A0 Pair&lt;PromiseRefImpl, Resolver&=
gt; pair =3D
                    RefUtil.promise(ref.getVat());<br>
                    =A0=A0=A0 =A0=A0=A0 Redirector redirector =3D new
                    Redirector((ProxyResolver) pair.second());<br>
                    =A0=A0=A0 =A0=A0=A0
                    resolver.getProxy().whenResolved(redirector);<br>
                    =A0=A0=A0 =A0=A0=A0 resolver.resolve(pair.first());<b=
r>
                    =A0=A0=A0 =A0=A0=A0 resolver =3D null;<br>
                    =A0=A0=A0 }<br>
                    <br>
                    <br>
                    <b>// ProxyResolver code:</b><br>
                    =A0=A0=A0 public void resolve(final Object result) th=
rows
                    NotResolvedException {<br>
                    =A0=A0=A0 =A0=A0=A0 handler.scope.getVat().sendRunnab=
le(new
                    Runnable() {<br>
                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 public void run() {<br>
                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 if(ref =3D=3D=
 null)<br>
                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 ret=
urn;<br>
                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 if(ref.get() =
=3D=3D null)<br>
                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 ret=
urn;<br>
                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0
                    if(Exception.class.isAssignableFrom(result.getClass()=
))
                    {<br>
                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 }<br>
                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 Ref newRef =3D=
 RefUtil.wrap(result,
                    handler.scope.getVat());<br>
                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 try {<br>
                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 if =
(newRef =3D=3D null)<br>
                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0 =A0=A0=A0
                    ref.get().getRefImpl().becomeContext(null);<br>
                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 els=
e<br>
                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0
                    ref.get().getRefImpl().becomeContext(newRef.getRefImp=
l());<br>
                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0
                    if(RefUtil.isResolved(newRef.getRefImpl())) {<br>
                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0 handler =3D null;<br>
                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0 ref =3D null;<br>
                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 }<b=
r>
                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 } catch (NotR=
esolvedException e) {<br>
                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 // =
TODO Auto-generated catch
                    block<br>
                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 e.p=
rintStackTrace();<br>
                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 }<br>
                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 }});<br>
                    =A0=A0=A0 }<br>
                    <br>
                  </blockquote>
                  <br>
                </div>
              </div>
            </div>
            <br>
            _______________________________________________<br>
            e-lang mailing list<br>
            <a moz-do-not-send=3D"true"
              href=3D"mailto:[email protected]">[email protected]=
.org</a><br>
            <a moz-do-not-send=3D"true"
              href=3D"http://www.eros-os.org/mailman/listinfo/e-lang"
              target=3D"_blank">http://www.eros-os.org/mailman/listinfo/e=
-lang</a><br>
            <br>
          </blockquote>
        </div>
        <br>
        <br clear=3D"all">
        <div><br>
        </div>
        -- <br>
        <div class=3D"gmail_signature">=A0 =A0 Cheers,<br>
          =A0 =A0 --MarkM</div>
      </div>
      <br>
      <fieldset class=3D"mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap=3D"">_______________________________________________
e-lang mailing list
<a class=3D"moz-txt-link-abbreviated" href=3D"mailto:[email protected]=
org">[email protected]</a>
<a class=3D"moz-txt-link-freetext" href=3D"http://www.eros-os.org/mailman=
/listinfo/e-lang">http://www.eros-os.org/mailman/listinfo/e-lang</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>

--===============2599022600263236687==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
e-lang mailing list
[email protected]
http://www.eros-os.org/mailman/listinfo/e-lang

--===============2599022600263236687==--