LocalVariable GetOrCreateLocalVariable(Block block, string name, LocalVariable.Flags flags, FullNamedExpression typeExpr, Location loc)
{
	INamedBlockVariable existing = null;
	LocalVariable li = null;

	if (!parsing_playscript) {
		if (block.ParametersBlock.TopBlock.GetLocalName (name, block, ref existing)) {
			if (existing is LocalVariable) {
				li = existing as LocalVariable;
				if (li.TypeExpr != null && existing.TypeExpr != null && li.TypeExpr.Equals (existing.TypeExpr)) {
					report.Warning (7138, 1, loc, "Variable is declared more than once.");
					li.DeclFlags |= LocalVariable.Flags.AsIgnoreMultiple;
					return li;
				}
			}
		}
	}
	
	li = new LocalVariable(block, name, flags, loc);
	li.TypeExpr = typeExpr;

	block.AddLocalName (li);
	
	return li;
}