Question on redirectors/whenMoreResolved in the 3-way case, in the middle vat

Rob Withers <[email protected]> Sun, 22 Feb 2015 18:19:59 -0700
Newsgroups gmane.comp.lang.e.general
Message-ID <[email protected]>
--===============3735225354366128329==
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable

<html>
  <head>

    <meta http-equiv=3D"content-type" content=3D"text/html; charset=3Dutf=
-8">
  </head>
  <body bgcolor=3D"#FFFFFF" text=3D"#000000">
    I am stuck, both conceptually, as well as understanding code I wrote
    a long while ago.=C2=A0 I was hoping to gain a little insight from th=
e
    list of the insides of resolution redirection in the 3-way case.=C2=A0
    The recent change I have made results from my thinking I finally
    understand the ordering that MirandaMethods ensure.=C2=A0 I made chan=
ges
    such that a whenMoreResolved directly follows the message that
    generates is by adding to the front of the msg queue.=C2=A0 <br>
    <br>
    In the 3-way case, Carol is sending a message to Alice, passing
    Bob.=C2=A0 Alice receives the message and executes, which sends a mes=
sage
    to Bob, then returns the result to Carol.=C2=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.=C2=A0 What little tracing I have I am posting below, as =
well
    as the DelayedRedirector value() and the ProxyResolver resolve()
    code, at the bottom.=C2=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>
    // =C2=A0=C2=A0=C2=A0 1) getTheAnswer, which returns 42, <br>
    // =C2=A0=C2=A0=C2=A0 2) <b>hashCode, again 42</b> and <br>
    //=C2=A0=C2=A0 =C2=A0 3) <b>whenMoreResolved</b>, to forward to the r=
edirector
    back in Alice.<br>
    <br>
    0 [main] INFO cc.ganymede.pauwau.presentation.AbstractPauwauTest=C2=A0=
 -
    3 Introducers starting<br>
    549 [main] INFO cc.ganymede.pauwau.presentation.AbstractPauwauTest=C2=
=A0
    - 3 Introducers on the air<br>
    4553 [main] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0=
 -
    sending message: DeliverMessage(receiverId: 0 answerId: -1
    resolverId: -1 action: lookupSwiss args:
    [497273074681788564315291637588644948944089734358])<br>
    4952 [first-vat] DEBUG
    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving mess=
age:
    DeliverMessage(receiverId: 0 answerId: -1 resolverId: null action:
    lookupSwiss args:
    [497273074681788564315291637588644948944089734358])<br>
    4958 [first-vat] DEBUG
    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending messag=
e:
    DeliverOnlyMessage(receiverId: 1 action: value args:
    [NearRefImpl(hash: 109537538, receiver: TestObject)])<br>
    4998 [third-vat] DEBUG
    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving mess=
age:
    DeliverOnlyMessage(receiverId: 1 action: value args:
    [FarRefImpl(hash: 68783569)])<br>
    5353 [main] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0=
 -
    sending message: DeliverMessage(receiverId: 0 answerId: -1
    resolverId: -1 action: lookupSwiss args:
    [-686254831702855955980329529540587585277617841038])<br>
    5593 [second-vat] DEBUG
    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving mess=
age:
    DeliverMessage(receiverId: 0 answerId: -1 resolverId: null action:
    lookupSwiss args:
    [-686254831702855955980329529540587585277617841038])<br>
    5593 [second-vat] DEBUG
    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending messag=
e:
    DeliverOnlyMessage(receiverId: 1 action: value args:
    [NearRefImpl(hash: 1530099003, receiver: TestObject)])<br>
    6201 [main] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal=C2=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=C2=A0=
 -
    sending message: DeliverMessage(receiverId: 0 answerId: -2
    resolverId: -2 action: provideFor args:
    [-568687285196004884954480990488973591228663758441,
    RemotePromiseRefImpl(hash: 1034568234),
    -676914875674370369045480105305401075435688776666])<br>
    6239 [main] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0=
 -
    sending message: DeliverMessage(receiverId: -2 answerId: -3
    resolverId: -3 action: hashCode args: [])<br>
    6255 [second-vat] DEBUG
    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving mess=
age:
    DeliverMessage(receiverId: 0 answerId: -2 resolverId: null action:
    provideFor args: [-568687285196004884954480990488973591228663758441,
    NearRefImpl(hash: 1530099003, receiver: TestObject),
    -676914875674370369045480105305401075435688776666])<br>
    6259 [second-vat] DEBUG
    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending messag=
e:
    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=C2=A0 - sending messag=
e:
    DeliverMessage(receiverId: 0 answerId: -1 resolverId: -1 action:
    acceptFrom args:
    [HouseAtreides:10003/-68793401786157329233495556735010252498906664352=
5,
    -676914875674370369045480105305401075435688776666,
    cc.ganymede.pauwau.presentation.lib.vat.Vine@6a8400ff])<br>
    6410 [first-vat] DEBUG
    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving mess=
age:
    DeliverMessage(receiverId: -1 answerId: -2 resolverId: null action:
    redirectForTheAnswer args: [RemotePromiseRefImpl(hash: 598908224)])<b=
r>
    6411 [first-vat] DEBUG
    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving mess=
age:
    DeliverMessage(receiverId: -2 answerId: -3 resolverId: null action:
    hashCode args: [])<br>
    6411 [first-vat] DEBUG
    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending messag=
e:
    DeliverMessage(receiverId: -1 answerId: -2 resolverId: -2 action:
    getTheAnswer args: [])<br>
    6412 [first-vat] DEBUG
    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending messag=
e:
    DeliverMessage(receiverId: -2 answerId: -3 resolverId: -3 action:
    hashCode args: [])<br>
    6412 [first-vat] DEBUG
    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending messag=
e:
    DeliverOnlyMessage(receiverId: -2 action: whenMoreResolved args:
    [RedirectorProxy: FarRefImpl(hash: 177595052)])<br>
    6766 [second-vat] DEBUG
    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving mess=
age:
    DeliverMessage(receiverId: 0 answerId: -1 resolverId: null action:
    acceptFrom args:
    [HouseAtreides:10003/-68793401786157329233495556735010252498906664352=
5,
    -676914875674370369045480105305401075435688776666, FarRefImpl(hash:
    690984748)])<br>
    6767 [second-vat] DEBUG
    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving mess=
age:
    DeliverMessage(receiverId: -1 answerId: -2 resolverId: null action:
    getTheAnswer args: [])<br>
    6767 [second-vat] DEBUG
    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving mess=
age:
    DeliverMessage(receiverId: -2 answerId: -3 resolverId: null action:
    hashCode args: [])<br>
    6767 [second-vat] DEBUG
    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving mess=
age:
    DeliverOnlyMessage(receiverId: -2 action: whenMoreResolved args:
    [NearRefImpl(hash: 363771261, receiver: RedirectorProxy:
    FarRefImpl(hash: 196981675))])<br>
    6768 [second-vat] DEBUG
    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending messag=
e:
    DeliverOnlyMessage(receiverId: 2 action: value args:
    [NearRefImpl(hash: 1530099003, receiver: TestObject)])<br>
    6769 [second-vat] DEBUG
    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending messag=
e:
    DeliverOnlyMessage(receiverId: 3 action: value args:
    [NearRefImpl(hash: 790206055, receiver: 42)])<br>
    <b>6770 [second-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending mess=
age:
      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=C2=A0 - sending mess=
age:
      DeliverOnlyMessage(receiverId: 5 action: value args:
      [NearRefImpl(hash: 790206055, receiver: 42)])</b><b><br>
    </b>6805 [first-vat] DEBUG
    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving mess=
age:
    DeliverOnlyMessage(receiverId: 2 action: value args:
    [FarRefImpl(hash: 1332394016)])<br>
    6805 [first-vat] DEBUG
    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving mess=
age:
    DeliverOnlyMessage(receiverId: 3 action: value args: [42])<br>
    <b>6805 [first-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving
      message: DeliverOnlyMessage(receiverId: 4 action: value args:
      [42])</b><b><br>
    </b><b>6805 [first-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving
      message: DeliverOnlyMessage(receiverId: 5 action: value args:
      [42])</b><b><br>
    </b>6806 [first-vat] DEBUG
    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending messag=
e:
    DeliverOnlyMessage(receiverId: 3 action: value args: [42])<br>
    19932 [first-vat] DEBUG
    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending messag=
e:
    GCAnswerMessage(answerId: -1)<br>
    19934 [first-vat] DEBUG
    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending messag=
e:
    GCAnswerMessage(answerId: -2)<br>
    19934 [first-vat] DEBUG
    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending messag=
e:
    GCAnswerMessage(answerId: -3)<br>
    19984 [second-vat] DEBUG
    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving mess=
age:
    GCAnswerMessage(answerId: -1)<br>
    19984 [second-vat] DEBUG
    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving mess=
age:
    GCAnswerMessage(answerId: -2)<br>
    19985 [second-vat] DEBUG
    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving mess=
age:
    GCAnswerMessage(answerId: -3)<br>
    29679 [third-vat] DEBUG
    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending messag=
e:
    GCAnswerMessage(answerId: -1)<br>
    29680 [third-vat] DEBUG
    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving mess=
age:
    DeliverOnlyMessage(receiverId: 1 action: value args:
    [FarRefImpl(hash: 734824022)])<br>
    29680 [third-vat] DEBUG
    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving mess=
age:
    DeliverOnlyMessage(receiverId: 2 action: value args:
    [FarRefImpl(hash: 1223086084)])<br>
    29680 [third-vat] DEBUG
    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving mess=
age:
    DeliverOnlyMessage(receiverId: 3 action: value args: [42])<br>
    29681 [third-vat] DEBUG
    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending messag=
e:
    GCAnswerMessage(answerId: -1)<br>
    29681 [third-vat] DEBUG
    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending messag=
e:
    GCAnswerMessage(answerId: -2)<br>
    29682 [third-vat] DEBUG
    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending messag=
e:
    GCAnswerMessage(answerId: -2)<br>
    29722 [second-vat] DEBUG
    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving mess=
age:
    GCAnswerMessage(answerId: -1)<br>
    29722 [second-vat] DEBUG
    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving mess=
age:
    GCAnswerMessage(answerId: -2)<br>
    29726 [first-vat] DEBUG
    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving mess=
age:
    GCAnswerMessage(answerId: -1)<br>
    29726 [first-vat] DEBUG
    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving mess=
age:
    GCAnswerMessage(answerId: -2)<br>
    <br>
    <br>
    <br>
    <b>// DelayedRedirector code:</b><br>
    =C2=A0=C2=A0=C2=A0 public void value(Object obj) throws NotResolvedEx=
ception {<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 if(resolver =3D=3D null)<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 return;<br>
    <br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 if(resolver.isFresh()) {<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 resolver.res=
olve(obj);<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 resolver =3D=
 null;<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 return;<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 }<br>
    <br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 if(RefUtil.isLocal(obj)) {<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 resolver.res=
olve(obj);<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 resolver =3D=
 null;<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 return;<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 }<br>
    <br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 Ref ref =3D (Ref)RefUtil.wrap(o=
bj, resolver.handler.getVat());<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 boolean isLocalToResolverScope =
=3D false;<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 try {<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 isLocalToRes=
olverScope =3D
    RefUtil.isLocalToScope(resolver.handler.scope, ref);<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 if(isLocalTo=
ResolverScope) {<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 resolver.resolve(obj);<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 resolver =3D null;<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 return;<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 }<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 } catch (Exception e) {<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 reactToLostC=
lient(e);<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 }<br>
    <br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 Pair&lt;PromiseRefImpl, Resolve=
r&gt; pair =3D
    RefUtil.promise(ref.getVat());<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 Redirector redirector =3D new R=
edirector((ProxyResolver)
    pair.second());<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 resolver.getProxy().whenResolve=
d(redirector);<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 resolver.resolve(pair.first());=
<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 resolver =3D null;<br>
    =C2=A0=C2=A0=C2=A0 }<br>
    <br>
    <br>
    <b>// ProxyResolver code:</b><br>
    =C2=A0=C2=A0=C2=A0 public void resolve(final Object result) throws
    NotResolvedException {<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 handler.scope.getVat().sendRunn=
able(new Runnable() {<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 public void =
run() {<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 if(ref =3D=3D null)<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 =C2=A0=C2=A0=C2=A0 return;<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 if(ref.get() =3D=3D null)<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 =C2=A0=C2=A0=C2=A0 return;<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0
    if(Exception.class.isAssignableFrom(result.getClass())) {<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 }<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 Ref newRef =3D RefUtil.wrap(result,
    handler.scope.getVat());<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 try {<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 =C2=A0=C2=A0=C2=A0 if (newRef =3D=3D null)<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0
    ref.get().getRefImpl().becomeContext(null);<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 =C2=A0=C2=A0=C2=A0 else<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0
    ref.get().getRefImpl().becomeContext(newRef.getRefImpl());<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 =C2=A0=C2=A0=C2=A0 if(RefUtil.isResolved(newRef.getRefImpl())) {<b=
r>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 handler =3D null;<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 ref =3D null;<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 =C2=A0=C2=A0=C2=A0 }<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 } catch (NotResolvedException e) {<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 =C2=A0=C2=A0=C2=A0 // TODO Auto-generated catch block<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 =C2=A0=C2=A0=C2=A0 e.printStackTrace();<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 }<br>
    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 }});<br>
    =C2=A0=C2=A0=C2=A0 }<br>
    <br>
  </body>
</html>

--===============3735225354366128329==
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

--===============3735225354366128329==--