public override void Prepare(Generator generator, TypeReference inferredType) { base.Prepare(generator, inferredType); left.Prepare(generator, null); TypeReference leftType = left.TypeReference; if (leftType.TypeName.Data == "pluk.base.Bool") { right.Prepare(generator, leftType); type = leftType; } else { FieldExpression field = new FieldExpression(this, new Identifier(this, "OperatorOr")); field.SetParentDoNotGenerate(left); call = new CallExpression(this, field); call.AddParameter(right); call.Resolve(generator); call.Prepare(generator, inferredType); type = call.TypeReference; } }