public WeaselCompilerReturn compile(WeaselToken token, WeaselCompiler compiler, WeaselKeyWordCompilerHelper compilerHelpher, ListIterator<WeaselToken> iterator) throws WeaselCompilerException {
expect(iterator.next(), WeaselTokenType.OPENBRACKET);
WeaselTree tree = WeaselTree.parse(iterator, WeaselTokenType.CLOSEBRACKET);
if(tree==null)
throw new WeaselCompilerException(token.line, "Condition need to be a boolean value");
WeaselCompilerReturn wcr = tree.compile(compiler, compilerHelpher, null, new WeaselGenericClass(compiler.baseTypes.booleanClass), null, false);
WeaselInstructionList instructions = wcr.getInstructions();
WeaselTree.autoCast(compiler, wcr.getReturnType(), new WeaselGenericClass(compiler.baseTypes.booleanClass), token.line, instructions, true);
WeaselInstructionJump j1;
instructions.add(token.line, j1 = new WeaselInstructionIf());
instructions.addAll(compileBlock(compiler, compilerHelpher, iterator));