private XTreeTry makeTryPosStarted(){
		expect(XKeyword.TRY);
		XTreeScope resources;
		if(tokenOk(XTokenKind.KEYWORD, XKeyword.LBRAKET)){
			startPosition();
			tokenizer.next();
			List<XTreeStatement> list = new ArrayList<XTreeStatement>();
			list.add(makeExpr());
			while(tokenOk(XTokenKind.KEYWORD, XKeyword.SEMICOLON)){
				tokenizer.next();
				list.add(makeExpr());
			}
			expect(XKeyword.RBRAKET);
			resources = new XTreeScope(endPosition(), list);
		}else{
			resources = null;
		}
		XTreeScope body = makeScope();
		List<XTreeCatch> catches = new ArrayList<XTreeCatch>();
		startPosition();
		while(tokenOk(XTokenKind.KEYWORD, XKeyword.CATCH)){
			tokenizer.next();
			expect(XKeyword.LBRAKET);
			List<XTreeExpr> excType = new ArrayList<XTreeExpr>();
			excType.add(makeExprPrefixSuffix(false));
			while(tokenOk(XTokenKind.KEYWORD, XKeyword.OR)){
				tokenizer.next();
				excType.add(makeExprPrefixSuffix(false));
			}
			XTreeIdent varName = null;
			if(!tokenOk(XTokenKind.KEYWORD, XKeyword.RBRAKET)){
				varName = makeIdent();
			}
			expect(XKeyword.RBRAKET);
			XTreeScope b = makeScope();
			catches.add(new XTreeCatch(endPosition(), excType, varName, b));
			startPosition();
		}
		endPosition();
		XTreeScope _finally;
		if(tokenOk(XTokenKind.KEYWORD, XKeyword.FINALLY)){
			tokenizer.next();
			_finally = makeScope();
		}else{
			_finally = null;
		}
		return new XTreeTry(endPosition(), resources, body, catches, _finally);
	}