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

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

<html>
  <head>
    <meta content=3D"text/html; charset=3Dutf-8" http-equiv=3D"Content-Ty=
pe">
  </head>
  <body 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.=C2=A0 This i=
s
    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<br>
    <br>
    <div class=3D"moz-cite-prefix">On 2/22/2015 6:19 PM, Rob Withers
      wrote:<br>
    </div>
    <blockquote cite=3D"mid:[email protected]" type=3D"cite">
      <meta http-equiv=3D"content-type" content=3D"text/html; charset=3Du=
tf-8">
      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 the 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 changes 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
      message 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, a=
s
      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=
 redirector
      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
      message: DeliverMessage(receiverId: 0 answerId: -1 resolverId:
      null action: lookupSwiss args:
      [497273074681788564315291637588644948944089734358])<br>
      4958 [first-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending mess=
age:
      DeliverOnlyMessage(receiverId: 1 action: value args:
      [NearRefImpl(hash: 109537538, receiver: TestObject)])<br>
      4998 [third-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving
      message: 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
      message: DeliverMessage(receiverId: 0 answerId: -1 resolverId:
      null action: lookupSwiss args:
      [-686254831702855955980329529540587585277617841038])<br>
      5593 [second-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending mess=
age:
      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
      message: 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 mess=
age:
      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 mess=
age:
      DeliverMessage(receiverId: 0 answerId: -1 resolverId: -1 action:
      acceptFrom args:
      [HouseAtreides:10003/-687934017861573292334955567350102524989066643=
525,
      -676914875674370369045480105305401075435688776666,
      cc.ganymede.pauwau.presentation.lib.vat.Vine@6a8400ff])<br>
      6410 [first-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=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=C2=A0 - receiving
      message: DeliverMessage(receiverId: -2 answerId: -3 resolverId:
      null action: hashCode args: [])<br>
      6411 [first-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending mess=
age:
      DeliverMessage(receiverId: -1 answerId: -2 resolverId: -2 action:
      getTheAnswer args: [])<br>
      6412 [first-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending mess=
age:
      DeliverMessage(receiverId: -2 answerId: -3 resolverId: -3 action:
      hashCode args: [])<br>
      6412 [first-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending mess=
age:
      DeliverOnlyMessage(receiverId: -2 action: whenMoreResolved args:
      [RedirectorProxy: FarRefImpl(hash: 177595052)])<br>
      6766 [second-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving
      message: DeliverMessage(receiverId: 0 answerId: -1 resolverId:
      null action: acceptFrom args:
      [HouseAtreides:10003/-687934017861573292334955567350102524989066643=
525,
      -676914875674370369045480105305401075435688776666,
      FarRefImpl(hash: 690984748)])<br>
      6767 [second-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving
      message: DeliverMessage(receiverId: -1 answerId: -2 resolverId:
      null action: getTheAnswer args: [])<br>
      6767 [second-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving
      message: DeliverMessage(receiverId: -2 answerId: -3 resolverId:
      null action: hashCode args: [])<br>
      6767 [second-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=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=C2=A0 - sending mess=
age:
      DeliverOnlyMessage(receiverId: 2 action: value args:
      [NearRefImpl(hash: 1530099003, receiver: TestObject)])<br>
      6769 [second-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending mess=
age:
      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
        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=C2=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=C2=A0 - receiving
      message: DeliverOnlyMessage(receiverId: 2 action: value args:
      [FarRefImpl(hash: 1332394016)])<br>
      6805 [first-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving
      message: 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 mess=
age:
      DeliverOnlyMessage(receiverId: 3 action: value args: [42])<br>
      19932 [first-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending mess=
age:
      GCAnswerMessage(answerId: -1)<br>
      19934 [first-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending mess=
age:
      GCAnswerMessage(answerId: -2)<br>
      19934 [first-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending mess=
age:
      GCAnswerMessage(answerId: -3)<br>
      19984 [second-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving
      message: GCAnswerMessage(answerId: -1)<br>
      19984 [second-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving
      message: GCAnswerMessage(answerId: -2)<br>
      19985 [second-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving
      message: GCAnswerMessage(answerId: -3)<br>
      29679 [third-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending mess=
age:
      GCAnswerMessage(answerId: -1)<br>
      29680 [third-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving
      message: DeliverOnlyMessage(receiverId: 1 action: value args:
      [FarRefImpl(hash: 734824022)])<br>
      29680 [third-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving
      message: DeliverOnlyMessage(receiverId: 2 action: value args:
      [FarRefImpl(hash: 1223086084)])<br>
      29680 [third-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving
      message: DeliverOnlyMessage(receiverId: 3 action: value args:
      [42])<br>
      29681 [third-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending mess=
age:
      GCAnswerMessage(answerId: -1)<br>
      29681 [third-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending mess=
age:
      GCAnswerMessage(answerId: -2)<br>
      29682 [third-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending mess=
age:
      GCAnswerMessage(answerId: -2)<br>
      29722 [second-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving
      message: GCAnswerMessage(answerId: -1)<br>
      29722 [second-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving
      message: GCAnswerMessage(answerId: -2)<br>
      29726 [first-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving
      message: GCAnswerMessage(answerId: -1)<br>
      29726 [first-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving
      message: GCAnswerMessage(answerId: -2)<br>
      <br>
      <br>
      <br>
      <b>// DelayedRedirector code:</b><br>
      =C2=A0=C2=A0=C2=A0 public void value(Object obj) throws NotResolved=
Exception {<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.r=
esolve(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.r=
esolve(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=
(obj,
      resolver.handler.getVat());<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 boolean isLocalToResolverScop=
e =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 isLocalToR=
esolverScope =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(isLocal=
ToResolverScope) {<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 reactToLos=
tClient(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, Resol=
ver&gt; pair =3D
      RefUtil.promise(ref.getVat());<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 Redirector redirector =3D new=
 Redirector((ProxyResolver)
      pair.second());<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 resolver.getProxy().whenResol=
ved(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().sendRu=
nnable(new Runnable() {<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 public voi=
d 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>
    </blockquote>
    <br>
  </body>
</html>

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

--===============6612397212352541891==--