if(write==null){
instructions.add(token.line, new WeaselInstructionReadStaticField(wf.getField().getDesk()));
}else{
instructions.add(token.line, new WeaselInstructionPlaceHolder());
WeaselTree.autoCast(compiler, write, wf.getGenericType(), token.line, instructions, true);
instructions.add(token.line, new WeaselInstructionWriteStaticField(wf.getField().getDesk()));
}
}else{
wvi = compilerHelper.getVariable("this");
if(write==null){
instructions.add(token.line, new WeaselInstructionReadFieldOf(wvi.pos, wf.getField().getDesk()));
}else{
instructions.add(token.line, new WeaselInstructionPlaceHolder());
WeaselTree.autoCast(compiler, write, wf.getGenericType(), token.line, instructions, true);
instructions.add(token.line, new WeaselInstructionWriteFieldOf(wvi.pos, wf.getField().getDesk()));
}
}
return new WeaselCompilerReturnInstructionList(instructions, wf.getGenericType());
}else{
if(write==null){
instructions.add(token.line, new WeaselInstructionLoadVariable(wvi.pos));
}else{
instructions.add(token.line, new WeaselInstructionPlaceHolder());
WeaselTree.autoCast(compiler, write, wvi.type, token.line, instructions, true);
instructions.add(token.line, new WeaselInstructionSaveVariable(wvi.pos));
}
return new WeaselCompilerReturnInstructionList(instructions, wvi.type);
}
}else{
WeaselGenericField wf = elementParent.getGenericField(variable);
if(wf==null){
WeaselClass weaselClass;
try{
weaselClass = compiler.getWeaselClass(WeaselClass.mapClassNames(variable));
}catch(WeaselNativeException e){
throw new WeaselCompilerException(token.line, "Variable not declared bevore %s", variable);
}
if(isVariable){
throw new WeaselCompilerException(token.line, "Can't get class form variable", variable);
}
return new WeaselCompilerReturnInstructionList(instructions, new WeaselGenericClass(weaselClass), true);
}
if(isVariable){
if(write==null){
instructions.add(token.line, new WeaselInstructionReadField(wf.getField().getDesk()));
}else{
instructions.add(token.line, new WeaselInstructionPlaceHolder());
WeaselTree.autoCast(compiler, write, wf.getGenericType(), token.line, instructions, true);
instructions.add(token.line, new WeaselInstructionWriteField(wf.getField().getDesk()));
}
}else{
if(!WeaselModifier.isStatic(wf.getField().getModifier()))
throw new WeaselCompilerException(token.line, "Filed %s isn't static", wf);
if(write==null){
instructions.add(token.line, new WeaselInstructionReadStaticField(wf.getField().getDesk()));
}else{
instructions.add(token.line, new WeaselInstructionPlaceHolder());
WeaselTree.autoCast(compiler, write, wf.getGenericType(), token.line, instructions, true);
instructions.add(token.line, new WeaselInstructionWriteStaticField(wf.getField().getDesk()));
}
}
return new WeaselCompilerReturnInstructionList(instructions, wf.getGenericType());
}
case CHAR: