+MSInstanceMessage3(CGRect, NSAttributedString, boundingRectWithSize,options,context, CGSize, size, NSInteger, options, id, context) {
+ //NSLog(@"XXX: $\"%@\" %@ 0x%x %@", self, NSStringFromCGSize(size), unsigned(options), context);
+
+ WBStringDrawingState *state(stringDrawingState_);
+ if (state == NULL)
+ return MSOldCall(size, options, context);
+
+ if (state->count_ != 0 && --state->count_ == 0)
+ stringDrawingState_ = state->next_;
+ if (state->info_ == nil)
+ return MSOldCall(size, options, context);
+
+ NSString *info([Info_ objectForKey:state->info_]);
+ if (info == nil)
+ return MSOldCall(size, options, context);
+
+ NSString *base(state->base_ ?: @"");
+
+ NSDictionary *attributes([self attributesAtIndex:0 effectiveRange:NULL]);
+
+ UIFont *font([attributes objectForKey:@"NSFont"]);
+ UIColor *color([attributes objectForKey:@"NSColor"]);
+
+ return (CGRect) {{0, 0}, [[self string] sizeWithStyle:[NSString stringWithFormat:@"%@;%@;%@;%@", [font markupDescription], WBColorMarkup(color), base, info] forWidth:size.width]};
+}
+