[ 
https://issues.apache.org/jira/browse/SPARK-22296?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16212983#comment-16212983
 ] 

Randy Tidd edited comment on SPARK-22296 at 10/20/17 6:17 PM:
--------------------------------------------------------------

The example above does not exhibit the problem.  Here is a concise example that 
does.

Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use 
setLogLevel(newLevel).
17/10/20 14:09:04 WARN NativeCodeLoader: Unable to load native-hadoop library 
for your platform... using builtin-java classes where applicable
17/10/20 14:09:08 WARN ObjectStore: Failed to get database global_temp, 
returning NoSuchObjectException
Spark context Web UI available at http://10.10.43.134:4040
Spark context available as 'sc' (master = local[*], app id = 
local-1508522945163).
Spark session available as 'spark'.
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 2.1.0
      /_/
         
Using Scala version 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_131)
Type in expressions to have them evaluated.
Type :help for more information.

scala> case class Foo1(x: Int, s: String, seq: 
scala.collection.mutable.Seq[Int] = scala.collection.mutable.Seq.empty[Int])
defined class Foo1

scala> val ds1 = Seq(Foo1(1, "a"), Foo1(2, "b")).toDS
ds1: org.apache.spark.sql.Dataset[Foo1] = [x: int, s: string ... 1 more field]

scala> 

scala> case class Foo2(x: Int, s: String)
defined class Foo2

scala> val ds2 = Seq(Foo2(1, "aa"), Foo2(3, "cc")).toDS
ds2: org.apache.spark.sql.Dataset[Foo2] = [x: int, s: string]

scala> 

scala> ds1.joinWith(ds2, ds1.col("x") === ds2.col("x")).collect()
17/10/20 14:09:14 ERROR CodeGenerator: failed to compile: 
org.codehaus.commons.compiler.CompileException: File 'generated.java', Line 
263, Column 69: No applicable constructor/method found for actual parameters 
"int, java.lang.String, scala.collection.Seq"; candidates are: 
"$line14.$read$$iw$$iw$Foo1(int, java.lang.String, 
scala.collection.mutable.Seq)"
/* 001 */ public java.lang.Object generate(Object[] references) {
/* 002 */   return new SpecificSafeProjection(references);
/* 003 */ }
/* 004 */
/* 005 */ class SpecificSafeProjection extends 
org.apache.spark.sql.catalyst.expressions.codegen.BaseProjection {
/* 006 */
/* 007 */   private Object[] references;
/* 008 */   private InternalRow mutableRow;
/* 009 */   private $line14.$read$$iw$$iw$Foo1 argValue;
/* 010 */   private $line16.$read$$iw$$iw$Foo2 argValue1;
/* 011 */   private int argValue2;
/* 012 */   private java.lang.String argValue3;
/* 013 */   private scala.collection.Seq argValue4;
/* 014 */   private boolean resultIsNull;
/* 015 */   private java.lang.Object[] argValue5;
/* 016 */   private boolean MapObjects_loopIsNull1;
/* 017 */   private int MapObjects_loopValue0;
/* 018 */   private int argValue6;
/* 019 */   private java.lang.String argValue7;
/* 020 */   private boolean isNull31;
/* 021 */   private boolean value31;
/* 022 */   private boolean isNull32;
/* 023 */   private $line16.$read$$iw$$iw$Foo2 value32;
/* 024 */   private boolean isNull33;
/* 025 */   private $line16.$read$$iw$$iw$Foo2 value33;
/* 026 */
/* 027 */   public SpecificSafeProjection(Object[] references) {
/* 028 */     this.references = references;
/* 029 */     mutableRow = (InternalRow) references[references.length - 1];
/* 030 */
/* 031 */
/* 032 */
/* 033 */
/* 034 */
/* 035 */
/* 036 */
/* 037 */
/* 038 */
/* 039 */
/* 040 */
/* 041 */     isNull31 = false;
/* 042 */     value31 = false;
/* 043 */     isNull32 = false;
/* 044 */     value32 = null;
/* 045 */     isNull33 = false;
/* 046 */     value33 = null;
/* 047 */
/* 048 */   }
/* 049 */
/* 050 */   public void initialize(int partitionIndex) {
/* 051 */
/* 052 */   }
/* 053 */
/* 054 */
/* 055 */   private void evalIfTrueExpr(InternalRow i) {
/* 056 */     final $line16.$read$$iw$$iw$Foo2 value22 = null;
/* 057 */     isNull32 = true;
/* 058 */     value32 = value22;
/* 059 */   }
/* 060 */
/* 061 */
/* 062 */   private void apply_1(InternalRow i) {
/* 063 */
/* 064 */
/* 065 */     resultIsNull = false;
/* 066 */     if (!resultIsNull) {
/* 067 */
/* 068 */       InternalRow value16 = i.getStruct(0, 3);
/* 069 */       boolean isNull15 = false;
/* 070 */       ArrayData value15 = null;
/* 071 */
/* 072 */
/* 073 */       if (value16.isNullAt(2)) {
/* 074 */         isNull15 = true;
/* 075 */       } else {
/* 076 */         value15 = value16.getArray(2);
/* 077 */       }
/* 078 */       ArrayData value14 = null;
/* 079 */
/* 080 */       if (!isNull15) {
/* 081 */
/* 082 */         Integer[] convertedArray = null;
/* 083 */         int dataLength = value15.numElements();
/* 084 */         convertedArray = new Integer[dataLength];
/* 085 */
/* 086 */         int loopIndex = 0;
/* 087 */         while (loopIndex < dataLength) {
/* 088 */           MapObjects_loopValue0 = (int) (value15.getInt(loopIndex));
/* 089 */           MapObjects_loopIsNull1 = value15.isNullAt(loopIndex);
/* 090 */
/* 091 */
/* 092 */           if (MapObjects_loopIsNull1) {
/* 093 */             throw new RuntimeException(((java.lang.String) 
references[1]));
/* 094 */           }
/* 095 */           if (false) {
/* 096 */             convertedArray[loopIndex] = null;
/* 097 */           } else {
/* 098 */             convertedArray[loopIndex] = MapObjects_loopValue0;
/* 099 */           }
/* 100 */
/* 101 */           loopIndex += 1;
/* 102 */         }
/* 103 */
/* 104 */         value14 = new 
org.apache.spark.sql.catalyst.util.GenericArrayData(convertedArray);
/* 105 */       }
/* 106 */       boolean isNull13 = true;
/* 107 */       java.lang.Object[] value13 = null;
/* 108 */       if (!isNull15) {
/* 109 */
/* 110 */         isNull13 = false;
/* 111 */         if (!isNull13) {
/* 112 */
/* 113 */           Object funcResult1 = null;
/* 114 */           funcResult1 = value14.array();
/* 115 */           if (funcResult1 == null) {
/* 116 */             isNull13 = true;
/* 117 */           } else {
/* 118 */             value13 = (java.lang.Object[]) funcResult1;
/* 119 */           }
/* 120 */
/* 121 */         }
/* 122 */         isNull13 = value13 == null;
/* 123 */       }
/* 124 */       resultIsNull = isNull13;
/* 125 */       argValue5 = value13;
/* 126 */     }
/* 127 */
/* 128 */     boolean isNull12 = resultIsNull;
/* 129 */     final scala.collection.Seq value12 = resultIsNull ? null : 
scala.collection.mutable.WrappedArray.make(argValue5);
/* 130 */     isNull12 = value12 == null;
/* 131 */     argValue4 = value12;
/* 132 */
/* 133 */   }
/* 134 */
/* 135 */
/* 136 */   private void evalIfCondExpr(InternalRow i) {
/* 137 */     InternalRow value21 = i.getStruct(1, 2);
/* 138 */     isNull31 = false;
/* 139 */     value31 = false;
/* 140 */   }
/* 141 */
/* 142 */
/* 143 */   private void apply_0(InternalRow i) {
/* 144 */
/* 145 */
/* 146 */     boolean isNull7 = false;
/* 147 */
/* 148 */     InternalRow value8 = i.getStruct(0, 3);
/* 149 */     int value7 = -1;
/* 150 */
/* 151 */     value7 = value8.getInt(0);
/* 152 */
/* 153 */     if (false) {
/* 154 */       throw new RuntimeException(((java.lang.String) references[0]));
/* 155 */     }
/* 156 */     argValue2 = value7;
/* 157 */
/* 158 */
/* 159 */     InternalRow value11 = i.getStruct(0, 3);
/* 160 */     boolean isNull10 = false;
/* 161 */     UTF8String value10 = null;
/* 162 */
/* 163 */
/* 164 */     if (value11.isNullAt(1)) {
/* 165 */       isNull10 = true;
/* 166 */     } else {
/* 167 */       value10 = value11.getUTF8String(1);
/* 168 */     }
/* 169 */     boolean isNull9 = true;
/* 170 */     java.lang.String value9 = null;
/* 171 */     if (!isNull10) {
/* 172 */
/* 173 */       isNull9 = false;
/* 174 */       if (!isNull9) {
/* 175 */
/* 176 */         Object funcResult = null;
/* 177 */         funcResult = value10.toString();
/* 178 */         if (funcResult == null) {
/* 179 */           isNull9 = true;
/* 180 */         } else {
/* 181 */           value9 = (java.lang.String) funcResult;
/* 182 */         }
/* 183 */
/* 184 */       }
/* 185 */       isNull9 = value9 == null;
/* 186 */     }
/* 187 */     argValue3 = value9;
/* 188 */
/* 189 */   }
/* 190 */
/* 191 */
/* 192 */   private void evalIfFalseExpr(InternalRow i) {
/* 193 */     boolean isNull25 = false;
/* 194 */
/* 195 */     InternalRow value26 = i.getStruct(1, 2);
/* 196 */     int value25 = -1;
/* 197 */
/* 198 */     value25 = value26.getInt(0);
/* 199 */
/* 200 */     if (false) {
/* 201 */       throw new RuntimeException(((java.lang.String) references[3]));
/* 202 */     }
/* 203 */     argValue6 = value25;
/* 204 */
/* 205 */
/* 206 */     InternalRow value29 = i.getStruct(1, 2);
/* 207 */     boolean isNull28 = false;
/* 208 */     UTF8String value28 = null;
/* 209 */
/* 210 */
/* 211 */     if (value29.isNullAt(1)) {
/* 212 */       isNull28 = true;
/* 213 */     } else {
/* 214 */       value28 = value29.getUTF8String(1);
/* 215 */     }
/* 216 */     boolean isNull27 = true;
/* 217 */     java.lang.String value27 = null;
/* 218 */     if (!isNull28) {
/* 219 */
/* 220 */       isNull27 = false;
/* 221 */       if (!isNull27) {
/* 222 */
/* 223 */         Object funcResult2 = null;
/* 224 */         funcResult2 = value28.toString();
/* 225 */         if (funcResult2 == null) {
/* 226 */           isNull27 = true;
/* 227 */         } else {
/* 228 */           value27 = (java.lang.String) funcResult2;
/* 229 */         }
/* 230 */
/* 231 */       }
/* 232 */       isNull27 = value27 == null;
/* 233 */     }
/* 234 */     argValue7 = value27;
/* 235 */
/* 236 */
/* 237 */     Object obj1 = ((Expression) references[4]).eval(null);
/* 238 */     $line16.$read$$iw$$iw value30 = ($line16.$read$$iw$$iw) obj1;
/* 239 */     final $line16.$read$$iw$$iw$Foo2 value23 = false ? null : 
value30.new Foo2(argValue6, argValue7);
/* 240 */     isNull33 = false;
/* 241 */     value33 = value23;
/* 242 */   }
/* 243 */
/* 244 */
/* 245 */   public java.lang.Object apply(java.lang.Object _i) {
/* 246 */     InternalRow i = (InternalRow) _i;
/* 247 */
/* 248 */     InternalRow value3 = i.getStruct(0, 3);
/* 249 */     boolean isNull1 = false;
/* 250 */     $line14.$read$$iw$$iw$Foo1 value1 = null;
/* 251 */     if (!false && false) {
/* 252 */
/* 253 */       final $line14.$read$$iw$$iw$Foo1 value4 = null;
/* 254 */       isNull1 = true;
/* 255 */       value1 = value4;
/* 256 */     } else {
/* 257 */
/* 258 */       apply_0(i);
/* 259 */       apply_1(i);
/* 260 */
/* 261 */       Object obj = ((Expression) references[2]).eval(null);
/* 262 */       $line14.$read$$iw$$iw value18 = ($line14.$read$$iw$$iw) obj;
/* 263 */       final $line14.$read$$iw$$iw$Foo1 value5 = false ? null : 
value18.new Foo1(argValue2, argValue3, argValue4);
/* 264 */       isNull1 = false;
/* 265 */       value1 = value5;
/* 266 */     }
/* 267 */     argValue = value1;
/* 268 */
/* 269 */
/* 270 */     evalIfCondExpr(i);
/* 271 */     boolean isNull19 = false;
/* 272 */     $line16.$read$$iw$$iw$Foo2 value19 = null;
/* 273 */     if (!isNull31 && value31) {
/* 274 */       evalIfTrueExpr(i);
/* 275 */       isNull19 = isNull32;
/* 276 */       value19 = value32;
/* 277 */     } else {
/* 278 */       evalIfFalseExpr(i);
/* 279 */       isNull19 = isNull33;
/* 280 */       value19 = value33;
/* 281 */     }
/* 282 */     argValue1 = value19;
/* 283 */
/* 284 */
/* 285 */     final scala.Tuple2 value = false ? null : new 
scala.Tuple2(argValue, argValue1);
/* 286 */     if (false) {
/* 287 */       mutableRow.setNullAt(0);
/* 288 */     } else {
/* 289 */
/* 290 */       mutableRow.update(0, value);
/* 291 */     }
/* 292 */
/* 293 */     return mutableRow;
/* 294 */   }
/* 295 */ }

org.codehaus.commons.compiler.CompileException: File 'generated.java', Line 
263, Column 69: No applicable constructor/method found for actual parameters 
"int, java.lang.String, scala.collection.Seq"; candidates are: 
"$line14.$read$$iw$$iw$Foo1(int, java.lang.String, 
scala.collection.mutable.Seq)"
        at 
org.codehaus.janino.UnitCompiler.compileError(UnitCompiler.java:11004)
        at 
org.codehaus.janino.UnitCompiler.findMostSpecificIInvocable(UnitCompiler.java:8307)
        at 
org.codehaus.janino.UnitCompiler.invokeConstructor(UnitCompiler.java:7092)
        at org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:4686)
        at org.codehaus.janino.UnitCompiler.access$8200(UnitCompiler.java:206)
        at 
org.codehaus.janino.UnitCompiler$12.visitNewClassInstance(UnitCompiler.java:3786)
        at 
org.codehaus.janino.UnitCompiler$12.visitNewClassInstance(UnitCompiler.java:3762)
        at org.codehaus.janino.Java$NewClassInstance.accept(Java.java:4427)
        at org.codehaus.janino.UnitCompiler.compileGet(UnitCompiler.java:3762)
        at 
org.codehaus.janino.UnitCompiler.compileGetValue(UnitCompiler.java:4933)
        at org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:4067)
        at org.codehaus.janino.UnitCompiler.access$7200(UnitCompiler.java:206)
        at 
org.codehaus.janino.UnitCompiler$12.visitConditionalExpression(UnitCompiler.java:3771)
        at 
org.codehaus.janino.UnitCompiler$12.visitConditionalExpression(UnitCompiler.java:3762)
        at org.codehaus.janino.Java$ConditionalExpression.accept(Java.java:3877)
        at org.codehaus.janino.UnitCompiler.compileGet(UnitCompiler.java:3762)
        at 
org.codehaus.janino.UnitCompiler.compileGetValue(UnitCompiler.java:4933)
        at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:2330)
        at org.codehaus.janino.UnitCompiler.access$2600(UnitCompiler.java:206)
        at 
org.codehaus.janino.UnitCompiler$6.visitLocalVariableDeclarationStatement(UnitCompiler.java:1386)
        at 
org.codehaus.janino.UnitCompiler$6.visitLocalVariableDeclarationStatement(UnitCompiler.java:1370)
        at 
org.codehaus.janino.Java$LocalVariableDeclarationStatement.accept(Java.java:2974)
        at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:1370)
        at 
org.codehaus.janino.UnitCompiler.compileStatements(UnitCompiler.java:1450)
        at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:1436)
        at org.codehaus.janino.UnitCompiler.access$1600(UnitCompiler.java:206)
        at org.codehaus.janino.UnitCompiler$6.visitBlock(UnitCompiler.java:1376)
        at org.codehaus.janino.UnitCompiler$6.visitBlock(UnitCompiler.java:1370)
        at org.codehaus.janino.Java$Block.accept(Java.java:2471)
        at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:1370)
        at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:2185)
        at org.codehaus.janino.UnitCompiler.access$1800(UnitCompiler.java:206)
        at 
org.codehaus.janino.UnitCompiler$6.visitIfStatement(UnitCompiler.java:1378)
        at 
org.codehaus.janino.UnitCompiler$6.visitIfStatement(UnitCompiler.java:1370)
        at org.codehaus.janino.Java$IfStatement.accept(Java.java:2621)
        at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:1370)
        at 
org.codehaus.janino.UnitCompiler.compileStatements(UnitCompiler.java:1450)
        at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:2811)
        at 
org.codehaus.janino.UnitCompiler.compileDeclaredMethods(UnitCompiler.java:1262)
        at 
org.codehaus.janino.UnitCompiler.compileDeclaredMethods(UnitCompiler.java:1234)
        at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:538)
        at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:890)
        at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:894)
        at org.codehaus.janino.UnitCompiler.access$600(UnitCompiler.java:206)
        at 
org.codehaus.janino.UnitCompiler$2.visitMemberClassDeclaration(UnitCompiler.java:377)
        at 
org.codehaus.janino.UnitCompiler$2.visitMemberClassDeclaration(UnitCompiler.java:369)
        at 
org.codehaus.janino.Java$MemberClassDeclaration.accept(Java.java:1128)
        at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:369)
        at 
org.codehaus.janino.UnitCompiler.compileDeclaredMemberTypes(UnitCompiler.java:1209)
        at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:564)
        at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:420)
        at org.codehaus.janino.UnitCompiler.access$400(UnitCompiler.java:206)
        at 
org.codehaus.janino.UnitCompiler$2.visitPackageMemberClassDeclaration(UnitCompiler.java:374)
        at 
org.codehaus.janino.UnitCompiler$2.visitPackageMemberClassDeclaration(UnitCompiler.java:369)
        at 
org.codehaus.janino.Java$AbstractPackageMemberClassDeclaration.accept(Java.java:1309)
        at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:369)
        at org.codehaus.janino.UnitCompiler.compileUnit(UnitCompiler.java:345)
        at 
org.codehaus.janino.SimpleCompiler.compileToClassLoader(SimpleCompiler.java:396)
        at 
org.codehaus.janino.ClassBodyEvaluator.compileToClass(ClassBodyEvaluator.java:311)
        at 
org.codehaus.janino.ClassBodyEvaluator.cook(ClassBodyEvaluator.java:229)
        at org.codehaus.janino.SimpleCompiler.cook(SimpleCompiler.java:196)
        at org.codehaus.commons.compiler.Cookable.cook(Cookable.java:91)
        at 
org.apache.spark.sql.catalyst.expressions.codegen.CodeGenerator$.org$apache$spark$sql$catalyst$expressions$codegen$CodeGenerator$$doCompile(CodeGenerator.scala:935)
        at 
org.apache.spark.sql.catalyst.expressions.codegen.CodeGenerator$$anon$1.load(CodeGenerator.scala:998)
        at 
org.apache.spark.sql.catalyst.expressions.codegen.CodeGenerator$$anon$1.load(CodeGenerator.scala:995)
        at 
org.spark_project.guava.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3599)
        at 
org.spark_project.guava.cache.LocalCache$Segment.loadSync(LocalCache.java:2379)
        at 
org.spark_project.guava.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2342)
        at 
org.spark_project.guava.cache.LocalCache$Segment.get(LocalCache.java:2257)
        at org.spark_project.guava.cache.LocalCache.get(LocalCache.java:4000)
        at 
org.spark_project.guava.cache.LocalCache.getOrLoad(LocalCache.java:4004)
        at 
org.spark_project.guava.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4874)
        at 
org.apache.spark.sql.catalyst.expressions.codegen.CodeGenerator$.compile(CodeGenerator.scala:890)
        at 
org.apache.spark.sql.catalyst.expressions.codegen.GenerateSafeProjection$.create(GenerateSafeProjection.scala:194)
        at 
org.apache.spark.sql.catalyst.expressions.codegen.GenerateSafeProjection$.create(GenerateSafeProjection.scala:36)
        at 
org.apache.spark.sql.catalyst.expressions.codegen.CodeGenerator.generate(CodeGenerator.scala:874)
        at 
org.apache.spark.sql.catalyst.encoders.ExpressionEncoder.constructProjection$lzycompute(ExpressionEncoder.scala:272)
        at 
org.apache.spark.sql.catalyst.encoders.ExpressionEncoder.constructProjection(ExpressionEncoder.scala:272)
        at 
org.apache.spark.sql.catalyst.encoders.ExpressionEncoder.fromRow(ExpressionEncoder.scala:303)
        at 
org.apache.spark.sql.Dataset$$anonfun$org$apache$spark$sql$Dataset$$execute$1$1$$anonfun$apply$12.apply(Dataset.scala:2371)
        at 
org.apache.spark.sql.Dataset$$anonfun$org$apache$spark$sql$Dataset$$execute$1$1$$anonfun$apply$12.apply(Dataset.scala:2371)
        at 
scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
        at 
scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
        at 
scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)
        at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:186)
        at scala.collection.TraversableLike$class.map(TraversableLike.scala:234)
        at scala.collection.mutable.ArrayOps$ofRef.map(ArrayOps.scala:186)
        at 
org.apache.spark.sql.Dataset$$anonfun$org$apache$spark$sql$Dataset$$execute$1$1.apply(Dataset.scala:2371)
        at 
org.apache.spark.sql.execution.SQLExecution$.withNewExecutionId(SQLExecution.scala:57)
        at org.apache.spark.sql.Dataset.withNewExecutionId(Dataset.scala:2765)
        at 
org.apache.spark.sql.Dataset.org$apache$spark$sql$Dataset$$execute$1(Dataset.scala:2370)
        at 
org.apache.spark.sql.Dataset$$anonfun$org$apache$spark$sql$Dataset$$collect$1.apply(Dataset.scala:2375)
        at 
org.apache.spark.sql.Dataset$$anonfun$org$apache$spark$sql$Dataset$$collect$1.apply(Dataset.scala:2375)
        at org.apache.spark.sql.Dataset.withCallback(Dataset.scala:2778)
        at 
org.apache.spark.sql.Dataset.org$apache$spark$sql$Dataset$$collect(Dataset.scala:2375)
        at org.apache.spark.sql.Dataset.collect(Dataset.scala:2351)
        at $line18.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw.<init>(<console>:32)
        at $line18.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw.<init>(<console>:37)
        at $line18.$read$$iw$$iw$$iw$$iw$$iw$$iw.<init>(<console>:39)
        at $line18.$read$$iw$$iw$$iw$$iw$$iw.<init>(<console>:41)
        at $line18.$read$$iw$$iw$$iw$$iw.<init>(<console>:43)
        at $line18.$read$$iw$$iw$$iw.<init>(<console>:45)
        at $line18.$read$$iw$$iw.<init>(<console>:47)
        at $line18.$read$$iw.<init>(<console>:49)
        at $line18.$read.<init>(<console>:51)
        at $line18.$read$.<init>(<console>:55)
        at $line18.$read$.<clinit>(<console>)
        at $line18.$eval$.$print$lzycompute(<console>:7)
        at $line18.$eval$.$print(<console>:6)
        at $line18.$eval.$print(<console>)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at scala.tools.nsc.interpreter.IMain$ReadEvalPrint.call(IMain.scala:786)
        at 
scala.tools.nsc.interpreter.IMain$Request.loadAndRun(IMain.scala:1047)
        at 
scala.tools.nsc.interpreter.IMain$WrappedRequest$$anonfun$loadAndRunReq$1.apply(IMain.scala:638)
        at 
scala.tools.nsc.interpreter.IMain$WrappedRequest$$anonfun$loadAndRunReq$1.apply(IMain.scala:637)
        at 
scala.reflect.internal.util.ScalaClassLoader$class.asContext(ScalaClassLoader.scala:31)
        at 
scala.reflect.internal.util.AbstractFileClassLoader.asContext(AbstractFileClassLoader.scala:19)
        at 
scala.tools.nsc.interpreter.IMain$WrappedRequest.loadAndRunReq(IMain.scala:637)
        at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:569)
        at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:565)
        at 
scala.tools.nsc.interpreter.ILoop.interpretStartingWith(ILoop.scala:807)
        at scala.tools.nsc.interpreter.ILoop.command(ILoop.scala:681)
        at scala.tools.nsc.interpreter.ILoop.processLine(ILoop.scala:395)
        at scala.tools.nsc.interpreter.ILoop.loop(ILoop.scala:415)
        at 
scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply$mcZ$sp(ILoop.scala:923)
        at 
scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:909)
        at 
scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:909)
        at 
scala.reflect.internal.util.ScalaClassLoader$.savingContextLoader(ScalaClassLoader.scala:97)
        at scala.tools.nsc.interpreter.ILoop.process(ILoop.scala:909)
        at org.apache.spark.repl.Main$.doMain(Main.scala:68)
        at org.apache.spark.repl.Main$.main(Main.scala:51)
        at org.apache.spark.repl.Main.main(Main.scala)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at 
org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:738)
        at 
org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:187)
        at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:212)
        at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:126)
        at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
java.lang.RuntimeException: Error while decoding: 
java.util.concurrent.ExecutionException: java.lang.Exception: failed to 
compile: org.codehaus.commons.compiler.CompileException: File 'generated.java', 
Line 263, Column 69: No applicable constructor/method found for actual 
parameters "int, java.lang.String, scala.collection.Seq"; candidates are: 
"Foo1(int, java.lang.String, scala.collection.mutable.Seq)"
/* 001 */ public java.lang.Object generate(Object[] references) {
/* 002 */   return new SpecificSafeProjection(references);
/* 003 */ }
/* 004 */
/* 005 */ class SpecificSafeProjection extends 
org.apache.spark.sql.catalyst.expressions.codegen.BaseProjection {
/* 006 */
/* 007 */   private Object[] references;
/* 008 */   private InternalRow mutableRow;
/* 009 */   private Foo1 argValue;
/* 010 */   private Foo2 argValue1;
/* 011 */   private int argValue2;
/* 012 */   private java.lang.String argValue3;
/* 013 */   private scala.collection.Seq argValue4;
/* 014 */   private boolean resultIsNull;
/* 015 */   private java.lang.Object[] argValue5;
/* 016 */   private boolean MapObjects_loopIsNull1;
/* 017 */   private int MapObjects_loopValue0;
/* 018 */   private int argValue6;
/* 019 */   private java.lang.String argValue7;
/* 020 */   private boolean isNull31;
/* 021 */   private boolean value31;
/* 022 */   private boolean isNull32;
/* 023 */   private Foo2 value32;
/* 024 */   private boolean isNull33;
/* 025 */   private Foo2 value33;
/* 026 */
/* 027 */   public SpecificSafeProjection(Object[] references) {
/* 028 */     this.references = references;
/* 029 */     mutableRow = (InternalRow) references[references.length - 1];
/* 030 */
/* 031 */
/* 032 */
/* 033 */
/* 034 */
/* 035 */
/* 036 */
/* 037 */
/* 038 */
/* 039 */
/* 040 */
/* 041 */     isNull31 = false;
/* 042 */     value31 = false;
/* 043 */     isNull32 = false;
/* 044 */     value32 = null;
/* 045 */     isNull33 = false;
/* 046 */     value33 = null;
/* 047 */
/* 048 */   }
/* 049 */
/* 050 */   public void initialize(int partitionIndex) {
/* 051 */
/* 052 */   }
/* 053 */
/* 054 */
/* 055 */   private void evalIfTrueExpr(InternalRow i) {
/* 056 */     final Foo2 value22 = null;
/* 057 */     isNull32 = true;
/* 058 */     value32 = value22;
/* 059 */   }
/* 060 */
/* 061 */
/* 062 */   private void apply_1(InternalRow i) {
/* 063 */
/* 064 */
/* 065 */     resultIsNull = false;
/* 066 */     if (!resultIsNull) {
/* 067 */
/* 068 */       InternalRow value16 = i.getStruct(0, 3);
/* 069 */       boolean isNull15 = false;
/* 070 */       ArrayData value15 = null;
/* 071 */
/* 072 */
/* 073 */       if (value16.isNullAt(2)) {
/* 074 */         isNull15 = true;
/* 075 */       } else {
/* 076 */         value15 = value16.getArray(2);
/* 077 */       }
/* 078 */       ArrayData value14 = null;
/* 079 */
/* 080 */       if (!isNull15) {
/* 081 */
/* 082 */         Integer[] convertedArray = null;
/* 083 */         int dataLength = value15.numElements();
/* 084 */         convertedArray = new Integer[dataLength];
/* 085 */
/* 086 */         int loopIndex = 0;
/* 087 */         while (loopIndex < dataLength) {
/* 088 */           MapObjects_loopValue0 = (int) (value15.getInt(loopIndex));
/* 089 */           MapObjects_loopIsNull1 = value15.isNullAt(loopIndex);
/* 090 */
/* 091 */
/* 092 */           if (MapObjects_loopIsNull1) {
/* 093 */             throw new RuntimeException(((java.lang.String) 
references[1]));
/* 094 */           }
/* 095 */           if (false) {
/* 096 */             convertedArray[loopIndex] = null;
/* 097 */           } else {
/* 098 */             convertedArray[loopIndex] = MapObjects_loopValue0;
/* 099 */           }
/* 100 */
/* 101 */           loopIndex += 1;
/* 102 */         }
/* 103 */
/* 104 */         value14 = new 
org.apache.spark.sql.catalyst.util.GenericArrayData(convertedArray);
/* 105 */       }
/* 106 */       boolean isNull13 = true;
/* 107 */       java.lang.Object[] value13 = null;
/* 108 */       if (!isNull15) {
/* 109 */
/* 110 */         isNull13 = false;
/* 111 */         if (!isNull13) {
/* 112 */
/* 113 */           Object funcResult1 = null;
/* 114 */           funcResult1 = value14.array();
/* 115 */           if (funcResult1 == null) {
/* 116 */             isNull13 = true;
/* 117 */           } else {
/* 118 */             value13 = (java.lang.Object[]) funcResult1;
/* 119 */           }
/* 120 */
/* 121 */         }
/* 122 */         isNull13 = value13 == null;
/* 123 */       }
/* 124 */       resultIsNull = isNull13;
/* 125 */       argValue5 = value13;
/* 126 */     }
/* 127 */
/* 128 */     boolean isNull12 = resultIsNull;
/* 129 */     final scala.collection.Seq value12 = resultIsNull ? null : 
scala.collection.mutable.WrappedArray.make(argValue5);
/* 130 */     isNull12 = value12 == null;
/* 131 */     argValue4 = value12;
/* 132 */
/* 133 */   }
/* 134 */
/* 135 */
/* 136 */   private void evalIfCondExpr(InternalRow i) {
/* 137 */     InternalRow value21 = i.getStruct(1, 2);
/* 138 */     isNull31 = false;
/* 139 */     value31 = false;
/* 140 */   }
/* 141 */
/* 142 */
/* 143 */   private void apply_0(InternalRow i) {
/* 144 */
/* 145 */
/* 146 */     boolean isNull7 = false;
/* 147 */
/* 148 */     InternalRow value8 = i.getStruct(0, 3);
/* 149 */     int value7 = -1;
/* 150 */
/* 151 */     value7 = value8.getInt(0);
/* 152 */
/* 153 */     if (false) {
/* 154 */       throw new RuntimeException(((java.lang.String) references[0]));
/* 155 */     }
/* 156 */     argValue2 = value7;
/* 157 */
/* 158 */
/* 159 */     InternalRow value11 = i.getStruct(0, 3);
/* 160 */     boolean isNull10 = false;
/* 161 */     UTF8String value10 = null;
/* 162 */
/* 163 */
/* 164 */     if (value11.isNullAt(1)) {
/* 165 */       isNull10 = true;
/* 166 */     } else {
/* 167 */       value10 = value11.getUTF8String(1);
/* 168 */     }
/* 169 */     boolean isNull9 = true;
/* 170 */     java.lang.String value9 = null;
/* 171 */     if (!isNull10) {
/* 172 */
/* 173 */       isNull9 = false;
/* 174 */       if (!isNull9) {
/* 175 */
/* 176 */         Object funcResult = null;
/* 177 */         funcResult = value10.toString();
/* 178 */         if (funcResult == null) {
/* 179 */           isNull9 = true;
/* 180 */         } else {
/* 181 */           value9 = (java.lang.String) funcResult;
/* 182 */         }
/* 183 */
/* 184 */       }
/* 185 */       isNull9 = value9 == null;
/* 186 */     }
/* 187 */     argValue3 = value9;
/* 188 */
/* 189 */   }
/* 190 */
/* 191 */
/* 192 */   private void evalIfFalseExpr(InternalRow i) {
/* 193 */     boolean isNull25 = false;
/* 194 */
/* 195 */     InternalRow value26 = i.getStruct(1, 2);
/* 196 */     int value25 = -1;
/* 197 */
/* 198 */     value25 = value26.getInt(0);
/* 199 */
/* 200 */     if (false) {
/* 201 */       throw new RuntimeException(((java.lang.String) references[3]));
/* 202 */     }
/* 203 */     argValue6 = value25;
/* 204 */
/* 205 */
/* 206 */     InternalRow value29 = i.getStruct(1, 2);
/* 207 */     boolean isNull28 = false;
/* 208 */     UTF8String value28 = null;
/* 209 */
/* 210 */
/* 211 */     if (value29.isNullAt(1)) {
/* 212 */       isNull28 = true;
/* 213 */     } else {
/* 214 */       value28 = value29.getUTF8String(1);
/* 215 */     }
/* 216 */     boolean isNull27 = true;
/* 217 */     java.lang.String value27 = null;
/* 218 */     if (!isNull28) {
/* 219 */
/* 220 */       isNull27 = false;
/* 221 */       if (!isNull27) {
/* 222 */
/* 223 */         Object funcResult2 = null;
/* 224 */         funcResult2 = value28.toString();
/* 225 */         if (funcResult2 == null) {
/* 226 */           isNull27 = true;
/* 227 */         } else {
/* 228 */           value27 = (java.lang.String) funcResult2;
/* 229 */         }
/* 230 */
/* 231 */       }
/* 232 */       isNull27 = value27 == null;
/* 233 */     }
/* 234 */     argValue7 = value27;
/* 235 */
/* 236 */
/* 237 */     Object obj1 = ((Expression) references[4]).eval(null);
/* 238 */     $iw value30 = ($iw) obj1;
/* 239 */     final Foo2 value23 = false ? null : value30.new Foo2(argValue6, 
argValue7);
/* 240 */     isNull33 = false;
/* 241 */     value33 = value23;
/* 242 */   }
/* 243 */
/* 244 */
/* 245 */   public java.lang.Object apply(java.lang.Object _i) {
/* 246 */     InternalRow i = (InternalRow) _i;
/* 247 */
/* 248 */     InternalRow value3 = i.getStruct(0, 3);
/* 249 */     boolean isNull1 = false;
/* 250 */     Foo1 value1 = null;
/* 251 */     if (!false && false) {
/* 252 */
/* 253 */       final Foo1 value4 = null;
/* 254 */       isNull1 = true;
/* 255 */       value1 = value4;
/* 256 */     } else {
/* 257 */
/* 258 */       apply_0(i);
/* 259 */       apply_1(i);
/* 260 */
/* 261 */       Object obj = ((Expression) references[2]).eval(null);
/* 262 */       $iw value18 = ($iw) obj;
/* 263 */       final Foo1 value5 = false ? null : value18.new Foo1(argValue2, 
argValue3, argValue4);
/* 264 */       isNull1 = false;
/* 265 */       value1 = value5;
/* 266 */     }
/* 267 */     argValue = value1;
/* 268 */
/* 269 */
/* 270 */     evalIfCondExpr(i);
/* 271 */     boolean isNull19 = false;
/* 272 */     Foo2 value19 = null;
/* 273 */     if (!isNull31 && value31) {
/* 274 */       evalIfTrueExpr(i);
/* 275 */       isNull19 = isNull32;
/* 276 */       value19 = value32;
/* 277 */     } else {
/* 278 */       evalIfFalseExpr(i);
/* 279 */       isNull19 = isNull33;
/* 280 */       value19 = value33;
/* 281 */     }
/* 282 */     argValue1 = value19;
/* 283 */
/* 284 */
/* 285 */     final scala.Tuple2 value = false ? null : new 
scala.Tuple2(argValue, argValue1);
/* 286 */     if (false) {
/* 287 */       mutableRow.setNullAt(0);
/* 288 */     } else {
/* 289 */
/* 290 */       mutableRow.update(0, value);
/* 291 */     }
/* 292 */
/* 293 */     return mutableRow;
/* 294 */   }
/* 295 */ }

newInstance(class scala.Tuple2)
:- if (isnull(input[0, struct<x:int,s:string,seq:array<int>>, false])) null 
else newInstance(class Foo1)
:  :- isnull(input[0, struct<x:int,s:string,seq:array<int>>, false])
:  :  +- input[0, struct<x:int,s:string,seq:array<int>>, false]
:  :- null
:  +- newInstance(class Foo1)
:     :- assertnotnull(input[0, struct<x:int,s:string,seq:array<int>>, 
false].x, - field (class: "scala.Int", name: "x"), - root class: "Foo1")
:     :  +- input[0, struct<x:int,s:string,seq:array<int>>, false].x
:     :     +- input[0, struct<x:int,s:string,seq:array<int>>, false]
:     :- input[0, struct<x:int,s:string,seq:array<int>>, false].s.toString
:     :  +- input[0, struct<x:int,s:string,seq:array<int>>, false].s
:     :     +- input[0, struct<x:int,s:string,seq:array<int>>, false]
:     +- staticinvoke(class scala.collection.mutable.WrappedArray$, 
ObjectType(interface scala.collection.Seq), make, 
mapobjects(MapObjects_loopValue0, MapObjects_loopIsNull1, IntegerType, 
assertnotnull(lambdavariable(MapObjects_loopValue0, MapObjects_loopIsNull1, 
IntegerType), - array element class: "scala.Int", - field (class: 
"scala.collection.mutable.Seq", name: "seq"), - root class: "Foo1"), input[0, 
struct<x:int,s:string,seq:array<int>>, false].seq).array, true)
:        +- mapobjects(MapObjects_loopValue0, MapObjects_loopIsNull1, 
IntegerType, assertnotnull(lambdavariable(MapObjects_loopValue0, 
MapObjects_loopIsNull1, IntegerType), - array element class: "scala.Int", - 
field (class: "scala.collection.mutable.Seq", name: "seq"), - root class: 
"Foo1"), input[0, struct<x:int,s:string,seq:array<int>>, false].seq).array
:           +- mapobjects(MapObjects_loopValue0, MapObjects_loopIsNull1, 
IntegerType, assertnotnull(lambdavariable(MapObjects_loopValue0, 
MapObjects_loopIsNull1, IntegerType), - array element class: "scala.Int", - 
field (class: "scala.collection.mutable.Seq", name: "seq"), - root class: 
"Foo1"), input[0, struct<x:int,s:string,seq:array<int>>, false].seq)
:              :- assertnotnull(lambdavariable(MapObjects_loopValue0, 
MapObjects_loopIsNull1, IntegerType), - array element class: "scala.Int", - 
field (class: "scala.collection.mutable.Seq", name: "seq"), - root class: 
"Foo1")
:              :  +- lambdavariable(MapObjects_loopValue0, 
MapObjects_loopIsNull1, IntegerType)
:              +- input[0, struct<x:int,s:string,seq:array<int>>, false].seq
:                 +- input[0, struct<x:int,s:string,seq:array<int>>, false]
+- if (isnull(input[1, struct<x:int,s:string>, false])) null else 
newInstance(class Foo2)
   :- isnull(input[1, struct<x:int,s:string>, false])
   :  +- input[1, struct<x:int,s:string>, false]
   :- null
   +- newInstance(class Foo2)
      :- assertnotnull(input[1, struct<x:int,s:string>, false].x, - field 
(class: "scala.Int", name: "x"), - root class: "Foo2")
      :  +- input[1, struct<x:int,s:string>, false].x
      :     +- input[1, struct<x:int,s:string>, false]
      +- input[1, struct<x:int,s:string>, false].s.toString
         +- input[1, struct<x:int,s:string>, false].s
            +- input[1, struct<x:int,s:string>, false]

  at 
org.apache.spark.sql.catalyst.encoders.ExpressionEncoder.fromRow(ExpressionEncoder.scala:306)
  at 
org.apache.spark.sql.Dataset$$anonfun$org$apache$spark$sql$Dataset$$execute$1$1$$anonfun$apply$12.apply(Dataset.scala:2371)
  at 
org.apache.spark.sql.Dataset$$anonfun$org$apache$spark$sql$Dataset$$execute$1$1$$anonfun$apply$12.apply(Dataset.scala:2371)
  at 
scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
  at 
scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
  at 
scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)
  at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:186)
  at scala.collection.TraversableLike$class.map(TraversableLike.scala:234)
  at scala.collection.mutable.ArrayOps$ofRef.map(ArrayOps.scala:186)
  at 
org.apache.spark.sql.Dataset$$anonfun$org$apache$spark$sql$Dataset$$execute$1$1.apply(Dataset.scala:2371)
  at 
org.apache.spark.sql.execution.SQLExecution$.withNewExecutionId(SQLExecution.scala:57)
  at org.apache.spark.sql.Dataset.withNewExecutionId(Dataset.scala:2765)
  at 
org.apache.spark.sql.Dataset.org$apache$spark$sql$Dataset$$execute$1(Dataset.scala:2370)
  at 
org.apache.spark.sql.Dataset$$anonfun$org$apache$spark$sql$Dataset$$collect$1.apply(Dataset.scala:2375)
  at 
org.apache.spark.sql.Dataset$$anonfun$org$apache$spark$sql$Dataset$$collect$1.apply(Dataset.scala:2375)
  at org.apache.spark.sql.Dataset.withCallback(Dataset.scala:2778)
  at 
org.apache.spark.sql.Dataset.org$apache$spark$sql$Dataset$$collect(Dataset.scala:2375)
  at org.apache.spark.sql.Dataset.collect(Dataset.scala:2351)
  ... 48 elided
Caused by: java.util.concurrent.ExecutionException: java.lang.Exception: failed 
to compile: org.codehaus.commons.compiler.CompileException: File 
'generated.java', Line 263, Column 69: No applicable constructor/method found 
for actual parameters "int, java.lang.String, scala.collection.Seq"; candidates 
are: "Foo1(int, java.lang.String, scala.collection.mutable.Seq)"
/* 001 */ public java.lang.Object generate(Object[] references) {
/* 002 */   return new SpecificSafeProjection(references);
/* 003 */ }
/* 004 */
/* 005 */ class SpecificSafeProjection extends 
org.apache.spark.sql.catalyst.expressions.codegen.BaseProjection {
/* 006 */
/* 007 */   private Object[] references;
/* 008 */   private InternalRow mutableRow;
/* 009 */   private Foo1 argValue;
/* 010 */   private Foo2 argValue1;
/* 011 */   private int argValue2;
/* 012 */   private java.lang.String argValue3;
/* 013 */   private scala.collection.Seq argValue4;
/* 014 */   private boolean resultIsNull;
/* 015 */   private java.lang.Object[] argValue5;
/* 016 */   private boolean MapObjects_loopIsNull1;
/* 017 */   private int MapObjects_loopValue0;
/* 018 */   private int argValue6;
/* 019 */   private java.lang.String argValue7;
/* 020 */   private boolean isNull31;
/* 021 */   private boolean value31;
/* 022 */   private boolean isNull32;
/* 023 */   private Foo2 value32;
/* 024 */   private boolean isNull33;
/* 025 */   private Foo2 value33;
/* 026 */
/* 027 */   public SpecificSafeProjection(Object[] references) {
/* 028 */     this.references = references;
/* 029 */     mutableRow = (InternalRow) references[references.length - 1];
/* 030 */
/* 031 */
/* 032 */
/* 033 */
/* 034 */
/* 035 */
/* 036 */
/* 037 */
/* 038 */
/* 039 */
/* 040 */
/* 041 */     isNull31 = false;
/* 042 */     value31 = false;
/* 043 */     isNull32 = false;
/* 044 */     value32 = null;
/* 045 */     isNull33 = false;
/* 046 */     value33 = null;
/* 047 */
/* 048 */   }
/* 049 */
/* 050 */   public void initialize(int partitionIndex) {
/* 051 */
/* 052 */   }
/* 053 */
/* 054 */
/* 055 */   private void evalIfTrueExpr(InternalRow i) {
/* 056 */     final Foo2 value22 = null;
/* 057 */     isNull32 = true;
/* 058 */     value32 = value22;
/* 059 */   }
/* 060 */
/* 061 */
/* 062 */   private void apply_1(InternalRow i) {
/* 063 */
/* 064 */
/* 065 */     resultIsNull = false;
/* 066 */     if (!resultIsNull) {
/* 067 */
/* 068 */       InternalRow value16 = i.getStruct(0, 3);
/* 069 */       boolean isNull15 = false;
/* 070 */       ArrayData value15 = null;
/* 071 */
/* 072 */
/* 073 */       if (value16.isNullAt(2)) {
/* 074 */         isNull15 = true;
/* 075 */       } else {
/* 076 */         value15 = value16.getArray(2);
/* 077 */       }
/* 078 */       ArrayData value14 = null;
/* 079 */
/* 080 */       if (!isNull15) {
/* 081 */
/* 082 */         Integer[] convertedArray = null;
/* 083 */         int dataLength = value15.numElements();
/* 084 */         convertedArray = new Integer[dataLength];
/* 085 */
/* 086 */         int loopIndex = 0;
/* 087 */         while (loopIndex < dataLength) {
/* 088 */           MapObjects_loopValue0 = (int) (value15.getInt(loopIndex));
/* 089 */           MapObjects_loopIsNull1 = value15.isNullAt(loopIndex);
/* 090 */
/* 091 */
/* 092 */           if (MapObjects_loopIsNull1) {
/* 093 */             throw new RuntimeException(((java.lang.String) 
references[1]));
/* 094 */           }
/* 095 */           if (false) {
/* 096 */             convertedArray[loopIndex] = null;
/* 097 */           } else {
/* 098 */             convertedArray[loopIndex] = MapObjects_loopValue0;
/* 099 */           }
/* 100 */
/* 101 */           loopIndex += 1;
/* 102 */         }
/* 103 */
/* 104 */         value14 = new 
org.apache.spark.sql.catalyst.util.GenericArrayData(convertedArray);
/* 105 */       }
/* 106 */       boolean isNull13 = true;
/* 107 */       java.lang.Object[] value13 = null;
/* 108 */       if (!isNull15) {
/* 109 */
/* 110 */         isNull13 = false;
/* 111 */         if (!isNull13) {
/* 112 */
/* 113 */           Object funcResult1 = null;
/* 114 */           funcResult1 = value14.array();
/* 115 */           if (funcResult1 == null) {
/* 116 */             isNull13 = true;
/* 117 */           } else {
/* 118 */             value13 = (java.lang.Object[]) funcResult1;
/* 119 */           }
/* 120 */
/* 121 */         }
/* 122 */         isNull13 = value13 == null;
/* 123 */       }
/* 124 */       resultIsNull = isNull13;
/* 125 */       argValue5 = value13;
/* 126 */     }
/* 127 */
/* 128 */     boolean isNull12 = resultIsNull;
/* 129 */     final scala.collection.Seq value12 = resultIsNull ? null : 
scala.collection.mutable.WrappedArray.make(argValue5);
/* 130 */     isNull12 = value12 == null;
/* 131 */     argValue4 = value12;
/* 132 */
/* 133 */   }
/* 134 */
/* 135 */
/* 136 */   private void evalIfCondExpr(InternalRow i) {
/* 137 */     InternalRow value21 = i.getStruct(1, 2);
/* 138 */     isNull31 = false;
/* 139 */     value31 = false;
/* 140 */   }
/* 141 */
/* 142 */
/* 143 */   private void apply_0(InternalRow i) {
/* 144 */
/* 145 */
/* 146 */     boolean isNull7 = false;
/* 147 */
/* 148 */     InternalRow value8 = i.getStruct(0, 3);
/* 149 */     int value7 = -1;
/* 150 */
/* 151 */     value7 = value8.getInt(0);
/* 152 */
/* 153 */     if (false) {
/* 154 */       throw new RuntimeException(((java.lang.String) references[0]));
/* 155 */     }
/* 156 */     argValue2 = value7;
/* 157 */
/* 158 */
/* 159 */     InternalRow value11 = i.getStruct(0, 3);
/* 160 */     boolean isNull10 = false;
/* 161 */     UTF8String value10 = null;
/* 162 */
/* 163 */
/* 164 */     if (value11.isNullAt(1)) {
/* 165 */       isNull10 = true;
/* 166 */     } else {
/* 167 */       value10 = value11.getUTF8String(1);
/* 168 */     }
/* 169 */     boolean isNull9 = true;
/* 170 */     java.lang.String value9 = null;
/* 171 */     if (!isNull10) {
/* 172 */
/* 173 */       isNull9 = false;
/* 174 */       if (!isNull9) {
/* 175 */
/* 176 */         Object funcResult = null;
/* 177 */         funcResult = value10.toString();
/* 178 */         if (funcResult == null) {
/* 179 */           isNull9 = true;
/* 180 */         } else {
/* 181 */           value9 = (java.lang.String) funcResult;
/* 182 */         }
/* 183 */
/* 184 */       }
/* 185 */       isNull9 = value9 == null;
/* 186 */     }
/* 187 */     argValue3 = value9;
/* 188 */
/* 189 */   }
/* 190 */
/* 191 */
/* 192 */   private void evalIfFalseExpr(InternalRow i) {
/* 193 */     boolean isNull25 = false;
/* 194 */
/* 195 */     InternalRow value26 = i.getStruct(1, 2);
/* 196 */     int value25 = -1;
/* 197 */
/* 198 */     value25 = value26.getInt(0);
/* 199 */
/* 200 */     if (false) {
/* 201 */       throw new RuntimeException(((java.lang.String) references[3]));
/* 202 */     }
/* 203 */     argValue6 = value25;
/* 204 */
/* 205 */
/* 206 */     InternalRow value29 = i.getStruct(1, 2);
/* 207 */     boolean isNull28 = false;
/* 208 */     UTF8String value28 = null;
/* 209 */
/* 210 */
/* 211 */     if (value29.isNullAt(1)) {
/* 212 */       isNull28 = true;
/* 213 */     } else {
/* 214 */       value28 = value29.getUTF8String(1);
/* 215 */     }
/* 216 */     boolean isNull27 = true;
/* 217 */     java.lang.String value27 = null;
/* 218 */     if (!isNull28) {
/* 219 */
/* 220 */       isNull27 = false;
/* 221 */       if (!isNull27) {
/* 222 */
/* 223 */         Object funcResult2 = null;
/* 224 */         funcResult2 = value28.toString();
/* 225 */         if (funcResult2 == null) {
/* 226 */           isNull27 = true;
/* 227 */         } else {
/* 228 */           value27 = (java.lang.String) funcResult2;
/* 229 */         }
/* 230 */
/* 231 */       }
/* 232 */       isNull27 = value27 == null;
/* 233 */     }
/* 234 */     argValue7 = value27;
/* 235 */
/* 236 */
/* 237 */     Object obj1 = ((Expression) references[4]).eval(null);
/* 238 */     $iw value30 = ($iw) obj1;
/* 239 */     final Foo2 value23 = false ? null : value30.new Foo2(argValue6, 
argValue7);
/* 240 */     isNull33 = false;
/* 241 */     value33 = value23;
/* 242 */   }
/* 243 */
/* 244 */
/* 245 */   public java.lang.Object apply(java.lang.Object _i) {
/* 246 */     InternalRow i = (InternalRow) _i;
/* 247 */
/* 248 */     InternalRow value3 = i.getStruct(0, 3);
/* 249 */     boolean isNull1 = false;
/* 250 */     Foo1 value1 = null;
/* 251 */     if (!false && false) {
/* 252 */
/* 253 */       final Foo1 value4 = null;
/* 254 */       isNull1 = true;
/* 255 */       value1 = value4;
/* 256 */     } else {
/* 257 */
/* 258 */       apply_0(i);
/* 259 */       apply_1(i);
/* 260 */
/* 261 */       Object obj = ((Expression) references[2]).eval(null);
/* 262 */       $iw value18 = ($iw) obj;
/* 263 */       final Foo1 value5 = false ? null : value18.new Foo1(argValue2, 
argValue3, argValue4);
/* 264 */       isNull1 = false;
/* 265 */       value1 = value5;
/* 266 */     }
/* 267 */     argValue = value1;
/* 268 */
/* 269 */
/* 270 */     evalIfCondExpr(i);
/* 271 */     boolean isNull19 = false;
/* 272 */     Foo2 value19 = null;
/* 273 */     if (!isNull31 && value31) {
/* 274 */       evalIfTrueExpr(i);
/* 275 */       isNull19 = isNull32;
/* 276 */       value19 = value32;
/* 277 */     } else {
/* 278 */       evalIfFalseExpr(i);
/* 279 */       isNull19 = isNull33;
/* 280 */       value19 = value33;
/* 281 */     }
/* 282 */     argValue1 = value19;
/* 283 */
/* 284 */
/* 285 */     final scala.Tuple2 value = false ? null : new 
scala.Tuple2(argValue, argValue1);
/* 286 */     if (false) {
/* 287 */       mutableRow.setNullAt(0);
/* 288 */     } else {
/* 289 */
/* 290 */       mutableRow.update(0, value);
/* 291 */     }
/* 292 */
/* 293 */     return mutableRow;
/* 294 */   }
/* 295 */ }

  at 
org.spark_project.guava.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:306)
  at 
org.spark_project.guava.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:293)
  at 
org.spark_project.guava.util.concurrent.AbstractFuture.get(AbstractFuture.java:116)
  at 
org.spark_project.guava.util.concurrent.Uninterruptibles.getUninterruptibly(Uninterruptibles.java:135)
  at 
org.spark_project.guava.cache.LocalCache$Segment.getAndRecordStats(LocalCache.java:2410)
  at 
org.spark_project.guava.cache.LocalCache$Segment.loadSync(LocalCache.java:2380)
  at 
org.spark_project.guava.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2342)
  at org.spark_project.guava.cache.LocalCache$Segment.get(LocalCache.java:2257)
  at org.spark_project.guava.cache.LocalCache.get(LocalCache.java:4000)
  at org.spark_project.guava.cache.LocalCache.getOrLoad(LocalCache.java:4004)
  at 
org.spark_project.guava.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4874)
  at 
org.apache.spark.sql.catalyst.expressions.codegen.CodeGenerator$.compile(CodeGenerator.scala:890)
  at 
org.apache.spark.sql.catalyst.expressions.codegen.GenerateSafeProjection$.create(GenerateSafeProjection.scala:194)
  at 
org.apache.spark.sql.catalyst.expressions.codegen.GenerateSafeProjection$.create(GenerateSafeProjection.scala:36)
  at 
org.apache.spark.sql.catalyst.expressions.codegen.CodeGenerator.generate(CodeGenerator.scala:874)
  at 
org.apache.spark.sql.catalyst.encoders.ExpressionEncoder.constructProjection$lzycompute(ExpressionEncoder.scala:272)
  at 
org.apache.spark.sql.catalyst.encoders.ExpressionEncoder.constructProjection(ExpressionEncoder.scala:272)
  at 
org.apache.spark.sql.catalyst.encoders.ExpressionEncoder.fromRow(ExpressionEncoder.scala:303)
  ... 65 more
Caused by: java.lang.Exception: failed to compile: 
org.codehaus.commons.compiler.CompileException: File 'generated.java', Line 
263, Column 69: No applicable constructor/method found for actual parameters 
"int, java.lang.String, scala.collection.Seq"; candidates are: "Foo1(int, 
java.lang.String, scala.collection.mutable.Seq)"
/* 001 */ public java.lang.Object generate(Object[] references) {
/* 002 */   return new SpecificSafeProjection(references);
/* 003 */ }
/* 004 */
/* 005 */ class SpecificSafeProjection extends 
org.apache.spark.sql.catalyst.expressions.codegen.BaseProjection {
/* 006 */
/* 007 */   private Object[] references;
/* 008 */   private InternalRow mutableRow;
/* 009 */   private Foo1 argValue;
/* 010 */   private Foo2 argValue1;
/* 011 */   private int argValue2;
/* 012 */   private java.lang.String argValue3;
/* 013 */   private scala.collection.Seq argValue4;
/* 014 */   private boolean resultIsNull;
/* 015 */   private java.lang.Object[] argValue5;
/* 016 */   private boolean MapObjects_loopIsNull1;
/* 017 */   private int MapObjects_loopValue0;
/* 018 */   private int argValue6;
/* 019 */   private java.lang.String argValue7;
/* 020 */   private boolean isNull31;
/* 021 */   private boolean value31;
/* 022 */   private boolean isNull32;
/* 023 */   private Foo2 value32;
/* 024 */   private boolean isNull33;
/* 025 */   private Foo2 value33;
/* 026 */
/* 027 */   public SpecificSafeProjection(Object[] references) {
/* 028 */     this.references = references;
/* 029 */     mutableRow = (InternalRow) references[references.length - 1];
/* 030 */
/* 031 */
/* 032 */
/* 033 */
/* 034 */
/* 035 */
/* 036 */
/* 037 */
/* 038 */
/* 039 */
/* 040 */
/* 041 */     isNull31 = false;
/* 042 */     value31 = false;
/* 043 */     isNull32 = false;
/* 044 */     value32 = null;
/* 045 */     isNull33 = false;
/* 046 */     value33 = null;
/* 047 */
/* 048 */   }
/* 049 */
/* 050 */   public void initialize(int partitionIndex) {
/* 051 */
/* 052 */   }
/* 053 */
/* 054 */
/* 055 */   private void evalIfTrueExpr(InternalRow i) {
/* 056 */     final Foo2 value22 = null;
/* 057 */     isNull32 = true;
/* 058 */     value32 = value22;
/* 059 */   }
/* 060 */
/* 061 */
/* 062 */   private void apply_1(InternalRow i) {
/* 063 */
/* 064 */
/* 065 */     resultIsNull = false;
/* 066 */     if (!resultIsNull) {
/* 067 */
/* 068 */       InternalRow value16 = i.getStruct(0, 3);
/* 069 */       boolean isNull15 = false;
/* 070 */       ArrayData value15 = null;
/* 071 */
/* 072 */
/* 073 */       if (value16.isNullAt(2)) {
/* 074 */         isNull15 = true;
/* 075 */       } else {
/* 076 */         value15 = value16.getArray(2);
/* 077 */       }
/* 078 */       ArrayData value14 = null;
/* 079 */
/* 080 */       if (!isNull15) {
/* 081 */
/* 082 */         Integer[] convertedArray = null;
/* 083 */         int dataLength = value15.numElements();
/* 084 */         convertedArray = new Integer[dataLength];
/* 085 */
/* 086 */         int loopIndex = 0;
/* 087 */         while (loopIndex < dataLength) {
/* 088 */           MapObjects_loopValue0 = (int) (value15.getInt(loopIndex));
/* 089 */           MapObjects_loopIsNull1 = value15.isNullAt(loopIndex);
/* 090 */
/* 091 */
/* 092 */           if (MapObjects_loopIsNull1) {
/* 093 */             throw new RuntimeException(((java.lang.String) 
references[1]));
/* 094 */           }
/* 095 */           if (false) {
/* 096 */             convertedArray[loopIndex] = null;
/* 097 */           } else {
/* 098 */             convertedArray[loopIndex] = MapObjects_loopValue0;
/* 099 */           }
/* 100 */
/* 101 */           loopIndex += 1;
/* 102 */         }
/* 103 */
/* 104 */         value14 = new 
org.apache.spark.sql.catalyst.util.GenericArrayData(convertedArray);
/* 105 */       }
/* 106 */       boolean isNull13 = true;
/* 107 */       java.lang.Object[] value13 = null;
/* 108 */       if (!isNull15) {
/* 109 */
/* 110 */         isNull13 = false;
/* 111 */         if (!isNull13) {
/* 112 */
/* 113 */           Object funcResult1 = null;
/* 114 */           funcResult1 = value14.array();
/* 115 */           if (funcResult1 == null) {
/* 116 */             isNull13 = true;
/* 117 */           } else {
/* 118 */             value13 = (java.lang.Object[]) funcResult1;
/* 119 */           }
/* 120 */
/* 121 */         }
/* 122 */         isNull13 = value13 == null;
/* 123 */       }
/* 124 */       resultIsNull = isNull13;
/* 125 */       argValue5 = value13;
/* 126 */     }
/* 127 */
/* 128 */     boolean isNull12 = resultIsNull;
/* 129 */     final scala.collection.Seq value12 = resultIsNull ? null : 
scala.collection.mutable.WrappedArray.make(argValue5);
/* 130 */     isNull12 = value12 == null;
/* 131 */     argValue4 = value12;
/* 132 */
/* 133 */   }
/* 134 */
/* 135 */
/* 136 */   private void evalIfCondExpr(InternalRow i) {
/* 137 */     InternalRow value21 = i.getStruct(1, 2);
/* 138 */     isNull31 = false;
/* 139 */     value31 = false;
/* 140 */   }
/* 141 */
/* 142 */
/* 143 */   private void apply_0(InternalRow i) {
/* 144 */
/* 145 */
/* 146 */     boolean isNull7 = false;
/* 147 */
/* 148 */     InternalRow value8 = i.getStruct(0, 3);
/* 149 */     int value7 = -1;
/* 150 */
/* 151 */     value7 = value8.getInt(0);
/* 152 */
/* 153 */     if (false) {
/* 154 */       throw new RuntimeException(((java.lang.String) references[0]));
/* 155 */     }
/* 156 */     argValue2 = value7;
/* 157 */
/* 158 */
/* 159 */     InternalRow value11 = i.getStruct(0, 3);
/* 160 */     boolean isNull10 = false;
/* 161 */     UTF8String value10 = null;
/* 162 */
/* 163 */
/* 164 */     if (value11.isNullAt(1)) {
/* 165 */       isNull10 = true;
/* 166 */     } else {
/* 167 */       value10 = value11.getUTF8String(1);
/* 168 */     }
/* 169 */     boolean isNull9 = true;
/* 170 */     java.lang.String value9 = null;
/* 171 */     if (!isNull10) {
/* 172 */
/* 173 */       isNull9 = false;
/* 174 */       if (!isNull9) {
/* 175 */
/* 176 */         Object funcResult = null;
/* 177 */         funcResult = value10.toString();
/* 178 */         if (funcResult == null) {
/* 179 */           isNull9 = true;
/* 180 */         } else {
/* 181 */           value9 = (java.lang.String) funcResult;
/* 182 */         }
/* 183 */
/* 184 */       }
/* 185 */       isNull9 = value9 == null;
/* 186 */     }
/* 187 */     argValue3 = value9;
/* 188 */
/* 189 */   }
/* 190 */
/* 191 */
/* 192 */   private void evalIfFalseExpr(InternalRow i) {
/* 193 */     boolean isNull25 = false;
/* 194 */
/* 195 */     InternalRow value26 = i.getStruct(1, 2);
/* 196 */     int value25 = -1;
/* 197 */
/* 198 */     value25 = value26.getInt(0);
/* 199 */
/* 200 */     if (false) {
/* 201 */       throw new RuntimeException(((java.lang.String) references[3]));
/* 202 */     }
/* 203 */     argValue6 = value25;
/* 204 */
/* 205 */
/* 206 */     InternalRow value29 = i.getStruct(1, 2);
/* 207 */     boolean isNull28 = false;
/* 208 */     UTF8String value28 = null;
/* 209 */
/* 210 */
/* 211 */     if (value29.isNullAt(1)) {
/* 212 */       isNull28 = true;
/* 213 */     } else {
/* 214 */       value28 = value29.getUTF8String(1);
/* 215 */     }
/* 216 */     boolean isNull27 = true;
/* 217 */     java.lang.String value27 = null;
/* 218 */     if (!isNull28) {
/* 219 */
/* 220 */       isNull27 = false;
/* 221 */       if (!isNull27) {
/* 222 */
/* 223 */         Object funcResult2 = null;
/* 224 */         funcResult2 = value28.toString();
/* 225 */         if (funcResult2 == null) {
/* 226 */           isNull27 = true;
/* 227 */         } else {
/* 228 */           value27 = (java.lang.String) funcResult2;
/* 229 */         }
/* 230 */
/* 231 */       }
/* 232 */       isNull27 = value27 == null;
/* 233 */     }
/* 234 */     argValue7 = value27;
/* 235 */
/* 236 */
/* 237 */     Object obj1 = ((Expression) references[4]).eval(null);
/* 238 */     $iw value30 = ($iw) obj1;
/* 239 */     final Foo2 value23 = false ? null : value30.new Foo2(argValue6, 
argValue7);
/* 240 */     isNull33 = false;
/* 241 */     value33 = value23;
/* 242 */   }
/* 243 */
/* 244 */
/* 245 */   public java.lang.Object apply(java.lang.Object _i) {
/* 246 */     InternalRow i = (InternalRow) _i;
/* 247 */
/* 248 */     InternalRow value3 = i.getStruct(0, 3);
/* 249 */     boolean isNull1 = false;
/* 250 */     Foo1 value1 = null;
/* 251 */     if (!false && false) {
/* 252 */
/* 253 */       final Foo1 value4 = null;
/* 254 */       isNull1 = true;
/* 255 */       value1 = value4;
/* 256 */     } else {
/* 257 */
/* 258 */       apply_0(i);
/* 259 */       apply_1(i);
/* 260 */
/* 261 */       Object obj = ((Expression) references[2]).eval(null);
/* 262 */       $iw value18 = ($iw) obj;
/* 263 */       final Foo1 value5 = false ? null : value18.new Foo1(argValue2, 
argValue3, argValue4);
/* 264 */       isNull1 = false;
/* 265 */       value1 = value5;
/* 266 */     }
/* 267 */     argValue = value1;
/* 268 */
/* 269 */
/* 270 */     evalIfCondExpr(i);
/* 271 */     boolean isNull19 = false;
/* 272 */     Foo2 value19 = null;
/* 273 */     if (!isNull31 && value31) {
/* 274 */       evalIfTrueExpr(i);
/* 275 */       isNull19 = isNull32;
/* 276 */       value19 = value32;
/* 277 */     } else {
/* 278 */       evalIfFalseExpr(i);
/* 279 */       isNull19 = isNull33;
/* 280 */       value19 = value33;
/* 281 */     }
/* 282 */     argValue1 = value19;
/* 283 */
/* 284 */
/* 285 */     final scala.Tuple2 value = false ? null : new 
scala.Tuple2(argValue, argValue1);
/* 286 */     if (false) {
/* 287 */       mutableRow.setNullAt(0);
/* 288 */     } else {
/* 289 */
/* 290 */       mutableRow.update(0, value);
/* 291 */     }
/* 292 */
/* 293 */     return mutableRow;
/* 294 */   }
/* 295 */ }

  at 
org.apache.spark.sql.catalyst.expressions.codegen.CodeGenerator$.org$apache$spark$sql$catalyst$expressions$codegen$CodeGenerator$$doCompile(CodeGenerator.scala:941)
  at 
org.apache.spark.sql.catalyst.expressions.codegen.CodeGenerator$$anon$1.load(CodeGenerator.scala:998)
  at 
org.apache.spark.sql.catalyst.expressions.codegen.CodeGenerator$$anon$1.load(CodeGenerator.scala:995)
  at 
org.spark_project.guava.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3599)
  at 
org.spark_project.guava.cache.LocalCache$Segment.loadSync(LocalCache.java:2379)
  ... 77 more
Caused by: org.codehaus.commons.compiler.CompileException: File 
'generated.java', Line 263, Column 69: No applicable constructor/method found 
for actual parameters "int, java.lang.String, scala.collection.Seq"; candidates 
are: "Foo1(int, java.lang.String, scala.collection.mutable.Seq)"
  at org.codehaus.janino.UnitCompiler.compileError(UnitCompiler.java:11004)
  at 
org.codehaus.janino.UnitCompiler.findMostSpecificIInvocable(UnitCompiler.java:8307)
  at org.codehaus.janino.UnitCompiler.invokeConstructor(UnitCompiler.java:7092)
  at org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:4686)
  at org.codehaus.janino.UnitCompiler.access$8200(UnitCompiler.java:206)
  at 
org.codehaus.janino.UnitCompiler$12.visitNewClassInstance(UnitCompiler.java:3786)
  at 
org.codehaus.janino.UnitCompiler$12.visitNewClassInstance(UnitCompiler.java:3762)
  at org.codehaus.janino.Java$NewClassInstance.accept(Java.java:4427)
  at org.codehaus.janino.UnitCompiler.compileGet(UnitCompiler.java:3762)
  at org.codehaus.janino.UnitCompiler.compileGetValue(UnitCompiler.java:4933)
  at org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:4067)
  at org.codehaus.janino.UnitCompiler.access$7200(UnitCompiler.java:206)
  at 
org.codehaus.janino.UnitCompiler$12.visitConditionalExpression(UnitCompiler.java:3771)
  at 
org.codehaus.janino.UnitCompiler$12.visitConditionalExpression(UnitCompiler.java:3762)
  at org.codehaus.janino.Java$ConditionalExpression.accept(Java.java:3877)
  at org.codehaus.janino.UnitCompiler.compileGet(UnitCompiler.java:3762)
  at org.codehaus.janino.UnitCompiler.compileGetValue(UnitCompiler.java:4933)
  at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:2330)
  at org.codehaus.janino.UnitCompiler.access$2600(UnitCompiler.java:206)
  at 
org.codehaus.janino.UnitCompiler$6.visitLocalVariableDeclarationStatement(UnitCompiler.java:1386)
  at 
org.codehaus.janino.UnitCompiler$6.visitLocalVariableDeclarationStatement(UnitCompiler.java:1370)
  at 
org.codehaus.janino.Java$LocalVariableDeclarationStatement.accept(Java.java:2974)
  at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:1370)
  at org.codehaus.janino.UnitCompiler.compileStatements(UnitCompiler.java:1450)
  at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:1436)
  at org.codehaus.janino.UnitCompiler.access$1600(UnitCompiler.java:206)
  at org.codehaus.janino.UnitCompiler$6.visitBlock(UnitCompiler.java:1376)
  at org.codehaus.janino.UnitCompiler$6.visitBlock(UnitCompiler.java:1370)
  at org.codehaus.janino.Java$Block.accept(Java.java:2471)
  at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:1370)
  at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:2185)
  at org.codehaus.janino.UnitCompiler.access$1800(UnitCompiler.java:206)
  at org.codehaus.janino.UnitCompiler$6.visitIfStatement(UnitCompiler.java:1378)
  at org.codehaus.janino.UnitCompiler$6.visitIfStatement(UnitCompiler.java:1370)
  at org.codehaus.janino.Java$IfStatement.accept(Java.java:2621)
  at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:1370)
  at org.codehaus.janino.UnitCompiler.compileStatements(UnitCompiler.java:1450)
  at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:2811)
  at 
org.codehaus.janino.UnitCompiler.compileDeclaredMethods(UnitCompiler.java:1262)
  at 
org.codehaus.janino.UnitCompiler.compileDeclaredMethods(UnitCompiler.java:1234)
  at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:538)
  at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:890)
  at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:894)
  at org.codehaus.janino.UnitCompiler.access$600(UnitCompiler.java:206)
  at 
org.codehaus.janino.UnitCompiler$2.visitMemberClassDeclaration(UnitCompiler.java:377)
  at 
org.codehaus.janino.UnitCompiler$2.visitMemberClassDeclaration(UnitCompiler.java:369)
  at org.codehaus.janino.Java$MemberClassDeclaration.accept(Java.java:1128)
  at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:369)
  at 
org.codehaus.janino.UnitCompiler.compileDeclaredMemberTypes(UnitCompiler.java:1209)
  at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:564)
  at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:420)
  at org.codehaus.janino.UnitCompiler.access$400(UnitCompiler.java:206)
  at 
org.codehaus.janino.UnitCompiler$2.visitPackageMemberClassDeclaration(UnitCompiler.java:374)
  at 
org.codehaus.janino.UnitCompiler$2.visitPackageMemberClassDeclaration(UnitCompiler.java:369)
  at 
org.codehaus.janino.Java$AbstractPackageMemberClassDeclaration.accept(Java.java:1309)
  at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:369)
  at org.codehaus.janino.UnitCompiler.compileUnit(UnitCompiler.java:345)
  at 
org.codehaus.janino.SimpleCompiler.compileToClassLoader(SimpleCompiler.java:396)
  at 
org.codehaus.janino.ClassBodyEvaluator.compileToClass(ClassBodyEvaluator.java:311)
  at org.codehaus.janino.ClassBodyEvaluator.cook(ClassBodyEvaluator.java:229)
  at org.codehaus.janino.SimpleCompiler.cook(SimpleCompiler.java:196)
  at org.codehaus.commons.compiler.Cookable.cook(Cookable.java:91)
  at 
org.apache.spark.sql.catalyst.expressions.codegen.CodeGenerator$.org$apache$spark$sql$catalyst$expressions$codegen$CodeGenerator$$doCompile(CodeGenerator.scala:935)
  ... 81 more


was (Author: tiddman):
The example above does not exhibit the problem.  Here is a concise example that 
does.

{quote}% spark-shell
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use 
setLogLevel(newLevel).
17/10/20 14:09:04 WARN NativeCodeLoader: Unable to load native-hadoop library 
for your platform... using builtin-java classes where applicable
17/10/20 14:09:08 WARN ObjectStore: Failed to get database global_temp, 
returning NoSuchObjectException
Spark context Web UI available at http://10.10.43.134:4040
Spark context available as 'sc' (master = local[*], app id = 
local-1508522945163).
Spark session available as 'spark'.
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 2.1.0
      /_/
         
Using Scala version 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_131)
Type in expressions to have them evaluated.
Type :help for more information.

scala> case class Foo1(x: Int, s: String, seq: 
scala.collection.mutable.Seq[Int] = scala.collection.mutable.Seq.empty[Int])
defined class Foo1

scala> val ds1 = Seq(Foo1(1, "a"), Foo1(2, "b")).toDS
ds1: org.apache.spark.sql.Dataset[Foo1] = [x: int, s: string ... 1 more field]

scala> case class Foo2(x: Int, s: String)
defined class Foo2

scala> val ds2 = Seq(Foo2(1, "aa"), Foo2(3, "cc")).toDS
ds2: org.apache.spark.sql.Dataset[Foo2] = [x: int, s: string]

scala> ds1.joinWith(ds2, ds1.col("x") === ds2.col("x")).collect()
17/10/20 14:09:14 ERROR CodeGenerator: failed to compile: 
org.codehaus.commons.compiler.CompileException: File 'generated.java', Line 
263, Column 69: No applicable constructor/method found for actual parameters 
"int, java.lang.String, scala.collection.Seq"; candidates are: 
"$line14.$read$$iw$$iw$Foo1(int, java.lang.String, 
scala.collection.mutable.Seq)"
/* 001 */ public java.lang.Object generate(Object[] references) {
/* 002 */   return new SpecificSafeProjection(references);
/* 003 */ }
/* 004 */
/* 005 */ class SpecificSafeProjection extends 
org.apache.spark.sql.catalyst.expressions.codegen.BaseProjection {
/* 006 */
/* 007 */   private Object[] references;
/* 008 */   private InternalRow mutableRow;
/* 009 */   private $line14.$read$$iw$$iw$Foo1 argValue;
/* 010 */   private $line16.$read$$iw$$iw$Foo2 argValue1;
/* 011 */   private int argValue2;
/* 012 */   private java.lang.String argValue3;
/* 013 */   private scala.collection.Seq argValue4;
/* 014 */   private boolean resultIsNull;
/* 015 */   private java.lang.Object[] argValue5;
/* 016 */   private boolean MapObjects_loopIsNull1;
/* 017 */   private int MapObjects_loopValue0;
/* 018 */   private int argValue6;
/* 019 */   private java.lang.String argValue7;
/* 020 */   private boolean isNull31;
/* 021 */   private boolean value31;
/* 022 */   private boolean isNull32;
/* 023 */   private $line16.$read$$iw$$iw$Foo2 value32;
/* 024 */   private boolean isNull33;
/* 025 */   private $line16.$read$$iw$$iw$Foo2 value33;
/* 026 */
/* 027 */   public SpecificSafeProjection(Object[] references) {
/* 028 */     this.references = references;
/* 029 */     mutableRow = (InternalRow) references[references.length - 1];
/* 030 */
/* 031 */
/* 032 */
/* 033 */
/* 034 */
/* 035 */
/* 036 */
/* 037 */
/* 038 */
/* 039 */
/* 040 */
/* 041 */     isNull31 = false;
/* 042 */     value31 = false;
/* 043 */     isNull32 = false;
/* 044 */     value32 = null;
/* 045 */     isNull33 = false;
/* 046 */     value33 = null;
/* 047 */
/* 048 */   }
/* 049 */
/* 050 */   public void initialize(int partitionIndex) {
/* 051 */
/* 052 */   }
/* 053 */
/* 054 */
/* 055 */   private void evalIfTrueExpr(InternalRow i) {
/* 056 */     final $line16.$read$$iw$$iw$Foo2 value22 = null;
/* 057 */     isNull32 = true;
/* 058 */     value32 = value22;
/* 059 */   }
/* 060 */
/* 061 */
/* 062 */   private void apply_1(InternalRow i) {
/* 063 */
/* 064 */
/* 065 */     resultIsNull = false;
/* 066 */     if (!resultIsNull) {
/* 067 */
/* 068 */       InternalRow value16 = i.getStruct(0, 3);
/* 069 */       boolean isNull15 = false;
/* 070 */       ArrayData value15 = null;
/* 071 */
/* 072 */
/* 073 */       if (value16.isNullAt(2)) {
/* 074 */         isNull15 = true;
/* 075 */       } else {
/* 076 */         value15 = value16.getArray(2);
/* 077 */       }
/* 078 */       ArrayData value14 = null;
/* 079 */
/* 080 */       if (!isNull15) {
/* 081 */
/* 082 */         Integer[] convertedArray = null;
/* 083 */         int dataLength = value15.numElements();
/* 084 */         convertedArray = new Integer[dataLength];
/* 085 */
/* 086 */         int loopIndex = 0;
/* 087 */         while (loopIndex < dataLength) {
/* 088 */           MapObjects_loopValue0 = (int) (value15.getInt(loopIndex));
/* 089 */           MapObjects_loopIsNull1 = value15.isNullAt(loopIndex);
/* 090 */
/* 091 */
/* 092 */           if (MapObjects_loopIsNull1) {
/* 093 */             throw new RuntimeException(((java.lang.String) 
references[1]));
/* 094 */           }
/* 095 */           if (false) {
/* 096 */             convertedArray[loopIndex] = null;
/* 097 */           } else {
/* 098 */             convertedArray[loopIndex] = MapObjects_loopValue0;
/* 099 */           }
/* 100 */
/* 101 */           loopIndex += 1;
/* 102 */         }
/* 103 */
/* 104 */         value14 = new 
org.apache.spark.sql.catalyst.util.GenericArrayData(convertedArray);
/* 105 */       }
/* 106 */       boolean isNull13 = true;
/* 107 */       java.lang.Object[] value13 = null;
/* 108 */       if (!isNull15) {
/* 109 */
/* 110 */         isNull13 = false;
/* 111 */         if (!isNull13) {
/* 112 */
/* 113 */           Object funcResult1 = null;
/* 114 */           funcResult1 = value14.array();
/* 115 */           if (funcResult1 == null) {
/* 116 */             isNull13 = true;
/* 117 */           } else {
/* 118 */             value13 = (java.lang.Object[]) funcResult1;
/* 119 */           }
/* 120 */
/* 121 */         }
/* 122 */         isNull13 = value13 == null;
/* 123 */       }
/* 124 */       resultIsNull = isNull13;
/* 125 */       argValue5 = value13;
/* 126 */     }
/* 127 */
/* 128 */     boolean isNull12 = resultIsNull;
/* 129 */     final scala.collection.Seq value12 = resultIsNull ? null : 
scala.collection.mutable.WrappedArray.make(argValue5);
/* 130 */     isNull12 = value12 == null;
/* 131 */     argValue4 = value12;
/* 132 */
/* 133 */   }
/* 134 */
/* 135 */
/* 136 */   private void evalIfCondExpr(InternalRow i) {
/* 137 */     InternalRow value21 = i.getStruct(1, 2);
/* 138 */     isNull31 = false;
/* 139 */     value31 = false;
/* 140 */   }
/* 141 */
/* 142 */
/* 143 */   private void apply_0(InternalRow i) {
/* 144 */
/* 145 */
/* 146 */     boolean isNull7 = false;
/* 147 */
/* 148 */     InternalRow value8 = i.getStruct(0, 3);
/* 149 */     int value7 = -1;
/* 150 */
/* 151 */     value7 = value8.getInt(0);
/* 152 */
/* 153 */     if (false) {
/* 154 */       throw new RuntimeException(((java.lang.String) references[0]));
/* 155 */     }
/* 156 */     argValue2 = value7;
/* 157 */
/* 158 */
/* 159 */     InternalRow value11 = i.getStruct(0, 3);
/* 160 */     boolean isNull10 = false;
/* 161 */     UTF8String value10 = null;
/* 162 */
/* 163 */
/* 164 */     if (value11.isNullAt(1)) {
/* 165 */       isNull10 = true;
/* 166 */     } else {
/* 167 */       value10 = value11.getUTF8String(1);
/* 168 */     }
/* 169 */     boolean isNull9 = true;
/* 170 */     java.lang.String value9 = null;
/* 171 */     if (!isNull10) {
/* 172 */
/* 173 */       isNull9 = false;
/* 174 */       if (!isNull9) {
/* 175 */
/* 176 */         Object funcResult = null;
/* 177 */         funcResult = value10.toString();
/* 178 */         if (funcResult == null) {
/* 179 */           isNull9 = true;
/* 180 */         } else {
/* 181 */           value9 = (java.lang.String) funcResult;
/* 182 */         }
/* 183 */
/* 184 */       }
/* 185 */       isNull9 = value9 == null;
/* 186 */     }
/* 187 */     argValue3 = value9;
/* 188 */
/* 189 */   }
/* 190 */
/* 191 */
/* 192 */   private void evalIfFalseExpr(InternalRow i) {
/* 193 */     boolean isNull25 = false;
/* 194 */
/* 195 */     InternalRow value26 = i.getStruct(1, 2);
/* 196 */     int value25 = -1;
/* 197 */
/* 198 */     value25 = value26.getInt(0);
/* 199 */
/* 200 */     if (false) {
/* 201 */       throw new RuntimeException(((java.lang.String) references[3]));
/* 202 */     }
/* 203 */     argValue6 = value25;
/* 204 */
/* 205 */
/* 206 */     InternalRow value29 = i.getStruct(1, 2);
/* 207 */     boolean isNull28 = false;
/* 208 */     UTF8String value28 = null;
/* 209 */
/* 210 */
/* 211 */     if (value29.isNullAt(1)) {
/* 212 */       isNull28 = true;
/* 213 */     } else {
/* 214 */       value28 = value29.getUTF8String(1);
/* 215 */     }
/* 216 */     boolean isNull27 = true;
/* 217 */     java.lang.String value27 = null;
/* 218 */     if (!isNull28) {
/* 219 */
/* 220 */       isNull27 = false;
/* 221 */       if (!isNull27) {
/* 222 */
/* 223 */         Object funcResult2 = null;
/* 224 */         funcResult2 = value28.toString();
/* 225 */         if (funcResult2 == null) {
/* 226 */           isNull27 = true;
/* 227 */         } else {
/* 228 */           value27 = (java.lang.String) funcResult2;
/* 229 */         }
/* 230 */
/* 231 */       }
/* 232 */       isNull27 = value27 == null;
/* 233 */     }
/* 234 */     argValue7 = value27;
/* 235 */
/* 236 */
/* 237 */     Object obj1 = ((Expression) references[4]).eval(null);
/* 238 */     $line16.$read$$iw$$iw value30 = ($line16.$read$$iw$$iw) obj1;
/* 239 */     final $line16.$read$$iw$$iw$Foo2 value23 = false ? null : 
value30.new Foo2(argValue6, argValue7);
/* 240 */     isNull33 = false;
/* 241 */     value33 = value23;
/* 242 */   }
/* 243 */
/* 244 */
/* 245 */   public java.lang.Object apply(java.lang.Object _i) {
/* 246 */     InternalRow i = (InternalRow) _i;
/* 247 */
/* 248 */     InternalRow value3 = i.getStruct(0, 3);
/* 249 */     boolean isNull1 = false;
/* 250 */     $line14.$read$$iw$$iw$Foo1 value1 = null;
/* 251 */     if (!false && false) {
/* 252 */
/* 253 */       final $line14.$read$$iw$$iw$Foo1 value4 = null;
/* 254 */       isNull1 = true;
/* 255 */       value1 = value4;
/* 256 */     } else {
/* 257 */
/* 258 */       apply_0(i);
/* 259 */       apply_1(i);
/* 260 */
/* 261 */       Object obj = ((Expression) references[2]).eval(null);
/* 262 */       $line14.$read$$iw$$iw value18 = ($line14.$read$$iw$$iw) obj;
/* 263 */       final $line14.$read$$iw$$iw$Foo1 value5 = false ? null : 
value18.new Foo1(argValue2, argValue3, argValue4);
/* 264 */       isNull1 = false;
/* 265 */       value1 = value5;
/* 266 */     }
/* 267 */     argValue = value1;
/* 268 */
/* 269 */
/* 270 */     evalIfCondExpr(i);
/* 271 */     boolean isNull19 = false;
/* 272 */     $line16.$read$$iw$$iw$Foo2 value19 = null;
/* 273 */     if (!isNull31 && value31) {
/* 274 */       evalIfTrueExpr(i);
/* 275 */       isNull19 = isNull32;
/* 276 */       value19 = value32;
/* 277 */     } else {
/* 278 */       evalIfFalseExpr(i);
/* 279 */       isNull19 = isNull33;
/* 280 */       value19 = value33;
/* 281 */     }
/* 282 */     argValue1 = value19;
/* 283 */
/* 284 */
/* 285 */     final scala.Tuple2 value = false ? null : new 
scala.Tuple2(argValue, argValue1);
/* 286 */     if (false) {
/* 287 */       mutableRow.setNullAt(0);
/* 288 */     } else {
/* 289 */
/* 290 */       mutableRow.update(0, value);
/* 291 */     }
/* 292 */
/* 293 */     return mutableRow;
/* 294 */   }
/* 295 */ }

org.codehaus.commons.compiler.CompileException: File 'generated.java', Line 
263, Column 69: No applicable constructor/method found for actual parameters 
"int, java.lang.String, scala.collection.Seq"; candidates are: 
"$line14.$read$$iw$$iw$Foo1(int, java.lang.String, 
scala.collection.mutable.Seq)"
        at 
org.codehaus.janino.UnitCompiler.compileError(UnitCompiler.java:11004)
        at 
org.codehaus.janino.UnitCompiler.findMostSpecificIInvocable(UnitCompiler.java:8307)
        at 
org.codehaus.janino.UnitCompiler.invokeConstructor(UnitCompiler.java:7092)
        at org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:4686)
        at org.codehaus.janino.UnitCompiler.access$8200(UnitCompiler.java:206)
        at 
org.codehaus.janino.UnitCompiler$12.visitNewClassInstance(UnitCompiler.java:3786)
        at 
org.codehaus.janino.UnitCompiler$12.visitNewClassInstance(UnitCompiler.java:3762)
        at org.codehaus.janino.Java$NewClassInstance.accept(Java.java:4427)
        at org.codehaus.janino.UnitCompiler.compileGet(UnitCompiler.java:3762)
        at 
org.codehaus.janino.UnitCompiler.compileGetValue(UnitCompiler.java:4933)
        at org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:4067)
        at org.codehaus.janino.UnitCompiler.access$7200(UnitCompiler.java:206)
        at 
org.codehaus.janino.UnitCompiler$12.visitConditionalExpression(UnitCompiler.java:3771)
        at 
org.codehaus.janino.UnitCompiler$12.visitConditionalExpression(UnitCompiler.java:3762)
        at org.codehaus.janino.Java$ConditionalExpression.accept(Java.java:3877)
        at org.codehaus.janino.UnitCompiler.compileGet(UnitCompiler.java:3762)
        at 
org.codehaus.janino.UnitCompiler.compileGetValue(UnitCompiler.java:4933)
        at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:2330)
        at org.codehaus.janino.UnitCompiler.access$2600(UnitCompiler.java:206)
        at 
org.codehaus.janino.UnitCompiler$6.visitLocalVariableDeclarationStatement(UnitCompiler.java:1386)
        at 
org.codehaus.janino.UnitCompiler$6.visitLocalVariableDeclarationStatement(UnitCompiler.java:1370)
        at 
org.codehaus.janino.Java$LocalVariableDeclarationStatement.accept(Java.java:2974)
        at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:1370)
        at 
org.codehaus.janino.UnitCompiler.compileStatements(UnitCompiler.java:1450)
        at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:1436)
        at org.codehaus.janino.UnitCompiler.access$1600(UnitCompiler.java:206)
        at org.codehaus.janino.UnitCompiler$6.visitBlock(UnitCompiler.java:1376)
        at org.codehaus.janino.UnitCompiler$6.visitBlock(UnitCompiler.java:1370)
        at org.codehaus.janino.Java$Block.accept(Java.java:2471)
        at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:1370)
        at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:2185)
        at org.codehaus.janino.UnitCompiler.access$1800(UnitCompiler.java:206)
        at 
org.codehaus.janino.UnitCompiler$6.visitIfStatement(UnitCompiler.java:1378)
        at 
org.codehaus.janino.UnitCompiler$6.visitIfStatement(UnitCompiler.java:1370)
        at org.codehaus.janino.Java$IfStatement.accept(Java.java:2621)
        at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:1370)
        at 
org.codehaus.janino.UnitCompiler.compileStatements(UnitCompiler.java:1450)
        at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:2811)
        at 
org.codehaus.janino.UnitCompiler.compileDeclaredMethods(UnitCompiler.java:1262)
        at 
org.codehaus.janino.UnitCompiler.compileDeclaredMethods(UnitCompiler.java:1234)
        at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:538)
        at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:890)
        at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:894)
        at org.codehaus.janino.UnitCompiler.access$600(UnitCompiler.java:206)
        at 
org.codehaus.janino.UnitCompiler$2.visitMemberClassDeclaration(UnitCompiler.java:377)
        at 
org.codehaus.janino.UnitCompiler$2.visitMemberClassDeclaration(UnitCompiler.java:369)
        at 
org.codehaus.janino.Java$MemberClassDeclaration.accept(Java.java:1128)
        at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:369)
        at 
org.codehaus.janino.UnitCompiler.compileDeclaredMemberTypes(UnitCompiler.java:1209)
        at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:564)
        at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:420)
        at org.codehaus.janino.UnitCompiler.access$400(UnitCompiler.java:206)
        at 
org.codehaus.janino.UnitCompiler$2.visitPackageMemberClassDeclaration(UnitCompiler.java:374)
        at 
org.codehaus.janino.UnitCompiler$2.visitPackageMemberClassDeclaration(UnitCompiler.java:369)
        at 
org.codehaus.janino.Java$AbstractPackageMemberClassDeclaration.accept(Java.java:1309)
        at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:369)
        at org.codehaus.janino.UnitCompiler.compileUnit(UnitCompiler.java:345)
        at 
org.codehaus.janino.SimpleCompiler.compileToClassLoader(SimpleCompiler.java:396)
        at 
org.codehaus.janino.ClassBodyEvaluator.compileToClass(ClassBodyEvaluator.java:311)
        at 
org.codehaus.janino.ClassBodyEvaluator.cook(ClassBodyEvaluator.java:229)
        at org.codehaus.janino.SimpleCompiler.cook(SimpleCompiler.java:196)
        at org.codehaus.commons.compiler.Cookable.cook(Cookable.java:91)
        at 
org.apache.spark.sql.catalyst.expressions.codegen.CodeGenerator$.org$apache$spark$sql$catalyst$expressions$codegen$CodeGenerator$$doCompile(CodeGenerator.scala:935)
        at 
org.apache.spark.sql.catalyst.expressions.codegen.CodeGenerator$$anon$1.load(CodeGenerator.scala:998)
        at 
org.apache.spark.sql.catalyst.expressions.codegen.CodeGenerator$$anon$1.load(CodeGenerator.scala:995)
        at 
org.spark_project.guava.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3599)
        at 
org.spark_project.guava.cache.LocalCache$Segment.loadSync(LocalCache.java:2379)
        at 
org.spark_project.guava.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2342)
        at 
org.spark_project.guava.cache.LocalCache$Segment.get(LocalCache.java:2257)
        at org.spark_project.guava.cache.LocalCache.get(LocalCache.java:4000)
        at 
org.spark_project.guava.cache.LocalCache.getOrLoad(LocalCache.java:4004)
        at 
org.spark_project.guava.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4874)
        at 
org.apache.spark.sql.catalyst.expressions.codegen.CodeGenerator$.compile(CodeGenerator.scala:890)
        at 
org.apache.spark.sql.catalyst.expressions.codegen.GenerateSafeProjection$.create(GenerateSafeProjection.scala:194)
        at 
org.apache.spark.sql.catalyst.expressions.codegen.GenerateSafeProjection$.create(GenerateSafeProjection.scala:36)
        at 
org.apache.spark.sql.catalyst.expressions.codegen.CodeGenerator.generate(CodeGenerator.scala:874)
        at 
org.apache.spark.sql.catalyst.encoders.ExpressionEncoder.constructProjection$lzycompute(ExpressionEncoder.scala:272)
        at 
org.apache.spark.sql.catalyst.encoders.ExpressionEncoder.constructProjection(ExpressionEncoder.scala:272)
        at 
org.apache.spark.sql.catalyst.encoders.ExpressionEncoder.fromRow(ExpressionEncoder.scala:303)
        at 
org.apache.spark.sql.Dataset$$anonfun$org$apache$spark$sql$Dataset$$execute$1$1$$anonfun$apply$12.apply(Dataset.scala:2371)
        at 
org.apache.spark.sql.Dataset$$anonfun$org$apache$spark$sql$Dataset$$execute$1$1$$anonfun$apply$12.apply(Dataset.scala:2371)
        at 
scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
        at 
scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
        at 
scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)
        at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:186)
        at scala.collection.TraversableLike$class.map(TraversableLike.scala:234)
        at scala.collection.mutable.ArrayOps$ofRef.map(ArrayOps.scala:186)
        at 
org.apache.spark.sql.Dataset$$anonfun$org$apache$spark$sql$Dataset$$execute$1$1.apply(Dataset.scala:2371)
        at 
org.apache.spark.sql.execution.SQLExecution$.withNewExecutionId(SQLExecution.scala:57)
        at org.apache.spark.sql.Dataset.withNewExecutionId(Dataset.scala:2765)
        at 
org.apache.spark.sql.Dataset.org$apache$spark$sql$Dataset$$execute$1(Dataset.scala:2370)
        at 
org.apache.spark.sql.Dataset$$anonfun$org$apache$spark$sql$Dataset$$collect$1.apply(Dataset.scala:2375)
        at 
org.apache.spark.sql.Dataset$$anonfun$org$apache$spark$sql$Dataset$$collect$1.apply(Dataset.scala:2375)
        at org.apache.spark.sql.Dataset.withCallback(Dataset.scala:2778)
        at 
org.apache.spark.sql.Dataset.org$apache$spark$sql$Dataset$$collect(Dataset.scala:2375)
        at org.apache.spark.sql.Dataset.collect(Dataset.scala:2351)
        at $line18.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw.<init>(<console>:32)
        at $line18.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw.<init>(<console>:37)
        at $line18.$read$$iw$$iw$$iw$$iw$$iw$$iw.<init>(<console>:39)
        at $line18.$read$$iw$$iw$$iw$$iw$$iw.<init>(<console>:41)
        at $line18.$read$$iw$$iw$$iw$$iw.<init>(<console>:43)
        at $line18.$read$$iw$$iw$$iw.<init>(<console>:45)
        at $line18.$read$$iw$$iw.<init>(<console>:47)
        at $line18.$read$$iw.<init>(<console>:49)
        at $line18.$read.<init>(<console>:51)
        at $line18.$read$.<init>(<console>:55)
        at $line18.$read$.<clinit>(<console>)
        at $line18.$eval$.$print$lzycompute(<console>:7)
        at $line18.$eval$.$print(<console>:6)
        at $line18.$eval.$print(<console>)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at scala.tools.nsc.interpreter.IMain$ReadEvalPrint.call(IMain.scala:786)
        at 
scala.tools.nsc.interpreter.IMain$Request.loadAndRun(IMain.scala:1047)
        at 
scala.tools.nsc.interpreter.IMain$WrappedRequest$$anonfun$loadAndRunReq$1.apply(IMain.scala:638)
        at 
scala.tools.nsc.interpreter.IMain$WrappedRequest$$anonfun$loadAndRunReq$1.apply(IMain.scala:637)
        at 
scala.reflect.internal.util.ScalaClassLoader$class.asContext(ScalaClassLoader.scala:31)
        at 
scala.reflect.internal.util.AbstractFileClassLoader.asContext(AbstractFileClassLoader.scala:19)
        at 
scala.tools.nsc.interpreter.IMain$WrappedRequest.loadAndRunReq(IMain.scala:637)
        at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:569)
        at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:565)
        at 
scala.tools.nsc.interpreter.ILoop.interpretStartingWith(ILoop.scala:807)
        at scala.tools.nsc.interpreter.ILoop.command(ILoop.scala:681)
        at scala.tools.nsc.interpreter.ILoop.processLine(ILoop.scala:395)
        at scala.tools.nsc.interpreter.ILoop.loop(ILoop.scala:415)
        at 
scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply$mcZ$sp(ILoop.scala:923)
        at 
scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:909)
        at 
scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:909)
        at 
scala.reflect.internal.util.ScalaClassLoader$.savingContextLoader(ScalaClassLoader.scala:97)
        at scala.tools.nsc.interpreter.ILoop.process(ILoop.scala:909)
        at org.apache.spark.repl.Main$.doMain(Main.scala:68)
        at org.apache.spark.repl.Main$.main(Main.scala:51)
        at org.apache.spark.repl.Main.main(Main.scala)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at 
org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:738)
        at 
org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:187)
        at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:212)
        at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:126)
        at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
java.lang.RuntimeException: Error while decoding: 
java.util.concurrent.ExecutionException: java.lang.Exception: failed to 
compile: org.codehaus.commons.compiler.CompileException: File 'generated.java', 
Line 263, Column 69: No applicable constructor/method found for actual 
parameters "int, java.lang.String, scala.collection.Seq"; candidates are: 
"Foo1(int, java.lang.String, scala.collection.mutable.Seq)"
/* 001 */ public java.lang.Object generate(Object[] references) {
/* 002 */   return new SpecificSafeProjection(references);
/* 003 */ }
/* 004 */
/* 005 */ class SpecificSafeProjection extends 
org.apache.spark.sql.catalyst.expressions.codegen.BaseProjection {
/* 006 */
/* 007 */   private Object[] references;
/* 008 */   private InternalRow mutableRow;
/* 009 */   private Foo1 argValue;
/* 010 */   private Foo2 argValue1;
/* 011 */   private int argValue2;
/* 012 */   private java.lang.String argValue3;
/* 013 */   private scala.collection.Seq argValue4;
/* 014 */   private boolean resultIsNull;
/* 015 */   private java.lang.Object[] argValue5;
/* 016 */   private boolean MapObjects_loopIsNull1;
/* 017 */   private int MapObjects_loopValue0;
/* 018 */   private int argValue6;
/* 019 */   private java.lang.String argValue7;
/* 020 */   private boolean isNull31;
/* 021 */   private boolean value31;
/* 022 */   private boolean isNull32;
/* 023 */   private Foo2 value32;
/* 024 */   private boolean isNull33;
/* 025 */   private Foo2 value33;
/* 026 */
/* 027 */   public SpecificSafeProjection(Object[] references) {
/* 028 */     this.references = references;
/* 029 */     mutableRow = (InternalRow) references[references.length - 1];
/* 030 */
/* 031 */
/* 032 */
/* 033 */
/* 034 */
/* 035 */
/* 036 */
/* 037 */
/* 038 */
/* 039 */
/* 040 */
/* 041 */     isNull31 = false;
/* 042 */     value31 = false;
/* 043 */     isNull32 = false;
/* 044 */     value32 = null;
/* 045 */     isNull33 = false;
/* 046 */     value33 = null;
/* 047 */
/* 048 */   }
/* 049 */
/* 050 */   public void initialize(int partitionIndex) {
/* 051 */
/* 052 */   }
/* 053 */
/* 054 */
/* 055 */   private void evalIfTrueExpr(InternalRow i) {
/* 056 */     final Foo2 value22 = null;
/* 057 */     isNull32 = true;
/* 058 */     value32 = value22;
/* 059 */   }
/* 060 */
/* 061 */
/* 062 */   private void apply_1(InternalRow i) {
/* 063 */
/* 064 */
/* 065 */     resultIsNull = false;
/* 066 */     if (!resultIsNull) {
/* 067 */
/* 068 */       InternalRow value16 = i.getStruct(0, 3);
/* 069 */       boolean isNull15 = false;
/* 070 */       ArrayData value15 = null;
/* 071 */
/* 072 */
/* 073 */       if (value16.isNullAt(2)) {
/* 074 */         isNull15 = true;
/* 075 */       } else {
/* 076 */         value15 = value16.getArray(2);
/* 077 */       }
/* 078 */       ArrayData value14 = null;
/* 079 */
/* 080 */       if (!isNull15) {
/* 081 */
/* 082 */         Integer[] convertedArray = null;
/* 083 */         int dataLength = value15.numElements();
/* 084 */         convertedArray = new Integer[dataLength];
/* 085 */
/* 086 */         int loopIndex = 0;
/* 087 */         while (loopIndex < dataLength) {
/* 088 */           MapObjects_loopValue0 = (int) (value15.getInt(loopIndex));
/* 089 */           MapObjects_loopIsNull1 = value15.isNullAt(loopIndex);
/* 090 */
/* 091 */
/* 092 */           if (MapObjects_loopIsNull1) {
/* 093 */             throw new RuntimeException(((java.lang.String) 
references[1]));
/* 094 */           }
/* 095 */           if (false) {
/* 096 */             convertedArray[loopIndex] = null;
/* 097 */           } else {
/* 098 */             convertedArray[loopIndex] = MapObjects_loopValue0;
/* 099 */           }
/* 100 */
/* 101 */           loopIndex += 1;
/* 102 */         }
/* 103 */
/* 104 */         value14 = new 
org.apache.spark.sql.catalyst.util.GenericArrayData(convertedArray);
/* 105 */       }
/* 106 */       boolean isNull13 = true;
/* 107 */       java.lang.Object[] value13 = null;
/* 108 */       if (!isNull15) {
/* 109 */
/* 110 */         isNull13 = false;
/* 111 */         if (!isNull13) {
/* 112 */
/* 113 */           Object funcResult1 = null;
/* 114 */           funcResult1 = value14.array();
/* 115 */           if (funcResult1 == null) {
/* 116 */             isNull13 = true;
/* 117 */           } else {
/* 118 */             value13 = (java.lang.Object[]) funcResult1;
/* 119 */           }
/* 120 */
/* 121 */         }
/* 122 */         isNull13 = value13 == null;
/* 123 */       }
/* 124 */       resultIsNull = isNull13;
/* 125 */       argValue5 = value13;
/* 126 */     }
/* 127 */
/* 128 */     boolean isNull12 = resultIsNull;
/* 129 */     final scala.collection.Seq value12 = resultIsNull ? null : 
scala.collection.mutable.WrappedArray.make(argValue5);
/* 130 */     isNull12 = value12 == null;
/* 131 */     argValue4 = value12;
/* 132 */
/* 133 */   }
/* 134 */
/* 135 */
/* 136 */   private void evalIfCondExpr(InternalRow i) {
/* 137 */     InternalRow value21 = i.getStruct(1, 2);
/* 138 */     isNull31 = false;
/* 139 */     value31 = false;
/* 140 */   }
/* 141 */
/* 142 */
/* 143 */   private void apply_0(InternalRow i) {
/* 144 */
/* 145 */
/* 146 */     boolean isNull7 = false;
/* 147 */
/* 148 */     InternalRow value8 = i.getStruct(0, 3);
/* 149 */     int value7 = -1;
/* 150 */
/* 151 */     value7 = value8.getInt(0);
/* 152 */
/* 153 */     if (false) {
/* 154 */       throw new RuntimeException(((java.lang.String) references[0]));
/* 155 */     }
/* 156 */     argValue2 = value7;
/* 157 */
/* 158 */
/* 159 */     InternalRow value11 = i.getStruct(0, 3);
/* 160 */     boolean isNull10 = false;
/* 161 */     UTF8String value10 = null;
/* 162 */
/* 163 */
/* 164 */     if (value11.isNullAt(1)) {
/* 165 */       isNull10 = true;
/* 166 */     } else {
/* 167 */       value10 = value11.getUTF8String(1);
/* 168 */     }
/* 169 */     boolean isNull9 = true;
/* 170 */     java.lang.String value9 = null;
/* 171 */     if (!isNull10) {
/* 172 */
/* 173 */       isNull9 = false;
/* 174 */       if (!isNull9) {
/* 175 */
/* 176 */         Object funcResult = null;
/* 177 */         funcResult = value10.toString();
/* 178 */         if (funcResult == null) {
/* 179 */           isNull9 = true;
/* 180 */         } else {
/* 181 */           value9 = (java.lang.String) funcResult;
/* 182 */         }
/* 183 */
/* 184 */       }
/* 185 */       isNull9 = value9 == null;
/* 186 */     }
/* 187 */     argValue3 = value9;
/* 188 */
/* 189 */   }
/* 190 */
/* 191 */
/* 192 */   private void evalIfFalseExpr(InternalRow i) {
/* 193 */     boolean isNull25 = false;
/* 194 */
/* 195 */     InternalRow value26 = i.getStruct(1, 2);
/* 196 */     int value25 = -1;
/* 197 */
/* 198 */     value25 = value26.getInt(0);
/* 199 */
/* 200 */     if (false) {
/* 201 */       throw new RuntimeException(((java.lang.String) references[3]));
/* 202 */     }
/* 203 */     argValue6 = value25;
/* 204 */
/* 205 */
/* 206 */     InternalRow value29 = i.getStruct(1, 2);
/* 207 */     boolean isNull28 = false;
/* 208 */     UTF8String value28 = null;
/* 209 */
/* 210 */
/* 211 */     if (value29.isNullAt(1)) {
/* 212 */       isNull28 = true;
/* 213 */     } else {
/* 214 */       value28 = value29.getUTF8String(1);
/* 215 */     }
/* 216 */     boolean isNull27 = true;
/* 217 */     java.lang.String value27 = null;
/* 218 */     if (!isNull28) {
/* 219 */
/* 220 */       isNull27 = false;
/* 221 */       if (!isNull27) {
/* 222 */
/* 223 */         Object funcResult2 = null;
/* 224 */         funcResult2 = value28.toString();
/* 225 */         if (funcResult2 == null) {
/* 226 */           isNull27 = true;
/* 227 */         } else {
/* 228 */           value27 = (java.lang.String) funcResult2;
/* 229 */         }
/* 230 */
/* 231 */       }
/* 232 */       isNull27 = value27 == null;
/* 233 */     }
/* 234 */     argValue7 = value27;
/* 235 */
/* 236 */
/* 237 */     Object obj1 = ((Expression) references[4]).eval(null);
/* 238 */     $iw value30 = ($iw) obj1;
/* 239 */     final Foo2 value23 = false ? null : value30.new Foo2(argValue6, 
argValue7);
/* 240 */     isNull33 = false;
/* 241 */     value33 = value23;
/* 242 */   }
/* 243 */
/* 244 */
/* 245 */   public java.lang.Object apply(java.lang.Object _i) {
/* 246 */     InternalRow i = (InternalRow) _i;
/* 247 */
/* 248 */     InternalRow value3 = i.getStruct(0, 3);
/* 249 */     boolean isNull1 = false;
/* 250 */     Foo1 value1 = null;
/* 251 */     if (!false && false) {
/* 252 */
/* 253 */       final Foo1 value4 = null;
/* 254 */       isNull1 = true;
/* 255 */       value1 = value4;
/* 256 */     } else {
/* 257 */
/* 258 */       apply_0(i);
/* 259 */       apply_1(i);
/* 260 */
/* 261 */       Object obj = ((Expression) references[2]).eval(null);
/* 262 */       $iw value18 = ($iw) obj;
/* 263 */       final Foo1 value5 = false ? null : value18.new Foo1(argValue2, 
argValue3, argValue4);
/* 264 */       isNull1 = false;
/* 265 */       value1 = value5;
/* 266 */     }
/* 267 */     argValue = value1;
/* 268 */
/* 269 */
/* 270 */     evalIfCondExpr(i);
/* 271 */     boolean isNull19 = false;
/* 272 */     Foo2 value19 = null;
/* 273 */     if (!isNull31 && value31) {
/* 274 */       evalIfTrueExpr(i);
/* 275 */       isNull19 = isNull32;
/* 276 */       value19 = value32;
/* 277 */     } else {
/* 278 */       evalIfFalseExpr(i);
/* 279 */       isNull19 = isNull33;
/* 280 */       value19 = value33;
/* 281 */     }
/* 282 */     argValue1 = value19;
/* 283 */
/* 284 */
/* 285 */     final scala.Tuple2 value = false ? null : new 
scala.Tuple2(argValue, argValue1);
/* 286 */     if (false) {
/* 287 */       mutableRow.setNullAt(0);
/* 288 */     } else {
/* 289 */
/* 290 */       mutableRow.update(0, value);
/* 291 */     }
/* 292 */
/* 293 */     return mutableRow;
/* 294 */   }
/* 295 */ }

newInstance(class scala.Tuple2)
:- if (isnull(input[0, struct<x:int,s:string,seq:array<int>>, false])) null 
else newInstance(class Foo1)
:  :- isnull(input[0, struct<x:int,s:string,seq:array<int>>, false])
:  :  +- input[0, struct<x:int,s:string,seq:array<int>>, false]
:  :- null
:  +- newInstance(class Foo1)
:     :- assertnotnull(input[0, struct<x:int,s:string,seq:array<int>>, 
false].x, - field (class: "scala.Int", name: "x"), - root class: "Foo1")
:     :  +- input[0, struct<x:int,s:string,seq:array<int>>, false].x
:     :     +- input[0, struct<x:int,s:string,seq:array<int>>, false]
:     :- input[0, struct<x:int,s:string,seq:array<int>>, false].s.toString
:     :  +- input[0, struct<x:int,s:string,seq:array<int>>, false].s
:     :     +- input[0, struct<x:int,s:string,seq:array<int>>, false]
:     +- staticinvoke(class scala.collection.mutable.WrappedArray$, 
ObjectType(interface scala.collection.Seq), make, 
mapobjects(MapObjects_loopValue0, MapObjects_loopIsNull1, IntegerType, 
assertnotnull(lambdavariable(MapObjects_loopValue0, MapObjects_loopIsNull1, 
IntegerType), - array element class: "scala.Int", - field (class: 
"scala.collection.mutable.Seq", name: "seq"), - root class: "Foo1"), input[0, 
struct<x:int,s:string,seq:array<int>>, false].seq).array, true)
:        +- mapobjects(MapObjects_loopValue0, MapObjects_loopIsNull1, 
IntegerType, assertnotnull(lambdavariable(MapObjects_loopValue0, 
MapObjects_loopIsNull1, IntegerType), - array element class: "scala.Int", - 
field (class: "scala.collection.mutable.Seq", name: "seq"), - root class: 
"Foo1"), input[0, struct<x:int,s:string,seq:array<int>>, false].seq).array
:           +- mapobjects(MapObjects_loopValue0, MapObjects_loopIsNull1, 
IntegerType, assertnotnull(lambdavariable(MapObjects_loopValue0, 
MapObjects_loopIsNull1, IntegerType), - array element class: "scala.Int", - 
field (class: "scala.collection.mutable.Seq", name: "seq"), - root class: 
"Foo1"), input[0, struct<x:int,s:string,seq:array<int>>, false].seq)
:              :- assertnotnull(lambdavariable(MapObjects_loopValue0, 
MapObjects_loopIsNull1, IntegerType), - array element class: "scala.Int", - 
field (class: "scala.collection.mutable.Seq", name: "seq"), - root class: 
"Foo1")
:              :  +- lambdavariable(MapObjects_loopValue0, 
MapObjects_loopIsNull1, IntegerType)
:              +- input[0, struct<x:int,s:string,seq:array<int>>, false].seq
:                 +- input[0, struct<x:int,s:string,seq:array<int>>, false]
+- if (isnull(input[1, struct<x:int,s:string>, false])) null else 
newInstance(class Foo2)
   :- isnull(input[1, struct<x:int,s:string>, false])
   :  +- input[1, struct<x:int,s:string>, false]
   :- null
   +- newInstance(class Foo2)
      :- assertnotnull(input[1, struct<x:int,s:string>, false].x, - field 
(class: "scala.Int", name: "x"), - root class: "Foo2")
      :  +- input[1, struct<x:int,s:string>, false].x
      :     +- input[1, struct<x:int,s:string>, false]
      +- input[1, struct<x:int,s:string>, false].s.toString
         +- input[1, struct<x:int,s:string>, false].s
            +- input[1, struct<x:int,s:string>, false]

  at 
org.apache.spark.sql.catalyst.encoders.ExpressionEncoder.fromRow(ExpressionEncoder.scala:306)
  at 
org.apache.spark.sql.Dataset$$anonfun$org$apache$spark$sql$Dataset$$execute$1$1$$anonfun$apply$12.apply(Dataset.scala:2371)
  at 
org.apache.spark.sql.Dataset$$anonfun$org$apache$spark$sql$Dataset$$execute$1$1$$anonfun$apply$12.apply(Dataset.scala:2371)
  at 
scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
  at 
scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
  at 
scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)
  at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:186)
  at scala.collection.TraversableLike$class.map(TraversableLike.scala:234)
  at scala.collection.mutable.ArrayOps$ofRef.map(ArrayOps.scala:186)
  at 
org.apache.spark.sql.Dataset$$anonfun$org$apache$spark$sql$Dataset$$execute$1$1.apply(Dataset.scala:2371)
  at 
org.apache.spark.sql.execution.SQLExecution$.withNewExecutionId(SQLExecution.scala:57)
  at org.apache.spark.sql.Dataset.withNewExecutionId(Dataset.scala:2765)
  at 
org.apache.spark.sql.Dataset.org$apache$spark$sql$Dataset$$execute$1(Dataset.scala:2370)
  at 
org.apache.spark.sql.Dataset$$anonfun$org$apache$spark$sql$Dataset$$collect$1.apply(Dataset.scala:2375)
  at 
org.apache.spark.sql.Dataset$$anonfun$org$apache$spark$sql$Dataset$$collect$1.apply(Dataset.scala:2375)
  at org.apache.spark.sql.Dataset.withCallback(Dataset.scala:2778)
  at 
org.apache.spark.sql.Dataset.org$apache$spark$sql$Dataset$$collect(Dataset.scala:2375)
  at org.apache.spark.sql.Dataset.collect(Dataset.scala:2351)
  ... 48 elided
Caused by: java.util.concurrent.ExecutionException: java.lang.Exception: failed 
to compile: org.codehaus.commons.compiler.CompileException: File 
'generated.java', Line 263, Column 69: No applicable constructor/method found 
for actual parameters "int, java.lang.String, scala.collection.Seq"; candidates 
are: "Foo1(int, java.lang.String, scala.collection.mutable.Seq)"
/* 001 */ public java.lang.Object generate(Object[] references) {
/* 002 */   return new SpecificSafeProjection(references);
/* 003 */ }
/* 004 */
/* 005 */ class SpecificSafeProjection extends 
org.apache.spark.sql.catalyst.expressions.codegen.BaseProjection {
/* 006 */
/* 007 */   private Object[] references;
/* 008 */   private InternalRow mutableRow;
/* 009 */   private Foo1 argValue;
/* 010 */   private Foo2 argValue1;
/* 011 */   private int argValue2;
/* 012 */   private java.lang.String argValue3;
/* 013 */   private scala.collection.Seq argValue4;
/* 014 */   private boolean resultIsNull;
/* 015 */   private java.lang.Object[] argValue5;
/* 016 */   private boolean MapObjects_loopIsNull1;
/* 017 */   private int MapObjects_loopValue0;
/* 018 */   private int argValue6;
/* 019 */   private java.lang.String argValue7;
/* 020 */   private boolean isNull31;
/* 021 */   private boolean value31;
/* 022 */   private boolean isNull32;
/* 023 */   private Foo2 value32;
/* 024 */   private boolean isNull33;
/* 025 */   private Foo2 value33;
/* 026 */
/* 027 */   public SpecificSafeProjection(Object[] references) {
/* 028 */     this.references = references;
/* 029 */     mutableRow = (InternalRow) references[references.length - 1];
/* 030 */
/* 031 */
/* 032 */
/* 033 */
/* 034 */
/* 035 */
/* 036 */
/* 037 */
/* 038 */
/* 039 */
/* 040 */
/* 041 */     isNull31 = false;
/* 042 */     value31 = false;
/* 043 */     isNull32 = false;
/* 044 */     value32 = null;
/* 045 */     isNull33 = false;
/* 046 */     value33 = null;
/* 047 */
/* 048 */   }
/* 049 */
/* 050 */   public void initialize(int partitionIndex) {
/* 051 */
/* 052 */   }
/* 053 */
/* 054 */
/* 055 */   private void evalIfTrueExpr(InternalRow i) {
/* 056 */     final Foo2 value22 = null;
/* 057 */     isNull32 = true;
/* 058 */     value32 = value22;
/* 059 */   }
/* 060 */
/* 061 */
/* 062 */   private void apply_1(InternalRow i) {
/* 063 */
/* 064 */
/* 065 */     resultIsNull = false;
/* 066 */     if (!resultIsNull) {
/* 067 */
/* 068 */       InternalRow value16 = i.getStruct(0, 3);
/* 069 */       boolean isNull15 = false;
/* 070 */       ArrayData value15 = null;
/* 071 */
/* 072 */
/* 073 */       if (value16.isNullAt(2)) {
/* 074 */         isNull15 = true;
/* 075 */       } else {
/* 076 */         value15 = value16.getArray(2);
/* 077 */       }
/* 078 */       ArrayData value14 = null;
/* 079 */
/* 080 */       if (!isNull15) {
/* 081 */
/* 082 */         Integer[] convertedArray = null;
/* 083 */         int dataLength = value15.numElements();
/* 084 */         convertedArray = new Integer[dataLength];
/* 085 */
/* 086 */         int loopIndex = 0;
/* 087 */         while (loopIndex < dataLength) {
/* 088 */           MapObjects_loopValue0 = (int) (value15.getInt(loopIndex));
/* 089 */           MapObjects_loopIsNull1 = value15.isNullAt(loopIndex);
/* 090 */
/* 091 */
/* 092 */           if (MapObjects_loopIsNull1) {
/* 093 */             throw new RuntimeException(((java.lang.String) 
references[1]));
/* 094 */           }
/* 095 */           if (false) {
/* 096 */             convertedArray[loopIndex] = null;
/* 097 */           } else {
/* 098 */             convertedArray[loopIndex] = MapObjects_loopValue0;
/* 099 */           }
/* 100 */
/* 101 */           loopIndex += 1;
/* 102 */         }
/* 103 */
/* 104 */         value14 = new 
org.apache.spark.sql.catalyst.util.GenericArrayData(convertedArray);
/* 105 */       }
/* 106 */       boolean isNull13 = true;
/* 107 */       java.lang.Object[] value13 = null;
/* 108 */       if (!isNull15) {
/* 109 */
/* 110 */         isNull13 = false;
/* 111 */         if (!isNull13) {
/* 112 */
/* 113 */           Object funcResult1 = null;
/* 114 */           funcResult1 = value14.array();
/* 115 */           if (funcResult1 == null) {
/* 116 */             isNull13 = true;
/* 117 */           } else {
/* 118 */             value13 = (java.lang.Object[]) funcResult1;
/* 119 */           }
/* 120 */
/* 121 */         }
/* 122 */         isNull13 = value13 == null;
/* 123 */       }
/* 124 */       resultIsNull = isNull13;
/* 125 */       argValue5 = value13;
/* 126 */     }
/* 127 */
/* 128 */     boolean isNull12 = resultIsNull;
/* 129 */     final scala.collection.Seq value12 = resultIsNull ? null : 
scala.collection.mutable.WrappedArray.make(argValue5);
/* 130 */     isNull12 = value12 == null;
/* 131 */     argValue4 = value12;
/* 132 */
/* 133 */   }
/* 134 */
/* 135 */
/* 136 */   private void evalIfCondExpr(InternalRow i) {
/* 137 */     InternalRow value21 = i.getStruct(1, 2);
/* 138 */     isNull31 = false;
/* 139 */     value31 = false;
/* 140 */   }
/* 141 */
/* 142 */
/* 143 */   private void apply_0(InternalRow i) {
/* 144 */
/* 145 */
/* 146 */     boolean isNull7 = false;
/* 147 */
/* 148 */     InternalRow value8 = i.getStruct(0, 3);
/* 149 */     int value7 = -1;
/* 150 */
/* 151 */     value7 = value8.getInt(0);
/* 152 */
/* 153 */     if (false) {
/* 154 */       throw new RuntimeException(((java.lang.String) references[0]));
/* 155 */     }
/* 156 */     argValue2 = value7;
/* 157 */
/* 158 */
/* 159 */     InternalRow value11 = i.getStruct(0, 3);
/* 160 */     boolean isNull10 = false;
/* 161 */     UTF8String value10 = null;
/* 162 */
/* 163 */
/* 164 */     if (value11.isNullAt(1)) {
/* 165 */       isNull10 = true;
/* 166 */     } else {
/* 167 */       value10 = value11.getUTF8String(1);
/* 168 */     }
/* 169 */     boolean isNull9 = true;
/* 170 */     java.lang.String value9 = null;
/* 171 */     if (!isNull10) {
/* 172 */
/* 173 */       isNull9 = false;
/* 174 */       if (!isNull9) {
/* 175 */
/* 176 */         Object funcResult = null;
/* 177 */         funcResult = value10.toString();
/* 178 */         if (funcResult == null) {
/* 179 */           isNull9 = true;
/* 180 */         } else {
/* 181 */           value9 = (java.lang.String) funcResult;
/* 182 */         }
/* 183 */
/* 184 */       }
/* 185 */       isNull9 = value9 == null;
/* 186 */     }
/* 187 */     argValue3 = value9;
/* 188 */
/* 189 */   }
/* 190 */
/* 191 */
/* 192 */   private void evalIfFalseExpr(InternalRow i) {
/* 193 */     boolean isNull25 = false;
/* 194 */
/* 195 */     InternalRow value26 = i.getStruct(1, 2);
/* 196 */     int value25 = -1;
/* 197 */
/* 198 */     value25 = value26.getInt(0);
/* 199 */
/* 200 */     if (false) {
/* 201 */       throw new RuntimeException(((java.lang.String) references[3]));
/* 202 */     }
/* 203 */     argValue6 = value25;
/* 204 */
/* 205 */
/* 206 */     InternalRow value29 = i.getStruct(1, 2);
/* 207 */     boolean isNull28 = false;
/* 208 */     UTF8String value28 = null;
/* 209 */
/* 210 */
/* 211 */     if (value29.isNullAt(1)) {
/* 212 */       isNull28 = true;
/* 213 */     } else {
/* 214 */       value28 = value29.getUTF8String(1);
/* 215 */     }
/* 216 */     boolean isNull27 = true;
/* 217 */     java.lang.String value27 = null;
/* 218 */     if (!isNull28) {
/* 219 */
/* 220 */       isNull27 = false;
/* 221 */       if (!isNull27) {
/* 222 */
/* 223 */         Object funcResult2 = null;
/* 224 */         funcResult2 = value28.toString();
/* 225 */         if (funcResult2 == null) {
/* 226 */           isNull27 = true;
/* 227 */         } else {
/* 228 */           value27 = (java.lang.String) funcResult2;
/* 229 */         }
/* 230 */
/* 231 */       }
/* 232 */       isNull27 = value27 == null;
/* 233 */     }
/* 234 */     argValue7 = value27;
/* 235 */
/* 236 */
/* 237 */     Object obj1 = ((Expression) references[4]).eval(null);
/* 238 */     $iw value30 = ($iw) obj1;
/* 239 */     final Foo2 value23 = false ? null : value30.new Foo2(argValue6, 
argValue7);
/* 240 */     isNull33 = false;
/* 241 */     value33 = value23;
/* 242 */   }
/* 243 */
/* 244 */
/* 245 */   public java.lang.Object apply(java.lang.Object _i) {
/* 246 */     InternalRow i = (InternalRow) _i;
/* 247 */
/* 248 */     InternalRow value3 = i.getStruct(0, 3);
/* 249 */     boolean isNull1 = false;
/* 250 */     Foo1 value1 = null;
/* 251 */     if (!false && false) {
/* 252 */
/* 253 */       final Foo1 value4 = null;
/* 254 */       isNull1 = true;
/* 255 */       value1 = value4;
/* 256 */     } else {
/* 257 */
/* 258 */       apply_0(i);
/* 259 */       apply_1(i);
/* 260 */
/* 261 */       Object obj = ((Expression) references[2]).eval(null);
/* 262 */       $iw value18 = ($iw) obj;
/* 263 */       final Foo1 value5 = false ? null : value18.new Foo1(argValue2, 
argValue3, argValue4);
/* 264 */       isNull1 = false;
/* 265 */       value1 = value5;
/* 266 */     }
/* 267 */     argValue = value1;
/* 268 */
/* 269 */
/* 270 */     evalIfCondExpr(i);
/* 271 */     boolean isNull19 = false;
/* 272 */     Foo2 value19 = null;
/* 273 */     if (!isNull31 && value31) {
/* 274 */       evalIfTrueExpr(i);
/* 275 */       isNull19 = isNull32;
/* 276 */       value19 = value32;
/* 277 */     } else {
/* 278 */       evalIfFalseExpr(i);
/* 279 */       isNull19 = isNull33;
/* 280 */       value19 = value33;
/* 281 */     }
/* 282 */     argValue1 = value19;
/* 283 */
/* 284 */
/* 285 */     final scala.Tuple2 value = false ? null : new 
scala.Tuple2(argValue, argValue1);
/* 286 */     if (false) {
/* 287 */       mutableRow.setNullAt(0);
/* 288 */     } else {
/* 289 */
/* 290 */       mutableRow.update(0, value);
/* 291 */     }
/* 292 */
/* 293 */     return mutableRow;
/* 294 */   }
/* 295 */ }

  at 
org.spark_project.guava.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:306)
  at 
org.spark_project.guava.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:293)
  at 
org.spark_project.guava.util.concurrent.AbstractFuture.get(AbstractFuture.java:116)
  at 
org.spark_project.guava.util.concurrent.Uninterruptibles.getUninterruptibly(Uninterruptibles.java:135)
  at 
org.spark_project.guava.cache.LocalCache$Segment.getAndRecordStats(LocalCache.java:2410)
  at 
org.spark_project.guava.cache.LocalCache$Segment.loadSync(LocalCache.java:2380)
  at 
org.spark_project.guava.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2342)
  at org.spark_project.guava.cache.LocalCache$Segment.get(LocalCache.java:2257)
  at org.spark_project.guava.cache.LocalCache.get(LocalCache.java:4000)
  at org.spark_project.guava.cache.LocalCache.getOrLoad(LocalCache.java:4004)
  at 
org.spark_project.guava.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4874)
  at 
org.apache.spark.sql.catalyst.expressions.codegen.CodeGenerator$.compile(CodeGenerator.scala:890)
  at 
org.apache.spark.sql.catalyst.expressions.codegen.GenerateSafeProjection$.create(GenerateSafeProjection.scala:194)
  at 
org.apache.spark.sql.catalyst.expressions.codegen.GenerateSafeProjection$.create(GenerateSafeProjection.scala:36)
  at 
org.apache.spark.sql.catalyst.expressions.codegen.CodeGenerator.generate(CodeGenerator.scala:874)
  at 
org.apache.spark.sql.catalyst.encoders.ExpressionEncoder.constructProjection$lzycompute(ExpressionEncoder.scala:272)
  at 
org.apache.spark.sql.catalyst.encoders.ExpressionEncoder.constructProjection(ExpressionEncoder.scala:272)
  at 
org.apache.spark.sql.catalyst.encoders.ExpressionEncoder.fromRow(ExpressionEncoder.scala:303)
  ... 65 more
Caused by: java.lang.Exception: failed to compile: 
org.codehaus.commons.compiler.CompileException: File 'generated.java', Line 
263, Column 69: No applicable constructor/method found for actual parameters 
"int, java.lang.String, scala.collection.Seq"; candidates are: "Foo1(int, 
java.lang.String, scala.collection.mutable.Seq)"
/* 001 */ public java.lang.Object generate(Object[] references) {
/* 002 */   return new SpecificSafeProjection(references);
/* 003 */ }
/* 004 */
/* 005 */ class SpecificSafeProjection extends 
org.apache.spark.sql.catalyst.expressions.codegen.BaseProjection {
/* 006 */
/* 007 */   private Object[] references;
/* 008 */   private InternalRow mutableRow;
/* 009 */   private Foo1 argValue;
/* 010 */   private Foo2 argValue1;
/* 011 */   private int argValue2;
/* 012 */   private java.lang.String argValue3;
/* 013 */   private scala.collection.Seq argValue4;
/* 014 */   private boolean resultIsNull;
/* 015 */   private java.lang.Object[] argValue5;
/* 016 */   private boolean MapObjects_loopIsNull1;
/* 017 */   private int MapObjects_loopValue0;
/* 018 */   private int argValue6;
/* 019 */   private java.lang.String argValue7;
/* 020 */   private boolean isNull31;
/* 021 */   private boolean value31;
/* 022 */   private boolean isNull32;
/* 023 */   private Foo2 value32;
/* 024 */   private boolean isNull33;
/* 025 */   private Foo2 value33;
/* 026 */
/* 027 */   public SpecificSafeProjection(Object[] references) {
/* 028 */     this.references = references;
/* 029 */     mutableRow = (InternalRow) references[references.length - 1];
/* 030 */
/* 031 */
/* 032 */
/* 033 */
/* 034 */
/* 035 */
/* 036 */
/* 037 */
/* 038 */
/* 039 */
/* 040 */
/* 041 */     isNull31 = false;
/* 042 */     value31 = false;
/* 043 */     isNull32 = false;
/* 044 */     value32 = null;
/* 045 */     isNull33 = false;
/* 046 */     value33 = null;
/* 047 */
/* 048 */   }
/* 049 */
/* 050 */   public void initialize(int partitionIndex) {
/* 051 */
/* 052 */   }
/* 053 */
/* 054 */
/* 055 */   private void evalIfTrueExpr(InternalRow i) {
/* 056 */     final Foo2 value22 = null;
/* 057 */     isNull32 = true;
/* 058 */     value32 = value22;
/* 059 */   }
/* 060 */
/* 061 */
/* 062 */   private void apply_1(InternalRow i) {
/* 063 */
/* 064 */
/* 065 */     resultIsNull = false;
/* 066 */     if (!resultIsNull) {
/* 067 */
/* 068 */       InternalRow value16 = i.getStruct(0, 3);
/* 069 */       boolean isNull15 = false;
/* 070 */       ArrayData value15 = null;
/* 071 */
/* 072 */
/* 073 */       if (value16.isNullAt(2)) {
/* 074 */         isNull15 = true;
/* 075 */       } else {
/* 076 */         value15 = value16.getArray(2);
/* 077 */       }
/* 078 */       ArrayData value14 = null;
/* 079 */
/* 080 */       if (!isNull15) {
/* 081 */
/* 082 */         Integer[] convertedArray = null;
/* 083 */         int dataLength = value15.numElements();
/* 084 */         convertedArray = new Integer[dataLength];
/* 085 */
/* 086 */         int loopIndex = 0;
/* 087 */         while (loopIndex < dataLength) {
/* 088 */           MapObjects_loopValue0 = (int) (value15.getInt(loopIndex));
/* 089 */           MapObjects_loopIsNull1 = value15.isNullAt(loopIndex);
/* 090 */
/* 091 */
/* 092 */           if (MapObjects_loopIsNull1) {
/* 093 */             throw new RuntimeException(((java.lang.String) 
references[1]));
/* 094 */           }
/* 095 */           if (false) {
/* 096 */             convertedArray[loopIndex] = null;
/* 097 */           } else {
/* 098 */             convertedArray[loopIndex] = MapObjects_loopValue0;
/* 099 */           }
/* 100 */
/* 101 */           loopIndex += 1;
/* 102 */         }
/* 103 */
/* 104 */         value14 = new 
org.apache.spark.sql.catalyst.util.GenericArrayData(convertedArray);
/* 105 */       }
/* 106 */       boolean isNull13 = true;
/* 107 */       java.lang.Object[] value13 = null;
/* 108 */       if (!isNull15) {
/* 109 */
/* 110 */         isNull13 = false;
/* 111 */         if (!isNull13) {
/* 112 */
/* 113 */           Object funcResult1 = null;
/* 114 */           funcResult1 = value14.array();
/* 115 */           if (funcResult1 == null) {
/* 116 */             isNull13 = true;
/* 117 */           } else {
/* 118 */             value13 = (java.lang.Object[]) funcResult1;
/* 119 */           }
/* 120 */
/* 121 */         }
/* 122 */         isNull13 = value13 == null;
/* 123 */       }
/* 124 */       resultIsNull = isNull13;
/* 125 */       argValue5 = value13;
/* 126 */     }
/* 127 */
/* 128 */     boolean isNull12 = resultIsNull;
/* 129 */     final scala.collection.Seq value12 = resultIsNull ? null : 
scala.collection.mutable.WrappedArray.make(argValue5);
/* 130 */     isNull12 = value12 == null;
/* 131 */     argValue4 = value12;
/* 132 */
/* 133 */   }
/* 134 */
/* 135 */
/* 136 */   private void evalIfCondExpr(InternalRow i) {
/* 137 */     InternalRow value21 = i.getStruct(1, 2);
/* 138 */     isNull31 = false;
/* 139 */     value31 = false;
/* 140 */   }
/* 141 */
/* 142 */
/* 143 */   private void apply_0(InternalRow i) {
/* 144 */
/* 145 */
/* 146 */     boolean isNull7 = false;
/* 147 */
/* 148 */     InternalRow value8 = i.getStruct(0, 3);
/* 149 */     int value7 = -1;
/* 150 */
/* 151 */     value7 = value8.getInt(0);
/* 152 */
/* 153 */     if (false) {
/* 154 */       throw new RuntimeException(((java.lang.String) references[0]));
/* 155 */     }
/* 156 */     argValue2 = value7;
/* 157 */
/* 158 */
/* 159 */     InternalRow value11 = i.getStruct(0, 3);
/* 160 */     boolean isNull10 = false;
/* 161 */     UTF8String value10 = null;
/* 162 */
/* 163 */
/* 164 */     if (value11.isNullAt(1)) {
/* 165 */       isNull10 = true;
/* 166 */     } else {
/* 167 */       value10 = value11.getUTF8String(1);
/* 168 */     }
/* 169 */     boolean isNull9 = true;
/* 170 */     java.lang.String value9 = null;
/* 171 */     if (!isNull10) {
/* 172 */
/* 173 */       isNull9 = false;
/* 174 */       if (!isNull9) {
/* 175 */
/* 176 */         Object funcResult = null;
/* 177 */         funcResult = value10.toString();
/* 178 */         if (funcResult == null) {
/* 179 */           isNull9 = true;
/* 180 */         } else {
/* 181 */           value9 = (java.lang.String) funcResult;
/* 182 */         }
/* 183 */
/* 184 */       }
/* 185 */       isNull9 = value9 == null;
/* 186 */     }
/* 187 */     argValue3 = value9;
/* 188 */
/* 189 */   }
/* 190 */
/* 191 */
/* 192 */   private void evalIfFalseExpr(InternalRow i) {
/* 193 */     boolean isNull25 = false;
/* 194 */
/* 195 */     InternalRow value26 = i.getStruct(1, 2);
/* 196 */     int value25 = -1;
/* 197 */
/* 198 */     value25 = value26.getInt(0);
/* 199 */
/* 200 */     if (false) {
/* 201 */       throw new RuntimeException(((java.lang.String) references[3]));
/* 202 */     }
/* 203 */     argValue6 = value25;
/* 204 */
/* 205 */
/* 206 */     InternalRow value29 = i.getStruct(1, 2);
/* 207 */     boolean isNull28 = false;
/* 208 */     UTF8String value28 = null;
/* 209 */
/* 210 */
/* 211 */     if (value29.isNullAt(1)) {
/* 212 */       isNull28 = true;
/* 213 */     } else {
/* 214 */       value28 = value29.getUTF8String(1);
/* 215 */     }
/* 216 */     boolean isNull27 = true;
/* 217 */     java.lang.String value27 = null;
/* 218 */     if (!isNull28) {
/* 219 */
/* 220 */       isNull27 = false;
/* 221 */       if (!isNull27) {
/* 222 */
/* 223 */         Object funcResult2 = null;
/* 224 */         funcResult2 = value28.toString();
/* 225 */         if (funcResult2 == null) {
/* 226 */           isNull27 = true;
/* 227 */         } else {
/* 228 */           value27 = (java.lang.String) funcResult2;
/* 229 */         }
/* 230 */
/* 231 */       }
/* 232 */       isNull27 = value27 == null;
/* 233 */     }
/* 234 */     argValue7 = value27;
/* 235 */
/* 236 */
/* 237 */     Object obj1 = ((Expression) references[4]).eval(null);
/* 238 */     $iw value30 = ($iw) obj1;
/* 239 */     final Foo2 value23 = false ? null : value30.new Foo2(argValue6, 
argValue7);
/* 240 */     isNull33 = false;
/* 241 */     value33 = value23;
/* 242 */   }
/* 243 */
/* 244 */
/* 245 */   public java.lang.Object apply(java.lang.Object _i) {
/* 246 */     InternalRow i = (InternalRow) _i;
/* 247 */
/* 248 */     InternalRow value3 = i.getStruct(0, 3);
/* 249 */     boolean isNull1 = false;
/* 250 */     Foo1 value1 = null;
/* 251 */     if (!false && false) {
/* 252 */
/* 253 */       final Foo1 value4 = null;
/* 254 */       isNull1 = true;
/* 255 */       value1 = value4;
/* 256 */     } else {
/* 257 */
/* 258 */       apply_0(i);
/* 259 */       apply_1(i);
/* 260 */
/* 261 */       Object obj = ((Expression) references[2]).eval(null);
/* 262 */       $iw value18 = ($iw) obj;
/* 263 */       final Foo1 value5 = false ? null : value18.new Foo1(argValue2, 
argValue3, argValue4);
/* 264 */       isNull1 = false;
/* 265 */       value1 = value5;
/* 266 */     }
/* 267 */     argValue = value1;
/* 268 */
/* 269 */
/* 270 */     evalIfCondExpr(i);
/* 271 */     boolean isNull19 = false;
/* 272 */     Foo2 value19 = null;
/* 273 */     if (!isNull31 && value31) {
/* 274 */       evalIfTrueExpr(i);
/* 275 */       isNull19 = isNull32;
/* 276 */       value19 = value32;
/* 277 */     } else {
/* 278 */       evalIfFalseExpr(i);
/* 279 */       isNull19 = isNull33;
/* 280 */       value19 = value33;
/* 281 */     }
/* 282 */     argValue1 = value19;
/* 283 */
/* 284 */
/* 285 */     final scala.Tuple2 value = false ? null : new 
scala.Tuple2(argValue, argValue1);
/* 286 */     if (false) {
/* 287 */       mutableRow.setNullAt(0);
/* 288 */     } else {
/* 289 */
/* 290 */       mutableRow.update(0, value);
/* 291 */     }
/* 292 */
/* 293 */     return mutableRow;
/* 294 */   }
/* 295 */ }

  at 
org.apache.spark.sql.catalyst.expressions.codegen.CodeGenerator$.org$apache$spark$sql$catalyst$expressions$codegen$CodeGenerator$$doCompile(CodeGenerator.scala:941)
  at 
org.apache.spark.sql.catalyst.expressions.codegen.CodeGenerator$$anon$1.load(CodeGenerator.scala:998)
  at 
org.apache.spark.sql.catalyst.expressions.codegen.CodeGenerator$$anon$1.load(CodeGenerator.scala:995)
  at 
org.spark_project.guava.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3599)
  at 
org.spark_project.guava.cache.LocalCache$Segment.loadSync(LocalCache.java:2379)
  ... 77 more
Caused by: org.codehaus.commons.compiler.CompileException: File 
'generated.java', Line 263, Column 69: No applicable constructor/method found 
for actual parameters "int, java.lang.String, scala.collection.Seq"; candidates 
are: "Foo1(int, java.lang.String, scala.collection.mutable.Seq)"
  at org.codehaus.janino.UnitCompiler.compileError(UnitCompiler.java:11004)
  at 
org.codehaus.janino.UnitCompiler.findMostSpecificIInvocable(UnitCompiler.java:8307)
  at org.codehaus.janino.UnitCompiler.invokeConstructor(UnitCompiler.java:7092)
  at org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:4686)
  at org.codehaus.janino.UnitCompiler.access$8200(UnitCompiler.java:206)
  at 
org.codehaus.janino.UnitCompiler$12.visitNewClassInstance(UnitCompiler.java:3786)
  at 
org.codehaus.janino.UnitCompiler$12.visitNewClassInstance(UnitCompiler.java:3762)
  at org.codehaus.janino.Java$NewClassInstance.accept(Java.java:4427)
  at org.codehaus.janino.UnitCompiler.compileGet(UnitCompiler.java:3762)
  at org.codehaus.janino.UnitCompiler.compileGetValue(UnitCompiler.java:4933)
  at org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:4067)
  at org.codehaus.janino.UnitCompiler.access$7200(UnitCompiler.java:206)
  at 
org.codehaus.janino.UnitCompiler$12.visitConditionalExpression(UnitCompiler.java:3771)
  at 
org.codehaus.janino.UnitCompiler$12.visitConditionalExpression(UnitCompiler.java:3762)
  at org.codehaus.janino.Java$ConditionalExpression.accept(Java.java:3877)
  at org.codehaus.janino.UnitCompiler.compileGet(UnitCompiler.java:3762)
  at org.codehaus.janino.UnitCompiler.compileGetValue(UnitCompiler.java:4933)
  at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:2330)
  at org.codehaus.janino.UnitCompiler.access$2600(UnitCompiler.java:206)
  at 
org.codehaus.janino.UnitCompiler$6.visitLocalVariableDeclarationStatement(UnitCompiler.java:1386)
  at 
org.codehaus.janino.UnitCompiler$6.visitLocalVariableDeclarationStatement(UnitCompiler.java:1370)
  at 
org.codehaus.janino.Java$LocalVariableDeclarationStatement.accept(Java.java:2974)
  at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:1370)
  at org.codehaus.janino.UnitCompiler.compileStatements(UnitCompiler.java:1450)
  at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:1436)
  at org.codehaus.janino.UnitCompiler.access$1600(UnitCompiler.java:206)
  at org.codehaus.janino.UnitCompiler$6.visitBlock(UnitCompiler.java:1376)
  at org.codehaus.janino.UnitCompiler$6.visitBlock(UnitCompiler.java:1370)
  at org.codehaus.janino.Java$Block.accept(Java.java:2471)
  at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:1370)
  at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:2185)
  at org.codehaus.janino.UnitCompiler.access$1800(UnitCompiler.java:206)
  at org.codehaus.janino.UnitCompiler$6.visitIfStatement(UnitCompiler.java:1378)
  at org.codehaus.janino.UnitCompiler$6.visitIfStatement(UnitCompiler.java:1370)
  at org.codehaus.janino.Java$IfStatement.accept(Java.java:2621)
  at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:1370)
  at org.codehaus.janino.UnitCompiler.compileStatements(UnitCompiler.java:1450)
  at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:2811)
  at 
org.codehaus.janino.UnitCompiler.compileDeclaredMethods(UnitCompiler.java:1262)
  at 
org.codehaus.janino.UnitCompiler.compileDeclaredMethods(UnitCompiler.java:1234)
  at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:538)
  at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:890)
  at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:894)
  at org.codehaus.janino.UnitCompiler.access$600(UnitCompiler.java:206)
  at 
org.codehaus.janino.UnitCompiler$2.visitMemberClassDeclaration(UnitCompiler.java:377)
  at 
org.codehaus.janino.UnitCompiler$2.visitMemberClassDeclaration(UnitCompiler.java:369)
  at org.codehaus.janino.Java$MemberClassDeclaration.accept(Java.java:1128)
  at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:369)
  at 
org.codehaus.janino.UnitCompiler.compileDeclaredMemberTypes(UnitCompiler.java:1209)
  at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:564)
  at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:420)
  at org.codehaus.janino.UnitCompiler.access$400(UnitCompiler.java:206)
  at 
org.codehaus.janino.UnitCompiler$2.visitPackageMemberClassDeclaration(UnitCompiler.java:374)
  at 
org.codehaus.janino.UnitCompiler$2.visitPackageMemberClassDeclaration(UnitCompiler.java:369)
  at 
org.codehaus.janino.Java$AbstractPackageMemberClassDeclaration.accept(Java.java:1309)
  at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:369)
  at org.codehaus.janino.UnitCompiler.compileUnit(UnitCompiler.java:345)
  at 
org.codehaus.janino.SimpleCompiler.compileToClassLoader(SimpleCompiler.java:396)
  at 
org.codehaus.janino.ClassBodyEvaluator.compileToClass(ClassBodyEvaluator.java:311)
  at org.codehaus.janino.ClassBodyEvaluator.cook(ClassBodyEvaluator.java:229)
  at org.codehaus.janino.SimpleCompiler.cook(SimpleCompiler.java:196)
  at org.codehaus.commons.compiler.Cookable.cook(Cookable.java:91)
  at 
org.apache.spark.sql.catalyst.expressions.codegen.CodeGenerator$.org$apache$spark$sql$catalyst$expressions$codegen$CodeGenerator$$doCompile(CodeGenerator.scala:935)
  ... 81 more
{quote}


> CodeGenerator - failed to compile when constructor has 
> scala.collection.mutable.Seq vs. scala.collection.Seq
> ------------------------------------------------------------------------------------------------------------
>
>                 Key: SPARK-22296
>                 URL: https://issues.apache.org/jira/browse/SPARK-22296
>             Project: Spark
>          Issue Type: Bug
>          Components: Optimizer
>    Affects Versions: 2.1.0
>            Reporter: Randy Tidd
>
> This is with Scala 2.11.
> We have a case class that has a constructor with 85 args, the last two of 
> which are:
>                      var chargesInst : 
> scala.collection.mutable.Seq[ChargeInstitutional] = 
> scala.collection.mutable.Seq.empty[ChargeInstitutional],
>                      var chargesProf : 
> scala.collection.mutable.Seq[ChargeProfessional] = 
> scala.collection.mutable.Seq.empty[ChargeProfessional]
> A mutable Seq in a the constructor of a case class is probably poor form but 
> Scala allows it.  When we run this job we get this error:
> build   17-Oct-2017 05:30:50        2017-10-17 09:30:50 [Executor task launch 
> worker-1] ERROR o.a.s.s.c.e.codegen.CodeGenerator - failed to compile: 
> org.codehaus.commons.compiler.CompileException: File 'generated.java', Line 
> 8217, Column 70: No applicable constructor/method found for actual parameters 
> "java.lang.String, java.lang.String, long, java.lang.String, long, long, 
> long, java.lang.String, long, long, double, scala.Option, scala.Option, 
> java.lang.String, java.lang.String, long, java.lang.String, java.lang.String, 
> java.lang.String, java.lang.String, java.lang.String, java.lang.String, int, 
> java.lang.String, java.lang.String, java.lang.String, java.lang.String, 
> java.lang.String, java.lang.String, java.lang.String, java.lang.String, 
> java.lang.String, java.lang.String, long, long, long, long, long, 
> scala.Option, scala.Option, scala.Option, scala.Option, scala.Option, 
> java.lang.String, java.lang.String, java.lang.String, java.lang.String, 
> java.lang.String, java.lang.String, long, java.lang.String, int, double, 
> double, java.lang.String, java.lang.String, java.lang.String, long, 
> java.lang.String, java.lang.String, java.lang.String, java.lang.String, long, 
> long, long, long, java.lang.String, com.xyz.xyz.xyz.domain.Patient, 
> com.xyz.xyz.xyz.domain.Physician, scala.collection.Seq, scala.collection.Seq, 
> java.lang.String, long, java.lang.String, int, int, boolean, boolean, 
> scala.collection.Seq, boolean, scala.collection.Seq, boolean, 
> scala.collection.Seq, scala.collection.Seq"; candidates are: 
> "com.xyz.xyz.xyz.domain.Account(java.lang.String, java.lang.String, long, 
> java.lang.String, long, long, long, java.lang.String, long, long, double, 
> scala.Option, scala.Option, java.lang.String, java.lang.String, long, 
> java.lang.String, java.lang.String, java.lang.String, java.lang.String, 
> java.lang.String, java.lang.String, int, java.lang.String, java.lang.String, 
> java.lang.String, java.lang.String, java.lang.String, java.lang.String, 
> java.lang.String, java.lang.String, java.lang.String, java.lang.String, long, 
> long, long, long, long, scala.Option, scala.Option, scala.Option, 
> scala.Option, scala.Option, java.lang.String, java.lang.String, 
> java.lang.String, java.lang.String, java.lang.String, java.lang.String, long, 
> java.lang.String, int, double, double, java.lang.String, java.lang.String, 
> java.lang.String, long, java.lang.String, java.lang.String, java.lang.String, 
> java.lang.String, long, long, long, long, java.lang.String, 
> com.xyz.xyz.xyz.domain.Patient, com.xyz.xyz.xyz.domain.Physician, 
> scala.collection.Seq, scala.collection.Seq, java.lang.String, long, 
> java.lang.String, int, int, boolean, boolean, scala.collection.Seq, boolean, 
> scala.collection.Seq, boolean, scala.collection.mutable.Seq, 
> scala.collection.mutable.Seq)"
> The relevant lines are:
> build   17-Oct-2017 05:30:50        /* 093 */   private scala.collection.Seq 
> argValue84;
> build   17-Oct-2017 05:30:50        /* 094 */   private scala.collection.Seq 
> argValue85;
> and
> build   17-Oct-2017 05:30:54        /* 8217 */     final 
> com.xyz.xyz.xyz.domain.Account value1 = false ? null : new 
> com.xyz.xyz.xyz.domain.Account(argValue2, argValue3, argValue4, argValue5, 
> argValue6, argValue7, argValue8, argValue9, argValue10, argValue11, 
> argValue12, argValue13, argValue14, argValue15, argValue16, argValue17, 
> argValue18, argValue19, argValue20, argValue21, argValue22, argValue23, 
> argValue24, argValue25, argValue26, argValue27, argValue28, argValue29, 
> argValue30, argValue31, argValue32, argValue33, argValue34, argValue35, 
> argValue36, argValue37, argValue38, argValue39, argValue40, argValue41, 
> argValue42, argValue43, argValue44, argValue45, argValue46, argValue47, 
> argValue48, argValue49, argValue50, argValue51, argValue52, argValue53, 
> argValue54, argValue55, argValue56, argValue57, argValue58, argValue59, 
> argValue60, argValue61, argValue62, argValue63, argValue64, argValue65, 
> argValue66, argValue67, argValue68, argValue69, argValue70, argValue71, 
> argValue72, argValue73, argValue74, argValue75, argValue76, argValue77, 
> argValue78, argValue79, argValue80, argValue81, argValue82, argValue83, 
> argValue84, argValue85);
> In short, Spark uses scala.collection.Seq in the generated code which is not 
> compatible with scala.collection.mutable.Seq in our case class, which results 
> in a failure at runtime. 



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@spark.apache.org
For additional commands, e-mail: issues-h...@spark.apache.org

Reply via email to