ISourceRange range= getNodeRange(node); int nodeOffset= range.getOffset(); int nodeLen= range.getLength();
int nodeOffset= getExtendedOffset(node); int nodeLen= getExtendedLength(node);
	private int rewriteNode(ASTNode parent, int property, int offset, Prefix prefix) {		RewriteEvent event= getEvent(parent, property);		if (event != null) {			switch (event.getChangeKind()) {				case RewriteEvent.INSERTED: {					ASTNode node= (ASTNode) event.getNewValue();					GroupDescription description= getDescription(event);					int indent= getIndent(offset);					doTextInsert(offset, prefix.getPrefix(indent, getLineDelimiter()), description);					doTextInsert(offset, node, indent, true, description);					return offset;				}				case RewriteEvent.REMOVED: {						ASTNode node= (ASTNode) event.getOriginalValue();					GroupDescription description= getDescription(event);										ISourceRange range= getNodeRange(node);					int nodeOffset= range.getOffset();					int nodeLen= range.getLength();							// if there is a prefix, remove the prefix as well					int len= nodeOffset + nodeLen - offset;					doTextRemoveAndVisit(offset, len, node, description);					return nodeOffset + nodeLen;				}				case RewriteEvent.REPLACED: {					ASTNode node= (ASTNode) event.getOriginalValue();					GroupDescription description= getDescription(event);					ISourceRange range= getNodeRange(node);					int nodeOffset= range.getOffset();					int nodeLen= range.getLength();									doTextRemoveAndVisit(nodeOffset, nodeLen, node, description);					doTextInsert(nodeOffset, (ASTNode) event.getNewValue(), getIndent(offset), true, description);					return nodeOffset + nodeLen;				}			}		}		return doVisit(parent, property, offset);	}	