Ok, I will try to prepare a test case and will log a bug on Janino soon.

Kind regards,
Volodymyr Vysotskyi

2018-04-14 20:02 GMT+03:00 Julian Hyde <jh...@apache.org>:

> Vova,
>
> Thanks for doing the research. Your explanation sounds very plausible
> (I suspected default methods, too). Can you please log a bug on
> JANINO? https://github.com/janino-compiler/janino/issues Arno, the
> project maintainer, has been very good to us over the years.
>
> Julian
>
>
> On Sat, Apr 14, 2018 at 9:28 AM, Enrico Olivelli <eolive...@gmail.com>
> wrote:
> > Il sab 14 apr 2018, 18:20 Enrico Olivelli <eolive...@gmail.com> ha
> scritto:
> >
> >>
> >>
> >> Il sab 14 apr 2018, 17:39 Vova Vysotskyi <vvo...@gmail.com> ha scritto:
> >>
> >>> Hi all,
> >>>
> >>> I think the reason for this issue is that at the compile stage was
> assumed
> >>> that *getSubSchema()* method returns *Schema *inheritor, but not
> >>> *SchemaPlus*.
> >>> But the interesting thing is that with Java 8, methods list of
> >>> *SchemaPlus *interface
> >>> contains default *getSubSchema()* method.
> >>> It may be observed by executing this code:
> >>> *    Method[] declaredMethods =
> >>>
> >>> Class.forName("org.apache.calcite.schema.SchemaPlus").
> getDeclaredMethods();*
> >>> *    for (Method m : declaredMethods) {*
> >>> *      if (m.getName().equals("getSubSchema")) {*
> >>> *        System.out.println(m);*
> >>> *      }*
> >>> *    }*
> >>>
> >>> Its output:
> >>>
> >>> *public default org.apache.calcite.schema.Schema
> >>> org.apache.calcite.schema.SchemaPlus.getSubSchema(java.lang.String)*
> >>> *public abstract org.apache.calcite.schema.SchemaPlus
> >>> org.apache.calcite.schema.SchemaPlus.getSubSchema(java.lang.String)*
> >>>
> >>> The output of the same code for Java 7:
> >>>
> >>> *public abstract org.apache.calcite.schema.SchemaPlus
> >>> org.apache.calcite.schema.SchemaPlus.getSubSchema(java.lang.String)*
> >>>
> >>> Kind regards,
> >>> Volodymyr Vysotskyi
> >>>
> >>
> >> Good catch!
> >> It would be useful to look into that 'default' method by disassembling
> >> .class file.
> >> Enrico
> >>
> >
> > Anyway a fix would be to add an unwrap method to Schema
> > Cheers
> > Enrico
> >
> >
> >>
> >>
> >>> 2018-04-10 18:43 GMT+03:00 Julian Hyde <jhyde.apa...@gmail.com>:
> >>>
> >>> > I’d really appreciate that.
> >>> >
> >>> > Can you please log a JIRA case, and record your observations/progress
> >>> > there.
> >>> >
> >>> > There’s no particular hurry on this one.
> >>> >
> >>> > Julian
> >>> >
> >>> > > On Apr 10, 2018, at 06:32, Enrico Olivelli <eolive...@gmail.com>
> >>> wrote:
> >>> > >
> >>> > > 2018-04-10 13:48 GMT+02:00 Julian Hyde <jhyde.apa...@gmail.com>:
> >>> > >
> >>> > >> Yes, that’s it.
> >>> > >>
> >>> > >> Next step would be to check whether the generated code is the
> same as
> >>> > >> previously, and if so, it is a Janino bug. Then try to create a
> >>> minimal
> >>> > >> test case for Janino. Maybe we can work around by adding an
> explicit
> >>> > cast
> >>> > >> somewhere.
> >>> > >>
> >>> > >> Thanks for reproducing this, and trying the Janino upgrade.
> >>> > >>
> >>> > >
> >>> > >
> >>> > > Julian,
> >>> > > If you have no hurry for this I will be happy to spend some time in
> >>> order
> >>> > > to figure out the root cause.
> >>> > >
> >>> > > I will follow the discussion and jump in when I have some idea.
> >>> > >
> >>> > > It will be great to have Calcite really built on jdk8 and leverage
> >>> > lambdas
> >>> > >
> >>> > >
> >>> > > Cheers
> >>> > > Enrico
> >>> > >
> >>> > >
> >>> > >
> >>> > >>
> >>> > >> Julian
> >>> > >>
> >>> > >>> On Apr 10, 2018, at 3:37 AM, Enrico Olivelli <
> eolive...@gmail.com>
> >>> > >> wrote:
> >>> > >>>
> >>> > >>> This is "the" error (see below). Unfortunately just be upgrading
> >>> Janino
> >>> > >> to
> >>> > >>> 3.0.8 the problem still is present.
> >>> > >>>
> >>> > >>> the only 'unwrap'  word in the generated code is here
> >>> > >>> ...
> >>> > >>> public org.apache.calcite.linq4j.Enumerable bind(final
> >>> > >>> org.apache.calcite.DataContext root0) {
> >>> > >>> root = root0;
> >>> > >>> final org.apache.calcite.linq4j.Enumerable _inputEnumerable =
> >>> > >>> org.apache.calcite.linq4j.Linq4j.asEnumerable(((org.
> >>> > apache.calcite.test.
> >>> > >> ReflectiveSchemaTest.CatchallSchema)
> >>> > >>> ((org.apache.calcite.adapter.java.ReflectiveSchema)
> >>> > >>> root.getRootSchema().getSubSchema("s").unwrap(org.
> >>> > >> apache.calcite.adapter.java.ReflectiveSchema.class)).
> >>> > >> getTarget()).nullables);
> >>> > >>> ....
> >>> > >>>
> >>> > >>> Does any ring bell ?
> >>> > >>>
> >>> > >>> Enrico
> >>> > >>>
> >>> > >>>
> >>> > >>> Caused by: org.codehaus.commons.compiler.CompileException: Line
> 5,
> >>> > >> Column
> >>> > >>> 272: A method named "unwrap" is not declared in any enclosing
> class
> >>> nor
> >>> > >> any
> >>> > >>> supertype, nor through a static import
> >>> > >>>>   at
> >>> > >>>
> >>> org.codehaus.janino.UnitCompiler.compileError(UnitCompiler.java:11821)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler.findIMethod(
> UnitCompiler.java:8731)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler.compileGet2(
> UnitCompiler.java:4737)
> >>> > >>>>   at org.codehaus.janino.UnitCompiler.access$8300(
> >>> > >> UnitCompiler.java:212)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler$12.visitMethodInvocation(
> >>> > >> UnitCompiler.java:4097)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler$12.visitMethodInvocation(
> >>> > >> UnitCompiler.java:4070)
> >>> > >>>>   at
> >>> org.codehaus.janino.Java$MethodInvocation.accept(Java.java:4902)
> >>> > >>>>   at org.codehaus.janino.UnitCompiler.compileGet(
> >>> > >> UnitCompiler.java:4070)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler.compileGetValue(
> >>> > UnitCompiler.java:5253)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler.compileGet2(
> UnitCompiler.java:4696)
> >>> > >>>>   at org.codehaus.janino.UnitCompiler.access$7800(
> >>> > >> UnitCompiler.java:212)
> >>> > >>>>   at
> >>> > >>>
> >>> org.codehaus.janino.UnitCompiler$12.visitCast(UnitCompiler.java:4092)
> >>> > >>>>   at
> >>> > >>>
> >>> org.codehaus.janino.UnitCompiler$12.visitCast(UnitCompiler.java:4070)
> >>> > >>>>   at org.codehaus.janino.Java$Cast.accept(Java.java:4727)
> >>> > >>>>   at org.codehaus.janino.UnitCompiler.compileGet(
> >>> > >> UnitCompiler.java:4070)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler.compileGet2(
> UnitCompiler.java:4732)
> >>> > >>>>   at org.codehaus.janino.UnitCompiler.access$7300(
> >>> > >> UnitCompiler.java:212)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler$12$1.
> visitParenthesizedExpression(
> >>> > >> UnitCompiler.java:4083)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler$12$1.
> visitParenthesizedExpression(
> >>> > >> UnitCompiler.java:4074)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.Java$ParenthesizedExpression.
> >>> > accept(Java.java:4753)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler$12.visitLvalue(
> >>> > UnitCompiler.java:4074)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler$12.visitLvalue(
> >>> > UnitCompiler.java:4070)
> >>> > >>>>   at org.codehaus.janino.Java$Lvalue.accept(Java.java:3977)
> >>> > >>>>   at org.codehaus.janino.UnitCompiler.compileGet(
> >>> > >> UnitCompiler.java:4070)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler.compileGetValue(
> >>> > UnitCompiler.java:5253)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler.compileGet2(
> UnitCompiler.java:4792)
> >>> > >>>>   at org.codehaus.janino.UnitCompiler.access$8300(
> >>> > >> UnitCompiler.java:212)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler$12.visitMethodInvocation(
> >>> > >> UnitCompiler.java:4097)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler$12.visitMethodInvocation(
> >>> > >> UnitCompiler.java:4070)
> >>> > >>>>   at
> >>> org.codehaus.janino.Java$MethodInvocation.accept(Java.java:4902)
> >>> > >>>>   at org.codehaus.janino.UnitCompiler.compileGet(
> >>> > >> UnitCompiler.java:4070)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler.compileGetValue(
> >>> > UnitCompiler.java:5253)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler.compileGet2(
> UnitCompiler.java:4696)
> >>> > >>>>   at org.codehaus.janino.UnitCompiler.access$7800(
> >>> > >> UnitCompiler.java:212)
> >>> > >>>>   at
> >>> > >>>
> >>> org.codehaus.janino.UnitCompiler$12.visitCast(UnitCompiler.java:4092)
> >>> > >>>>   at
> >>> > >>>
> >>> org.codehaus.janino.UnitCompiler$12.visitCast(UnitCompiler.java:4070)
> >>> > >>>>   at org.codehaus.janino.Java$Cast.accept(Java.java:4727)
> >>> > >>>>   at org.codehaus.janino.UnitCompiler.compileGet(
> >>> > >> UnitCompiler.java:4070)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler.compileGet2(
> UnitCompiler.java:4732)
> >>> > >>>>   at org.codehaus.janino.UnitCompiler.access$7300(
> >>> > >> UnitCompiler.java:212)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler$12$1.
> visitParenthesizedExpression(
> >>> > >> UnitCompiler.java:4083)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler$12$1.
> visitParenthesizedExpression(
> >>> > >> UnitCompiler.java:4074)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.Java$ParenthesizedExpression.
> >>> > accept(Java.java:4753)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler$12.visitLvalue(
> >>> > UnitCompiler.java:4074)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler$12.visitLvalue(
> >>> > UnitCompiler.java:4070)
> >>> > >>>>   at org.codehaus.janino.Java$Lvalue.accept(Java.java:3977)
> >>> > >>>>   at org.codehaus.janino.UnitCompiler.compileGet(
> >>> > >> UnitCompiler.java:4070)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler.compileGetValue(
> >>> > UnitCompiler.java:5253)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler.compileContext2(
> >>> > UnitCompiler.java:4010)
> >>> > >>>>   at org.codehaus.janino.UnitCompiler.access$6100(
> >>> > >> UnitCompiler.java:212)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler$11$1.
> visitFieldAccess(UnitCompiler.
> >>> > >> java:3947)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler$11$1.
> visitFieldAccess(UnitCompiler.
> >>> > >> java:3942)
> >>> > >>>>   at org.codehaus.janino.Java$FieldAccess.accept(Java.java:
> 4139)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler$11.visitLvalue(
> >>> > UnitCompiler.java:3942)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler$11.visitLvalue(
> >>> > UnitCompiler.java:3938)
> >>> > >>>>   at org.codehaus.janino.Java$Lvalue.accept(Java.java:3977)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler.compileContext(
> >>> > UnitCompiler.java:3938)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler.compileContext2(
> >>> > UnitCompiler.java:4047)
> >>> > >>>>   at org.codehaus.janino.UnitCompiler.access$6200(
> >>> > >> UnitCompiler.java:212)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler$11$1.
> visitFieldAccessExpression(
> >>> > >> UnitCompiler.java:3948)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler$11$1.
> visitFieldAccessExpression(
> >>> > >> UnitCompiler.java:3942)
> >>> > >>>>   at
> >>> > >>>
> >>> org.codehaus.janino.Java$FieldAccessExpression.accept(Java.java:4468)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler$11.visitLvalue(
> >>> > UnitCompiler.java:3942)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler$11.visitLvalue(
> >>> > UnitCompiler.java:3938)
> >>> > >>>>   at org.codehaus.janino.Java$Lvalue.accept(Java.java:3977)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler.compileContext(
> >>> > UnitCompiler.java:3938)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler.compileGetValue(
> >>> > UnitCompiler.java:5252)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler.compileGet2(
> UnitCompiler.java:4842)
> >>> > >>>>   at org.codehaus.janino.UnitCompiler.access$8300(
> >>> > >> UnitCompiler.java:212)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler$12.visitMethodInvocation(
> >>> > >> UnitCompiler.java:4097)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler$12.visitMethodInvocation(
> >>> > >> UnitCompiler.java:4070)
> >>> > >>>>   at
> >>> org.codehaus.janino.Java$MethodInvocation.accept(Java.java:4902)
> >>> > >>>>   at org.codehaus.janino.UnitCompiler.compileGet(
> >>> > >> UnitCompiler.java:4070)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler.compileGetValue(
> >>> > UnitCompiler.java:5253)
> >>> > >>>>   at org.codehaus.janino.UnitCompiler.compile2(
> >>> > UnitCompiler.java:2559)
> >>> > >>>>   at org.codehaus.janino.UnitCompiler.access$2700(
> >>> > >> UnitCompiler.java:212)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler$6.
> visitLocalVariableDeclarationS
> >>> > >> tatement(UnitCompiler.java:1482)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.UnitCompiler$6.
> visitLocalVariableDeclarationS
> >>> > >> tatement(UnitCompiler.java:1466)
> >>> > >>>>   at
> >>> > >>> org.codehaus.janino.Java$LocalVariableDeclarationStatem
> >>> > >> ent.accept(Java.java:3351)
> >>> > >>>>   at
> >>> org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:1466)
> >>> > >>>>   at org.cod (stack truncated)
> >>> > >>>
> >>> > >>>
> >>> > >>> 2018-04-09 23:10 GMT+02:00 Cade Markegard <
> cademarkeg...@gmail.com
> >>> >:
> >>> > >>>
> >>> > >>>> Awesome!
> >>> > >>>>
> >>> > >>>> On Mon, Apr 9, 2018 at 1:29 PM Enrico Olivelli <
> >>> eolive...@gmail.com>
> >>> > >>>> wrote:
> >>> > >>>>
> >>> > >>>>> Il lun 9 apr 2018, 22:20 Cade Markegard <
> cademarkeg...@gmail.com>
> >>> ha
> >>> > >>>>> scritto:
> >>> > >>>>>
> >>> > >>>>>> Not sure if this is related, but it seems like Janino doesn't
> >>> > support
> >>> > >>>>> Java8
> >>> > >>>>>> lambdas under "Limitations" in http://janino-compiler.github.
> >>> > >>>> io/janino/
> >>> > >>>>>
> >>> > >>>>>
> >>> > >>>>>
> >>> > >>>>> This should not be a problem, we are not generating java
> sources
> >>> with
> >>> > >>>>> lambdas (maybe in future?).
> >>> > >>>>> I will be happy to do some trials with new Janino, but I guess
> >>> that
> >>> > >> would
> >>> > >>>>> be the only way (or to drop Janino, but I think it will be
> >>> harder). I
> >>> > >>>> have
> >>> > >>>>> not much time these days.
> >>> > >>>>>
> >>> > >>>>> Anyhow I am testing my apps on jdk10 and Calcite is working
> like a
> >>> > >> charm
> >>> > >>>> !
> >>> > >>>>>
> >>> > >>>>> Enrico
> >>> > >>>>>
> >>> > >>>>>>
> >>> > >>>>>>
> >>> > >>>>>>> On Mon, Apr 9, 2018 at 12:54 PM Julian Hyde <
> jh...@apache.org>
> >>> > >> wrote:
> >>> > >>>>>>>
> >>> > >>>>>>> I didn’t try. We’re on janino 2.7.6. The 2.x line only goes
> up
> >>> to
> >>> > >>>>> 2.7.8.
> >>> > >>>>>>> I’m not eager to try upgrading to 3.x (latest release is
> 3.0.8)
> >>> > >>>>>> especially
> >>> > >>>>>>> as they don’t explicitly mention fixing a JDK 8 issue.
> >>> > >>>>>>>
> >>> > >>>>>>> http://janino-compiler.github.io/janino/changelog.html <
> >>> > >>>>>>> http://janino-compiler.github.io/janino/changelog.html>
> >>> > >>>>>>>
> >>> > >>>>>>>
> >>> > >>>>>>>> On Apr 9, 2018, at 12:42 PM, Enrico Olivelli <
> >>> eolive...@gmail.com
> >>> > >
> >>> > >>>>>>> wrote:
> >>> > >>>>>>>>
> >>> > >>>>>>>> Il lun 9 apr 2018, 21:37 Julian Hyde <jh...@apache.org
> >>> <mailto:
> >>> > >>>>>>> jh...@apache.org>> ha scritto:
> >>> > >>>>>>>>
> >>> > >>>>>>>>> Don’t have the error stack, but janino could not compile
> >>> > generated
> >>> > >>>>>> code
> >>> > >>>>>>>>> because it said an “unwrap” method did not exist.
> >>> > >>>>>>>>>
> >>> > >>>>>>>>> There were no lambdas. I think perhaps that version of
> janino
> >>> > >>>> could
> >>> > >>>>>> not
> >>> > >>>>>>>>> fully understand the Calcite class files.
> >>> > >>>>>>>>>
> >>> > >>>>>>>>> To reproduce, change 2 lines in core/pom.xml and run “mvn
> >>> test”.
> >>> > >>>>>>>>>
> >>> > >>>>>>>>
> >>> > >>>>>>>> Did you try to update to latest Janino?
> >>> > >>>>>>>> It seems to that we have an old version (2.7.6)
> >>> > >>>>>>>>
> >>> > >>>>>>>> Enrico
> >>> > >>>>>>>>
> >>> > >>>>>>>>>
> >>> > >>>>>>>>> Julian
> >>> > >>>>>>>>>
> >>> > >>>>>>>>>
> >>> > >>>>>>>>>> On Apr 9, 2018, at 12:15 PM, Enrico Olivelli <
> >>> > >>>> eolive...@gmail.com>
> >>> > >>>>>>>>> wrote:
> >>> > >>>>>>>>>>
> >>> > >>>>>>>>>> Il lun 9 apr 2018, 19:05 Julian Hyde <jh...@apache.org>
> ha
> >>> > >>>>> scritto:
> >>> > >>>>>>>>>>
> >>> > >>>>>>>>>>> Has anyone had any luck using JDK 8 syntax (e.g. “->” for
> >>> > >>>> lambdas)
> >>> > >>>>>> in
> >>> > >>>>>>>>>>> Calcite?
> >>> > >>>>>>>>>>>
> >>> > >>>>>>>>>>> In core/pom.xml I changed source=1.7 target=1.7 to
> source=8
> >>> > >>>>> target=8
> >>> > >>>>>>> and
> >>> > >>>>>>>>>>> it allowed the syntax but it seemed to break any tests
> that
> >>> > >>>> relied
> >>> > >>>>>> on
> >>> > >>>>>>>>>>> janino.
> >>> > >>>>>>>>>>>
> >>> > >>>>>>>>>>
> >>> > >>>>>>>>>> Julian,
> >>> > >>>>>>>>>> Could you please share a stacktrace of your error?
> >>> > >>>>>>>>>> As far as I know using lambdas is not only a matter of
> >>> syntactic
> >>> > >>>>>> sugar
> >>> > >>>>>>>>> but
> >>> > >>>>>>>>>> they are more efficient than simple anonymous classes.
> >>> > >>>>>>>>>>
> >>> > >>>>>>>>>> Cheers
> >>> > >>>>>>>>>> Enrico
> >>> > >>>>>>>>>>
> >>> > >>>>>>>>>>
> >>> > >>>>>>>>>>> Related: https://issues.apache.org/
> jira/browse/CALCITE-2027
> >>> <
> >>> > >>>>>>>>>>> https://issues.apache.org/jira/browse/CALCITE-2027>
> >>> > >>>>>>>>>>>
> >>> > >>>>>>>>>>> Julian
> >>> > >>>>>>>>>>>
> >>> > >>>>>>>>>>> --
> >>> > >>>>>>>>>>
> >>> > >>>>>>>>>>
> >>> > >>>>>>>>>> -- Enrico Olivelli
> >>> > >>>>>>>>>
> >>> > >>>>>>>>> --
> >>> > >>>>>>>>
> >>> > >>>>>>>>
> >>> > >>>>>>>> -- Enrico Olivelli
> >>> > >>>>>>>
> >>> > >>>>>>>
> >>> > >>>>>>
> >>> > >>>>> --
> >>> > >>>>>
> >>> > >>>>>
> >>> > >>>>> -- Enrico Olivelli
> >>> > >>>>>
> >>> > >>>>
> >>> > >>
> >>> >
> >>>
> >> --
> >>
> >>
> >> -- Enrico Olivelli
> >>
> > --
> >
> >
> > -- Enrico Olivelli
>

Reply via email to