public class org.h2.mode.FunctionsMySQL extends org.h2.mode.FunctionsBase
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.h2.mode.FunctionsMySQL
super_class: org.h2.mode.FunctionsBase
{
private static final int UNIX_TIMESTAMP;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 1001
private static final int FROM_UNIXTIME;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 1002
private static final int DATE;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 1003
private static final java.util.HashMap<java.lang.String, org.h2.expression.function.FunctionInfo> FUNCTIONS;
descriptor: Ljava/util/HashMap;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/util/HashMap<Ljava/lang/String;Lorg/h2/expression/function/FunctionInfo;>;
private static final java.lang.String DATE_TIME_FORMAT;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "yyyy-MM-dd HH:mm:ss"
private static final java.lang.String[] FORMAT_REPLACE;
descriptor: [Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=12, locals=0, args_size=0
0: new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
putstatic org.h2.mode.FunctionsMySQL.FUNCTIONS:Ljava/util/HashMap;
1: getstatic org.h2.mode.FunctionsMySQL.FUNCTIONS:Ljava/util/HashMap;
ldc "UNIX_TIMESTAMP"
new org.h2.expression.function.FunctionInfo
dup
ldc "UNIX_TIMESTAMP"
sipush 1001
2: iconst_m1
iconst_4
iconst_0
iconst_0
iconst_0
iconst_1
invokespecial org.h2.expression.function.FunctionInfo.<init>:(Ljava/lang/String;IIIZZZZ)V
3: invokevirtual java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
4: getstatic org.h2.mode.FunctionsMySQL.FUNCTIONS:Ljava/util/HashMap;
ldc "FROM_UNIXTIME"
new org.h2.expression.function.FunctionInfo
dup
ldc "FROM_UNIXTIME"
sipush 1002
5: iconst_m1
bipush 13
iconst_0
iconst_1
iconst_0
iconst_1
invokespecial org.h2.expression.function.FunctionInfo.<init>:(Ljava/lang/String;IIIZZZZ)V
6: invokevirtual java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
7: getstatic org.h2.mode.FunctionsMySQL.FUNCTIONS:Ljava/util/HashMap;
ldc "DATE"
new org.h2.expression.function.FunctionInfo
dup
ldc "DATE"
sipush 1003
8: iconst_1
bipush 10
iconst_0
iconst_1
iconst_0
iconst_1
invokespecial org.h2.expression.function.FunctionInfo.<init>:(Ljava/lang/String;IIIZZZZ)V
9: invokevirtual java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
10: bipush 48
anewarray java.lang.String
dup
iconst_0
11: ldc "%a"
aastore
dup
iconst_1
ldc "EEE"
aastore
dup
iconst_2
12: ldc "%b"
aastore
dup
iconst_3
ldc "MMM"
aastore
dup
iconst_4
13: ldc "%c"
aastore
dup
iconst_5
ldc "MM"
aastore
dup
bipush 6
14: ldc "%d"
aastore
dup
bipush 7
ldc "dd"
aastore
dup
bipush 8
15: ldc "%e"
aastore
dup
bipush 9
ldc "d"
aastore
dup
bipush 10
16: ldc "%H"
aastore
dup
bipush 11
ldc "HH"
aastore
dup
bipush 12
17: ldc "%h"
aastore
dup
bipush 13
ldc "hh"
aastore
dup
bipush 14
18: ldc "%I"
aastore
dup
bipush 15
ldc "hh"
aastore
dup
bipush 16
19: ldc "%i"
aastore
dup
bipush 17
ldc "mm"
aastore
dup
bipush 18
20: ldc "%j"
aastore
dup
bipush 19
ldc "DDD"
aastore
dup
bipush 20
21: ldc "%k"
aastore
dup
bipush 21
ldc "H"
aastore
dup
bipush 22
22: ldc "%l"
aastore
dup
bipush 23
ldc "h"
aastore
dup
bipush 24
23: ldc "%M"
aastore
dup
bipush 25
ldc "MMMM"
aastore
dup
bipush 26
24: ldc "%m"
aastore
dup
bipush 27
ldc "MM"
aastore
dup
bipush 28
25: ldc "%p"
aastore
dup
bipush 29
ldc "a"
aastore
dup
bipush 30
26: ldc "%r"
aastore
dup
bipush 31
ldc "hh:mm:ss a"
aastore
dup
bipush 32
27: ldc "%S"
aastore
dup
bipush 33
ldc "ss"
aastore
dup
bipush 34
28: ldc "%s"
aastore
dup
bipush 35
ldc "ss"
aastore
dup
bipush 36
29: ldc "%T"
aastore
dup
bipush 37
ldc "HH:mm:ss"
aastore
dup
bipush 38
30: ldc "%W"
aastore
dup
bipush 39
ldc "EEEE"
aastore
dup
bipush 40
31: ldc "%w"
aastore
dup
bipush 41
ldc "F"
aastore
dup
bipush 42
32: ldc "%Y"
aastore
dup
bipush 43
ldc "yyyy"
aastore
dup
bipush 44
33: ldc "%y"
aastore
dup
bipush 45
ldc "yy"
aastore
dup
bipush 46
34: ldc "%%"
aastore
dup
bipush 47
ldc "%"
aastore
35: putstatic org.h2.mode.FunctionsMySQL.FORMAT_REPLACE:[Ljava/lang/String;
36: return
LocalVariableTable:
Start End Slot Name Signature
public static int unixTimestamp();
descriptor: ()I
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=0, args_size=0
0: invokestatic java.lang.System.currentTimeMillis:()J
ldc 1000
ldiv
l2i
ireturn
LocalVariableTable:
Start End Slot Name Signature
public static int unixTimestamp(java.sql.Timestamp);
descriptor: (Ljava/sql/Timestamp;)I
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual java.sql.Timestamp.getTime:()J
ldc 1000
ldiv
l2i
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 timestamp Ljava/sql/Timestamp;
MethodParameters:
Name Flags
timestamp
public static java.lang.String fromUnixTime(int);
descriptor: (I)Ljava/lang/String;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=7, locals=2, args_size=1
start local 0 0: new java.text.SimpleDateFormat
dup
ldc "yyyy-MM-dd HH:mm:ss"
1: getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
2: invokespecial java.text.SimpleDateFormat.<init>:(Ljava/lang/String;Ljava/util/Locale;)V
astore 1
start local 1 3: aload 1
new java.util.Date
dup
iload 0
i2l
ldc 1000
lmul
invokespecial java.util.Date.<init>:(J)V
invokevirtual java.text.SimpleDateFormat.format:(Ljava/util/Date;)Ljava/lang/String;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 seconds I
3 4 1 formatter Ljava/text/SimpleDateFormat;
MethodParameters:
Name Flags
seconds
public static java.lang.String fromUnixTime(int, java.lang.String);
descriptor: (ILjava/lang/String;)Ljava/lang/String;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=7, locals=3, args_size=2
start local 0 start local 1 0: aload 1
invokestatic org.h2.mode.FunctionsMySQL.convertToSimpleDateFormat:(Ljava/lang/String;)Ljava/lang/String;
astore 1
1: new java.text.SimpleDateFormat
dup
aload 1
getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
invokespecial java.text.SimpleDateFormat.<init>:(Ljava/lang/String;Ljava/util/Locale;)V
astore 2
start local 2 2: aload 2
new java.util.Date
dup
iload 0
i2l
ldc 1000
lmul
invokespecial java.util.Date.<init>:(J)V
invokevirtual java.text.SimpleDateFormat.format:(Ljava/util/Date;)Ljava/lang/String;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 seconds I
0 3 1 format Ljava/lang/String;
2 3 2 formatter Ljava/text/SimpleDateFormat;
MethodParameters:
Name Flags
seconds
format
private static java.lang.String convertToSimpleDateFormat(java.lang.String);
descriptor: (Ljava/lang/String;)Ljava/lang/String;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=3, args_size=1
start local 0 0: getstatic org.h2.mode.FunctionsMySQL.FORMAT_REPLACE:[Ljava/lang/String;
astore 1
start local 1 1: iconst_0
istore 2
start local 2 2: goto 5
3: StackMap locals: java.lang.String[] int
StackMap stack:
aload 0
aload 1
iload 2
aaload
aload 1
iload 2
iconst_1
iadd
aaload
invokestatic org.h2.util.StringUtils.replaceAll:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
astore 0
4: iinc 2 2
StackMap locals:
StackMap stack:
5: iload 2
aload 1
arraylength
if_icmplt 3
end local 2 6: aload 0
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 format Ljava/lang/String;
1 7 1 replace [Ljava/lang/String;
2 6 2 i I
MethodParameters:
Name Flags
format
public static org.h2.expression.function.Function getFunction(org.h2.engine.Database, java.lang.String);
descriptor: (Lorg/h2/engine/Database;Ljava/lang/String;)Lorg/h2/expression/function/Function;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: getstatic org.h2.mode.FunctionsMySQL.FUNCTIONS:Ljava/util/HashMap;
aload 1
invokevirtual java.util.HashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.h2.expression.function.FunctionInfo
astore 2
start local 2 1: aload 2
ifnull 2
new org.h2.mode.FunctionsMySQL
dup
aload 0
aload 2
invokespecial org.h2.mode.FunctionsMySQL.<init>:(Lorg/h2/engine/Database;Lorg/h2/expression/function/FunctionInfo;)V
goto 3
StackMap locals: org.h2.expression.function.FunctionInfo
StackMap stack:
2: aconst_null
StackMap locals:
StackMap stack: org.h2.mode.FunctionsMySQL
3: areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 database Lorg/h2/engine/Database;
0 4 1 upperName Ljava/lang/String;
1 4 2 info Lorg/h2/expression/function/FunctionInfo;
MethodParameters:
Name Flags
database
upperName
void <init>(org.h2.engine.Database, org.h2.expression.function.FunctionInfo);
descriptor: (Lorg/h2/engine/Database;Lorg/h2/expression/function/FunctionInfo;)V
flags: (0x0000)
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
aload 2
invokespecial org.h2.mode.FunctionsBase.<init>:(Lorg/h2/engine/Database;Lorg/h2/expression/function/FunctionInfo;)V
1: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/h2/mode/FunctionsMySQL;
0 2 1 database Lorg/h2/engine/Database;
0 2 2 info Lorg/h2/expression/function/FunctionInfo;
MethodParameters:
Name Flags
database
info
protected void checkParameterCount(int);
descriptor: (I)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=7, locals=4, args_size=2
start local 0 start local 1 0: aload 0
getfield org.h2.mode.FunctionsMySQL.info:Lorg/h2/expression/function/FunctionInfo;
getfield org.h2.expression.function.FunctionInfo.type:I
tableswitch { // 1001 - 1003
1001: 1
1002: 4
1003: 7
default: 10
}
1: StackMap locals:
StackMap stack:
iconst_0
istore 2
start local 2 2: iconst_2
istore 3
start local 3 3: goto 12
end local 3 end local 2 4: StackMap locals:
StackMap stack:
iconst_1
istore 2
start local 2 5: iconst_2
istore 3
start local 3 6: goto 12
end local 3 end local 2 7: StackMap locals:
StackMap stack:
iconst_1
istore 2
start local 2 8: iconst_1
istore 3
start local 3 9: goto 12
end local 3 end local 2 10: StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
ldc "type="
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield org.h2.mode.FunctionsMySQL.info:Lorg/h2/expression/function/FunctionInfo;
getfield org.h2.expression.function.FunctionInfo.type:I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic org.h2.message.DbException.throwInternalError:(Ljava/lang/String;)Ljava/lang/RuntimeException;
pop
11: return
start local 2 start local 3 12: StackMap locals: int int
StackMap stack:
iload 1
iload 2
if_icmplt 13
iload 1
iload 3
if_icmple 14
13: StackMap locals:
StackMap stack:
sipush 7001
iconst_2
anewarray java.lang.String
dup
iconst_0
aload 0
getfield org.h2.mode.FunctionsMySQL.info:Lorg/h2/expression/function/FunctionInfo;
getfield org.h2.expression.function.FunctionInfo.name:Ljava/lang/String;
aastore
dup
iconst_1
new java.lang.StringBuilder
dup
iload 2
invokestatic java.lang.String.valueOf:(I)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc ".."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
iload 3
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aastore
invokestatic org.h2.message.DbException.get:(I[Ljava/lang/String;)Lorg/h2/message/DbException;
athrow
14: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Lorg/h2/mode/FunctionsMySQL;
0 15 1 len I
2 4 2 min I
5 7 2 min I
8 10 2 min I
12 15 2 min I
3 4 3 max I
6 7 3 max I
9 10 3 max I
12 15 3 max I
MethodParameters:
Name Flags
len
public org.h2.expression.Expression optimize(org.h2.engine.Session);
descriptor: (Lorg/h2/engine/Session;)Lorg/h2/expression/Expression;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=5, args_size=2
start local 0 start local 1 0: aload 0
getfield org.h2.mode.FunctionsMySQL.info:Lorg/h2/expression/function/FunctionInfo;
getfield org.h2.expression.function.FunctionInfo.deterministic:Z
istore 2
start local 2 1: iconst_0
istore 3
start local 3 2: goto 11
3: StackMap locals: int int
StackMap stack:
aload 0
getfield org.h2.mode.FunctionsMySQL.args:[Lorg/h2/expression/Expression;
iload 3
aaload
astore 4
start local 4 4: aload 4
ifnonnull 6
5: goto 10
6: StackMap locals: org.h2.expression.Expression
StackMap stack:
aload 4
aload 1
invokevirtual org.h2.expression.Expression.optimize:(Lorg/h2/engine/Session;)Lorg/h2/expression/Expression;
astore 4
7: aload 0
getfield org.h2.mode.FunctionsMySQL.args:[Lorg/h2/expression/Expression;
iload 3
aload 4
aastore
8: aload 4
invokevirtual org.h2.expression.Expression.isConstant:()Z
ifne 10
9: iconst_0
istore 2
end local 4 10: StackMap locals:
StackMap stack:
iinc 3 1
StackMap locals:
StackMap stack:
11: iload 3
aload 0
getfield org.h2.mode.FunctionsMySQL.args:[Lorg/h2/expression/Expression;
arraylength
if_icmplt 3
end local 3 12: iload 2
ifeq 14
13: aload 0
aload 1
invokevirtual org.h2.mode.FunctionsMySQL.getValue:(Lorg/h2/engine/Session;)Lorg/h2/value/Value;
invokestatic org.h2.expression.ValueExpression.get:(Lorg/h2/value/Value;)Lorg/h2/expression/ValueExpression;
areturn
14: StackMap locals:
StackMap stack:
aload 0
aload 0
getfield org.h2.mode.FunctionsMySQL.info:Lorg/h2/expression/function/FunctionInfo;
getfield org.h2.expression.function.FunctionInfo.returnDataType:I
invokestatic org.h2.value.TypeInfo.getTypeInfo:(I)Lorg/h2/value/TypeInfo;
putfield org.h2.mode.FunctionsMySQL.type:Lorg/h2/value/TypeInfo;
15: aload 0
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lorg/h2/mode/FunctionsMySQL;
0 16 1 session Lorg/h2/engine/Session;
1 16 2 allConst Z
2 12 3 i I
4 10 4 e Lorg/h2/expression/Expression;
MethodParameters:
Name Flags
session
protected org.h2.value.Value getValueWithArgs(org.h2.engine.Session, org.h2.expression.Expression[]);
descriptor: (Lorg/h2/engine/Session;[Lorg/h2/expression/Expression;)Lorg/h2/value/Value;
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=7, args_size=3
start local 0 start local 1 start local 2 0: aload 2
arraylength
anewarray org.h2.value.Value
astore 3
start local 3 1: aload 1
aload 2
aload 3
iconst_0
invokestatic org.h2.mode.FunctionsMySQL.getNullOrValue:(Lorg/h2/engine/Session;[Lorg/h2/expression/Expression;[Lorg/h2/value/Value;I)Lorg/h2/value/Value;
astore 4
start local 4 2: aload 1
aload 2
aload 3
iconst_1
invokestatic org.h2.mode.FunctionsMySQL.getNullOrValue:(Lorg/h2/engine/Session;[Lorg/h2/expression/Expression;[Lorg/h2/value/Value;I)Lorg/h2/value/Value;
astore 5
start local 5 3: aload 0
getfield org.h2.mode.FunctionsMySQL.info:Lorg/h2/expression/function/FunctionInfo;
getfield org.h2.expression.function.FunctionInfo.type:I
tableswitch { // 1001 - 1003
1001: 4
1002: 8
1003: 12
default: 21
}
4: StackMap locals: org.h2.value.Value[] org.h2.value.Value org.h2.value.Value
StackMap stack:
aload 4
ifnonnull 5
invokestatic org.h2.mode.FunctionsMySQL.unixTimestamp:()I
goto 6
StackMap locals:
StackMap stack:
5: aload 4
invokevirtual org.h2.value.Value.getTimestamp:()Ljava/sql/Timestamp;
invokestatic org.h2.mode.FunctionsMySQL.unixTimestamp:(Ljava/sql/Timestamp;)I
StackMap locals:
StackMap stack: int
6: invokestatic org.h2.value.ValueInt.get:(I)Lorg/h2/value/ValueInt;
astore 6
start local 6 7: goto 22
end local 6 8: StackMap locals:
StackMap stack:
aload 5
ifnonnull 9
aload 4
invokevirtual org.h2.value.Value.getInt:()I
invokestatic org.h2.mode.FunctionsMySQL.fromUnixTime:(I)Ljava/lang/String;
goto 10
StackMap locals:
StackMap stack:
9: aload 4
invokevirtual org.h2.value.Value.getInt:()I
aload 5
invokevirtual org.h2.value.Value.getString:()Ljava/lang/String;
invokestatic org.h2.mode.FunctionsMySQL.fromUnixTime:(ILjava/lang/String;)Ljava/lang/String;
10: StackMap locals:
StackMap stack: java.lang.String
invokestatic org.h2.value.ValueString.get:(Ljava/lang/String;)Lorg/h2/value/Value;
astore 6
start local 6 11: goto 22
end local 6 12: StackMap locals:
StackMap stack:
aload 4
invokevirtual org.h2.value.Value.getValueType:()I
lookupswitch { // 3
10: 13
11: 19
24: 19
default: 15
}
13: StackMap locals:
StackMap stack:
aload 4
astore 6
start local 6 14: goto 22
end local 6 15: StackMap locals:
StackMap stack:
aload 4
bipush 11
invokevirtual org.h2.value.Value.convertTo:(I)Lorg/h2/value/Value;
astore 4
16: goto 19
StackMap locals:
StackMap stack: org.h2.message.DbException
17: pop
18: getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
astore 4
19: StackMap locals:
StackMap stack:
aload 4
bipush 10
invokevirtual org.h2.value.Value.convertTo:(I)Lorg/h2/value/Value;
astore 6
start local 6 20: goto 22
end local 6 21: StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
ldc "type="
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield org.h2.mode.FunctionsMySQL.info:Lorg/h2/expression/function/FunctionInfo;
getfield org.h2.expression.function.FunctionInfo.type:I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic org.h2.message.DbException.throwInternalError:(Ljava/lang/String;)Ljava/lang/RuntimeException;
athrow
start local 6 22: StackMap locals: org.h2.value.Value
StackMap stack:
aload 6
areturn
end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 23 0 this Lorg/h2/mode/FunctionsMySQL;
0 23 1 session Lorg/h2/engine/Session;
0 23 2 args [Lorg/h2/expression/Expression;
1 23 3 values [Lorg/h2/value/Value;
2 23 4 v0 Lorg/h2/value/Value;
3 23 5 v1 Lorg/h2/value/Value;
7 8 6 result Lorg/h2/value/Value;
11 12 6 result Lorg/h2/value/Value;
14 15 6 result Lorg/h2/value/Value;
20 21 6 result Lorg/h2/value/Value;
22 23 6 result Lorg/h2/value/Value;
Exception table:
from to target type
15 16 17 Class org.h2.message.DbException
MethodParameters:
Name Flags
session
args
}
SourceFile: "FunctionsMySQL.java"