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

Rob Withers <[email protected]> Sun, 22 Feb 2015 22:35:26 -0700
Newsgroups gmane.comp.lang.e.general
Message-ID <[email protected]>
--===============0129391604236517391==
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">
    Rather, I was <b>sending</b> a follow-on message to the 3-way
    message.=A0 I'll check out the DelayedRedirector/ResolverProxy code
    for how this is done.=A0 I have 2-vat and 3-vat happy path working,
    yet my smash path aren't working yet.=A0 Nonetheless, I am still
    having much fun.<br>
    <br>
    - Robert<br>
    <br>
    <br>
    <div class=3D"moz-cite-prefix">On 2/22/2015 9:05 PM, Rob Withers
      wrote:<br>
    </div>
    <blockquote cite=3D"mid:[email protected]" type=3D"cite">
      <meta content=3D"text/html; charset=3Dwindows-1252"
        http-equiv=3D"Content-Type">
      Thank you, Mark.=A0 The Vine is working great.=A0 ProvideFor and
      AcceptFrom are solid, with the gift tables.=A0 You rang a bell with
      me and I looked at my old test.=A0 I was throwing a follow-on
      message to the 3-way message.=A0 In this case, redirectForTheAnswer
      sends getTheAnswer to bob, but then the hashCode message is sent
      to that result.=A0 The issue is with the whenMoreResolved that is
      sent after the hashCode message.=A0 The Ref(RemotePromiseRefImpl)
      stored in the Redirector disappears, as there is no hard reference
      to it.=A0 Here is the code called: <br>
      <br>
      =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 Ref answer =3D
      alice.redirectMessage("redirectForTheAnswer",
      bob).redirectMessage("hashCode");<br>
      <br>
      When I strip the subsequent call, test is green.=A0 Where should I
      store a hard reference to that guy, do you think?<br>
      <br>
      - Robert<br>
      <br>
      <br>
      <br>
      It is the whenMoreResolved with the resulting remote promise from
      redirection.<br>
      <div class=3D"moz-cite-prefix"><br>
        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">htt=
p://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=
.google.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"_bla=
nk">[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 mor=
e
                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?<b=
r>
                      <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=
 to
                      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])=
<br>
                      4952 [first-vat] DEBUG
                      cc.ganymede.pauwau.presentation.PauwauTerminal=A0 -
                      receiving message: DeliverMessage(receiverId: 0
                      answerId: -1 resolverId: null action: lookupSwiss
                      args:
                      [497273074681788564315291637588644948944089734358])=
<br>
                      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])=
<br>
                      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])=
<br>
                      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@4842de=
f1)])<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/-68793401786157329233495556735=
0102524989066643525,
                      -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/-68793401786157329233495556735=
0102524989066643525,
                      -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)])<br>
                      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)])<br>
                      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(o=
bj,
                      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 isLocalToResolverScop=
e =3D
                      RefUtil.isLocalToScope(resolver.handler.scope,
                      ref);<br>
                      =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 if(isLocalToResolverS=
cope) {<br>
                      =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 resolver.re=
solve(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);=
<br>
                      =A0=A0=A0 =A0=A0=A0 }<br>
                      <br>
                      =A0=A0=A0 =A0=A0=A0 Pair&lt;PromiseRefImpl, Resolve=
r&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());=
<br>
                      =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)
                      throws NotResolvedException {<br>
                      =A0=A0=A0 =A0=A0=A0 handler.scope.getVat().sendRunn=
able(new
                      Runnable() {<br>
                      =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 public void run() {<b=
r>
                      =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 r=
eturn;<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 r=
eturn;<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 i=
f (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 e=
lse<br>
                      =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0
                      ref.get().getRefImpl().becomeContext(newRef.getRefI=
mpl());<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 }=
<br>
                      =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 } catch (No=
tResolvedException 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=
.printStackTrace();<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]=
os.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 moz-do-not-send=3D"true" class=3D"moz-txt-link-abbreviated" href=3D"ma=
ilto:[email protected]">[email protected]</a>
<a moz-do-not-send=3D"true" 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>
    </blockquote>
    <br>
  </body>
</html>

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

--===============0129391604236517391==--