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<PromiseRefImpl, Resol=
ver> 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==--